diff --git a/.cursorignore b/.agentignore similarity index 98% rename from .cursorignore rename to .agentignore index 4582f1fa2..458f85a8c 100644 --- a/.cursorignore +++ b/.agentignore @@ -1,6 +1,8 @@ # Git .git/ +.codex/ + # Build and distribution directories **/dist/ **/build/ @@ -136,4 +138,4 @@ gateway/letsencrypt/ # Monitoring data monitoring/grafana/dashboards/ monitoring/prometheus/data/ -monitoring/grafana/storage/ \ No newline at end of file +monitoring/grafana/storage/ diff --git a/.codex/setup.sh b/.codex/setup.sh new file mode 100644 index 000000000..25b5f7173 --- /dev/null +++ b/.codex/setup.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +# +# setup-all.sh ─ one-shot bootstrap for the whole julep monorepo +# +# › run from repo root: ./setup-all.sh +# +# It will: +# • ensure Poetry + TypeSpec compiler are available +# • iterate over each top-level directory and install deps: +# – pyproject.toml ➜ poetry install +# – package.json ➜ npm install (uses pnpm if present) +# – requirements.txt➜ pip install -r +# • install root pre-commit hooks (if .pre-commit-config.yaml exists) +# • stop on first error (set -e) + +set -euo pipefail + +### 1. Globals -------------------------------------------------------------- + +IGNORE_DIRS_DEFAULT="sdks deploy scripts monitoring .git .venv node_modules" +IGNORE_DIRS="${IGNORE_DIRS:-$IGNORE_DIRS_DEFAULT}" + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# cd "$ROOT_DIR" + +RED="\033[0;31m"; GREEN="\033[0;32m"; CYAN="\033[0;36m"; NC="\033[0m" + +announce() { echo -e "${CYAN}==>$1${NC}"; } + +### 3. Ensure TypeSpec compiler -------------------------------------------- + +if ! command -v tsp &> /dev/null; then + announce "Installing TypeSpec compiler globally (npm)…" + npm install -g @typespec/compiler > /dev/null +else + announce "TypeSpec compiler present → $(tsp --version)" +fi + +announce "Installing hasura-cli globally (npm)…" +curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash + +### 4. Walk directories ----------------------------------------------------- +curl -LsSf https://astral.sh/uv/install.sh | sh + + +if [[ -f "pyproject.toml" ]]; then + announce "Installing root deps" + uv sync + echo -e "${GREEN}✓ root deps installed${NC}" +fi + + +OIFS=$IFS; IFS=$'\n' +for dir in $(git ls-tree --name-only -d HEAD | sort); do + d="${dir#./}" + if [[ " $IGNORE_DIRS " =~ [[:space:]]"$d"[[:space:]] ]]; then + echo -e "· skipping $d (ignored)" + continue + fi + + announce "Processing $d/" + + # uv project? + if [[ -f "$d/pyproject.toml" ]]; then + pushd "$d" > /dev/null + announce "[uv] installing in $d …" + uv sync + uv pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl + popd > /dev/null + echo -e "${GREEN}✓ uv install done for $d${NC}" + continue + fi + + # Node project? + if [[ -f "$d/package.json" ]]; then + pushd "$d" > /dev/null + announce "[npm] installing in $d …" + if command -v pnpm &> /dev/null; then + pnpm install --silent + else + npm install --silent + fi + popd > /dev/null + echo -e "${GREEN}✓ npm install done for $d${NC}" + continue + fi + + # Plain requirements.txt? + if [[ -f "$d/requirements.txt" ]]; then + pushd "$d" > /dev/null + announce "[pip] installing requirements in $d …" + pip install -r requirements.txt + pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl + popd > /dev/null + echo -e "${GREEN}✓ pip install done for $d${NC}" + continue + fi + + echo -e "· no recognised manifest in $d – nothing to install" +done +IFS=$OIFS + +### 5. Pre-commit ----------------------------------------------------------- + +if [[ -f ".pre-commit-config.yaml" ]]; then + announce "Installing git pre-commit hooks…" + pip install --quiet pre-commit + pre-commit install + echo -e "${GREEN}✓ pre-commit hooks installed${NC}" +fi + +echo -e "${GREEN}\nAll done – monorepo dependencies ready!${NC}" diff --git a/.cursorindexignore b/.cursorindexignore deleted file mode 100644 index 8ba194171..000000000 --- a/.cursorindexignore +++ /dev/null @@ -1,150 +0,0 @@ -# Git -.git/ -.github/ - -# Build and distribution directories -**/dist/ -**/build/ -**/.ruff_cache/ -**/node_modules/ -**/__pycache__/ -**/.pytest_cache/ -**/.mypy_cache/ -**/.tox/ -**/.coverage/ -**/.venv/ -**/venv/ -**/.next/ -**/.nuxt/ -**/out/ -**/coverage/ - -# Environment files (may contain sensitive information) -**/.env -**/.env.* -**/*.pem -**/*.key -**/*.cert -**/*.crt - -# Large data files and binaries (to avoid loading and indexing them) -**/*.csv -**/*.json -**/*.parquet -**/*.arrow -**/*.pickle -**/*.pkl -**/*.db -**/*.sqlite -**/*.sqlite3 -**/*.so -**/*.dll -**/*.dylib -**/*.exe -**/*.whl -**/*.tar.gz -**/*.zip -**/*.jar -**/*.war -**/*.ear - -# Lock files (usually don't need indexing) -**/yarn.lock -**/package-lock.json -**/pnpm-lock.yaml -**/poetry.lock -**/Pipfile.lock -**/requirements-frozen.txt -**/uv.lock - -# Generated documentation or third-party code -**/docs/_build/ -**/site/ -**/public/ -**/vendor/ -**/third_party/ - -# Large media files -**/*.mp4 -**/*.mp3 -**/*.wav -**/*.avi -**/*.mov -**/*.png -**/*.jpg -**/*.jpeg -**/*.gif -**/*.svg -**/*.ico -**/*.pdf - -# Logs and temporary files -**/logs/ -**/*.log -**/tmp/ -**/temp/ -**/*.tmp -**/*.temp - -# IDE and editor files -**/.vscode/ -**/.idea/ -**/.DS_Store -**/.ipynb_checkpoints/ - -# Large generated files -gaga.json -openapi.yaml -openapi*.yaml -openapi*.yml -openapi*.json - -# Julep-specific exclusions -# TypeSpec generated outputs (avoid indexing auto-generated code) -typespec/tsp-output/ -typespec/node_modules/ - -# Memory-store migration files (SQL structure) -memory-store/migrations/*.up.sql -memory-store/migrations/*.down.sql - -# Large binary files in tests -**/tests/sample_tasks/*.base64 -**/tests/sample_tasks/*.png -**/tests/sample_tasks/screenshot.* - -# Auto-generated OpenAPI specs -documentation/openapi.yaml -sdks/**/api.md - -# Docker templates that don't need indexing -**/*.template -**/Dockerfile* -**/docker-compose*.yml - -# Generated configuration files -**/litellm-config.yaml -scheduler/dynamicconfig/temporal-postgres.yaml - -# Exclude large notebooks in cookbooks -cookbooks/*.ipynb - -# Browser automation screenshots and binary data -**/browser_screenshots/ -**/downloads/ - -# Certificate files -scheduler/cert/ -gateway/letsencrypt/ - -# Generated Python package files -**/*.egg-info/ -**/*.pyc -**/__pycache__/ - -# Vector search training data -**/embeddings/ -**/vectors/ - -# Temporal workflow history (large and not needed for indexing) -**/.temporal/ \ No newline at end of file diff --git a/.cursorrules b/.cursorrules deleted file mode 100644 index 797130215..000000000 --- a/.cursorrules +++ /dev/null @@ -1,158 +0,0 @@ -{ - "meta": { - "description": "Julep project rules for LLMs", - "version": "1.0" - }, - "codeStyle": { - "python": { - "version": "3.12+", - "framework": "fastAPI", - "async": true, - "lineLength": 96, - "indentation": 4, - "quotes": "double", - "imports": "ruff", - "typing": "strict", - "naming": { - "functions": "snake_case", - "variables": "snake_case", - "classes": "PascalCase" - }, - "patterns": { - "errors": "typed_exceptions", - "resources": "context_managers", - "docs": "docstrings_public" - } - } - }, - "commands": { - "format": "poe format", - "lint": "poe lint", - "typecheck": "poe typecheck", - "test": "poe test", - "testPattern": "poe test --search \"pattern_to_match\"", - "testFile": "PYTHONPATH=$PWD python tests/test_file.py", - "check": "poe check", - "codegen": "poe codegen" - }, - "architecture": { - "components": { - "agents-api": "Main service for agent and task functionality", - "memory-store": "PostgreSQL with TimescaleDB for storage", - "blob-store": "S3-compatible object storage", - "scheduler": "Temporal workflow engine", - "integrations-service": "External service integrations", - "gateway": "API gateway and routing", - "llm-proxy": "LiteLLM proxy for models", - "monitoring": "Prometheus and Grafana", - "typespec": "API specifications", - "sdks": "Node.js and Python clients" - }, - "patterns": { - "api": "RESTful endpoints with consistent CRUD operations", - "db": "PostgreSQL with pgvector, async queries", - "workflow": "Temporal for durable execution", - "expressions": "Python with simpleeval sandbox", - "multitenancy": "Developer-scoped entities", - "search": "Hybrid vector/text search" - } - }, - "domainModels": { - "agents": "AI agent definitions with instructions and tools", - "tasks": "Workflow definitions with steps", - "tools": "Integrations and capabilities for agents", - "sessions": "Conversation containers with context", - "entries": "Message history tracking", - "executions": "Task execution state tracking", - "docs": "Document storage with vector search", - "files": "File storage and management", - "users": "User management and authentication" - }, - "stepTypes": { - "tool": ["ToolCallStep", "PromptStep", "EvaluateStep", "PgQueryStep"], - "flow": ["IfElseStep", "SwitchStep", "ParallelStep", "ForeachStep", "MapReduceStep"], - "data": ["GetStep", "SetStep", "LogStep"], - "terminal": ["ReturnStep", "ErrorStep", "WaitForInputStep"] - }, - "expressions": { - "syntax": "$expression", - "legacy": "{{variable}} → $f'''{{variable}}'''", - "validation": "validate_py_expression() in base_evaluate.py", - "context": "_ (current input), inputs, outputs, stdlibs", - "security": "simpleeval sandbox, limited functions/modules" - }, - "testing": { - "framework": "ward", - "syntax": "@test(\"Description\")", - "search": "--search not -p", - "limits": "--fail-limit 1", - "env": "source .venv/bin/activate", - "path": "PYTHONPATH=$PWD" - }, - "databases": { - "vectorSearch": { - "implementation": "pgvector + OpenAI embeddings", - "dimensions": 1024, - "methods": ["text", "vector", "hybrid"], - "indexing": "DiskANN for ANN search" - }, - "textSearch": { - "features": ["tsquery", "trigram", "unaccent"], - "languages": "multi-language support" - }, - "patterns": { - "keys": "compound (developer_id, entity_id)", - "metadata": "JSONB type", - "timeseries": "hypertables for transitions" - } - }, - "errors": { - "common": { - "wardsyntax": "Using pytest fixtures/classes instead of @test()", - "venv": "Forgetting to activate virtualenv", - "paths": "Wrong PYTHONPATH or directory", - "expressions": "Missing _ context or improper validation" - } - }, - "workflows": { - "execution": { - "steps": ["init", "wait", "error", "step", "cancelled", "init_branch", "finish"], - "transitions": "tracked in database", - "concurrency": "parallel for map/reduce", - "timeouts": "configurable per activity", - "heartbeats": "for long-running activities" - }, - "activities": { - "stepExecution": ["prompt_step", "tool_call_step", "get_value_step", "transition_step"], - "external": ["execute_api_call", "execute_integration", "execute_system"], - "data": ["sync_items_remote"] - } - }, - "cli": { - "structure": { - "config": "~/.config/julep/config.yml", - "state": "~/.config/julep/julep_state.db", - "project": "julep.yaml + julep-lock.json" - }, - "commands": { - "initialization": "julep init", - "sync": "julep sync", - "entities": "julep [agents|tasks|tools] [action]", - "execution": "julep run --task ", - "monitoring": "julep logs --execution-id " - } - }, - "typeSpec": { - "structure": { - "domain": "[domain]/models.tsp + endpoints.tsp + main.tsp", - "steps": "tasks/steps.tsp", - "tools": "tools/*.tsp" - }, - "patterns": { - "discriminated": "kind_ property for union types", - "mixins": "HasId, HasTimestamps, HasMetadata", - "aliases": "if_ to avoid keyword conflicts" - }, - "pipeline": ["tsp compile", "openapi", "datamodel-codegen", "post-processing"] - } -} \ No newline at end of file diff --git a/.env.example b/.env.example index b818a5b75..84364b3ea 100644 --- a/.env.example +++ b/.env.example @@ -45,7 +45,7 @@ EMBEDDING_MODEL_ID=openai/text-embedding-3-large AGENTS_API_HOSTNAME=localhost AGENTS_API_PROTOCOL=http AGENTS_API_KEY_HEADER_NAME=Authorization -AGENTS_API_URL=http://agents-api:8080 +AGENTS_API_URL=http://agents-api-multi-tenant:8080 TRUNCATE_EMBED_TEXT=true WORKER_URL=temporal:7233 AGENTS_API_DEBUG=false @@ -61,7 +61,8 @@ SKIP_CHECK_DEVELOPER_HEADERS=true # Memory Store # ----------- # defaults to postgres -# MEMORY_STORE_PASSWORD= < your password > +# MEMORY_STORE_PASSWORD= < your password > +MB_JAVA_TIMEZONE=Asia/Calcutta # Gateway # ------ @@ -140,3 +141,12 @@ ENABLE_RESPONSES=false HASURA_URL=http://hasura:8080 HASURA_CLAIMS_MAP='{"x-hasura-allowed-roles":{"path":"$.hasura.all_roles","default":["user"]},"x-hasura-default-role":{"path":"$.hasura.all_roles[0]","default":"user"},"x-hasura-user-id":{"path":"$.sub"}}' HASURA_ADMIN_SECRET= +JWT_ALLOWED_SKEW=0 +# Feature Flags +# ------------ +UNLEASH_URL=http://unleash:4242/api +UNLEASH_API_TOKEN= +UNLEASH_APP_NAME= + +# Llama Model Multiplier +LLAMA_MODEL_MULTIPLIER=1.0 \ No newline at end of file diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 91% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md index 7ce872103..d697fba4a 100644 --- a/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -82,30 +82,30 @@ Found a bug? Have a feature request? [Submit an issue](https://github.com/julep- | Service | Description | |---------|-------------| | `agents-api` | Core API service | -| `typespec` | API specifications | -| `blob-store` | File storage service | -| `cli` | Command-line interface | -| `embedding-service` | Text embedding management | -| `llm-proxy` | Language model proxy | -| `gateway` | API gateway & routing | -| `monitoring` | System metrics & monitoring | - -### Supporting Services - -- `integrations-service`: External integrations -- `memory-store`: Persistent storage -- `scheduler`: Task scheduling +| `memory-store` | PostgreSQL database with TimescaleDB for persistent storage | +| `blob-store` | Object storage for files and binary data | +| `integrations-service` | Adapters for external services and tools | +| `scheduler` | Temporal workflow engine for task scheduling and orchestration | +| `gateway` | API gateway for routing and request handling | +| `llm-proxy` | LiteLLM proxy for language model interactions | +| `monitoring` | Prometheus and Grafana monitoring infrastructure | +| `typespec` | API specifications in TypeSpec format | +| `sdks` | Node.js and Python client SDKs | +| `cli` | Command-line interface for Julep | + +### Supporting Modules + - `deploy`: Deployment configs -- `documentation`: Project docs -- `scripts`: Utility scripts -- `cookbooks`: Usage examples +- `documentation`: Project documentation assets +- `scripts`: Utility scripts and tools +- `cookbooks`: Usage examples and recipes ### Tech Stack - **FastAPI**: Web framework for building APIs - **TypeSpec**: API specification language - **Timescale**: Database system -- **SeadweedFS**: Blob storage system +- **SeaweedFS**: Blob storage system - **Grafana**: Monitoring and observability platform - **Prometheus**: Monitoring and observability platform - **LiteLLM**: LLM framework diff --git a/LICENSE b/.github/LICENSE similarity index 100% rename from LICENSE rename to .github/LICENSE diff --git a/.github/README-CN.md b/.github/README-CN.md index 0d85d80d2..a9eb4c298 100644 --- a/.github/README-CN.md +++ b/.github/README-CN.md @@ -1,1700 +1,143 @@ -[English](README.md) | [中文翻译](README-CN.md) | [日本語翻訳](README-JA.md) | [French](README-FR.md) +
+ + [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | + [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | + [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | + [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | + [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | + [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | + [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | + [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh) +
- julep -
- -

-
- 探索文档(正在开发中) - · - 不和谐 - · - 𝕏 - · - LinkedIn -

+julep -

- NPM Version +
+

+ NPM Version   - PyPI - Version + PyPI - Version   - Docker Image Version + Docker Image Version   - GitHub License -

- ---- - -> [!注意] -> 从[此处](https://dashboard-dev.julep.ai)获取您的 API 密钥。 - -
-贡献🌟(点击展开) - -## 征集贡献者🌟 - -我们很高兴欢迎新贡献者加入 Julep 项目!我们创建了几个“好的第一个问题”来帮助您入门。以下是您可以做出贡献的方式: - -1. 查看我们的 [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) 文件以获取有关如何贡献的指南。 -2. 浏览我们的 [good first issues](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) 以找到您感兴趣的任务。 -3. 如果您有任何疑问或需要帮助,请随时通过我们的 [Discord](https://discord.com/invite/JTSBGRZrzj) 频道联系我们。 - -您的贡献,无论大小,对我们来说都是宝贵的。让我们一起创造一些了不起的东西!🚀 + GitHub License +

+ +

+ + · + + · + + +

+ + + -
+**立即试用Julep:** 访问 **[Julep网站](https://julep.ai)** · 在 **[Julep控制台](https://dashboard.julep.ai)** 开始使用 (免费API密钥) · 阅读 **[文档](https://docs.julep.ai/introduction/julep)** -

📖 Table of Contents

+

📖 目录

-- [主要特点](#%E4%B8%BB%E8%A6%81%E7%89%B9%E7%82%B9) -- [Python 快速入门🐍](#python-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8) -- [Node.js Quick Start 🟩](#nodejs-quick-start-) -- [Components](#components) - - [Mental Model](#mental-model) -- [Concepts](#concepts) -- [Understanding Tasks](#understanding-tasks) - - [Lifecycle of a Task](#lifecycle-of-a-task) - - [Types of Workflow Steps](#types-of-workflow-steps) -- [Tool Types](#tool-types) - - [User-defined `functions`](#user-defined-functions) - - [`system` tools](#system-tools) - - [Built-in `integrations`](#built-in-integrations) - - [Direct `api_calls`](#direct-api_calls) -- [Integrations](#integrations) -- [Other Features](#other-features) - - [Adding Tools to Agents](#adding-tools-to-agents) - - [Managing Sessions and Users](#managing-sessions-and-users) - - [Document Integration and Search](#document-integration-and-search) - - [SDK 参考](#sdk-%E5%8F%82%E8%80%83) - - [API 参考](#api-%E5%8F%82%E8%80%83) -- [本地快速启动](#%E6%9C%AC%E5%9C%B0%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8) -- [Julep 和 LangChain 等有什么区别?](#julep-%E5%92%8C-langchain-%E7%AD%89%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB) - - [不同的用例](#%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E4%BE%8B) - - [不同的外形尺寸](#%E4%B8%8D%E5%90%8C%E7%9A%84%E5%A4%96%E5%BD%A2%E5%B0%BA%E5%AF%B8) +- [为什么选择Julep?](#为什么选择julep) +- [开始使用](#开始使用) +- [文档和示例](#文档和示例) +- [社区和贡献](#社区和贡献) +- [许可证](#许可证) -## 介绍 - -Julep 是一个用于创建 AI 代理的平台,这些代理可以记住过去的互动并执行复杂的任务。它提供长期记忆并管理多步骤流程。 - -Julep 支持创建多步骤任务,包括决策、循环、并行处理以及与众多外部工具和 API 的集成。 - -尽管许多 AI 应用程序仅限于简单、线性的提示和 API 调用链,并且分支很少,但 Julep 可以处理更复杂的场景,这些场景包括: - -- 有多个步骤, -- 根据模型输出做出决策, -- 产生并行分支, -- 使用多种工具,并且 -- 长时间运行。 - -> [!提示] -> 想象一下,您想要构建一个 AI 代理,它不仅可以回答简单的问题,还可以处理复杂的任务、记住过去的交互,甚至可能使用其他工具或 API。这就是 Julep 的作用所在。阅读 [了解任务](#understanding-tasks) 了解更多信息。 - -## 主要特点 - -1. 🧠 **持久 AI 代理**:在长期交互​​中记住上下文和信息。 -2. 💾 **状态会话**:跟踪过去的互动以获得个性化回应。 -3. 🔄 **多步骤任务**:通过循环和决策构建复杂的多步骤流程。 -4. ⏳ **任务管理**:处理可以无限期运行的长时间运行的任务。 -5.🛠️**内置工具**:在您的任务中使用内置工具和外部 API。 -6. 🔧 **自我修复**:Julep 将自动重试失败的步骤、重新发送消息,并确保您的任务顺利运行。 -7. 📚 **RAG**:使用 Julep 的文档存储构建一个用于检索和使用您自己的数据的系统。 - -![功能](https://github.com/user-attachments/assets/4355cbae-fcbd-4510-ac0d-f8f77b73af70) - -> [!提示] -> Julep 非常适合需要超越简单的提示响应模型的 AI 用例的应用程序。 - -快速示例 - -想象一下一个可以执行以下操作的研究 AI 代理: - -1. **选择一个主题**, -2. 针对该主题提出 30 个搜索查询, -3. 同时进行网页搜索, -4. **总结**结果, -5. 将**摘要发送至 Discord**。 - -> [!注意] -> 在 Julep 中,这将是一项单独的任务80行代码然后运行完全托管全部独立完成。所有步骤都在 Julep 自己的服务器上执行,您无需动手。 - -这是一个有效的例子: - -```yaml -name: Research Agent - -# Optional: Define the input schema for the task -input_schema: - type: object - properties: - topic: - type: string - description: The main topic to research - num_questions: - type: integer - description: The number of search queries to generate - -# Define the tools that the agent can use -tools: - - name: web_search - type: integration - integration: - provider: brave - setup: - api_key: - - - name: discord_webhook - type: api_call - api_call: - url: https://discord.com/api/webhooks// - method: POST - headers: - Content-Type: application/json - -# Special variables: -# - inputs: for accessing the input to the task -# - outputs: for accessing the output of previous steps -# - _: for accessing the output of the previous step - -# Define the main workflow -main: -- prompt: - - role: system - content: >- - You are a research assistant. - Generate {{inputs[0].num_questions|default(30, true)}} diverse search queries related to the topic: - {{inputs[0].topic}} - - Write one query per line. - unwrap: true - -# Evaluate the search queries using a simple python expression -- evaluate: - search_queries: "_.split(NEWLINE)" - -# Run the web search in parallel for each query -- over: "_.search_queries" - map: - tool: web_search - arguments: - query: "_" - parallelism: 5 - -# Collect the results from the web search -- evaluate: - search_results: _ - -# Summarize the results -- prompt: - - role: system - content: > - You are a research summarizer. Create a comprehensive summary of the following research results on the topic {{inputs[0].topic}}. - The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point. - The length of the summary should be less than 150 words. - Here are the search results: - {{_.search_results}} - unwrap: true - settings: - model: gpt-4o-mini - -- evaluate: - discord_message: |- - f''' - **Research Summary for {inputs[0].topic}** - {_} - ''' - - # Send the summary to Discord -- tool: discord_webhook - arguments: - json_: - content: _.discord_message[:2000] # Discord has a 2000 character limit -``` - -在这个例子中,Julep 将自动管理并行执行,重试失败的步骤,重新发送 API 请求,并保持任务可靠运行直到完成。 - -> 这在 30 秒内运行并返回以下输出: - -
-人工智能研究摘要 (点击展开) - -> **人工智能研究摘要** -> ->###人工智能(AI)研究成果摘要 -> -> #### 简介 -> -> 近年来,人工智能 (AI) 领域取得了重大进展,其特点是方法和技术的发展,使机器能够感知环境、从数据中学习并做出决策。本摘要主要关注从与 AI 相关的各种研究成果中获得的见解。 -> -> #### 主要发现 -> -> 1. **人工智能的定义和范围**: -> -> - 人工智能被定义为计算机科学的一个分支,专注于创建能够执行需要类似人类智能的任务的系统,包括学习、推理和解决问题(维基百科)。 ->——它涵盖了各种子领域,包括机器学习、自然语言处理、机器人和计算机视觉。 -> -> 2. **影响与应用**: -> -> - AI 技术正在融入众多领域,提高效率和生产力。应用范围从自动驾驶汽车和医疗诊断到客户服务自动化和财务预测(OpenAI)。 -> - 谷歌致力于让人工智能造福每个人,这凸显了其通过增强各个平台的用户体验(谷歌人工智能)显著改善日常生活的潜力。 -> -> 3. **道德考虑**: -> -> - 关于人工智能的伦理影响的讨论一直在进行中,包括对隐私、偏见和决策过程中的责任的担忧。强调需要一个确保安全和负责任地使用人工智能技术的框架(OpenAI)。 -> -> 4. **学习机制**: -> -> - AI 系统利用不同的学习机制,例如监督学习、无监督学习和强化学习。这些方法允许 AI 通过从过去的经验和数据中学习来提高性能(维基百科)。 -> - 监督学习和无监督学习之间的区别至关重要;监督学习依赖于标记数据,而无监督学习则识别没有预定义标签的模式(无监督)。 -> -> 5. **未来方向**: -> - 未来人工智能的发展预计将专注于增强人工智能系统的可解释性和透明度,确保它们能够提供合理的决策和行动(OpenAI)。 -> - 人们还在努力使人工智能系统更易于访问和用户友好,鼓励不同人群和行业更广泛地采用它(谷歌人工智能)。 -> -> #### 结论 -> -> 人工智能代表着跨多个领域的变革力量,有望重塑行业并改善生活质量。然而,随着其能力的扩展,解决随之而来的伦理和社会影响至关重要。技术专家、伦理学家和政策制定者之间的持续研究和合作对于驾驭人工智能的未来格局至关重要。 - -
- -## 安装 - -要开始使用 Julep,请使用 [npm](https://www.npmjs.com/package/@julep/sdk) 或 [pip](https://pypi.org/project/julep/) 安装它: - -**Node.js**: - -```bash -npm install @julep/sdk - -# or - -bun add @julep/sdk -``` - -**Python**: - -```bash -pip install julep -``` - -> [!注意] -> 从[此处](https://dashboard-dev.julep.ai)获取您的 API 密钥。 -> -> 虽然我们处于测试阶段,但您也可以通过 [Discord](https://discord.com/invite/JTSBGRZrzj) 联系,以解除 API 密钥的速率限制。 - -> [!提示] -> 💻 你是“向我展示代码!”的那种人吗?我们创建了大量的烹饪书供您入门。**查看 [烹饪书](https://github.com/julep-ai/julep/tree/dev/cookbooks)** 以浏览示例。 -> -> 💡 您还可以在 Julep 的基础上构建许多想法。**查看[想法列表](https://github.com/julep-ai/julep/tree/dev/cookbooks/IDEAS.md)** 以获取一些灵感。 - -## Python 快速入门🐍 - -````python -### Step 0: Setup - -import time -import yaml -from julep import Julep # or AsyncJulep - -client = Julep(api_key="your_julep_api_key") - -### Step 1: Create an Agent - -agent = client.agents.create( - name="Storytelling Agent", - model="claude-3.5-sonnet", - about="You are a creative storyteller that crafts engaging stories on a myriad of topics.", -) - -### Step 2: Create a Task that generates a story and comic strip - -task_yaml = """ -name: Storyteller -description: Create a story based on an idea. - -tools: - - name: research_wikipedia - type: integration - integration: - provider: wikipedia - method: search - -main: - # Step 1: Generate plot idea - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: > - Based on the idea '{{_.idea}}', generate a list of 5 plot ideas. Go crazy and be as creative as possible. Return your output as a list of long strings inside ```yaml 标签位于您的回复末尾。 -展开:true - -- 评价: -情节想法:load_yaml(_.split('```yaml')[1].split('```')[0].strip()) - -# 第二步:从情节思路中提取研究领域 -- 迅速的: -- 角色:系统 -内容:您是 {{agent.name}}。{{agent.about}} -- 角色:用户 -内容: > -以下是一些故事情节的想法: -{% 表示 _.plot_ideas 中的想法 %} -- {{主意}} -{% 结束 %} - -为了发展故事情节,我们需要研究情节思路。 -我们应该研究什么?写下你认为有趣的情节想法的维基百科搜索查询。 -将输出作为 yaml 列表返回```yaml tags at the end of your response. - unwrap: true - settings: - model: gpt-4o-mini - temperature: 0.7 - - - evaluate: - research_queries: load_yaml(_.split('```yaml')[1].split('```')[0].strip()) - - # Step 3: Research each plot idea - - foreach: - in: _.research_queries - do: - tool: research_wikipedia - arguments: - query: _ - - - evaluate: - wikipedia_results: 'NEWLINE.join([f"- {doc.metadata.title}: {doc.metadata.summary}" for item in _ for doc in item.documents])' - - # Step 4: Think and deliberate - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: |- - Before we write the story, let's think and deliberate. Here are some plot ideas: - {% for idea in outputs[1].plot_ideas %} - - {{idea}} - {% endfor %} - - Here are the results from researching the plot ideas on Wikipedia: - {{_.wikipedia_results}} - - Think about the plot ideas critically. Combine the plot ideas with the results from Wikipedia to create a detailed plot for a story. - Write down all your notes and thoughts. - Then finally write the plot as a yaml object inside ```yaml 标签位于响应末尾。yaml 对象应具有以下结构: - - ```yaml - title: "" - characters: - - name: "" - about: "" - synopsis: "" - scenes: - - title: "" - description: "" - characters: - - name: "" - role: "" - plotlines: - - ""``` - -确保 yaml 有效,且角色和场景不为空。还要注意分号和编写 yaml 的其他问题。 -展开:true - -- 评价: -情节:“load_yaml(_.split('```yaml')[1].split('```')[0].strip())” -""" - -任务 = 客户端.任务.创建( -agent_id=代理.id, -**yaml.safe_load(任务_yaml) -) - -### 步骤 3:执行任务 - -执行 = 客户端.执行.创建( -任务ID=任务ID, -输入={“idea”:“一只学飞的猫”} -) - -# 🎉 观看故事和漫画面板的生成 -while (result := client.executions.get(execution.id)).status 不在 ['成功', '失败'] 中: -打印(结果.状态,结果.输出) -时间.睡眠(1) - -# 📦执行完成后,检索结果 -如果 result.status ==“成功”: -打印(结果.输出) -别的: -引发异常(结果.错误) -```` - -You can find the full python example [here](example.py). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Node.js Quick Start 🟩 - -```JavaScript的 -// 步骤 0:设置 -const dotenv = require(“dotenv”); -const { Julep } = require(“@julep/sdk”); -const yaml = require(“yaml”); - -dotenv.配置(); - -const 客户端 = new Julep({ -apiKey:process.env.JULEP_API_KEY, -环境:process.env.JULEP_ENVIRONMENT || “生产”, -}); - -/* 步骤 1:创建代理 */ - -异步函数 createAgent() { -const 代理 = 等待客户端.代理.创建({ -名称:“讲故事特工”, -模型:“claude-3.5-sonnet”, -关于: -“您是一位富有创意的讲故事者,能就无数主题创作出引人入胜的故事。” - }); -回報代理; -} - -/* 步骤 2:创建一个生成故事和漫画的任务 */ - -const taskYaml = ` -名称:讲故事的人 -描述:根据一个想法创建一个故事。 - -工具: -- 名称:research_wikipedia -一体化: -提供者:维基百科 -方法:搜索 - -主要的: -# 步骤 1:产生情节想法 -- 迅速的: -- 角色:系统 -内容:您是 {{agent.name}}。{{agent.about}} -- 角色:用户 -内容: > -根据想法“{{_.idea}}”,生成 5 个情节想法的列表。尽情发挥你的想象力和创造力。将输出作为响应末尾的 \`\`\`yaml 标签内的长字符串列表返回。 -展开:true - -- 评价: -plot_ideas:load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# 第二步:从情节思路中提取研究领域 -- 迅速的: -- 角色:系统 -内容:您是 {{agent.name}}。{{agent.about}} -- 角色:用户 -内容: > -以下是一些故事情节的想法: -{% 表示 _.plot_ideas 中的想法 %} -- {{主意}} -{% 结束 %} - -为了发展故事情节,我们需要研究情节思路。 -我们应该研究什么?写下你认为有趣的情节想法的维基百科搜索查询。 -将您的输出作为 yaml 列表返回到响应末尾的 \`\`\`yaml 标签内。 -展开:true -设置: -型号:gpt-4o-mini -温度:0.7 - -- 评价: -research_queries:load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# 步骤 3:研究每个情节构思 -- foreach: -在:_.research_queries -做: -工具:research_wikipedia -参数: -询问: _ - -- 评价: -wikipedia_results:'NEWLINE.join([f“- {doc.metadata.title}:{doc.metadata.summary}”用于 item in _ for doc in item.documents])' - -# 第 4 步:思考和深思 -- 迅速的: -- 角色:系统 -内容:您是 {{agent.name}}。{{agent.about}} -- 角色:用户 -内容:|- -在写故事之前,让我们先思考一下。以下是一些情节构思: -{% for idea in output[1].plot_ideas %} -- {{主意}} -{% 结束 %} - -以下是在维基百科上研究情节思路的结果: -{{_.wikipedia_results}} - -认真思考故事情节。将故事情节与维基百科搜索结果相结合,为故事创建详细情节。 -写下你所有的笔记和想法。 -最后,将图表作为 yaml 对象写入响应末尾的 \`\`\`yaml 标签内。yaml 对象应具有以下结构: - -\`\`\`yaml -标题: ”" -人物: -- 姓名: ”" -关于: ”" -概要:”" -场景: -- 标题: ”" -描述: ”" -人物: -- 姓名: ”" -角色: ”" -故事情节: --”“\`\`\` - -确保 yaml 有效,且角色和场景不为空。还要注意分号和编写 yaml 的其他问题。 -展开:true - -- 评价: -情节:“load_yaml(_。split('\`\`\`yaml')[1].split('\`\`\`')[0].strip())” -`; - -异步函数 createTask(agentId){ -const task = 等待客户端.tasks.创建(agentId, yaml.parse(taskYaml)); -返回任务; -} - -/* 步骤 3:执行任务 */ - -异步函数 executeTask (taskId) { -const 执行 = 等待客户端.执行.创建(taskId,{ -输入:{想法:“一只学飞的猫”}, - }); - -// 🎉 观看故事和漫画面板的生成 -while (真) { -const result = 等待客户端.executions.get(execution.id); -控制台.log(结果.状态,结果.输出); - -if (result.status === "成功" || result.status === "失败") { -// 📦执行完成后,检索结果 -如果 (result.status === "成功") { -控制台.log(结果.输出); -} 别的 { -抛出新的错误(result.error); - } -休息; - } - -等待新的Promise((resolve)=> setTimeout(resolve,1000)); - } -} - -// 运行示例的主函数 -异步函数 main() { -尝试 { -const agent = await createAgent(); -const task = await createTask(agent.id); -等待执行任务(任务id); -} 捕获 (错误) { -console.error("发生错误:", error); - } -} - -主要的() -.then(() => console.log("完成")) -.catch(控制台.错误); -``` - -You can find the full Node.js example [here](example.js). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Components - -Julep is made up of the following components: - -- **Julep Platform**: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform. -- **Julep SDKs**: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way. -- **Julep API**: The Julep API is a RESTful API that you can use to interact with the Julep platform. - -### Mental Model - -
- -
- -Think of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here's how to visualize it: - -1. **Your Application Code:** - - - You can use the Julep SDK in your application to define agents, tasks, and workflows. - - The SDK provides functions and classes that make it easy to set up and manage these components. - -2. **Julep Backend Service:** - - - The SDK communicates with the Julep backend over the network. - - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows. - -3. **Integration with Tools and APIs:** - - Within your workflows, you can integrate external tools and services. - - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs. - -## Concepts - -Julep is built on several key technical components that work together to create powerful AI workflows: - -```美人鱼 -图 TD -用户[用户] ==> 会话[会话] -会话-->代理[代理] -代理-->任务[任务] -代理——> LLM[大型语言模型] -任务 --> 工具[工具] -代理人 --> 文件[文件] -文档 --> VectorDB[矢量数据库] -任务 --> 执行[执行] - -classDef 客户端填充:#9ff,描边:#333,描边宽度:1px; -用户客户端类; - -classDef 核心填充:#f9f,描边:#333,描边宽度:2px; -类代理、任务、会话核心; -``` - -- **Agents**: AI-powered entities backed by large language models (LLMs) that execute tasks and interact with users. -- **Users**: Entities that interact with agents through sessions. -- **Sessions**: Stateful interactions between agents and users, maintaining context across multiple exchanges. -- **Tasks**: Multi-step, programmatic workflows that agents can execute, including various types of steps like prompts, tool calls, and conditional logic. -- **Tools**: Integrations that extend an agent's capabilities, including user-defined functions, system tools, or third-party API integrations. -- **Documents**: Text or data objects associated with agents or users, vectorized and stored for semantic search and retrieval. -- **Executions**: Instances of tasks that have been initiated with specific inputs, with their own lifecycle and state machine. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Understanding Tasks - -Tasks are the core of Julep's workflow system. They allow you to define complex, multi-step AI workflows that your agents can execute. Here's a brief overview of task components: - -- **Name, Description and Input Schema**: Each task has a unique name and description for easy identification. An input schema (optional) that is used to validate the input to the task. -- **Main Steps**: The core of a task, defining the sequence of actions to be performed. Each step can be a prompt, tool call, evaluate, wait_for_input, log, get, set, foreach, map_reduce, if-else, switch, sleep, or return. (See [Types of Workflow Steps](#types-of-workflow-steps) for more details) -- **Tools**: Optional integrations that extend the capabilities of your agent during task execution. - -### Lifecycle of a Task - -You create a task using the Julep SDK and specify the main steps that the agent will execute. When you execute a task, the following lifecycle happens: - -```美人鱼 -顺序图 -参与者 D 作为您的代码 -参与者 C 作为 Julep 客户 -参与者 S 担任 Julep 服务器 - -D->>C:创建任务 -C->>S:提交执行 -注意 S:执行任务 -S 注释:管理状态 -S-->>C:执行事件 -C-->>D:进度更新 -S->>C:执行完成 -C->>D:最终结果 -``` - -### Types of Workflow Steps - -Tasks in Julep can include various types of steps, allowing you to create complex and powerful workflows. Here's an overview of the available step types: - -#### Common Steps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAboutSyntax
Prompt -Send a message to the AI model and receive a response -

Note: The prompt step uses Jinja templates and you can access context variables in them. -
- -```yaml -- prompt: "分析以下数据:{{agent.name}}" # <-- 这是一个 jinja 模板 -``` - -```yaml -- 迅速的: -- 角色:系统 -内容:“您是 {{agent.name}}。 {{agent.about}}” -- 角色:用户 -内容:“分析以下数据:{{_.data}}” -``` - -
Tool Call -Execute an integrated tool or API that you have previously declared in the task. -

Note: The tool call step uses Python expressions inside the arguments. - -
- -```yaml -- 工具:web_search -参数: -查询:“最新的 AI 发展”#<- 这是一个 Python 表达式(注意引号) -num_results: len(_.topics) # <-- 用于访问列表长度的 Python 表达式 -``` - -
Evaluate -Perform calculations or manipulate data -

Note: The evaluate step uses Python expressions. -
- -```yaml -- 评价: -平均分数:总分(分数)/长度(分数) -``` - -
Wait for Input -Pause workflow until input is received. It accepts an `info` field that can be used by your application to collect input from the user. - -

Note: The wait_for_input step is useful when you want to pause the workflow and wait for user input e.g. to collect a response to a prompt. - -
- -```yaml --等待输入: -信息: -消息:'“请提供有关 {_.required_info} 的其他信息。”' # <-- 用于访问上下文变量的 python 表达式 -``` - -
Log -Log a specified value or message. - -

Note: The log step uses Jinja templates and you can access context variables in them. - -
- -```yaml -- log:“项目 {{_.item_id}} 的处理已完成”#<-- jinja 模板用于访问上下文变量 -``` - -
- -#### Key-Value Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
Get -Retrieve a value from the execution's key-value store. - - - -```yaml -- 获取:用户偏好 -``` - -
Set -Assign a value to a key in the execution's key-value store. - -

Note: The set step uses Python expressions. - -
- -```yaml -- 放: -user_preference: '"dark_mode"' # <-- python 表达式 -``` - -
- -#### Iteration Steps - - - - - - - - - - - - - - - - - - - +* **持久记忆:** 构建在对话中维持上下文和长期记忆的AI代理,让它们能够随时间学习和改进。 +* **模块化工作流:** 将复杂任务定义为模块化步骤(YAML或代码),具有条件逻辑、循环和错误处理。Julep的工作流引擎自动管理多步骤流程和决策。 +* **工具编排:** 轻松集成外部工具和API(网页搜索、数据库、第三方服务等)作为代理工具箱的一部分。Julep的代理可以调用这些工具来增强其能力,实现检索增强生成等功能。 +* **并行和可扩展:** 并行运行多个操作以提高效率,让Julep处理后台的扩展和并发。平台是无服务器的,因此可以无缝扩展工作流,无需额外的DevOps开销。 +* **可靠执行:** 不用担心故障 - Julep提供内置重试、自愈步骤和强大的错误处理,让长时间运行的任务保持正轨。你还能获得实时监控和日志记录来跟踪进展。 +* **易于集成:** 通过我们的**Python**和**Node.js** SDK快速开始,或使用Julep CLI进行脚本编写。如果你想直接集成到其他系统中,Julep的REST API也可以使用。 - - -
Name About Syntax
Foreach -Iterate over a collection and perform steps for each item - - - -```yaml -- foreach: -in: _.data_list # <-- 用于访问上下文变量的 python 表达式 -做: -- log: "处理项目 {{_.item}}" # <-- jinja 模板访问上下文变量 -``` - -
Map-Reduce -Map over a collection and reduce the results - - + -```yaml -- 映射_减少: -over: _.numbers # <-- 用于访问上下文变量的 python 表达式 -地图: -- 评价: -平方:“_ ** 2” -reduce:results + [_] # <--(可选)python 表达式以减少结果。如果省略,则为默认值。 -``` +## 为什么选择Julep? -```yaml -- 映射_减少: -结束:_.topics -地图: -- 提示:写一篇关于{{__}}的文章 -并行度:10 -``` +Julep是一个构建**基于智能代理的AI工作流**的开源平台,远超简单的提示链。它让你能够使用大型语言模型(LLM)和工具编排复杂的多步骤流程,**无需管理任何基础设施**。使用Julep,你可以创建**记住过往交互**并处理具有分支逻辑、循环、并行执行和外部API集成等复杂任务的AI代理。简而言之,Julep就像*"AI代理的Firebase"*,为规模化的智能工作流提供强大的后端。 -
Parallel -Run multiple steps in parallel +**主要功能和优势:** - +*专注于你的AI逻辑和创意,而把繁重的工作交给Julep!* -```yaml -- 平行线: -- 工具:web_search -参数: -查询:“AI 新闻” -- 工具:weather_check -参数: -地点:“纽约” -``` + -
- -#### Conditional Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
If-Else -Conditional execution of steps - - - -```yaml -- if: _.score > 0.8 # <-- python 表达式 -然后: -- 日志:取得高分 -别的: -- 错误:分数需要提高 -``` - -
Switch -Execute steps based on multiple conditions - - - -```yaml -- 转变: -- 案例:_.category =='A' -然后: -- 日志:“A 类处理” -- 案例:_.category =='B' -然后: -- 日志:“B类处理” -- case: _ # 默认情况 -然后: -- 错误:未知类别 -``` - -
- -#### Other Control Flow - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name About Syntax
Sleep -Pause the workflow for a specified duration - - - -```yaml -- 睡觉: -秒:30 -# 分钟:1 -#小时数:1 -#天数:1 -``` - -
Return -Return a value from the workflow - -

Note: The return step uses Python expressions. - -
- -```yaml -- 返回: -result: '“任务成功完成”' #<-- python 表达式 -时间:datetime.now().isoformat() # <-- python 表达式 -``` - -
Yield -Run a subworkflow and await its completion - - - -```yaml -- 屈服: -工作流程:process_data -参数: -输入数据:_.raw_data # <-- python 表达式 -``` - -
Error -Handle errors by specifying an error message - - - -```yaml -- 错误:“提供的输入无效”#<-- 仅限字符串 -``` - -
- -Each step type serves a specific purpose in building sophisticated AI workflows. This categorization helps in understanding the various control flows and operations available in Julep tasks. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Tool Types - -Agents can be given access to a number of "tools" -- any programmatic interface that a foundation model can "call" with a set of inputs to achieve a goal. For example, it might use a `web_search(query)` tool to search the Internet for some information. - -Unlike agent frameworks, julep is a _backend_ that manages agent execution. Clients can interact with agents using our SDKs. julep takes care of executing tasks and running integrations. - -Tools in julep can be one of: - -1. **User-defined `functions`**: These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. They need to be handled by the client. The workflow will pause until the client calls the function and gives the results back to julep. -2. **`system` tools**: Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. -3. **`integrations`**: Built-in third party tools that can be used to extend the capabilities of your agents. -4. **`api_calls`**: Direct api calls during workflow executions as tool calls. - -### User-defined `functions` - -These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example: - -```yaml -名称:示例系统工具任务 -描述:使用系统调用列出代理 - -工具: -- 名称:send_notification -描述:向用户发送通知 -类型:函数 -功能: -参数: -类型:对象 -特性: -文本: -类型:字符串 -描述:通知内容 - -主要的: -- 工具:send_notification -参数: -内容:'“hi”'#<--python 表达式 -``` - -Whenever julep encounters a _user-defined function_, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep. - -### `system` tools - -Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. - -`system` tools are built into the backend. They get executed automatically when needed. They do _not_ require any action from the client-side. - -For example, - -```yaml -名称:示例系统工具任务 -描述:使用系统调用列出代理 - -工具: -- 名称:list_agent_docs -描述:列出给定代理的所有文档 -类型:系统 -系统: -资源:代理 -子资源:doc -操作:列表 - -主要的: -- 工具:list_agents -参数: -限制:10 #<-- python 表达式 -``` - -#### Available `system` resources and operations - -- `agent`: - - - `list`: List all agents. - - `get`: Get a single agent by id. - - `create`: Create a new agent. - - `update`: Update an existing agent. - - `delete`: Delete an existing agent. - -- `user`: - - - `list`: List all users. - - `get`: Get a single user by id. - - `create`: Create a new user. - - `update`: Update an existing user. - - `delete`: Delete an existing user. - -- `session`: - - - `list`: List all sessions. - - `get`: Get a single session by id. - - `create`: Create a new session. - - `update`: Update an existing session. - - `delete`: Delete an existing session. - - `chat`: Chat with a session. - - `history`: Get the chat history with a session. - -- `task`: - - - `list`: List all tasks. - - `get`: Get a single task by id. - - `create`: Create a new task. - - `update`: Update an existing task. - - `delete`: Delete an existing task. - -- `doc` (subresource for `agent` and `user`): - - `list`: List all documents. - - `create`: Create a new document. - - `delete`: Delete an existing document. - - `search`: Search for documents. - -Additional operations available for some resources: - -- `embed`: Embed a resource (specific resources not specified in the provided code). -- `change_status`: Change the status of a resource (specific resources not specified in the provided code). -- `chat`: Chat with a resource (specific resources not specified in the provided code). -- `history`: Get the chat history with a resource (specific resources not specified in the provided code). -- `create_or_update`: Create a new resource or update an existing one (specific resources not specified in the provided code). - -Note: The availability of these operations may vary depending on the specific resource and implementation details. - -> [!TIP] > **Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -### Built-in `integrations` - -Julep comes with a number of built-in integrations (as described in the section below). `integration` tools are directly executed on the julep backend. Any additional parameters needed by them at runtime can be set in the agent/session/user's `metadata` fields. - -See [Integrations](#integrations) for details on the available integrations. - -> [!TIP] > **Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -### Direct `api_calls` - -julep can also directly make api calls during workflow executions as tool calls. Same as `integration`s, additional runtime parameters are loaded from `metadata` fields. - -For example, - -```yaml -名称:示例 api_call 任务 -工具: -- 类型:api_call -名字:你好 -API调用: -方法:GET -网址:https://httpbin.org/get - -主要的: -- 工具:你好 -参数: -json: -测试:_.input#<--python 表达式 -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## Integrations - -Julep supports various integrations that extend the capabilities of your AI agents. Here's a list of available integrations and their supported arguments: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Brave Search - -```yaml -设置: -api_key: string # Brave Search 的 API 密钥 - -参数: -query: string # 使用 Brave 搜索的搜索查询 - -输出: -result: list[dict] # 搜索结果列表,每个结果包含:标题、链接、摘要 -``` - - - -**Example cookbook**: [cookbooks/02-sarcastic-news-headline-generator.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/02-sarcastic-news-headline-generator.ipynb) - -
BrowserBase - -```yaml -设置: -api_key: string # BrowserBase 的 API 密钥 -project_id: string # BrowserBase 的项目 ID -session_id: string #(可选)BrowserBase 的会话 ID - -参数: -urls: list[string] # 使用 BrowserBase 加载的 URL - -输出: -documents: list # 从 URL 加载的文档 -``` - - - -**Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -
Email - -```yaml -设置: -host: string # 电子邮件服务器的主机 -port: integer # 电子邮件服务器的端口 -用户:string#电子邮件服务器的用户名 -password: string # 邮件服务器的密码 - -参数: -to: string # 要发送电子邮件到的电子邮件地址 -from: string # 发送电子邮件的电子邮件地址 -subject: string # 电子邮件的主题 -body: string # 电子邮件正文 - -输出: -success: boolean # 邮件是否发送成功 -``` - - - -**Example cookbook**: [cookbooks/00-Devfest-Email-Assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) - -
Spider - -```yaml -设置: -spider_api_key: string # Spider 的 API 密钥 - -参数: -url: string # 获取数据的 URL -params: dict # (可选)Spider API 的参数 -content_type:字符串 #(可选)要返回的内容类型。默认为“application/json”。其他选项:“text/csv”、“application/xml”、“application/jsonl” - -输出: -result: list[dict] # 结果列表,每个结果包含:内容、错误、状态、费用、网址 -``` - - - -**Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -
Weather - -```yaml -设置: -openweathermap_api_key: string # OpenWeatherMap 的 API 密钥 - -参数: -location: string # 获取天气数据的位置 - -输出: -result: string # 指定位置的天气数据 -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
Wikipedia - -```yaml -参数: -query: string # 搜索查询字符串 -load_max_docs:整数 #(可选)要加载的最大文档数。默认值为 2。 - -输出: -documents: list # 从 Wikipedia 搜索返回的文档 -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
FFmpeg - -```yaml -参数: -cmd: string # 要执行的 FFmpeg 命令 -file: string # 要处理的 base64 编码文件 - -输出: -fileoutput: string # FFmpeg 命令以 base64 编码输出的文件 -result: boolean # FFmpeg命令是否执行成功 -mime_type: string # 输出文件的 MIME 类型 -``` - -
Llama Parse - -```yaml -设置: -llamaparse_api_key: string # Llama Parse 的 API 密钥 -params: dict #(可选)Llama Parse 集成的附加参数 - -参数: -文件:字符串 | 数组# 要解析的 base64 编码文件或要加载的 http/https URL 数组。 -filename:string #(可选)。文件的文件名。默认为随机 UUID。仅当文件是 base64 编码字符串时才使用。 -params: dict #(可选)Llama Parse 集成的附加参数。覆盖设置参数。 -base64:boolean # 输入文件是否为 base64 编码。默认为 false。 - -输出: -documents: list[Document] # 已解析文档的列表 -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
Cloudinary - -```yaml - -方法:media_upload | media_edit # 用于 Cloudinary 集成的方法 - -设置: -cloudinary_cloud_name: string # 您的 Cloudinary 云名称 -cloudinary_api_key: string # 您的 Cloudinary API 密钥 -cloudinary_api_secret: string # 您的 Cloudinary API 密钥 -params: dict # (可选)Cloudinary 集成的附加参数 - -参数: -file: string # 文件上传的 URL。仅适用于 media_upload 方法。 -upload_params:dict #(可选)上传的附加参数。仅适用于 media_upload 方法。 -public_id:字符串 #(可选)文件的公共 ID。对于 media_edit 方法,它是必需的。对于 media_upload 方法,它是可选的。默认为随机 UUID。 -transformation:list[dict] # 应用于文件的转换。仅适用于 media_edit 方法。 -return_base64: boolean # 是否以 base64 编码返回文件。默认为 false。 - -输出: -url:string # 上传文件的 URL。仅适用于 media_upload 方法。 -meta_data: dict # 来自上传响应的附加元数据。仅适用于 media_upload 方法。 -public_id: string # 上传文件的公共 ID。仅适用于 media_upload 方法。 -经过转换的 URL:字符串 #(可选)转换后的 URL。仅适用于 media_edit 方法。 -base64:字符串#(可选)如果 return_base64 为真,则为 base64 编码的文件。 -``` - - - -**Example cookbook**: [cookbooks/05-video-processing-with-natural-language.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb) - -
Arxiv - -```yaml -方法:搜索#用于 Arxiv 集成的方法 - -设置: -# Arxiv 不需要任何特殊设置参数 - -参数: -query: string # 使用 Arxiv 搜索的搜索查询 -id_list:list[string] | None # (可选)要搜索的 Arxiv ID 列表 -max_results: 整数 # 返回的最大结果数,必须介于 1 到 300000 之间 -download_pdf:boolean # 是否下载结果的 PDF。默认为 false。 -sort_by: string # 结果的排序标准,选项:relevance、lastUpdatedDate、submittedDate -sort_order: string # 结果的排序顺序,选项:升序、降序 - -输出: -result: list[dict] # 搜索结果列表,每个结果包含:entry_id、title、updated、published、authors、summary、comment、journal_ref、doi、primary_category、categories、links、pdf_url、pdf_downloaded -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
- -For more details, refer to our [Integrations Documentation](#integrations). - - - -## Other Features - -Julep offers a range of advanced features to enhance your AI workflows: - -### Adding Tools to Agents - -Extend your agent's capabilities by integrating external tools and APIs: - -```Python -客户端.代理.工具.创建( -agent_id=代理.id, -名称="web_search", -description="在网络上搜索信息。", -积分={ -“提供者”:“勇敢”, -“方法”:“搜索”, -“设置”:{“api_key”:“你的brave_api_key”}, -}, -) -``` - -### Managing Sessions and Users - -Julep provides robust session management for persistent interactions: - -```Python -会话 = 客户端.会话.创建( -agent_id=代理.id, -用户 ID=用户 ID, -context_overflow="自适应" -) - -# 在同一会话中继续对话 -响应 = 客户端.会话.聊天( -session_id=会话id, -消息=[ - { -“角色”:“用户”, -"content": "跟进之前的对话。" - } - ] -) -``` - -### Document Integration and Search - -Easily manage and search through documents for your agents: - -```Python -# 上传文档 -文档 = 客户端.代理.docs.创建( -title="人工智能进步", -content="人工智能正在改变世界...", -元数据={“category”:“research_paper”} -) - -# 搜索文档 -结果 = 客户端.代理.docs.搜索( -text="AI 进步", -metadata_filter={“category”:“research_paper”} -) -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## 参考 - -### SDK 参考 - -- **Node.js** [SDK 参考](https://github.com/julep-ai/node-sdk/blob/main/api.md) | [NPM 包](https://www.npmjs.com/package/@julep/sdk) -- **Python** [SDK 参考](https://github.com/julep-ai/python-sdk/blob/main/api.md) | [PyPI 包](https://pypi.org/project/julep/) - -### API 参考 - -浏览我们的 API 文档以了解有关代理、任务和执行的更多信息: - -- [代理 API](https://dev.julep.ai/api/docs#tag/agents) -- [任务 API](https://dev.julep.ai/api/docs#tag/tasks) -- [执行 API](https://dev.julep.ai/api/docs#tag/executions) - - +

+使用Julep简单易行: -## 本地快速启动 +1. **注册和API密钥:** 首先,在 [Julep控制台](https://dashboard.julep.ai) 注册以获取你的API密钥(用于验证SDK调用)。 +2. **安装SDK:** 为你首选的语言安装Julep SDK: -**要求**: + * **Python:** `pip install julep` + * **Node.js:** `npm install @julep/sdk` (或 `yarn add @julep/sdk`) +3. **定义你的代理:** 使用SDK或YAML定义代理及其任务工作流。例如,你可以指定代理的记忆、可使用的工具以及逐步的任务逻辑。(详细演练请参见我们文档中的**[快速开始](https://docs.julep.ai/introduction/quick-start)**。) +4. **运行工作流:** 通过SDK调用你的代理来执行任务。Julep平台将在云端编排整个工作流,并为你管理状态、工具调用和LLM交互。你可以检查代理的输出,在控制台上监控执行,并根据需要进行迭代。 -- 安装了最新的docker compose +就是这样!你的第一个AI代理可以在几分钟内启动并运行。要获得完整教程,请查看文档中的**[快速开始指南](https://docs.julep.ai/introduction/quick-start)**。 -**步骤**: +> **注意:** Julep还提供命令行界面(CLI)(当前为Python的beta版)来管理工作流和代理。如果你喜欢无代码方法或想要脚本化常见任务,请参见 [Julep CLI文档](https://docs.julep.ai/responses/quickstart#cli-installation) 了解详情。 -1. `git 克隆 https://github.com/julep-ai/julep.git` -2. `cd julep` -3. `docker 卷创建 cozo_backup` -4. `docker 卷创建 cozo_data` -5. `cp .env.example .env # <-- 编辑此文件` -6. `docker compose --env-file .env --profile temporary-ui --profile single-tenant --profile self-hosted-db up --build` + -
- - Back to Top -  |  - - Table of Contents - -
- ---- - -## Julep 和 LangChain 等有什么区别? +## 文档和示例 -### 不同的用例 -可以将 LangChain 和 Julep 视为 AI 开发堆栈中具有不同重点的工具。 +想要深入了解?**[Julep文档](https://docs.julep.ai)**涵盖了掌握平台所需的一切 - 从核心概念(代理、任务、会话、工具)到高级主题如代理记忆管理和架构内部。关键资源包括: -LangChain 非常适合创建提示序列和管理与 LLM 的交互。它拥有庞大的生态系统,包含大量预构建的集成,如果您想快速启动和运行某些功能,这会非常方便。LangChain 非常适合涉及线性提示链和 API 调用的简单用例。 +* **[概念指南](https://docs.julep.ai/concepts/):** 了解Julep的架构、会话和记忆的工作原理、工具使用、管理长对话等等。 +* **[API和SDK参考](https://docs.julep.ai/api-reference/):** 查找所有SDK方法和REST API端点的详细参考,以将Julep集成到你的应用程序中。 +* **[教程](https://docs.julep.ai/tutorials/):** 构建真实应用程序的分步指南(例如搜索网络的研究代理、旅行规划助手或具有自定义知识的聊天机器人)。 +* **[Cookbook食谱](https://github.com/julep-ai/julep/tree/dev/cookbooks):** 探索**Julep Cookbook**以获取现成的示例工作流和代理。这些食谱展示了常见模式和用例 - 通过示例学习的绝佳方式。*浏览此存储库中的 [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) 目录以获取示例代理定义。* +* **[IDE集成](https://context7.com/julep-ai/julep):** 直接在IDE中访问Julep文档!在编码时获得即时答案的完美解决方案。 -另一方面,Julep 更侧重于构建持久的 AI 代理,这些代理可以在长期交互​​中保持上下文。当您需要涉及多步骤任务、条件逻辑以及在代理流程中直接与各种工具或 API 集成的复杂工作流时,它会大放异彩。它从头开始设计,以管理持久会话和复杂的工作流。 + -如果您想构建一个需要执行以下操作的复杂 AI 助手,请使用 Julep: +## 社区和贡献 -- 跟踪几天或几周内的用户互动。 -- 执行计划任务,例如发送每日摘要或监控数据源。 -- 根据之前的互动或存储的数据做出决策。 -- 作为其工作流程的一部分与多个外部服务进行交互。 +加入我们不断壮大的开发者和AI爱好者社区!以下是一些参与和获得支持的方式: -然后 Julep 提供支持所有这些的基础设施,而无需您从头开始构建。 +* **Discord社区:** 有问题或想法?加入我们 [官方Discord服务器](https://discord.gg/7H5peSN9QP) 上的对话,与Julep团队和其他用户聊天。我们很乐意帮助故障排除或头脑风暴新的用例。 +* **GitHub讨论和问题:** 请随时使用GitHub报告错误、请求功能或讨论实现细节。如果你想贡献,请查看 [**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - 我们欢迎各种类型的贡献。 +* **贡献:** 如果你想贡献代码或改进,请查看我们的 [贡献指南](CONTRIBUTING.md) 了解如何开始。我们感谢所有的PR和反馈。通过协作,我们可以让Julep变得更好! -### 不同的外形尺寸 +*专业提示: 给我们的仓库点星以保持更新 - 我们正在不断添加新功能和示例。* -Julep 是一个**平台**,其中包括用于描述工作流的语言、用于运行这些工作流的服务器以及用于与平台交互的 SDK。要使用 Julep 构建某些东西,您需要在“YAML”中编写工作流描述,然后在云中运行工作流。 +
-Julep 专为繁重、多步骤和长时间运行的工作流程而构建,并且工作流程的复杂程度没有限制。 +你的贡献,无论大小,对我们都很有价值。让我们一起构建令人惊叹的东西! + -LangChain 是一个**库**,其中包含一些工具和一个用于构建线性提示和工具链的框架。为了使用 LangChain 构建某些东西,您通常需要编写 Python 代码来配置和运行要使用的模型链。 +

我们杰出的贡献者:

-对于涉及线性提示和 API 调用链的简单用例,LangChain 可能足够并且能够更快地实现。 + + + -### 总之 +
-当您需要在无状态或短期环境中管理 LLM 交互和提示序列时,请使用 LangChain。 +## 许可证 -当您需要一个具有高级工作流功能、持久会话和复杂任务编排的状态代理的强大框架时,请选择 Julep。 - -
- - Back to Top -  |  - - Table of Contents - -
\ No newline at end of file +Julep采用**Apache 2.0许可证**提供,这意味着你可以在自己的项目中自由使用。详情请参见 [LICENSE](LICENSE) 文件。享受使用Julep构建的乐趣! \ No newline at end of file diff --git a/.github/README-FR.md b/.github/README-FR.md index 76998b869..6f0771280 100644 --- a/.github/README-FR.md +++ b/.github/README-FR.md @@ -1,1705 +1,143 @@ -[English](README.md) | [中文翻译](README-CN.md) | [日本語翻訳](README-JA.md) | [French](README-FR.md) +
+ + [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | + [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | + [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | + [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | + [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | + [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | + [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | + [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh) +
- julep -
- -

-
- Explorer les documents (en cours) - · - Discorde - · - 𝕏 - · - LinkedIn -

+julep -

- NPM Version +
+

+ NPM Version   - PyPI - Version + PyPI - Version   - Docker Image Version + Docker Image Version   - GitHub License -

- ---- - -> [!REMARQUE] -> Obtenez votre clé API [ici](https://dashboard-dev.julep.ai). - -
-Contributions 🌟(Cliquez pour agrandir) - -## Appel aux contributeurs 🌟 - -Nous sommes ravis d'accueillir de nouveaux contributeurs au projet Julep ! Nous avons créé plusieurs « bons premiers numéros » pour vous aider à démarrer. Voici comment vous pouvez contribuer : - -1. Consultez notre fichier [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) pour obtenir des instructions sur la façon de contribuer. -2. Parcourez nos [bons premiers numéros](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) pour trouver une tâche qui vous intéresse. -3. Si vous avez des questions ou avez besoin d'aide, n'hésitez pas à nous contacter sur notre chaîne [Discord](https://discord.com/invite/JTSBGRZrzj). - -Vos contributions, grandes ou petites, nous sont précieuses. Construisons ensemble quelque chose d'extraordinaire ! 🚀 + GitHub License +

+ +

+ + · + + · + + +

+ + + -
+**Essayez Julep dès aujourd'hui :** Visitez le **[Site Web de Julep](https://julep.ai)** · Commencez sur le **[Tableau de Bord Julep](https://dashboard.julep.ai)** (clé API gratuite) · Lisez la **[Documentation](https://docs.julep.ai/introduction/julep)** -

📖 Table of Contents

+

📖 Table des matières

-- [Introduction](#introduction) -- [Principales caractéristiques](#principales-caract%C3%A9ristiques) -- [Exemple rapide](#exemple-rapide) -- [Installation](#installation) -- [Démarrage rapide de Python 🐍](#d%C3%A9marrage-rapide-de-python-) -- [Node.js Quick Start 🟩](#nodejs-quick-start-) -- [Components](#components) - - [Mental Model](#mental-model) -- [Concepts](#concepts) -- [Understanding Tasks](#understanding-tasks) - - [Lifecycle of a Task](#lifecycle-of-a-task) - - [Types of Workflow Steps](#types-of-workflow-steps) -- [Tool Types](#tool-types) - - [User-defined `functions`](#user-defined-functions) - - [`system` tools](#system-tools) - - [Built-in `integrations`](#built-in-integrations) - - [Direct `api_calls`](#direct-api_calls) -- [Integrations](#integrations) -- [Other Features](#other-features) - - [Adding Tools to Agents](#adding-tools-to-agents) - - [Managing Sessions and Users](#managing-sessions-and-users) - - [Document Integration and Search](#document-integration-and-search) -- [Référence](#r%C3%A9f%C3%A9rence) - - [Référence du SDK](#r%C3%A9f%C3%A9rence-du-sdk) - - [Référence API](#r%C3%A9f%C3%A9rence-api) -- [Démarrage rapide local](#d%C3%A9marrage-rapide-local) -- [Quelle est la différence entre Julep et LangChain etc ?](#quelle-est-la-diff%C3%A9rence-entre-julep-et-langchain-etc-) - - [Différents cas d'utilisation](#diff%C3%A9rents-cas-dutilisation) - - [Facteur de forme différent](#facteur-de-forme-diff%C3%A9rent) - - [En résumé](#en-r%C3%A9sum%C3%A9) +- [Pourquoi Julep ?](#pourquoi-julep-) +- [Commencer](#commencer) +- [Documentation et exemples](#documentation-et-exemples) +- [Communauté et contributions](#communauté-et-contributions) +- [Licence](#licence) -## Introduction - -Julep est une plateforme permettant de créer des agents IA qui se souviennent des interactions passées et peuvent effectuer des tâches complexes. Elle offre une mémoire à long terme et gère des processus en plusieurs étapes. - -Julep permet la création de tâches en plusieurs étapes intégrant la prise de décision, les boucles, le traitement parallèle et l'intégration avec de nombreux outils et API externes. - -Alors que de nombreuses applications d'IA se limitent à des chaînes simples et linéaires d'invites et d'appels d'API avec une ramification minimale, Julep est conçu pour gérer des scénarios plus complexes qui : - -- comporter plusieurs étapes, -- prendre des décisions basées sur les résultats du modèle, -- générer des branches parallèles, -- utiliser beaucoup d'outils, et -- courir pendant une longue période. - -> [!TIP] -> Imaginez que vous souhaitiez créer un agent d'IA capable de faire plus que simplement répondre à des questions simples : il doit gérer des tâches complexes, mémoriser des interactions passées et peut-être même utiliser d'autres outils ou API. C'est là qu'intervient Julep. Lisez [Comprendre les tâches](#understanding-tasks) pour en savoir plus. - -## Principales caractéristiques - -1. 🧠 **Agents IA persistants** : mémorisent le contexte et les informations au cours d'interactions à long terme. -2. 💾 **Sessions avec état** : gardez une trace des interactions passées pour des réponses personnalisées. -3. 🔄 **Tâches en plusieurs étapes** : créez des processus complexes en plusieurs étapes avec des boucles et une prise de décision. -4. ⏳ **Gestion des tâches** : gérez les tâches de longue durée qui peuvent s'exécuter indéfiniment. -5. 🛠️ **Outils intégrés** : utilisez des outils intégrés et des API externes dans vos tâches. -6. 🔧 **Auto-réparation** : Julep réessaiera automatiquement les étapes ayant échoué, renverra les messages et assurera généralement le bon déroulement de vos tâches. -7. 📚 **RAG** ​​: Utilisez le magasin de documents de Julep pour créer un système permettant de récupérer et d'utiliser vos propres données. - -![fonctionnalités](https://github.com/user-attachments/assets/4355cbae-fcbd-4510-ac0d-f8f77b73af70) - -> [!TIP] -> Julep est idéal pour les applications qui nécessitent des cas d’utilisation de l’IA au-delà des simples modèles de réponse rapide. - -## Exemple rapide - -Imaginez un agent d’IA de recherche capable d’effectuer les opérations suivantes : - -1. **Prenez un sujet**, -2. **Proposez 30 requêtes de recherche** pour ce sujet, -3. Effectuez ces **recherches Web en parallèle**, -4. **Résumez** les résultats, -5. Envoyez le **résumé à Discord**. - -> [!REMARQUE] -> Dans Julep, ce serait une tâche unique sous80 lignes de codeet courirentièrement gérétout seul. Toutes les étapes sont exécutées sur les propres serveurs de Julep et vous n'avez pas besoin de lever le petit doigt. - -Voici un exemple fonctionnel : - -```yaml -name: Research Agent - -# Optional: Define the input schema for the task -input_schema: - type: object - properties: - topic: - type: string - description: The main topic to research - num_questions: - type: integer - description: The number of search queries to generate - -# Define the tools that the agent can use -tools: - - name: web_search - type: integration - integration: - provider: brave - setup: - api_key: - - - name: discord_webhook - type: api_call - api_call: - url: https://discord.com/api/webhooks// - method: POST - headers: - Content-Type: application/json - -# Special variables: -# - inputs: for accessing the input to the task -# - outputs: for accessing the output of previous steps -# - _: for accessing the output of the previous step - -# Define the main workflow -main: -- prompt: - - role: system - content: >- - You are a research assistant. - Generate {{inputs[0].num_questions|default(30, true)}} diverse search queries related to the topic: - {{inputs[0].topic}} - - Write one query per line. - unwrap: true - -# Evaluate the search queries using a simple python expression -- evaluate: - search_queries: "_.split(NEWLINE)" - -# Run the web search in parallel for each query -- over: "_.search_queries" - map: - tool: web_search - arguments: - query: "_" - parallelism: 5 - -# Collect the results from the web search -- evaluate: - search_results: _ - -# Summarize the results -- prompt: - - role: system - content: > - You are a research summarizer. Create a comprehensive summary of the following research results on the topic {{inputs[0].topic}}. - The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point. - The length of the summary should be less than 150 words. - Here are the search results: - {{_.search_results}} - unwrap: true - settings: - model: gpt-4o-mini - -- evaluate: - discord_message: |- - f''' - **Research Summary for {inputs[0].topic}** - {_} - ''' - - # Send the summary to Discord -- tool: discord_webhook - arguments: - json_: - content: _.discord_message[:2000] # Discord has a 2000 character limit -``` - -Dans cet exemple, Julep gérera automatiquement les exécutions parallèles, réessayera les étapes ayant échoué, renverra les requêtes API et maintiendra les tâches en cours d'exécution de manière fiable jusqu'à leur achèvement. - -> Cela s'exécute en moins de 30 secondes et renvoie le résultat suivant : - -
-Résumé de la recherche sur l'IA (Cliquez pour agrandir) - -> **Résumé de la recherche sur l'IA** -> -> ### Résumé des résultats de recherche sur l'intelligence artificielle (IA) -> -> #### Présentation -> -> Le domaine de l’intelligence artificielle (IA) a connu des avancées significatives ces dernières années, marquées par le développement de méthodes et de technologies permettant aux machines de percevoir leur environnement, d’apprendre à partir de données et de prendre des décisions. L’objectif principal de ce résumé est de présenter les enseignements tirés de divers résultats de recherche liés à l’IA. -> -> #### Principales conclusions -> -> 1. **Définition et portée de l’IA** : -> -> - L'IA est définie comme une branche de l'informatique axée sur la création de systèmes capables d'effectuer des tâches nécessitant une intelligence humaine, notamment l'apprentissage, le raisonnement et la résolution de problèmes (Wikipedia). -> - Il englobe divers sous-domaines, notamment l’apprentissage automatique, le traitement du langage naturel, la robotique et la vision par ordinateur. -> -> 2. **Impact et applications** : -> -> - Les technologies d'IA sont intégrées dans de nombreux secteurs, améliorant l'efficacité et la productivité. Les applications vont des véhicules autonomes et des diagnostics de santé à l'automatisation du service client et aux prévisions financières (OpenAI). -> - L'engagement de Google à rendre l'IA bénéfique pour tous met en évidence son potentiel à améliorer considérablement la vie quotidienne en améliorant l'expérience utilisateur sur diverses plateformes (Google AI). -> -> 3. **Considérations éthiques** : -> -> - Un débat est en cours sur les implications éthiques de l'IA, notamment sur les préoccupations relatives à la confidentialité, aux préjugés et à la responsabilité dans les processus de prise de décision. La nécessité d'un cadre garantissant l'utilisation sûre et responsable des technologies de l'IA est soulignée (OpenAI). -> -> 4. **Mécanismes d’apprentissage** : -> -> - Les systèmes d'IA utilisent différents mécanismes d'apprentissage, tels que l'apprentissage supervisé, l'apprentissage non supervisé et l'apprentissage par renforcement. Ces méthodes permettent à l'IA d'améliorer ses performances au fil du temps en apprenant des expériences et des données passées (Wikipedia). -> - La distinction entre l’apprentissage supervisé et non supervisé est essentielle ; l’apprentissage supervisé s’appuie sur des données étiquetées, tandis que l’apprentissage non supervisé identifie des modèles sans étiquettes prédéfinies (non supervisé). -> -> 5. **Orientations futures**: -> - Les futurs développements de l’IA devraient se concentrer sur l’amélioration de l’interprétabilité et de la transparence des systèmes d’IA, garantissant qu’ils peuvent fournir des décisions et des actions justifiables (OpenAI). -> - On observe également une volonté de rendre les systèmes d’IA plus accessibles et plus conviviaux, encourageant une adoption plus large dans différents groupes démographiques et secteurs (Google AI). -> -> #### Conclusion -> -> L’IA représente une force de transformation dans de nombreux domaines, promettant de remodeler les industries et d’améliorer la qualité de vie. Cependant, à mesure que ses capacités se développent, il est essentiel de tenir compte des implications éthiques et sociétales qui en découlent. La poursuite des recherches et de la collaboration entre les technologues, les éthiciens et les décideurs politiques sera essentielle pour s’orienter dans le futur paysage de l’IA. - -
- -## Installation - -Pour commencer à utiliser Julep, installez-le en utilisant [npm](https://www.npmjs.com/package/@julep/sdk) ou [pip](https://pypi.org/project/julep/) : - -**Node.js**: - -```bash -npm install @julep/sdk - -# or - -bun add @julep/sdk -``` - -**Python**: - -```bash -pip install julep -``` - -> [!REMARQUE] -> Obtenez votre clé API [ici](https://dashboard-dev.julep.ai). -> -> Pendant que nous sommes en version bêta, vous pouvez également nous contacter sur [Discord](https://discord.com/invite/JTSBGRZrzj) pour obtenir la levée des limites de débit sur votre clé API. - -> [!TIP] -> 💻 Êtes-vous du genre à vouloir _montrer le code !™_ ? Nous avons créé une multitude de livres de recettes pour vous aider à démarrer. **Consultez les [livres de recettes](https://github.com/julep-ai/julep/tree/dev/cookbooks)** pour parcourir les exemples. -> -> 💡 Il existe également de nombreuses idées que vous pouvez développer en plus de Julep. **Consultez la [liste d'idées](https://github.com/julep-ai/julep/tree/dev/cookbooks/IDEAS.md)** pour vous inspirer. - -## Démarrage rapide de Python 🐍 - -````python -### Step 0: Setup - -import time -import yaml -from julep import Julep # or AsyncJulep - -client = Julep(api_key="your_julep_api_key") - -### Step 1: Create an Agent - -agent = client.agents.create( - name="Storytelling Agent", - model="claude-3.5-sonnet", - about="You are a creative storyteller that crafts engaging stories on a myriad of topics.", -) - -### Step 2: Create a Task that generates a story and comic strip - -task_yaml = """ -name: Storyteller -description: Create a story based on an idea. - -tools: - - name: research_wikipedia - type: integration - integration: - provider: wikipedia - method: search - -main: - # Step 1: Generate plot idea - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: > - Based on the idea '{{_.idea}}', generate a list of 5 plot ideas. Go crazy and be as creative as possible. Return your output as a list of long strings inside ```balises yaml à la fin de votre réponse. -déballer : vrai - -- évaluer: -plot_ideas : load_yaml(_.split('```yaml')[1].split('```')[0].strip()) - -# Étape 2 : Extraire les domaines de recherche des idées de l'intrigue -- rapide: -- rôle : système -contenu : Vous êtes {{agent.name}}. {{agent.about}} -- rôle : utilisateur -contenu : > -Voici quelques idées d’intrigue pour une histoire : -{% pour l'idée dans _.plot_ideas %} -- {{idée}} -{% fin de %} - -Pour développer l’histoire, nous devons rechercher les idées d’intrigue. -Sur quoi devrions-nous faire des recherches ? Notez les requêtes de recherche Wikipédia pour les idées d'intrigue que vous trouvez intéressantes. -Renvoyez votre sortie sous forme de liste yaml à l'intérieur```yaml tags at the end of your response. - unwrap: true - settings: - model: gpt-4o-mini - temperature: 0.7 - - - evaluate: - research_queries: load_yaml(_.split('```yaml')[1].split('```')[0].strip()) - - # Step 3: Research each plot idea - - foreach: - in: _.research_queries - do: - tool: research_wikipedia - arguments: - query: _ - - - evaluate: - wikipedia_results: 'NEWLINE.join([f"- {doc.metadata.title}: {doc.metadata.summary}" for item in _ for doc in item.documents])' - - # Step 4: Think and deliberate - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: |- - Before we write the story, let's think and deliberate. Here are some plot ideas: - {% for idea in outputs[1].plot_ideas %} - - {{idea}} - {% endfor %} - - Here are the results from researching the plot ideas on Wikipedia: - {{_.wikipedia_results}} - - Think about the plot ideas critically. Combine the plot ideas with the results from Wikipedia to create a detailed plot for a story. - Write down all your notes and thoughts. - Then finally write the plot as a yaml object inside ```balises yaml à la fin de votre réponse. L'objet yaml doit avoir la structure suivante : - - ```yaml - title: "" - characters: - - name: "" - about: "" - synopsis: "" - scenes: - - title: "" - description: "" - characters: - - name: "" - role: "" - plotlines: - - ""``` - -Assurez-vous que le fichier YAML est valide et que les caractères et les scènes ne sont pas vides. Faites également attention aux points-virgules et autres problèmes liés à l'écriture du fichier YAML. -déballer : vrai - -- évaluer: -intrigue : « load_yaml(_.split('```yaml')[1].split('```')[0].strip())" -""" - -tâche = client.tasks.create( -agent_id=agent.id, -**yaml.safe_load(tâche_yaml) -) - -### Étape 3 : Exécuter la tâche - -exécution = client.executions.create( -task_id=tâche.id, -input={"idea": "Un chat qui apprend à voler"} -) - -# 🎉 Regardez l'histoire et les panneaux de bande dessinée se générer -while (result := client.executions.get(execution.id)).status n'est pas dans ['réussi', 'échec'] : -print(résultat.statut, résultat.sortie) -heure.sommeil(1) - -# 📦 Une fois l'exécution terminée, récupérez les résultats -si result.status == "réussi" : -imprimer(résultat.sortie) -autre: -déclencher une exception (résultat.erreur) -```` - -You can find the full python example [here](example.py). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Node.js Quick Start 🟩 - -```javascript -// Étape 0 : Configuration -const dotenv = require("dotenv"); -const { Julep } = require("@julep/sdk"); -const yaml = require("yaml"); - -dotenv.config(); - -const client = nouveau Julep({ -Clé API : processus.env.JULEP_API_KEY, -environnement : process.env.JULEP_ENVIRONMENT || "production", -}); - -/* Étape 1 : Créer un agent */ - -fonction asynchrone createAgent() { -agent constant = attendez que le client.agents.create({ -nom : « Agent de narration », -modèle : "claude-3.5-sonnet", -à propos de: -« Vous êtes un conteur créatif qui crée des histoires captivantes sur une myriade de sujets. », - }); -agent de retour; -} - -/* Étape 2 : Créer une tâche qui génère une histoire et une bande dessinée */ - -const tâcheYaml = ` -nom : Conteur -description : Créez une histoire basée sur une idée. - -outils: -- nom : research_wikipedia -intégration: -fournisseur : wikipedia -méthode : recherche - -principal: -# Étape 1 : Générer une idée d'intrigue -- rapide: -- rôle : système -contenu : Vous êtes {{agent.name}}. {{agent.about}} -- rôle : utilisateur -contenu : > -En vous basant sur l'idée « {{_.idea}} », générez une liste de 5 idées d'intrigue. Laissez libre cours à votre créativité. Renvoyez votre résultat sous forme de liste de longues chaînes à l'intérieur des balises \`\`\`yaml à la fin de votre réponse. -déballer : vrai - -- évaluer: -plot_ideas: load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# Étape 2 : Extraire les domaines de recherche des idées de l'intrigue -- rapide: -- rôle : système -contenu : Vous êtes {{agent.name}}. {{agent.about}} -- rôle : utilisateur -contenu : > -Voici quelques idées d’intrigue pour une histoire : -{% pour l'idée dans _.plot_ideas %} -- {{idée}} -{% fin de %} - -Pour développer l’histoire, nous devons rechercher les idées d’intrigue. -Sur quoi devrions-nous faire des recherches ? Notez les requêtes de recherche Wikipédia pour les idées d'intrigue que vous trouvez intéressantes. -Renvoyez votre sortie sous forme de liste yaml à l'intérieur des balises \`\`\`yaml à la fin de votre réponse. -déballer : vrai -paramètres: -modèle: gpt-4o-mini -température: 0,7 - -- évaluer: -requêtes de recherche : load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# Étape 3 : Recherchez chaque idée d'intrigue -- pour chaque : -dans : _.research_queries -faire: -outil : research_wikipedia -Arguments: -requête: _ - -- évaluer: -wikipedia_results: 'NEWLINE.join([f"- {doc.metadata.title}: {doc.metadata.summary}" pour l'élément dans _ pour le document dans l'élément.documents])' - -# Étape 4 : Réfléchir et délibérer -- rapide: -- rôle : système -contenu : Vous êtes {{agent.name}}. {{agent.about}} -- rôle : utilisateur -contenu: |- -Avant d'écrire l'histoire, réfléchissons et délibérons. Voici quelques idées d'intrigue : -{% pour l'idée dans les sorties[1].plot_ideas %} -- {{idée}} -{% fin de %} - -Voici les résultats de la recherche d'idées d'intrigue sur Wikipédia : -{{_.wikipedia_results}} - -Réfléchissez aux idées de l'intrigue de manière critique. Combinez les idées de l'intrigue avec les résultats de Wikipédia pour créer une intrigue détaillée pour une histoire. -Écrivez toutes vos notes et vos pensées. -Ensuite, écrivez enfin le tracé sous forme d'objet yaml à l'intérieur des balises \`\`\`yaml à la fin de votre réponse. L'objet yaml doit avoir la structure suivante : - -\`\`\`yaml -titre: "" -personnages: -- nom: "" -à propos de: "" -résumé: "" -scènes: -- titre: "" -description: "" -personnages: -- nom: "" -rôle: "" -intrigues: - - ""\`\`\` - -Assurez-vous que le fichier YAML est valide et que les caractères et les scènes ne sont pas vides. Faites également attention aux points-virgules et autres problèmes liés à l'écriture du fichier YAML. -déballer : vrai - -- évaluer: -tracé : « load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) » -`; - -fonction asynchrone createTask(agentId) { -const tâche = wait client.tasks.create(agentId, yaml.parse(taskYaml)); -tâche de retour; -} - -/* Étape 3 : Exécuter la tâche */ - -fonction asynchrone executeTask(taskId) { -const exécution = attendre client.executions.create(taskId, { -entrée : { idée : "Un chat qui apprend à voler" }, - }); - -// 🎉 Regardez comment l'histoire et les panneaux de bande dessinée sont générés -tandis que (vrai) { -const résultat = wait client.executions.get(execution.id); -console.log(résultat.status, résultat.output); - -si (résultat.status === "réussi" || résultat.status === "échec") { -// 📦 Une fois l'exécution terminée, récupérez les résultats -si (résultat.status === "réussi") { -console.log(résultat.sortie); -} autre { -lancer une nouvelle erreur (résultat.erreur); - } -casser; - } - -attendre une nouvelle promesse((résolution) => setTimeout(résolution, 1000)); - } -} - -// Fonction principale pour exécuter l'exemple -fonction asynchrone main() { -essayer { -agent constant = wait createAgent(); -const tâche = wait createTask(agent.id); -attendre executeTask(task.id); -} catch (erreur) { -console.error("Une erreur s'est produite :", error); - } -} - -principal() -.then(() => console.log("Terminé")) -.catch(console.erreur); -``` - -You can find the full Node.js example [here](example.js). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Components - -Julep is made up of the following components: - -- **Julep Platform**: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform. -- **Julep SDKs**: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way. -- **Julep API**: The Julep API is a RESTful API that you can use to interact with the Julep platform. - -### Mental Model - -
- -
- -Think of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here's how to visualize it: - -1. **Your Application Code:** - - - You can use the Julep SDK in your application to define agents, tasks, and workflows. - - The SDK provides functions and classes that make it easy to set up and manage these components. - -2. **Julep Backend Service:** - - - The SDK communicates with the Julep backend over the network. - - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows. - -3. **Integration with Tools and APIs:** - - Within your workflows, you can integrate external tools and services. - - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs. - -## Concepts - -Julep is built on several key technical components that work together to create powerful AI workflows: - -```sirène -graphique TD -Utilisateur[Utilisateur] ==> Session[Session] -Session --> Agent[Agent] -Agent --> Tâches[Tâches] -Agent --> LLM [Modèle de langage étendu] -Tâches --> Outils[Outils] -Agent --> Documents[Documents] -Documents --> VectorDB[Base de données vectorielles] -Tâches --> Exécutions[Exécutions] - -client classDef remplissage : #9ff, trait : #333, largeur du trait : 1 px ; -classe Utilisateur client ; - -classDef core fill:#f9f,trait:#333,largeur-trait:2px; -classe Agent,Tâches,Session core; -``` - -- **Agents**: AI-powered entities backed by large language models (LLMs) that execute tasks and interact with users. -- **Users**: Entities that interact with agents through sessions. -- **Sessions**: Stateful interactions between agents and users, maintaining context across multiple exchanges. -- **Tasks**: Multi-step, programmatic workflows that agents can execute, including various types of steps like prompts, tool calls, and conditional logic. -- **Tools**: Integrations that extend an agent's capabilities, including user-defined functions, system tools, or third-party API integrations. -- **Documents**: Text or data objects associated with agents or users, vectorized and stored for semantic search and retrieval. -- **Executions**: Instances of tasks that have been initiated with specific inputs, with their own lifecycle and state machine. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Understanding Tasks - -Tasks are the core of Julep's workflow system. They allow you to define complex, multi-step AI workflows that your agents can execute. Here's a brief overview of task components: - -- **Name, Description and Input Schema**: Each task has a unique name and description for easy identification. An input schema (optional) that is used to validate the input to the task. -- **Main Steps**: The core of a task, defining the sequence of actions to be performed. Each step can be a prompt, tool call, evaluate, wait_for_input, log, get, set, foreach, map_reduce, if-else, switch, sleep, or return. (See [Types of Workflow Steps](#types-of-workflow-steps) for more details) -- **Tools**: Optional integrations that extend the capabilities of your agent during task execution. - -### Lifecycle of a Task - -You create a task using the Julep SDK and specify the main steps that the agent will execute. When you execute a task, the following lifecycle happens: - -```sirène -Diagramme de séquence -participant D comme votre code -participant C en tant que client Julep -participant S en tant que serveur Julep - -D->>C : Créer une tâche -C->>S : Soumettre l'exécution -Remarque sur S : Exécuter la tâche -Remarque sur S : Gérer l'état -S-->>C : Événements d'exécution -C-->>D : Mises à jour de la progression -S->>C : Fin de l'exécution -C->>D : Résultat final -``` - -### Types of Workflow Steps - -Tasks in Julep can include various types of steps, allowing you to create complex and powerful workflows. Here's an overview of the available step types: - -#### Common Steps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAboutSyntax
Prompt -Send a message to the AI model and receive a response -

Note: The prompt step uses Jinja templates and you can access context variables in them. -
- -```YAML -- invite : « Analyser les données suivantes : {{agent.name}} » # <-- ceci est un modèle jinja -``` - -```YAML -- rapide: -- rôle : système -contenu : « Vous êtes {{agent.name}}. {{agent.about}} » -- rôle : utilisateur -contenu : « Analysez les données suivantes : {{_.data}} » -``` - -
Tool Call -Execute an integrated tool or API that you have previously declared in the task. -

Note: The tool call step uses Python expressions inside the arguments. - -
- -```YAML -- outil : recherche sur le Web -Arguments: -requête : « Derniers développements de l'IA » # <-- il s'agit d'une expression Python (remarquez les guillemets) -num_results: len(_.topics) # <-- expression python pour accéder à la longueur d'une liste -``` - -
Evaluate -Perform calculations or manipulate data -

Note: The evaluate step uses Python expressions. -
- -```YAML -- évaluer: -average_score : somme(scores) / len(scores) -``` - -
Wait for Input -Pause workflow until input is received. It accepts an `info` field that can be used by your application to collect input from the user. - -

Note: The wait_for_input step is useful when you want to pause the workflow and wait for user input e.g. to collect a response to a prompt. - -
- -```YAML -- attendre_la_saisie : -info: -message : « Veuillez fournir des informations supplémentaires sur {_.required_info}. » # <-- expression Python pour accéder à la variable de contexte -``` - -
Log -Log a specified value or message. - -

Note: The log step uses Jinja templates and you can access context variables in them. - -
- -```YAML -- log : « Traitement terminé pour l'élément {{_.item_id}} » # <-- modèle jinja pour accéder à la variable de contexte -``` - -
- -#### Key-Value Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
Get -Retrieve a value from the execution's key-value store. - - - -```YAML -- obtenir : préférences_utilisateur -``` - -
Set -Assign a value to a key in the execution's key-value store. - -

Note: The set step uses Python expressions. - -
- -```YAML -- ensemble: -préférence_utilisateur : '"dark_mode"' # <-- expression python -``` - -
- -#### Iteration Steps - - - - - - - - - - - - - - - - - - - +* **Mémoire persistante :** Construisez des agents d'IA qui maintiennent le contexte et la mémoire à long terme à travers les conversations, afin qu'ils puissent apprendre et s'améliorer au fil du temps. +* **Flux de travail modulaires :** Définissez des tâches complexes comme des étapes modulaires (en YAML ou code) avec une logique conditionnelle, des boucles et la gestion d'erreurs. Le moteur de flux de travail de Julep gère automatiquement les processus multi-étapes et les décisions. +* **Orchestration d'outils :** Intégrez facilement des outils externes et des APIs (recherche web, bases de données, services tiers, etc.) dans la boîte à outils de votre agent. Les agents de Julep peuvent invoquer ces outils pour augmenter leurs capacités, permettant la génération augmentée par récupération et plus. +* **Parallèle et extensible :** Exécutez plusieurs opérations en parallèle pour l'efficacité, et laissez Julep gérer la mise à l'échelle et la concurrence en arrière-plan. La plateforme est sans serveur, donc elle met à l'échelle les flux de travail de manière transparente sans surcharge DevOps supplémentaire. +* **Exécution fiable :** Ne vous inquiétez pas des problèmes - Julep fournit des réessais intégrés, des étapes d'auto-guérison et une gestion d'erreurs robuste pour maintenir les tâches de longue durée sur la bonne voie. Vous obtenez également une surveillance et une journalisation en temps réel pour suivre les progrès. +* **Intégration facile :** Commencez rapidement avec nos SDKs pour **Python** et **Node.js**, ou utilisez le CLI Julep pour les scripts. L'API REST de Julep est disponible si vous voulez intégrer directement dans d'autres systèmes. - - -
Name About Syntax
Foreach -Iterate over a collection and perform steps for each item - - - -```YAML -- pour chaque : -dans : _.data_list # <-- expression python pour accéder à la variable de contexte -faire: -- log : « Traitement de l'élément {{_.item}} » # <-- modèle jinja pour accéder à la variable de contexte -``` - -
Map-Reduce -Map over a collection and reduce the results - - + -```YAML -- map_reduce: -over: _.numbers # <-- expression python pour accéder à la variable de contexte -carte: -- évaluer: -au carré : "_ ** 2" -réduire : résultats + [_] # <-- (facultatif) expression Python pour réduire les résultats. Il s'agit de la valeur par défaut si elle est omise. -``` +## Pourquoi Julep ? -```YAML -- map_reduce: -plus de: _.topics -carte: -- invite : Rédigez un essai sur {{_}} -parallélisme : 10 -``` +Julep est une plateforme open-source pour construire des **flux de travail d'IA basés sur des agents** qui vont bien au-delà de simples chaînes de prompts. Elle vous permet d'orchestrer des processus complexes en plusieurs étapes avec des modèles de langage de grande taille (LLM) et des outils **sans gérer d'infrastructure**. Avec Julep, vous pouvez créer des agents d'IA qui **se souviennent des interactions passées** et gèrent des tâches sophistiquées avec une logique de branchement, des boucles, une exécution parallèle et l'intégration d'APIs externes. En bref, Julep agit comme un *"Firebase pour les agents d'IA,"* fournissant un backend robuste pour les flux de travail intelligents à grande échelle. -
Parallel -Run multiple steps in parallel +**Caractéristiques clés et avantages :** - +*Concentrez-vous sur votre logique et créativité d'IA, pendant que Julep s'occupe du gros travail !* -```YAML -- parallèle: -- outil : recherche sur le Web -Arguments: -requête : « Actualités sur l'IA » -- outil : weather_check -Arguments: -Lieu : « New York » -``` + -
- -#### Conditional Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
If-Else -Conditional execution of steps - - - -```YAML -- si : _.score > 0.8 # <-- expression python -alors: -- log : score élevé atteint -autre: -- erreur : le score doit être amélioré -``` - -
Switch -Execute steps based on multiple conditions - - - -```YAML -- changer: -- cas : _.category == 'A' -alors: -- log : « Traitement de catégorie A » -- cas : _.category == 'B' -alors: -- log : « Traitement de catégorie B » -- case: _ # Cas par défaut -alors: -- erreur : catégorie inconnue -``` - -
- -#### Other Control Flow - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name About Syntax
Sleep -Pause the workflow for a specified duration - - - -```YAML -- dormir: -secondes: 30 -# minutes: 1 -# heures: 1 -# jours: 1 -``` - -
Return -Return a value from the workflow - -

Note: The return step uses Python expressions. - -
- -```YAML -- retour: -résultat : " Tâche terminée avec succès " # <-- expression python -heure : datetime.now().isoformat() # <-- expression python -``` - -
Yield -Run a subworkflow and await its completion - - - -```YAML -- rendement: -flux de travail : données_de_processus -Arguments: -données d'entrée : _. données brutes # <-- expression Python -``` - -
Error -Handle errors by specifying an error message - - - -```YAML -- erreur : « Entrée non valide fournie » # <-- Chaînes uniquement -``` - -
- -Each step type serves a specific purpose in building sophisticated AI workflows. This categorization helps in understanding the various control flows and operations available in Julep tasks. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Tool Types - -Agents can be given access to a number of "tools" -- any programmatic interface that a foundation model can "call" with a set of inputs to achieve a goal. For example, it might use a `web_search(query)` tool to search the Internet for some information. - -Unlike agent frameworks, julep is a _backend_ that manages agent execution. Clients can interact with agents using our SDKs. julep takes care of executing tasks and running integrations. - -Tools in julep can be one of: - -1. **User-defined `functions`**: These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. They need to be handled by the client. The workflow will pause until the client calls the function and gives the results back to julep. -2. **`system` tools**: Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. -3. **`integrations`**: Built-in third party tools that can be used to extend the capabilities of your agents. -4. **`api_calls`**: Direct api calls during workflow executions as tool calls. - -### User-defined `functions` - -These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example: - -```YAML -nom : Exemple de tâche d'outil système -description : Lister les agents à l'aide d'un appel système - -outils: -- nom : send_notification -description : Envoyer une notification à l'utilisateur -type : fonction -fonction: -paramètres: -type: objet -propriétés: -texte: -type : chaîne -description : Contenu de la notification - -principal: -- outil : send_notification -Arguments: -contenu : '"salut"' # <-- expression python -``` - -Whenever julep encounters a _user-defined function_, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep. - -### `system` tools - -Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. - -`system` tools are built into the backend. They get executed automatically when needed. They do _not_ require any action from the client-side. - -For example, - -```YAML -nom : Exemple de tâche d'outil système -description : Lister les agents à l'aide d'un appel système - -outils: -- nom : list_agent_docs -description : liste tous les documents pour l'agent donné -type : système -système: -ressource : agent -sous-ressource : doc -opération : liste - -principal: -- outil : list_agents -Arguments: -limite : 10 # <-- expression python -``` - -#### Available `system` resources and operations - -- `agent`: - - - `list`: List all agents. - - `get`: Get a single agent by id. - - `create`: Create a new agent. - - `update`: Update an existing agent. - - `delete`: Delete an existing agent. - -- `user`: - - - `list`: List all users. - - `get`: Get a single user by id. - - `create`: Create a new user. - - `update`: Update an existing user. - - `delete`: Delete an existing user. - -- `session`: - - - `list`: List all sessions. - - `get`: Get a single session by id. - - `create`: Create a new session. - - `update`: Update an existing session. - - `delete`: Delete an existing session. - - `chat`: Chat with a session. - - `history`: Get the chat history with a session. - -- `task`: - - - `list`: List all tasks. - - `get`: Get a single task by id. - - `create`: Create a new task. - - `update`: Update an existing task. - - `delete`: Delete an existing task. - -- `doc` (subresource for `agent` and `user`): - - `list`: List all documents. - - `create`: Create a new document. - - `delete`: Delete an existing document. - - `search`: Search for documents. - -Additional operations available for some resources: - -- `embed`: Embed a resource (specific resources not specified in the provided code). -- `change_status`: Change the status of a resource (specific resources not specified in the provided code). -- `chat`: Chat with a resource (specific resources not specified in the provided code). -- `history`: Get the chat history with a resource (specific resources not specified in the provided code). -- `create_or_update`: Create a new resource or update an existing one (specific resources not specified in the provided code). - -Note: The availability of these operations may vary depending on the specific resource and implementation details. - -> [!TIP] > **Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -### Built-in `integrations` - -Julep comes with a number of built-in integrations (as described in the section below). `integration` tools are directly executed on the julep backend. Any additional parameters needed by them at runtime can be set in the agent/session/user's `metadata` fields. - -See [Integrations](#integrations) for details on the available integrations. - -> [!TIP] > **Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -### Direct `api_calls` - -julep can also directly make api calls during workflow executions as tool calls. Same as `integration`s, additional runtime parameters are loaded from `metadata` fields. - -For example, - -```YAML -nom : Exemple de tâche api_call -outils: -- type : api_call -nom : bonjour -appel_API : -méthode : GET -URL: https://httpbin.org/get - -principal: -- outil : bonjour -Arguments: -json: -test: _.input # <-- expression python -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## Integrations - -Julep supports various integrations that extend the capabilities of your AI agents. Here's a list of available integrations and their supported arguments: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Brave Search - -```YAML -installation: -api_key : chaîne # La clé API pour Brave Search - -Arguments: -requête : chaîne # La requête de recherche pour rechercher avec Brave - -sortir: -résultat : liste[dict] # Une liste de résultats de recherche, chacun contenant : titre, lien, extrait -``` - - - -**Example cookbook**: [cookbooks/02-sarcastic-news-headline-generator.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/02-sarcastic-news-headline-generator.ipynb) - -
BrowserBase - -```YAML -installation: -api_key : chaîne # La clé API pour BrowserBase -project_id : chaîne # L'ID de projet pour BrowserBase -session_id : chaîne # (facultatif) L'ID de session pour BrowserBase - -Arguments: -urls : liste[chaîne] # Les URL pour le chargement avec BrowserBase - -sortir: -documents : liste # Les documents chargés à partir des URL -``` - - - -**Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -
Email - -```YAML -installation: -hôte : chaîne # L'hôte du serveur de messagerie -port : entier # Le port du serveur de messagerie -utilisateur : chaîne # Le nom d'utilisateur du serveur de messagerie -mot de passe : chaîne # Le mot de passe du serveur de messagerie - -Arguments: -à : chaîne # L'adresse e-mail à laquelle envoyer l'e-mail -de : chaîne # L'adresse e-mail à partir de laquelle envoyer l'e-mail -objet : chaîne # L'objet de l'e-mail -corps : chaîne # Le corps de l'e-mail - -sortir: -succès : booléen # Indique si l'e-mail a été envoyé avec succès -``` - - - -**Example cookbook**: [cookbooks/00-Devfest-Email-Assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) - -
Spider - -```YAML -installation: -spider_api_key : chaîne # La clé API pour Spider - -Arguments: -url : chaîne # L'URL pour laquelle récupérer les données -paramètres : dict # (facultatif) Les paramètres de l'API Spider -content_type : chaîne # (facultatif) Le type de contenu à renvoyer. La valeur par défaut est « application/json ». Autres options : « text/csv », « application/xml », « application/jsonl » - -sortir: -résultat : liste[dict] # Une liste de résultats, chacun contenant : contenu, erreur, statut, coûts, url -``` - - - -**Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -
Weather - -```YAML -installation: -openweathermap_api_key : chaîne # La clé API pour OpenWeatherMap - -Arguments: -emplacement : chaîne # L'emplacement pour lequel récupérer les données météorologiques - -sortir: -résultat : chaîne # Les données météorologiques pour l'emplacement spécifié -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
Wikipedia - -```YAML -Arguments: -requête : chaîne # La chaîne de requête de recherche -load_max_docs : entier # (facultatif) Nombre maximal de documents à charger. La valeur par défaut est 2. - -sortir: -documents : liste # Les documents renvoyés par la recherche sur Wikipédia -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
FFmpeg - -```YAML -Arguments: -cmd : chaîne # La commande FFmpeg à exécuter -fichier : chaîne # Le fichier codé en base64 à traiter - -sortir: -fileoutput : chaîne # Le fichier de sortie de la commande FFmpeg en codage base64 -résultat : booléen # Si la commande FFmpeg a été exécutée avec succès -mime_type : chaîne # Le type MIME du fichier de sortie -``` - -
Llama Parse - -```YAML -installation: -llamaparse_api_key: string # La clé API pour Llama Parse -paramètres : dict # (facultatif) Paramètres supplémentaires pour l'intégration de Llama Parse - -Arguments: -fichier : chaîne | tableau# Le fichier codé en base64 à analyser ou un tableau d'URL http/https à charger. -nom de fichier : chaîne # (facultatif). Le nom de fichier du fichier. La valeur par défaut est un UUID aléatoire. Utilisé uniquement si le fichier est une chaîne codée en base64. -params : dict # (facultatif) Paramètres supplémentaires pour l'intégration de Llama Parse. Remplace les paramètres de configuration. -base64 : booléen # Indique si le fichier d'entrée est codé en base64. La valeur par défaut est false. - -sortir: -documents : liste[Document] # Une liste de documents analysés -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
Cloudinary - -```YAML - -méthode : media_upload | media_edit # La méthode à utiliser pour l'intégration Cloudinary - -installation: -cloudinary_cloud_name : chaîne # Votre nom de cloud Cloudinary -cloudinary_api_key : chaîne # Votre clé API Cloudinary -cloudinary_api_secret : chaîne # Votre secret d'API Cloudinary -paramètres : dict # (facultatif) Paramètres supplémentaires pour l'intégration Cloudinary - -Arguments: -fichier : chaîne # L'URL du téléchargement du fichier. Disponible uniquement pour la méthode media_upload. -upload_params : dict # (facultatif) Paramètres supplémentaires pour le téléchargement. Disponible uniquement pour la méthode media_upload. -public_id : chaîne # (facultatif) L'ID public du fichier. Pour la méthode media_edit, il est OBLIGATOIRE. Pour la méthode media_upload, il est facultatif. La valeur par défaut est un UUID aléatoire. -transformation : list[dict] # Les transformations à appliquer au fichier. Disponible uniquement pour la méthode media_edit. -return_base64 : booléen # Indique si le fichier doit être renvoyé en codage base64. La valeur par défaut est false. - -sortir: -url : chaîne # L'URL du fichier téléchargé. Disponible uniquement pour la méthode media_upload. -meta_data : dict # Métadonnées supplémentaires provenant de la réponse de téléchargement. Disponible uniquement pour la méthode media_upload. -public_id : chaîne # L'ID public du fichier téléchargé. Disponible uniquement pour la méthode media_upload. -turned_url : chaîne # (facultatif) L'URL transformée. Disponible uniquement pour la méthode media_edit. -base64 : chaîne # (Facultatif) Le fichier codé en base64 si return_base64 est vrai. -``` - - - -**Example cookbook**: [cookbooks/05-video-processing-with-natural-language.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb) - -
Arxiv - -```YAML -méthode : recherche # La méthode à utiliser pour l'intégration d'Arxiv - -installation: -# Aucun paramètre de configuration spécifique n'est requis pour Arxiv - -Arguments: -requête : chaîne # La requête de recherche pour la recherche avec Arxiv -id_list : liste[string] | None # (Facultatif) La liste des identifiants Arxiv à utiliser pour la recherche -max_results : entier # Le nombre maximal de résultats à renvoyer doit être compris entre 1 et 300 000 -download_pdf : booléen # S'il faut télécharger le PDF des résultats. La valeur par défaut est false. -sort_by : chaîne # Le critère de tri pour les résultats, options : relevance, lastUpdatedDate, submitDate -sort_order : chaîne # L'ordre de tri des résultats, options : croissant, décroissant - -sortir: -résultat : liste[dict] # Une liste de résultats de recherche, chacun contenant : entry_id, title, updated, published, authors, summary, comment, journal_ref, doi, primary_category, categories, links, pdf_url, pdf_downloaded -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
- -For more details, refer to our [Integrations Documentation](#integrations). - - - -## Other Features - -Julep offers a range of advanced features to enhance your AI workflows: - -### Adding Tools to Agents - -Extend your agent's capabilities by integrating external tools and APIs: - -```python -client.agents.outils.créer( -agent_id=agent.id, -nom="recherche_sur_le_web", -description="Rechercher des informations sur le Web.", -intégration={ -"fournisseur": "courageux", -"méthode": "recherche", -"setup": {"api_key": "votre_brave_api_key"}, - }, -) -``` - -### Managing Sessions and Users - -Julep provides robust session management for persistent interactions: - -```python -session = client.sessions.create( -agent_id=agent.id, -user_id=utilisateur.id, -context_overflow="adaptatif" -) - -# Poursuivre la conversation dans la même session -réponse = client.sessions.chat( -session_id=session.id, -messages=[ - { -"rôle": "utilisateur", -« contenu » : « Suivi de la conversation précédente. » - } - ] -) -``` - -### Document Integration and Search - -Easily manage and search through documents for your agents: - -```python -# Télécharger un document -document = client.agents.docs.create( -titre="Progrès de l'IA", -content="L'IA change le monde...", -métadonnées={"category": "article_de_recherche"} -) - -# Rechercher des documents -résultats = client.agents.docs.search( -texte="Progrès de l'IA", -metadata_filter={"category": "article_de_recherche"} -) -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## Référence - -### Référence du SDK - -- **Node.js** [Référence SDK](https://github.com/julep-ai/node-sdk/blob/main/api.md) | [Package NPM](https://www.npmjs.com/package/@julep/sdk) -- **Python** [Référence SDK](https://github.com/julep-ai/python-sdk/blob/main/api.md) | [Package PyPI](https://pypi.org/project/julep/) - -### Référence API - -Explorez notre documentation API pour en savoir plus sur les agents, les tâches et les exécutions : - -- [API des agents](https://dev.julep.ai/api/docs#tag/agents) -- [API des tâches](https://dev.julep.ai/api/docs#tag/tasks) -- [API d'exécution](https://dev.julep.ai/api/docs#tag/executions) - - +

+Démarrer avec Julep est simple : -## Démarrage rapide local +1. **Inscription et clé API :** D'abord, inscrivez-vous sur le [Tableau de Bord Julep](https://dashboard.julep.ai) pour obtenir votre clé API (nécessaire pour authentifier vos appels SDK). +2. **Installer le SDK :** Installez le SDK Julep pour votre langage préféré : -**Exigences**: + * **Python :** `pip install julep` + * **Node.js :** `npm install @julep/sdk` (ou `yarn add @julep/sdk`) +3. **Définir votre agent :** Utilisez le SDK ou YAML pour définir un agent et son flux de travail de tâches. Par exemple, vous pouvez spécifier la mémoire de l'agent, les outils qu'il peut utiliser, et une logique de tâche étape par étape. (Voir le **[Guide de démarrage rapide](https://docs.julep.ai/introduction/quick-start)** dans notre documentation pour une procédure détaillée.) +4. **Exécuter un flux de travail :** Invoquez votre agent via le SDK pour exécuter la tâche. La plateforme Julep orchestrera l'ensemble du flux de travail dans le cloud et gérera l'état, les appels d'outils et les interactions LLM pour vous. Vous pouvez vérifier la sortie de l'agent, surveiller l'exécution sur le tableau de bord, et itérer selon les besoins. -- dernier docker compose installé +C'est tout ! Votre premier agent d'IA peut être opérationnel en quelques minutes. Pour un tutoriel complet, consultez le **[Guide de démarrage rapide](https://docs.julep.ai/introduction/quick-start)** dans la documentation. -**Mesures**: +> **Note :** Julep offre également une interface en ligne de commande (CLI) (actuellement en bêta pour Python) pour gérer les flux de travail et les agents. Si vous préférez une approche sans code ou voulez scripter des tâches communes, voir les [documents CLI Julep](https://docs.julep.ai/responses/quickstart#cli-installation) pour plus de détails. -1. `git clone https://github.com/julep-ai/julep.git` -2. `cd julep` -3. `docker volume create cozo_backup` -4. `docker volume create cozo_data` -5. `cp .env.example .env # <-- Modifier ce fichier` -6. `docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db up --build` + -
- - Back to Top -  |  - - Table of Contents - -
- ---- - -## Quelle est la différence entre Julep et LangChain etc ? +## Documentation et exemples -### Différents cas d'utilisation -Considérez LangChain et Julep comme des outils avec des objectifs différents au sein de la pile de développement de l’IA. +Vous voulez plonger plus profondément ? La **[Documentation Julep](https://docs.julep.ai)** couvre tout ce dont vous avez besoin pour maîtriser la plateforme - des concepts fondamentaux (Agents, Tâches, Sessions, Outils) aux sujets avancés comme la gestion de la mémoire des agents et les éléments internes de l'architecture. Les ressources clés incluent : -LangChain est idéal pour créer des séquences d'invites et gérer les interactions avec les LLM. Il dispose d'un vaste écosystème avec de nombreuses intégrations prédéfinies, ce qui le rend pratique si vous souhaitez mettre en place quelque chose rapidement. LangChain s'adapte bien aux cas d'utilisation simples qui impliquent une chaîne linéaire d'invites et d'appels d'API. +* **[Guides de concepts](https://docs.julep.ai/concepts/) :** Apprenez sur l'architecture de Julep, comment fonctionnent les sessions et la mémoire, l'utilisation d'outils, la gestion de longues conversations, et plus. +* **[Référence API et SDK](https://docs.julep.ai/api-reference/) :** Trouvez une référence détaillée pour toutes les méthodes SDK et les points de terminaison de l'API REST pour intégrer Julep dans vos applications. +* **[Tutoriels](https://docs.julep.ai/tutorials/) :** Guides étape par étape pour construire des applications réelles (ex. un agent de recherche qui parcourt le web, un assistant de planification de voyage, ou un chatbot avec des connaissances personnalisées). +* **[Recettes de livre de cuisine](https://github.com/julep-ai/julep/tree/dev/cookbooks) :** Explorez le **Livre de cuisine Julep** pour des exemples de flux de travail et d'agents prêts à l'emploi. Ces recettes démontrent des modèles communs et des cas d'usage - un excellent moyen d'apprendre par l'exemple. *Parcourez le répertoire [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) dans ce dépôt pour des définitions d'agents d'exemple.* +* **[Intégration IDE](https://context7.com/julep-ai/julep) :** Accédez à la documentation Julep directement dans votre IDE ! Parfait pour obtenir des réponses instantanées pendant que vous codez. -Julep, en revanche, s'intéresse davantage à la création d'agents d'IA persistants capables de conserver le contexte lors d'interactions à long terme. Il est idéal lorsque vous avez besoin de flux de travail complexes impliquant des tâches en plusieurs étapes, une logique conditionnelle et une intégration avec divers outils ou API directement dans le processus de l'agent. Il est conçu dès le départ pour gérer les sessions persistantes et les flux de travail complexes. + -Utilisez Julep si vous imaginez créer un assistant IA complexe qui doit : +## Communauté et contributions -- Suivez les interactions des utilisateurs sur plusieurs jours ou semaines. -- Exécutez des tâches planifiées, comme l'envoi de résumés quotidiens ou la surveillance de sources de données. -- Prendre des décisions basées sur des interactions antérieures ou des données stockées. -- Interagir avec plusieurs services externes dans le cadre de son flux de travail. +Rejoignez notre communauté grandissante de développeurs et d'enthousiastes de l'IA ! Voici quelques façons de s'impliquer et d'obtenir du soutien : -Ensuite, Julep fournit l’infrastructure pour prendre en charge tout cela sans que vous ayez à le construire à partir de zéro. +* **Communauté Discord :** Vous avez des questions ou des idées ? Rejoignez la conversation sur notre [serveur Discord officiel](https://discord.gg/7H5peSN9QP) pour discuter avec l'équipe Julep et d'autres utilisateurs. Nous sommes heureux d'aider avec le dépannage ou de réfléchir à de nouveaux cas d'usage. +* **Discussions et issues GitHub :** N'hésitez pas à utiliser GitHub pour signaler des bugs, demander des fonctionnalités, ou discuter des détails d'implémentation. Consultez les [**bonnes premières issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) si vous souhaitez contribuer - nous accueillons les contributions de toutes sortes. +* **Contribuer :** Si vous voulez contribuer du code ou des améliorations, veuillez voir notre [Guide de contribution](CONTRIBUTING.md) pour comment commencer. Nous apprécions toutes les PR et les retours. En collaborant, nous pouvons rendre Julep encore meilleur ! -### Facteur de forme différent +*Conseil de pro : Mettez une étoile à notre dépôt pour rester à jour - nous ajoutons constamment de nouvelles fonctionnalités et exemples.* -Julep est une **plateforme** qui comprend un langage pour décrire les workflows, un serveur pour exécuter ces workflows et un SDK pour interagir avec la plateforme. Pour créer quelque chose avec Julep, vous écrivez une description du workflow en YAML, puis vous exécutez le workflow dans le cloud. +
-Julep est conçu pour les flux de travail lourds, en plusieurs étapes et de longue durée, et il n'y a aucune limite à la complexité du flux de travail. +Vos contributions, grandes ou petites, nous sont précieuses. Construisons quelque chose d'incroyable ensemble ! + -LangChain est une **bibliothèque** qui inclut quelques outils et un framework pour créer des chaînes linéaires d'invites et d'outils. Pour créer quelque chose avec LangChain, vous écrivez généralement du code Python qui configure et exécute les chaînes de modèles que vous souhaitez utiliser. +

Nos contributeurs extraordinaires :

-LangChain pourrait être suffisant et plus rapide à mettre en œuvre pour les cas d'utilisation simples impliquant une chaîne linéaire d'invites et d'appels d'API. + + + -### En résumé +
-Utilisez LangChain lorsque vous devez gérer les interactions LLM et les séquences d'invite dans un contexte sans état ou à court terme. +## Licence -Choisissez Julep lorsque vous avez besoin d'un framework robuste pour les agents avec état avec des capacités de workflow avancées, des sessions persistantes et une orchestration de tâches complexes. - -
- - Back to Top -  |  - - Table of Contents - -
\ No newline at end of file +Julep est offert sous la **Licence Apache 2.0**, ce qui signifie qu'il est libre d'utilisation dans vos propres projets. Voir le fichier [LICENSE](LICENSE) pour plus de détails. Amusez-vous à construire avec Julep ! \ No newline at end of file diff --git a/.github/README-JA.md b/.github/README-JA.md index 1a0d13ec4..99c1e5a2d 100644 --- a/.github/README-JA.md +++ b/.github/README-JA.md @@ -1,1702 +1,143 @@ -[English](README.md) | [中文翻译](README-CN.md) | [日本語翻訳](README-JA.md) | [French](README-FR.md) +
+ + [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | + [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | + [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | + [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | + [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | + [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | + [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | + [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh) +
- julep -
- -

-
- ドキュメントを探索 (wip) - · - 不和 - · - 𝕏 - · - リンクトイン -

+julep -

- NPM Version +
+

+ NPM Version   - PyPI - Version + PyPI - Version   - Docker Image Version + Docker Image Version   - GitHub License -

- ---- - -> [!注意] -> API キーを [こちら](https://dashboard-dev.julep.ai) から取得します。 - -
-貢献🌟(クリックして拡大) - -## 貢献者募集🌟 - -Julep プロジェクトに新しい貢献者を迎えられることを嬉しく思います。プロジェクトを始めるのに役立つ「最初の良い問題」をいくつか作成しました。貢献する方法は次のとおりです。 - -1. 貢献方法に関するガイドラインについては、[CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) ファイルをご覧ください。 -2. [good first issues](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) を参照して、興味のあるタスクを見つけます。 -3. ご質問やご不明な点がございましたら、[Discord](https://discord.com/invite/JTSBGRZrzj) チャンネルまでお気軽にお問い合わせください。 - -あなたの貢献は、大小を問わず私たちにとって貴重です。一緒に素晴らしいものを作りましょう!🚀 + GitHub License +

+ +

+ + · + + · + + +

+ + + -
+**今すぐJulepを試す:** **[Julepウェブサイト](https://julep.ai)** をご覧ください · **[Julepダッシュボード](https://dashboard.julep.ai)** で始める (無料APIキー) · **[ドキュメント](https://docs.julep.ai/introduction/julep)** を読む -

📖 Table of Contents

+

📖 目次

-- [主な特徴](#%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4) -- [簡単な例](#%E7%B0%A1%E5%8D%98%E3%81%AA%E4%BE%8B) -- [インストール](#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) -- [Python クイックスタート 🐍](#python-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88-) -- [Node.js Quick Start 🟩](#nodejs-quick-start-) -- [Components](#components) - - [Mental Model](#mental-model) -- [Concepts](#concepts) -- [Understanding Tasks](#understanding-tasks) - - [Lifecycle of a Task](#lifecycle-of-a-task) - - [Types of Workflow Steps](#types-of-workflow-steps) -- [Tool Types](#tool-types) - - [User-defined `functions`](#user-defined-functions) - - [`system` tools](#system-tools) - - [Built-in `integrations`](#built-in-integrations) - - [Direct `api_calls`](#direct-api_calls) -- [Integrations](#integrations) -- [Other Features](#other-features) - - [Adding Tools to Agents](#adding-tools-to-agents) - - [Managing Sessions and Users](#managing-sessions-and-users) - - [Document Integration and Search](#document-integration-and-search) - - [SDK リファレンス](#sdk-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9) - - [API リファレンス](#api-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9) -- [ローカルクイックスタート](#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88) -- [Julep と LangChain などの違いは何ですか?](#julep-%E3%81%A8-langchain-%E3%81%AA%E3%81%A9%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B) - - [さまざまなユースケース](#%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9) - - [異なるフォームファクタ](#%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF) +- [なぜJulepなのか?](#なぜjulepなのか) +- [はじめに](#はじめに) +- [ドキュメントと例](#ドキュメントと例) +- [コミュニティと貢献](#コミュニティと貢献) +- [ライセンス](#ライセンス) -## 導入 - -Julep は、過去のやり取りを記憶し、複雑なタスクを実行できる AI エージェントを作成するためのプラットフォームです。長期記憶を提供し、複数ステップのプロセスを管理します。 - -Julep を使用すると、意思決定、ループ、並列処理、多数の外部ツールや API との統合を組み込んだ複数ステップのタスクを作成できます。 - -多くの AI アプリケーションは、最小限の分岐によるプロンプトと API 呼び出しの単純な線形チェーンに制限されていますが、Julep は次のようなより複雑なシナリオを処理できるように構築されています。 - -- 複数のステップがある、 -- モデルの出力に基づいて意思決定を行う -- 平行枝を生成し、 -- たくさんのツールを使い、 -- 長時間走る。 - -> [!ヒント] -> 単純な質問に答えるだけでなく、複雑なタスクを処理し、過去のやり取りを記憶し、場合によっては他のツールや API も使用できる AI エージェントを構築したいとします。そこで Julep の出番です。詳細については、[タスクの理解](#understanding-tasks) をお読みください。 - -## 主な特徴 - -1. 🧠 **永続的な AI エージェント**: 長期にわたるやり取りを通じてコン​​テキストと情報を記憶します。 -2. 💾 **ステートフル セッション**: 過去のやり取りを追跡して、パーソナライズされた応答を提供します。 -3. 🔄 **複数ステップのタスク**: ループと意思決定を含む複雑な複数ステップのプロセスを構築します。 -4. ⏳ **タスク管理**: 無期限に実行される可能性のある長時間実行タスクを処理します。 -5. 🛠️ **組み込みツール**: タスクで組み込みツールと外部 API を使用します。 -6. 🔧 **自己修復**: Julep は失敗したステップを自動的に再試行し、メッセージを再送信し、一般的にタスクがスムーズに実行されるようにします。 -7. 📚 **RAG**: Julep のドキュメント ストアを使用して、独自のデータを取得して使用するためのシステムを構築します。 - -![機能](https://github.com/user-attachments/assets/4355cbae-fcbd-4510-ac0d-f8f77b73af70) - -> [!ヒント] -> Julep は、単純なプロンプト応答モデルを超えた AI ユースケースを必要とするアプリケーションに最適です。 - -## 簡単な例 - -次のことができる研究 AI エージェントを想像してください。 - -1. **トピックを選ぶ**、 -2. そのトピックについて**30個の検索クエリを考え出す** -3. ウェブ検索を並行して実行する -4. 結果を**要約**します。 -5. **要約を Discord に送信**します。 - -> [!注意] -> Julepでは、これは単一のタスクになります80行のコードそして走る完全に管理されたすべて自動的に行われます。すべての手順は Julep の独自のサーバー上で実行されるため、何もする必要はありません。 - -実際の例を次に示します。 - -```yaml -name: Research Agent - -# Optional: Define the input schema for the task -input_schema: - type: object - properties: - topic: - type: string - description: The main topic to research - num_questions: - type: integer - description: The number of search queries to generate - -# Define the tools that the agent can use -tools: - - name: web_search - type: integration - integration: - provider: brave - setup: - api_key: - - - name: discord_webhook - type: api_call - api_call: - url: https://discord.com/api/webhooks// - method: POST - headers: - Content-Type: application/json - -# Special variables: -# - inputs: for accessing the input to the task -# - outputs: for accessing the output of previous steps -# - _: for accessing the output of the previous step - -# Define the main workflow -main: -- prompt: - - role: system - content: >- - You are a research assistant. - Generate {{inputs[0].num_questions|default(30, true)}} diverse search queries related to the topic: - {{inputs[0].topic}} - - Write one query per line. - unwrap: true - -# Evaluate the search queries using a simple python expression -- evaluate: - search_queries: "_.split(NEWLINE)" - -# Run the web search in parallel for each query -- over: "_.search_queries" - map: - tool: web_search - arguments: - query: "_" - parallelism: 5 - -# Collect the results from the web search -- evaluate: - search_results: _ - -# Summarize the results -- prompt: - - role: system - content: > - You are a research summarizer. Create a comprehensive summary of the following research results on the topic {{inputs[0].topic}}. - The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point. - The length of the summary should be less than 150 words. - Here are the search results: - {{_.search_results}} - unwrap: true - settings: - model: gpt-4o-mini - -- evaluate: - discord_message: |- - f''' - **Research Summary for {inputs[0].topic}** - {_} - ''' - - # Send the summary to Discord -- tool: discord_webhook - arguments: - json_: - content: _.discord_message[:2000] # Discord has a 2000 character limit -``` - -この例では、Julep は並列実行を自動的に管理し、失敗したステップを再試行し、API リクエストを再送信し、タスクが完了するまで確実に実行し続けます。 - -> これは 30 秒以内に実行され、次の出力を返します。 - -
-AIに関する研究概要 (クリックして拡大) - -> **AIに関する研究概要** -> -> ### 人工知能(AI)に関する研究成果の概要 -> -> #### はじめに -> -> 人工知能 (AI) の分野は近年、機械が環境を認識し、データから学習し、意思決定を行える方法とテクノロジーの開発により、大きな進歩を遂げています。この概要では、AI に関連するさまざまな研究結果から得られた洞察に主に焦点を当てています。 -> -> #### 主な調査結果 -> -> 1. **AIの定義と範囲**: -> -> - AI は、学習、推論、問題解決など、人間のような知能を必要とするタスクを実行できるシステムの作成に重点を置いたコンピューター サイエンスの分野として定義されています (Wikipedia)。 -> - 機械学習、自然言語処理、ロボット工学、コンピュータービジョンなど、さまざまなサブフィールドを網羅しています。 -> -> 2. **影響と応用**: -> -> - AI テクノロジーはさまざまな分野に統合され、効率性と生産性を向上させています。その応用範囲は、自律走行車やヘルスケア診断から顧客サービスの自動化や財務予測まで多岐にわたります (OpenAI)。 -> - AI をすべての人にとって有益なものにするという Google の取り組みは、さまざまなプラットフォームでユーザー エクスペリエンスを強化することで日常生活を大幅に改善する可能性を強調しています (Google AI)。 -> -> 3. **倫理的配慮**: -> -> - プライバシー、偏見、意思決定プロセスの説明責任に関する懸念など、AI の倫理的影響に関する議論が続いています。AI 技術の安全で責任ある使用を保証するフレームワークの必要性が強調されています (OpenAI)。 -> -> 4. **学習メカニズム**: -> -> - AI システムは、教師あり学習、教師なし学習、強化学習などのさまざまな学習メカニズムを活用します。これらの方法により、AI は過去の経験やデータから学習することで、時間の経過とともにパフォーマンスを向上させることができます (Wikipedia)。 -> - 教師あり学習と教師なし学習の区別は重要です。教師あり学習はラベル付きデータに依存しますが、教師なし学習は事前定義されたラベルなしでパターンを識別します (教師なし)。 -> -> 5. **今後の方向性**: -> - 今後の AI 開発では、AI システムの解釈可能性と透明性を高め、正当な判断と行動を提供できるようにすることに重点が置かれると予想されます (OpenAI)。 -> - AI システムをよりアクセスしやすく、ユーザーフレンドリーなものにし、さまざまな人口統計や業界での幅広い導入を促進する動きもあります (Google AI)。 -> -> #### 結論 -> -> AI は複数の領域に変革をもたらす力を持ち、産業の再構築や生活の質の向上が期待されています。しかし、AI の機能が拡大するにつれて、倫理的および社会的影響に対処することが極めて重要になります。AI の将来像を見据えるには、技術者、倫理学者、政策立案者による継続的な研究と協力が不可欠です。 - -
- -## インストール - -Julep を使い始めるには、[npm](https://www.npmjs.com/package/@julep/sdk) または [pip](https://pypi.org/project/julep/) を使用してインストールします。 - -**Node.js**: - -```bash -npm install @julep/sdk - -# or - -bun add @julep/sdk -``` - -**Python**: - -```bash -pip install julep -``` - -> [!注意] -> API キーを [こちら](https://dashboard-dev.julep.ai) から取得します。 -> -> ベータ版では、[Discord](https://discord.com/invite/JTSBGRZrzj) に連絡して、API キーのレート制限を解除することもできます。 - -> [!ヒント] -> 💻 あなたは「コードを見せてください!™」タイプの人ですか? 始めるにあたって役立つクックブックを多数作成しました。**[クックブック](https://github.com/julep-ai/julep/tree/dev/cookbooks)** をチェックして、例を参照してください。 -> -> 💡 Julep をベースに構築できるアイデアもたくさんあります。**[アイデアのリスト](https://github.com/julep-ai/julep/tree/dev/cookbooks/IDEAS.md)** をチェックして、インスピレーションを得てください。 - -## Python クイックスタート 🐍 - -````python -### Step 0: Setup - -import time -import yaml -from julep import Julep # or AsyncJulep - -client = Julep(api_key="your_julep_api_key") - -### Step 1: Create an Agent - -agent = client.agents.create( - name="Storytelling Agent", - model="claude-3.5-sonnet", - about="You are a creative storyteller that crafts engaging stories on a myriad of topics.", -) - -### Step 2: Create a Task that generates a story and comic strip - -task_yaml = """ -name: Storyteller -description: Create a story based on an idea. - -tools: - - name: research_wikipedia - type: integration - integration: - provider: wikipedia - method: search - -main: - # Step 1: Generate plot idea - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: > - Based on the idea '{{_.idea}}', generate a list of 5 plot ideas. Go crazy and be as creative as possible. Return your output as a list of long strings inside ```応答の最後に yaml タグを追加します。 -アンラップ: true - -- 評価する: -plot_ideas: load_yaml(_.split('```yaml')[1].split('```')[0].ストリップ()) - -# ステップ2: プロットのアイデアから研究分野を抽出する -- プロンプト: -- 役割: システム -内容: あなたは {{agent.name}} です。 {{agent.about}} -- 役割: ユーザー -内容: > -ストーリーのプロットのアイデアをいくつか紹介します。 -{% for idea in _.plot_ideas %} -- {{アイデア}} -{% endfor %} - -ストーリーを展開するには、プロットのアイデアをリサーチする必要があります。 -何を研究すべきでしょうか? 興味深いと思うプロットのアイデアについて、Wikipedia の検索クエリを書き留めてください。 -出力をyamlリストとして返します```yaml tags at the end of your response. - unwrap: true - settings: - model: gpt-4o-mini - temperature: 0.7 - - - evaluate: - research_queries: load_yaml(_.split('```yaml')[1].split('```')[0].strip()) - - # Step 3: Research each plot idea - - foreach: - in: _.research_queries - do: - tool: research_wikipedia - arguments: - query: _ - - - evaluate: - wikipedia_results: 'NEWLINE.join([f"- {doc.metadata.title}: {doc.metadata.summary}" for item in _ for doc in item.documents])' - - # Step 4: Think and deliberate - - prompt: - - role: system - content: You are {{agent.name}}. {{agent.about}} - - role: user - content: |- - Before we write the story, let's think and deliberate. Here are some plot ideas: - {% for idea in outputs[1].plot_ideas %} - - {{idea}} - {% endfor %} - - Here are the results from researching the plot ideas on Wikipedia: - {{_.wikipedia_results}} - - Think about the plot ideas critically. Combine the plot ideas with the results from Wikipedia to create a detailed plot for a story. - Write down all your notes and thoughts. - Then finally write the plot as a yaml object inside ```応答の最後に yaml タグを追加します。yaml オブジェクトの構造は次のようになります。 - - ```yaml - title: "" - characters: - - name: "" - about: "" - synopsis: "" - scenes: - - title: "" - description: "" - characters: - - name: "" - role: "" - plotlines: - - ""``` - -yaml が有効であり、文字とシーンが空でないことを確認してください。また、セミコロンや yaml の記述に関するその他の注意点にも注意してください。 -アンラップ: true - -- 評価する: -プロット: "load_yaml(_.split('```yaml')[1].split('```')[0].strip())" -""" - -タスク = client.tasks.create( -エージェントID=エージェントID、 -**yaml.safe_load(タスクyaml) -) - -### ステップ3: タスクを実行する - -実行 = client.executions.create( -タスクID=タスクID、 -input={"idea": "飛ぶことを学ぶ猫"} -) - -# 🎉 ストーリーと漫画パネルが生成される様子をご覧ください -while (result := client.executions.get(execution.id)).status が ['succeeded', 'failed'] の範囲外です: -print(結果.ステータス、結果.出力) -時間.睡眠(1) - -# 📦 実行が完了したら、結果を取得します -result.status == "成功"の場合: -print(結果.出力) -それ以外: -例外(結果.エラー)を発生させる -```` - -You can find the full python example [here](example.py). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Node.js Quick Start 🟩 - -```ジャバスクリプト -// ステップ 0: セットアップ -dotenv は、次のコードで定義されます。 -Julep の SDK を実装するには、次の手順に従ってください。 -yaml を require します。 - -config() を呼び出します。 - -constクライアント = 新しいジュレップ({ -APIキー: process.env.JULEP_API_KEY、 -環境: process.env.JULEP_ENVIRONMENT || "production", -}); - -/* ステップ 1: エージェントを作成する */ - -非同期関数createAgent() { -const エージェント = クライアント.エージェント.作成を待機します({ -名前: 「ストーリーテリングエージェント」 -モデル: "claude-3.5-sonnet", -について: -「あなたは、さまざまなトピックについて魅力的なストーリーを作り上げることができる創造的なストーリーテラーです。」 - }); -返品エージェント; -} - -/* ステップ 2: ストーリーと漫画を生成するタスクを作成する */ - -const タスクYaml = ` -名前: ストーリーテラー -説明: アイデアに基づいてストーリーを作成します。 - -ツール: -- 名前: research_wikipedia -統合: -提供元: wikipedia -方法: 検索 - -主要: -# ステップ1: プロットのアイデアを生み出す -- プロンプト: -- 役割: システム -内容: あなたは {{agent.name}} です。 {{agent.about}} -- 役割: ユーザー -内容: > -アイデア「{{_.idea}}」に基づいて、5 つのプロット アイデアのリストを生成します。自由に創造的に考えてください。出力は、応答の最後に \`\`\`yaml タグ内の長い文字列のリストとして返されます。 -アンラップ: true - -- 評価する: -plot_ideas: load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# ステップ2: プロットのアイデアから研究分野を抽出する -- プロンプト: -- 役割: システム -内容: あなたは {{agent.name}} です。 {{agent.about}} -- 役割: ユーザー -内容: > -ストーリーのプロットのアイデアをいくつか紹介します。 -{% for idea in _.plot_ideas %} -- {{アイデア}} -{% endfor %} - -ストーリーを展開するには、プロットのアイデアをリサーチする必要があります。 -何を研究すべきでしょうか? 興味深いと思うプロットのアイデアについて、Wikipedia の検索クエリを書き留めてください。 -応答の最後に、\`\`\`yaml タグ内の yaml リストとして出力を返します。 -アンラップ: true -設定: -モデル: gpt-4o-mini -温度: 0.7 - -- 評価する: -リサーチクエリ: load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip()) - -# ステップ3: 各プロットのアイデアをリサーチする -- 各: -in: _.research_queries -する: -ツール: research_wikipedia -議論: -クエリ: _ - -- 評価する: -wikipedia_results: 'NEWLINE.join([f"- {doc.metadata.title}: {doc.metadata.summary}" for item in _ for doc in item.documents])' - -# ステップ4: 考えて熟考する -- プロンプト: -- 役割: システム -内容: あなたは {{agent.name}} です。 {{agent.about}} -- 役割: ユーザー -内容: |- -物語を書く前に、考え、熟考してみましょう。ここにいくつかのプロットのアイデアがあります: -{% 出力[1].plot_ideas のアイデア %} -- {{アイデア}} -{% endfor %} - -Wikipedia でプロットのアイデアを調査した結果は次のとおりです。 -{{_.wikipedia_results}} - -プロットのアイデアを批判的に考えます。プロットのアイデアと Wikipedia の結果を組み合わせて、ストーリーの詳細なプロットを作成します。 -メモや考えをすべて書き留めてください。 -最後に、レスポンスの最後にある \`\`\`yaml タグ内に yaml オブジェクトとしてプロットを記述します。yaml オブジェクトの構造は次のようになります。 - -\`\`\`yaml -タイトル: "" -文字: -- 名前: "" -について: "" -概要: "" -シーン: -- タイトル: "" -説明: "" -文字: -- 名前: "" -役割: "" -ストーリーライン: - - "「\`\`\` - -yaml が有効であり、文字とシーンが空でないことを確認してください。また、セミコロンや yaml の記述に関するその他の注意点にも注意してください。 -アンラップ: true - -- 評価する: -プロット: "load_yaml(_.split('\`\`\`yaml')[1].split('\`\`\`')[0].strip())" -`; - -非同期関数createTask(agentId) { -const タスク = client.tasks.create(agentId, yaml.parse(taskYaml)) を待機します。 -タスクを返す。 -} - -/* ステップ 3: タスクを実行する */ - -非同期関数executeTask(taskId) { -const 実行 = クライアント.実行.作成(taskId, { -入力: { アイデア: 「飛ぶことを学ぶ猫」 }, - }); - -// 🎉 ストーリーと漫画パネルが生成される様子をご覧ください -(真)の間{ -const 結果 = client.executions.get(execution.id); を待機します。 -console.log(結果のステータス、結果の出力); - -if (result.status === "成功" || result.status === "失敗") { -// 📦 実行が終了したら、結果を取得します -if (result.status === "成功") { -console.log(結果の出力); -} それ以外 { -新しいエラーをスローします(result.error); - } -壊す; - } - -新しい Promise((resolve) => setTimeout(resolve, 1000)) を待機します。 - } -} - -// 例を実行するためのメイン関数 -非同期関数main() { -試す { -const エージェント = createAgent() を待機します。 -const タスク = createTask(agent.id); -タスクの実行を待機します(task.id); -} キャッチ(エラー){ -console.error("エラーが発生しました:", error); - } -} - -主要() -.then(() => console.log("完了")) -.catch(コンソール.エラー); -``` - -You can find the full Node.js example [here](example.js). - -
- - Back to Top -  |  - - Table of Contents - -
- -## Components - -Julep is made up of the following components: - -- **Julep Platform**: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform. -- **Julep SDKs**: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way. -- **Julep API**: The Julep API is a RESTful API that you can use to interact with the Julep platform. - -### Mental Model - -
- -
- -Think of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here's how to visualize it: - -1. **Your Application Code:** - - - You can use the Julep SDK in your application to define agents, tasks, and workflows. - - The SDK provides functions and classes that make it easy to set up and manage these components. - -2. **Julep Backend Service:** - - - The SDK communicates with the Julep backend over the network. - - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows. - -3. **Integration with Tools and APIs:** - - Within your workflows, you can integrate external tools and services. - - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs. - -## Concepts - -Julep is built on several key technical components that work together to create powerful AI workflows: - -```マーメイド -グラフTD -ユーザー[ユーザー] ==> セッション[セッション] -セッション --> エージェント[エージェント] -エージェント --> タスク[タスク] -エージェント --> LLM[大規模言語モデル] -タスク --> ツール[ツール] -エージェント --> ドキュメント[ドキュメント] -ドキュメント --> VectorDB[ベクターデータベース] -タスク --> 実行[実行] - -classDef client fill:#9ff、stroke:#333、stroke-width:1px; -クラス User クライアント; - -classDef core fill:#f9f、stroke:#333、stroke-width:2px; -クラス Agent、Tasks、Session コア; -``` - -- **Agents**: AI-powered entities backed by large language models (LLMs) that execute tasks and interact with users. -- **Users**: Entities that interact with agents through sessions. -- **Sessions**: Stateful interactions between agents and users, maintaining context across multiple exchanges. -- **Tasks**: Multi-step, programmatic workflows that agents can execute, including various types of steps like prompts, tool calls, and conditional logic. -- **Tools**: Integrations that extend an agent's capabilities, including user-defined functions, system tools, or third-party API integrations. -- **Documents**: Text or data objects associated with agents or users, vectorized and stored for semantic search and retrieval. -- **Executions**: Instances of tasks that have been initiated with specific inputs, with their own lifecycle and state machine. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Understanding Tasks - -Tasks are the core of Julep's workflow system. They allow you to define complex, multi-step AI workflows that your agents can execute. Here's a brief overview of task components: - -- **Name, Description and Input Schema**: Each task has a unique name and description for easy identification. An input schema (optional) that is used to validate the input to the task. -- **Main Steps**: The core of a task, defining the sequence of actions to be performed. Each step can be a prompt, tool call, evaluate, wait_for_input, log, get, set, foreach, map_reduce, if-else, switch, sleep, or return. (See [Types of Workflow Steps](#types-of-workflow-steps) for more details) -- **Tools**: Optional integrations that extend the capabilities of your agent during task execution. - -### Lifecycle of a Task - -You create a task using the Julep SDK and specify the main steps that the agent will execute. When you execute a task, the following lifecycle happens: - -```マーメイド -シーケンス図 -参加者Dをあなたのコードとして -参加者C(ジュレップクライアント) -参加者Sはジュレップサーバーとして - -D->>C: タスクの作成 -C->>S: 実行を送信 -Sの上のメモ: タスクの実行 -Sに関する注意: 状態の管理 -S-->>C: 実行イベント -C-->>D: 進捗状況の更新 -S->>C: 実行完了 -C->>D: 最終結果 -``` - -### Types of Workflow Steps - -Tasks in Julep can include various types of steps, allowing you to create complex and powerful workflows. Here's an overview of the available step types: - -#### Common Steps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAboutSyntax
Prompt -Send a message to the AI model and receive a response -

Note: The prompt step uses Jinja templates and you can access context variables in them. -
- -```ヤム -- プロンプト: 「次のデータを分析してください: {{agent.name}}」 # <-- これは jinja テンプレートです -``` - -```ヤム -- プロンプト: -- 役割: システム -内容: 「あなたは {{agent.name}} です。 {{agent.about}}」 -- 役割: ユーザー -内容: 「次のデータを分析します: {{_.data}}」 -``` - -
Tool Call -Execute an integrated tool or API that you have previously declared in the task. -

Note: The tool call step uses Python expressions inside the arguments. - -
- -```ヤム -- ツール: web_search -引数: -クエリ: '"最新の AI 開発"' # <-- これは Python 式です (引用符に注意してください) -num_results: len(_.topics) # <-- リストの長さにアクセスするための Python 式 -``` - -
Evaluate -Perform calculations or manipulate data -

Note: The evaluate step uses Python expressions. -
- -```ヤム -- 評価する: -average_score: 合計(スコア) / 長さ(スコア) -``` - -
Wait for Input -Pause workflow until input is received. It accepts an `info` field that can be used by your application to collect input from the user. - -

Note: The wait_for_input step is useful when you want to pause the workflow and wait for user input e.g. to collect a response to a prompt. - -
- -```ヤム -- 入力待ち: -情報: -メッセージ: '"{_.required_info} に関する追加情報を提供してください。"' # <-- コンテキスト変数にアクセスするための Python 式 -``` - -
Log -Log a specified value or message. - -

Note: The log step uses Jinja templates and you can access context variables in them. - -
- -```ヤム -- ログ: "アイテム {{_.item_id}} の処理が完了しました" # <-- コンテキスト変数にアクセスするための jinja テンプレート -``` - -
- -#### Key-Value Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
Get -Retrieve a value from the execution's key-value store. - - - -```ヤム -- 取得: user_preference -``` - -
Set -Assign a value to a key in the execution's key-value store. - -

Note: The set step uses Python expressions. - -
- -```ヤム -- セット: -user_preference: '"dark_mode"' # <-- python 式 -``` - -
- -#### Iteration Steps - - - - - - - - - - - - - - - - - - - +* **永続メモリ:** 会話を通じてコンテキストと長期記憶を維持するAIエージェントを構築し、時間をかけて学習と改善ができます。 +* **モジュラーワークフロー:** 条件ロジック、ループ、エラーハンドリングを備えたモジュラーステップとして複雑なタスクを定義します(YAMLまたはコード)。Julepのワークフローエンジンが多段階プロセスと決定を自動的に管理します。 +* **ツールオーケストレーション:** 外部ツールとAPI(Web検索、データベース、サードパーティサービスなど)をエージェントのツールキットの一部として簡単に統合します。Julepのエージェントはこれらのツールを呼び出して機能を拡張し、検索拡張生成などを可能にします。 +* **並列・スケーラブル:** 効率性のために複数の操作を並列で実行し、Julepにスケーリングと並行処理を任せます。プラットフォームはサーバーレスなので、追加のDevOpsオーバーヘッドなしにワークフローをシームレスにスケールします。 +* **信頼性のある実行:** 不具合を心配する必要はありません - Julepは組み込まれた再試行、自己修復ステップ、堅牢なエラーハンドリングを提供し、長時間実行タスクを軌道に乗せ続けます。また、進捗を追跡するためのリアルタイム監視とログも提供します。 +* **簡単な統合:** **Python**と**Node.js**向けのSDK、またはスクリプト用のJulep CLIですぐに始められます。他のシステムに直接統合したい場合は、JulepのREST APIが利用可能です。 - - -
Name About Syntax
Foreach -Iterate over a collection and perform steps for each item - - - -```ヤム -- 各: -in: _.data_list # <-- コンテキスト変数にアクセスするための Python 式 -する: -- ログ: "アイテム {{_.item}} を処理しています" # <-- コンテキスト変数にアクセスするための jinja テンプレート -``` - -
Map-Reduce -Map over a collection and reduce the results - - + -```ヤム -- マップリデュース: -over: _.numbers # <-- コンテキスト変数にアクセスするための Python 式 -地図: -- 評価する: -二乗: "_ ** 2" -Reduce: 結果 + [_] # <-- (オプション) 結果を削減する Python 式。省略した場合、これがデフォルトになります。 -``` +## なぜJulepなのか? -```ヤム -- マップリデュース: -以上: _.topics -地図: -- プロンプト: {{_}} に関するエッセイを書く -並列度: 10 -``` +Julepは、単純なプロンプトのチェーンをはるかに超えた**エージェントベースのAIワークフロー**を構築するためのオープンソースプラットフォームです。大規模言語モデル(LLM)とツールを使用して複雑な多段階プロセスを**インフラストラクチャの管理なしに**オーケストレーションできます。Julepを使用すると、**過去のやり取りを記憶し**、分岐ロジック、ループ、並列実行、外部APIとの統合を備えた洗練されたタスクを処理するAIエージェントを作成できます。要するに、Julepは*「AIエージェントのためのFirebase」*として機能し、スケールでのインテリジェントワークフローのための堅牢なバックエンドを提供します。 -
Parallel -Run multiple steps in parallel +**主要機能と利点:** - +*AIロジックと創造性に集中し、重労働はJulepにお任せください!* -```ヤム -- 平行: -- ツール: web_search -引数: -クエリ: 「AI ニュース」 -- ツール: weather_check -引数: -場所: '"ニューヨーク"' -``` + -
- -#### Conditional Steps - - - - - - - - - - - - - - - - - -
Name About Syntax
If-Else -Conditional execution of steps - - - -```ヤム -- if: _.score > 0.8 # <-- Python 式 -それから: -- ログ: 高得点を達成 -それ以外: -- エラー: スコアの改善が必要です -``` - -
Switch -Execute steps based on multiple conditions - - - -```ヤム -- スイッチ: -- ケース: _.category == 'A' -それから: -- ログ: 「カテゴリー A 処理」 -- ケース: _.category == 'B' -それから: -- ログ: 「カテゴリー B 処理」 -- case: _ # デフォルトのケース -それから: -- エラー: 不明なカテゴリ -``` - -
- -#### Other Control Flow - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name About Syntax
Sleep -Pause the workflow for a specified duration - - - -```ヤム -- 寝る: -秒: 30 -分数: 1 -時間数: 1 -日数: 1 -``` - -
Return -Return a value from the workflow - -

Note: The return step uses Python expressions. - -
- -```ヤム -- 戻る: -結果: '"タスクは正常に完了しました"' # <-- Python 式 -time: datetime.now().isoformat() # <-- python 式 -``` - -
Yield -Run a subworkflow and await its completion - - - -```ヤム -- 収率: -ワークフロー: process_data -引数: -input_data: _.raw_data # <-- Python式 -``` - -
Error -Handle errors by specifying an error message - - - -```ヤム -- エラー:「無効な入力が提供されています」# <-- 文字列のみ -``` - -
- -Each step type serves a specific purpose in building sophisticated AI workflows. This categorization helps in understanding the various control flows and operations available in Julep tasks. - -
- - Back to Top -  |  - - Table of Contents - -
- -## Tool Types - -Agents can be given access to a number of "tools" -- any programmatic interface that a foundation model can "call" with a set of inputs to achieve a goal. For example, it might use a `web_search(query)` tool to search the Internet for some information. - -Unlike agent frameworks, julep is a _backend_ that manages agent execution. Clients can interact with agents using our SDKs. julep takes care of executing tasks and running integrations. - -Tools in julep can be one of: - -1. **User-defined `functions`**: These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. They need to be handled by the client. The workflow will pause until the client calls the function and gives the results back to julep. -2. **`system` tools**: Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. -3. **`integrations`**: Built-in third party tools that can be used to extend the capabilities of your agents. -4. **`api_calls`**: Direct api calls during workflow executions as tool calls. - -### User-defined `functions` - -These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example: - -```ヤム -名前: システムツールタスクの例 -説明: システムコールを使用してエージェントを一覧表示する - -ツール: -- 名前: send_notification -説明: ユーザーに通知を送信する -タイプ: 関数 -関数: -パラメータ: -タイプ: オブジェクト -プロパティ: -文章: -タイプ: 文字列 -説明: 通知の内容 - -主要: -- ツール: send_notification -引数: -内容: '"hi"' # <-- Python 式 -``` - -Whenever julep encounters a _user-defined function_, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep. - -### `system` tools - -Built-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. - -`system` tools are built into the backend. They get executed automatically when needed. They do _not_ require any action from the client-side. - -For example, - -```ヤム -名前: システムツールタスクの例 -説明: システムコールを使用してエージェントを一覧表示する - -ツール: -- 名前: list_agent_docs -説明: 指定されたエージェントのすべてのドキュメントを一覧表示します -タイプ: システム -システム: -リソース: エージェント -サブリソース: doc -操作: リスト - -主要: -- ツール: list_agents -引数: -制限: 10 # <-- Python式 -``` - -#### Available `system` resources and operations - -- `agent`: - - - `list`: List all agents. - - `get`: Get a single agent by id. - - `create`: Create a new agent. - - `update`: Update an existing agent. - - `delete`: Delete an existing agent. - -- `user`: - - - `list`: List all users. - - `get`: Get a single user by id. - - `create`: Create a new user. - - `update`: Update an existing user. - - `delete`: Delete an existing user. - -- `session`: - - - `list`: List all sessions. - - `get`: Get a single session by id. - - `create`: Create a new session. - - `update`: Update an existing session. - - `delete`: Delete an existing session. - - `chat`: Chat with a session. - - `history`: Get the chat history with a session. - -- `task`: - - - `list`: List all tasks. - - `get`: Get a single task by id. - - `create`: Create a new task. - - `update`: Update an existing task. - - `delete`: Delete an existing task. - -- `doc` (subresource for `agent` and `user`): - - `list`: List all documents. - - `create`: Create a new document. - - `delete`: Delete an existing document. - - `search`: Search for documents. - -Additional operations available for some resources: - -- `embed`: Embed a resource (specific resources not specified in the provided code). -- `change_status`: Change the status of a resource (specific resources not specified in the provided code). -- `chat`: Chat with a resource (specific resources not specified in the provided code). -- `history`: Get the chat history with a resource (specific resources not specified in the provided code). -- `create_or_update`: Create a new resource or update an existing one (specific resources not specified in the provided code). - -Note: The availability of these operations may vary depending on the specific resource and implementation details. - -> [!TIP] > **Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -### Built-in `integrations` - -Julep comes with a number of built-in integrations (as described in the section below). `integration` tools are directly executed on the julep backend. Any additional parameters needed by them at runtime can be set in the agent/session/user's `metadata` fields. - -See [Integrations](#integrations) for details on the available integrations. - -> [!TIP] > **Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -### Direct `api_calls` - -julep can also directly make api calls during workflow executions as tool calls. Same as `integration`s, additional runtime parameters are loaded from `metadata` fields. - -For example, - -```ヤム -名前: api_callタスクの例 -ツール: -- タイプ: api_call -名前: こんにちは -API呼び出し: -メソッド: GET -URL: https://httpbin.org/get - -主要: -- ツール: こんにちは -引数: -書式: -test: _.input # <-- Python式 -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## Integrations - -Julep supports various integrations that extend the capabilities of your AI agents. Here's a list of available integrations and their supported arguments: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Brave Search - -```ヤム -設定: -api_key: 文字列 # Brave SearchのAPIキー - -引数: -query: 文字列 # Braveで検索するための検索クエリ - -出力: -result: list[dict] # 検索結果のリスト。それぞれにタイトル、リンク、スニペットが含まれます。 -``` - - - -**Example cookbook**: [cookbooks/02-sarcastic-news-headline-generator.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/02-sarcastic-news-headline-generator.ipynb) - -
BrowserBase - -```ヤム -設定: -api_key: 文字列 # BrowserBaseのAPIキー -project_id: 文字列 # BrowserBase のプロジェクト ID -session_id: 文字列 # (オプション) BrowserBaseのセッションID - -引数: -urls: list[string] # BrowserBaseで読み込むURL - -出力: -ドキュメント: リスト # URLから読み込まれたドキュメント -``` - - - -**Example cookbook**: [cookbooks/06-browser-use.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) - -
Email - -```ヤム -設定: -ホスト: 文字列 # メールサーバーのホスト -port: 整数 # メールサーバーのポート -user: 文字列 # メールサーバーのユーザー名 -パスワード: 文字列 # メールサーバーのパスワード - -引数: -to: 文字列 # メールを送信するメールアドレス -from: 文字列 # メールを送信するメールアドレス -subject: 文字列 # メールの件名 -body: 文字列 # メールの本文 - -出力: -success: boolean # メールが正常に送信されたかどうか -``` - - - -**Example cookbook**: [cookbooks/00-Devfest-Email-Assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) - -
Spider - -```ヤム -設定: -spider_api_key: 文字列 # SpiderのAPIキー - -引数: -url: 文字列 # データを取得するURL -params: dict # (オプション) Spider APIのパラメータ -content_type: 文字列 # (オプション) 返されるコンテンツ タイプ。デフォルトは「application/json」です。その他のオプション: 「text/csv」、「application/xml」、「application/jsonl」 - -出力: -result: list[dict] # 結果のリスト。それぞれにコンテンツ、エラー、ステータス、コスト、URLが含まれます。 -``` - - - -**Example cookbook**: [cookbooks/01-website-crawler.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) - -
Weather - -```ヤム -設定: -openweathermap_api_key: 文字列 # OpenWeatherMapのAPIキー - -引数: -location: 文字列 # 気象データを取得する場所 - -出力: -結果: 文字列 # 指定された場所の天気データ -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
Wikipedia - -```ヤム -引数: -query: 文字列 # 検索クエリ文字列 -load_max_docs: 整数 # (オプション) ロードするドキュメントの最大数。デフォルトは 2 です。 - -出力: -ドキュメント: リスト # Wikipedia 検索から返されたドキュメント -``` - - - -**Example cookbook**: [cookbooks/03-trip-planning-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) - -
FFmpeg - -```ヤム -引数: -cmd: 文字列 # 実行するFFmpegコマンド -file: 文字列 # 処理するbase64エンコードされたファイル - -出力: -fileoutput: 文字列 # FFmpeg コマンドからの出力ファイル(base64 エンコード) -結果: ブール値 # FFmpeg コマンドが正常に実行されたかどうか -mime_type: 文字列 # 出力ファイルのMIMEタイプ -``` - -
Llama Parse - -```ヤム -設定: -llamaparse_api_key: string # Llama Parse の API キー -params: dict # (オプション) Llama Parse 統合の追加パラメータ - -引数: -ファイル: 文字列 | 配列# 解析する base64 でエンコードされたファイル、または読み込む http/https URL の配列。 -filename: 文字列 # (オプション)。ファイルのファイル名。デフォルトはランダムな UUID です。ファイルが base64 でエンコードされた文字列の場合にのみ使用されます。 -params: dict # (オプション) Llama Parse 統合の追加パラメータ。セットアップパラメータを上書きします。 -base64: boolean # 入力ファイルが base64 でエンコードされているかどうか。デフォルトは false です。 - -出力: -documents: list[Document] # 解析されたドキュメントのリスト -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
Cloudinary - -```ヤム - -method: media_upload | media_edit # Cloudinary統合に使用するメソッド - -設定: -cloudinary_cloud_name: 文字列 # Cloudinary クラウド名 -cloudinary_api_key: 文字列 # Cloudinary API キー -cloudinary_api_secret: 文字列 # Cloudinary API シークレット -params: dict # (オプション) Cloudinary統合の追加パラメータ - -引数: -file: 文字列 # ファイルのアップロード先の URL。media_upload メソッドでのみ使用できます。 -upload_params: dict # (オプション) アップロード用の追加パラメータ。media_upload メソッドでのみ使用できます。 -public_id: 文字列 # (オプション) ファイルのパブリック ID。media_edit メソッドの場合は必須です。media_upload メソッドの場合はオプションです。デフォルトはランダムな UUID です。 -transformation: list[dict] # ファイルに適用する変換。media_edit メソッドでのみ使用できます。 -return_base64: boolean # ファイルを base64 エンコードで返すかどうか。デフォルトは false です。 - -出力: -url: 文字列 # アップロードされたファイルの URL。media_upload メソッドでのみ使用できます。 -meta_data: dict # アップロード応答からの追加メタデータ。media_upload メソッドでのみ使用できます。 -public_id: 文字列 # アップロードされたファイルのパブリック ID。media_upload メソッドでのみ使用できます。 -transformed_url: 文字列 # (オプション) 変換された URL。media_edit メソッドでのみ使用できます。 -base64: 文字列 # (オプション) return_base64 が true の場合、base64 でエンコードされたファイル。 -``` - - - -**Example cookbook**: [cookbooks/05-video-processing-with-natural-language.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb) - -
Arxiv - -```ヤム -method: search # Arxiv統合に使用するメソッド - -設定: -# Arxivには特別な設定パラメータは必要ありません - -引数: -query: 文字列 # Arxivで検索するための検索クエリ -id_list: list[string] | None # (オプション) 検索するArxiv IDのリスト -max_results: 整数 # 返される結果の最大数は 1 から 300000 の間でなければなりません -download_pdf: boolean # 結果の PDF をダウンロードするかどうか。デフォルトは false です。 -sort_by: 文字列 # 結果の並べ替え基準。オプション: 関連性、lastUpdatedDate、submittedDate -sort_order: 文字列 # 結果の並べ替え順序。オプション: 昇順、降順 - -出力: -result: list[dict] # 検索結果のリスト。それぞれに、entry_id、title、updated、published、authors、summary、comment、journal_ref、doi、primary_category、categories、links、pdf_url、pdf_downloaded が含まれます。 -``` - - - -**Example cookbook**: [cookbooks/07-personalized-research-assistant.ipynb](https://github.com/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) - -
- -For more details, refer to our [Integrations Documentation](#integrations). - - - -## Other Features - -Julep offers a range of advanced features to enhance your AI workflows: - -### Adding Tools to Agents - -Extend your agent's capabilities by integrating external tools and APIs: - -```パイソン -クライアント.エージェント.ツール.作成( -エージェントID=エージェントID、 -名前="ウェブ検索", -description="Web で情報を検索します。", -統合={ -「プロバイダー」:「勇敢な」、 -"メソッド": "検索", -"セットアップ": {"api_key": "your_brave_api_key"}, - }, -) -``` - -### Managing Sessions and Users - -Julep provides robust session management for persistent interactions: - -```パイソン -セッション = client.sessions.create( -エージェントID=エージェントID、 -user_id=ユーザーID、 -context_overflow="適応型" -) - -# 同じセッションで会話を続ける -レスポンス = client.sessions.chat( -session_id=セッションID、 -メッセージ=[ - { -「役割」: 「ユーザー」、 -"content": "前回の会話をフォローアップします。" - } - ] -) -``` - -### Document Integration and Search - -Easily manage and search through documents for your agents: - -```パイソン -# ドキュメントをアップロードする -ドキュメント = client.agents.docs.create( -title="AIの進歩", -content="AI は世界を変えています...", -メタデータ = {"カテゴリ": "研究論文"} -) - -# ドキュメントを検索 -結果 = client.agents.docs.search( -text="AIの進歩", -metadata_filter={"category": "研究論文"} -) -``` - -
- - Back to Top -  |  - - Table of Contents - -
- -## 参照 - -### SDK リファレンス - -- **Node.js** [SDK リファレンス](https://github.com/julep-ai/node-sdk/blob/main/api.md) | [NPM パッケージ](https://www.npmjs.com/package/@julep/sdk) -- **Python** [SDK リファレンス](https://github.com/julep-ai/python-sdk/blob/main/api.md) | [PyPI パッケージ](https://pypi.org/project/julep/) - -### API リファレンス - -エージェント、タスク、実行の詳細については、API ドキュメントをご覧ください。 - -- [エージェント API](https://dev.julep.ai/api/docs#tag/agents) -- [タスク API](https://dev.julep.ai/api/docs#tag/tasks) -- [実行API](https://dev.julep.ai/api/docs#tag/executions) - - +

+Julepの起動と実行は簡単です: -## ローカルクイックスタート +1. **サインアップとAPIキー:** まず、[Julepダッシュボード](https://dashboard.julep.ai)にサインアップしてAPIキーを取得します(SDK呼び出しの認証に必要)。 +2. **SDKのインストール:** お好みの言語でJulep SDKをインストールします: -**要件**: + * **Python:** `pip install julep` + * **Node.js:** `npm install @julep/sdk` (または `yarn add @julep/sdk`) +3. **エージェントの定義:** SDKまたはYAMLを使用してエージェントとそのタスクワークフローを定義します。例えば、エージェントのメモリ、使用できるツール、ステップバイステップのタスクロジックを指定できます。(詳細なウォークスルーについては、ドキュメントの**[クイックスタート](https://docs.julep.ai/introduction/quick-start)**を参照してください。) +4. **ワークフローの実行:** SDKを通じてエージェントを呼び出してタスクを実行します。Julepプラットフォームがクラウドでワークフロー全体をオーケストレーションし、状態、ツール呼び出し、LLMインタラクションを管理します。エージェントの出力を確認し、ダッシュボードで実行を監視し、必要に応じて反復できます。 -- 最新の docker compose がインストールされている +これで完了です!最初のAIエージェントを数分で起動して実行できます。完全なチュートリアルについては、ドキュメント内の**[クイックスタートガイド](https://docs.julep.ai/introduction/quick-start)**をご確認ください。 -**手順**: +> **注意:** Julepはワークフローとエージェントを管理するためのコマンドラインインターface(CLI)も提供しています(現在Pythonのベータ版)。ノーコードアプローチを好む場合や一般的なタスクをスクリプト化したい場合は、詳細について[Julep CLIドキュメント](https://docs.julep.ai/responses/quickstart#cli-installation)を参照してください。 -1. `git clone https://github.com/julep-ai/julep.git` -2. `cd ジュレップ` -3. `docker volume create cozo_backup` -4. docker ボリュームを作成します cozo_data -5. `cp .env.example .env # <-- このファイルを編集します` -6. `docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db up --build` + -
- - Back to Top -  |  - - Table of Contents - -
- ---- - -## Julep と LangChain などの違いは何ですか? +## ドキュメントと例 -### さまざまなユースケース -LangChain と Julep は、AI 開発スタック内で異なる重点を置いたツールと考えてください。 +さらに深く学びたいですか?**[Julepドキュメント](https://docs.julep.ai)**は、コアコンセプト(エージェント、タスク、セッション、ツール)から高度なトピック(エージェントメモリ管理やアーキテクチャの内部構造)まで、プラットフォームを習得するために必要なすべてをカバーしています。主要なリソースには以下があります: -LangChain は、プロンプトのシーケンスを作成し、LLM とのやり取りを管理するのに最適です。多数の事前構築された統合を備えた大規模なエコシステムを備えているため、何かをすぐに起動して実行したい場合に便利です。LangChain は、プロンプトと API 呼び出しの線形チェーンを含む単純なユースケースに適しています。 +* **[コンセプトガイド](https://docs.julep.ai/concepts/):** Julepのアーキテクチャ、セッションとメモリの仕組み、ツールの使用、長い会話の管理などについて学びます。 +* **[API・SDK リファレンス](https://docs.julep.ai/api-reference/):** JulepをアプリケーションNに統合するためのすべてのSDKメソッドとREST APIエンドポイントの詳細なリファレンスを見つけます。 +* **[チュートリアル](https://docs.julep.ai/tutorials/):** 実際のアプリケーション構築のためのステップバイステップガイド(例:Webを検索するリサーチエージェント、旅行計画アシスタント、カスタム知識を持つチャットボット)。 +* **[クックブックレシピ](https://github.com/julep-ai/julep/tree/dev/cookbooks):** 既製のワークフローとエージェントの例については**Julep Cookbook**を探索してください。これらのレシピは一般的なパターンと使用例を示しています - 例から学ぶ素晴らしい方法です。*サンプルエージェント定義については、このリポジトリの[`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks)ディレクトリを参照してください。* +* **[IDE統合](https://context7.com/julep-ai/julep):** IDE内でJulepドキュメントに直接アクセス!コーディング中に即座に答えを得るのに最適です。 -一方、Julep は、長期的なインタラクションでコンテキストを維持できる永続的な AI エージェントの構築に重点を置いています。複数ステップのタスク、条件付きロジック、エージェントのプロセス内で直接さまざまなツールや API との統合を伴う複雑なワークフローが必要な場合に効果を発揮します。永続的なセッションと複雑なワークフローを管理するために、ゼロから設計されています。 + -以下のことが必要となる複雑な AI アシスタントの構築を考えている場合には、Julep を使用してください。 +## コミュニティと貢献 -- 数日または数週間にわたってユーザーのインタラクションを追跡します。 -- 毎日のサマリーの送信やデータ ソースの監視などのスケジュールされたタスクを実行します。 -- 以前のやり取りや保存されたデータに基づいて決定を下します。 -- ワークフローの一部として複数の外部サービスと対話します。 +成長する開発者とAI愛好家のコミュニティに参加しましょう!参加とサポートを得る方法をいくつか紹介します: -そして、Julep は、ゼロから構築する必要なく、これらすべてをサポートするインフラストラクチャを提供します。 +* **Discordコミュニティ:** 質問やアイデアがありますか?[公式Discordサーバー](https://discord.gg/7H5peSN9QP)での会話に参加して、Julepチームや他のユーザーとチャットしましょう。トラブルシューティングのお手伝いや新しい使用例のブレインストーミングを喜んでサポートします。 +* **GitHub ディスカッションとイシュー:** バグ報告、機能要求、実装詳細の議論には、GitHubを自由にご利用ください。貢献したい場合は[**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)をチェックしてください - あらゆる種類の貢献を歓迎します。 +* **貢献:** コードや改善を貢献したい場合は、始め方について[貢献ガイド](CONTRIBUTING.md)を参照してください。すべてのPRとフィードバックを感謝します。協力することで、Julepをさらに良くすることができます! -### 異なるフォームファクタ +*プロのヒント: リポジトリにスターを付けて最新情報を入手してください - 新機能と例を継続的に追加しています。* -Julep は、ワークフローを記述するための言語、それらのワークフローを実行するためのサーバー、およびプラットフォームと対話するための SDK を含む **プラットフォーム** です。Julep で何かを構築するには、ワークフローの説明を `YAML` で記述し、クラウドでワークフローを実行します。 +
-Julep は、負荷の高い、複数のステップから成る、長時間実行されるワークフロー向けに構築されており、ワークフローの複雑さに制限はありません。 +あなたの貢献は、大きいものも小さいものも、私たちにとって価値があります。一緒に素晴らしいものを構築しましょう! + -LangChain は、プロンプトとツールの線形チェーンを構築するためのいくつかのツールとフレームワークを含む **ライブラリ** です。LangChain を使用して何かを構築するには、通常、使用するモデル チェーンを設定して実行する Python コードを記述します。 +

素晴らしい貢献者たち:

-LangChain は、プロンプトと API 呼び出しの線形チェーンを含む単純なユースケースでは十分であり、実装も迅速です。 + + + -### 要約すれば +
-ステートレスまたは短期的なコンテキストで LLM インタラクションとプロンプト シーケンスを管理する必要がある場合は、LangChain を使用します。 +## ライセンス -高度なワークフロー機能、永続的なセッション、複雑なタスク オーケストレーションを備えたステートフル エージェント用の堅牢なフレームワークが必要な場合は、Julep を選択してください。 - -
- - Back to Top -  |  - - Table of Contents - -
\ No newline at end of file +Julepは**Apache 2.0ライセンス**の下で提供されており、これは自分のプロジェクトで自由に使用できることを意味します。詳細については[LICENSE](LICENSE)ファイルを参照してください。Julepでの構築をお楽しみください! \ No newline at end of file diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md index a7d26253a..afd63d9b2 100644 --- a/.github/SUPPORT.md +++ b/.github/SUPPORT.md @@ -16,8 +16,8 @@ Here you'll find detailed guides, API references, and tutorials to help you make Join our vibrant community to get help from other users and the Julep team: -- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our Discord server for real-time chat and support. -- [GitHub Discussions](https://github.com/julep-ai/julep/discussions): Ask questions, share ideas, and discuss Julep with other developers. +- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our Discord server to ask questions, share ideas, and discuss Julep with other developers. +- [GitHub](https://github.com/julep-ai/julep): Report issues and feature requests. ### Social Media @@ -44,8 +44,8 @@ When reporting issues, please provide as much detail as possible, including: We welcome contributions to Julep! If you're interested in contributing, please check out our: -- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/main/CONTRIBUTING.md) -- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/CODE_OF_CONDUCT.md) +- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/dev/.github/CONTRIBUTING.md) +- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/.github/CODE_OF_CONDUCT.md) ## API Keys diff --git a/.github/julep.gif b/.github/julep.gif new file mode 100644 index 000000000..595d92835 Binary files /dev/null and b/.github/julep.gif differ diff --git a/.github/workflows/bandit-security-check-python-agents-api.yml b/.github/workflows/bandit-security-check-python-agents-api.yml index b6d4e828d..f435b0be5 100644 --- a/.github/workflows/bandit-security-check-python-agents-api.yml +++ b/.github/workflows/bandit-security-check-python-agents-api.yml @@ -2,12 +2,13 @@ name: Bandit security check python agents-api run-name: ${{ github.actor }} is checking the security of the code on: + workflow_dispatch: pull_request: paths: - - 'agents-api/**' + - 'src/agents-api/**' push: paths: - - 'agents-api/**' + - 'src/agents-api/**' jobs: bandit_check: @@ -15,10 +16,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: mdegis/bandit-action@v1.0.1 + - name: Check out repository + uses: actions/checkout@v4 + + - name: Run Bandit scan + uses: PyCQA/bandit-action@v1 with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - path: "./agents-api/agents_api" - level: high + targets: "./src/agents-api/agents_api" confidence: high - # exit_zero: true + severity: high diff --git a/.github/workflows/changelog-sync.yml b/.github/workflows/changelog-sync.yml new file mode 100644 index 000000000..fd21fcb1a --- /dev/null +++ b/.github/workflows/changelog-sync.yml @@ -0,0 +1,98 @@ +name: Sync changelog with Blot + +on: + pull_request: + types: [opened, synchronize, reopened] + paths: ["changelog/**"] + push: + branches: + - main + - dev + paths: + - "changelog/**" + workflow_run: + workflows: ["Claude Changelog (PR)"] + types: [completed] + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Configure git identity + run: | + git config --global user.name "${{ secrets.BLOT_GIT_USERNAME }}" + git config --global user.email "${{ secrets.BLOT_GIT_USERNAME }}" + + - name: Clone Blot repo + env: + BLOT_USERNAME: ${{ secrets.BLOT_GIT_USERNAME }} + BLOT_PASSWORD: ${{ secrets.BLOT_GIT_PASSWORD }} + run: | + # URL-encode the username (replace @ with %40) + export ENCODED_USERNAME=${BLOT_USERNAME//@/%40} + + # Clone into a directory outside the current git repo to avoid conflicts + cd ${{ runner.temp }} + + if ! git clone \ + "https://${ENCODED_USERNAME}:${BLOT_PASSWORD}@blot.im/clients/git/end/julepchangelog.git" ; then + echo "Error: Failed to clone Blot repository" + exit 1 + fi + + # Get the default branch and ensure we're on it + cd julepchangelog + git checkout -B master origin/master + cd ${{ github.workspace }} + + - name: Copy updated files into Blot working tree + run: | + if [ ! -d "changelog" ]; then + echo "Error: changelog directory not found" + exit 1 + fi + + if ! rsync -a --delete --exclude='.git/' --exclude='.gitignore' changelog/ ${{ runner.temp }}/julepchangelog/; then + echo "Error: Failed to sync files" + exit 1 + fi + + - name: Commit & push if there are changes + env: + BLOT_USERNAME: ${{ secrets.BLOT_GIT_USERNAME }} + BLOT_PASSWORD: ${{ secrets.BLOT_GIT_PASSWORD }} + run: | + cd ${{ runner.temp }}/julepchangelog + + if [ -z "$(git status --porcelain)" ]; then + echo "No changes to publish" + exit 0 + fi + + if ! git add -A; then + echo "Error: Failed to stage changes" + exit 1 + fi + + if ! git commit -m "chore: publish updates"; then + echo "Error: Failed to commit changes" + exit 1 + fi + + # URL-encode the username (replace @ with %40) + export ENCODED_USERNAME=${BLOT_USERNAME//@/%40} + + if ! git push "https://${ENCODED_USERNAME}:${BLOT_PASSWORD}@blot.im/clients/git/end/julepchangelog.git" master; then + echo "Error: Failed to push changes to branch master" + exit 1 + fi + + echo "Successfully synced changelog to Blot" + diff --git a/.github/workflows/claude-changelog-pr.yml b/.github/workflows/claude-changelog-pr.yml new file mode 100644 index 000000000..58d28838d --- /dev/null +++ b/.github/workflows/claude-changelog-pr.yml @@ -0,0 +1,81 @@ +name: Claude Changelog (PR) + +on: + pull_request: + branches: [main, dev] + types: [opened, synchronize, reopened] + paths-ignore: + - "changelog/**" + +jobs: + changelog: + name: Update Changelog + runs-on: ubuntu-latest + if: ${{ github.event.sender.login != 'github-actions[bot]' && github.event.pull_request.user.login != 'claude-doc-bot' && contains(github.event.pull_request.title, '[skip-claude]') == false }} + permissions: + contents: write + pull-requests: write + issues: write + actions: read + id-token: write + + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-Changelog-${{ github.run_id }} + aws-region: us-east-1 + + - name: Save PR patch + run: gh pr diff ${{ github.event.pull_request.number }} --patch > diff.patch + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + + - name: Set changelog directory + id: set_cl_dir + run: | + if [[ "${{ github.event.pull_request.base.ref }}" == "dev" ]]; then + echo "CHANGELOG_DIR=changelog/dev" >> "$GITHUB_ENV" + echo "CHANGELOG_TAG=dev" >> "$GITHUB_ENV" + else + echo "CHANGELOG_DIR=changelog/main" >> "$GITHUB_ENV" + echo "CHANGELOG_TAG=main" >> "$GITHUB_ENV" + fi + + - name: Claude updates changelog & home summary + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + track_progress: true + github_token: ${{ secrets.GITHUB_TOKEN }} + claude_args: | + --model us.anthropic.claude-sonnet-4-20250514-v1:0 + --max-turns 5 + --allowedTools Read,Edit,MultiEdit + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ github.event.pull_request.number }} + + You are the team's *changelog* bot. Follow these rules strictly: + + 1. Read the unified diff in *diff.patch*. + 2. Decide if the patch introduces any user-visible change (new feature, behaviour change, deprecation, bug fix). + • If **no user-visible change** – *do nothing*: exit without writing, committing, or replying. + 3. If **yes**: + a. **Create or update** file in *${{ env.CHANGELOG_DIR }}* named `{YYYY}-{MM}-{DD}.md` with a concise bullet list of the changes. + • Begin each bullet with a past-tense verb (e.g. "Added", "Fixed"). + • Keep bullets short (< 100 chars). + • Ensure the file contains YAML front-matter: + ``` + --- + title: "Julep AI Changelog" + date: {YYYY}-{MM}-{DD} + tags: [${{ env.CHANGELOG_TAG }}] + --- + ``` + b. **Update** `Templates/index-template/home-summary.html` so the home page shows the newest entry's title, date and bullet list (only if the PR is on main). + 4. Finally, stage, commit and push the edits with a clear message. diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml new file mode 100644 index 000000000..cd71f0f74 --- /dev/null +++ b/.github/workflows/claude-code-review.yml @@ -0,0 +1,70 @@ +name: Claude Code Review + +on: + pull_request: + types: [opened, synchronize] + # Optional: Only run on specific file changes + # paths: + # - "src/**/*.ts" + # - "src/**/*.tsx" + # - "src/**/*.js" + # - "src/**/*.jsx" + +jobs: + claude-review: + # Optional: Filter by PR author + # if: | + # github.event.pull_request.user.login == 'external-contributor' || + # github.event.pull_request.user.login == 'new-developer' || + # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' + + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + issues: read + actions: read + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-${{ github.run_id }} + aws-region: us-east-1 + + - name: Run Claude Code Review + id: claude-review + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ github.event.pull_request.number }} + + This is a monorepo with multiple different services. + The repo uses AGENTS.md as the file that contains instructions for + AI agents (instead of CLAUDE.md files). CLAUDE.md still exists but is just a symlink to the corresponding AGENTS.md (usually in the same dir). + Please review this pull request and provide feedback on: + - Code quality and best practices + - Potential bugs or issues + - Performance considerations + - Security concerns + - Test coverage + + Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback. + + Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR. + + # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md + # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options + claude_args: | + --model us.anthropic.claude-opus-4-1-20250805-v1:0 + --allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)" + diff --git a/.github/workflows/claude-docs-manual.yml b/.github/workflows/claude-docs-manual.yml new file mode 100644 index 000000000..b7f7aed79 --- /dev/null +++ b/.github/workflows/claude-docs-manual.yml @@ -0,0 +1,92 @@ +name: Claude Docs (Manual) + +on: + workflow_dispatch: + inputs: + pr_number: + description: "PR number" + required: true + +jobs: + update-docs: + name: Manual Doc Update + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + issues: write + actions: read + id-token: write + + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-Docs-${{ github.run_id }} + aws-region: us-east-1 + + - name: Save PR patch + run: gh pr diff ${{ github.event.inputs.pr_number }} --patch > diff.patch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Determine PR base branch + id: pr_base + run: | + base=$(gh pr view ${{ github.event.inputs.pr_number }} --json baseRefName -q .baseRefName) + echo "BASE_BRANCH=$base" >> "$GITHUB_OUTPUT" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Set changelog directory + id: set_cl_dir + run: | + if [[ "${{ steps.pr_base.outputs.BASE_BRANCH }}" == "dev" ]]; then + echo "CHANGELOG_DIR=changelog/dev" >> "$GITHUB_ENV" + echo "CHANGELOG_TAG=dev" >> "$GITHUB_ENV" + else + echo "CHANGELOG_DIR=changelog/main" >> "$GITHUB_ENV" + echo "CHANGELOG_TAG=main" >> "$GITHUB_ENV" + fi + + - name: Claude changes docs + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + track_progress: true + github_token: ${{ secrets.GITHUB_TOKEN }} + claude_args: | + --model us.anthropic.claude-sonnet-4-20250514-v1:0 + --max-turns 10 + --allowedTools Read,Edit,MultiEdit,Write + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ github.event.inputs.pr_number }} + + You are the team's documentation bot. + 1. Read *diff.patch*. + 2. For any change that affects users: + 1. **edit** files under *documentation/*** + (Mintlify structure) so docs stay accurate. + 2. **create** new file in *${{ env.CHANGELOG_DIR }}*** + named `{YYYY}-{MM}-{DD}.md`** containing a bulleted list + of the changes (don't include unnecessary details). + - File front-matter: + ``` + --- + title: "Julep AI Changelog – {human-readable-date}" + date: {YYYY}-{MM}-{DD} + tags: [${{ env.CHANGELOG_TAG }}] + --- + ``` + - If the file already exists, append to its bullet list. + 3. **update** `Templates/index-template/home-summary.html` so the home page summarises the latest entry from the changelog (same title/date and bullet list). + 3. Commit the edits. + If diff.patch has no user-visible change, do nothing. + 4. Finally, stage, commit and push the edits with a clear message. + + Note: AGENTS.md replaces CLAUDE.md (CLAUDE.md is a symlink). diff --git a/.github/workflows/claude-docs-pr.yml b/.github/workflows/claude-docs-pr.yml new file mode 100644 index 000000000..6e888d76f --- /dev/null +++ b/.github/workflows/claude-docs-pr.yml @@ -0,0 +1,122 @@ +name: Claude Docs (PR) + +on: + pull_request: + branches: [main] + types: [opened, synchronize, reopened] + paths-ignore: + - "changelog/**" + +jobs: + docs-gate: + name: Documentation Gate + runs-on: ubuntu-latest + + if: ${{ github.event.sender.login != 'github-actions[bot]' && github.event.pull_request.user.login != 'claude-doc-bot' && contains(github.event.pull_request.title, '[skip-claude]') == false }} + + outputs: + pr_number: ${{ steps.resolve.outputs.number }} + should_update: ${{ steps.gate.outputs.result }} + + permissions: + contents: read + pull-requests: read + actions: read + id-token: write + + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-DocsGate-${{ github.run_id }} + aws-region: us-east-1 + + - name: PR number + id: resolve + run: echo "number=${{ github.event.pull_request.number }}" >> "$GITHUB_OUTPUT" + + - name: Save PR patch + run: gh pr diff ${{ steps.resolve.outputs.number }} --patch > diff.patch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Gate + id: gate + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + track_progress: true + github_token: ${{ secrets.GITHUB_TOKEN }} + claude_args: | + --model us.anthropic.claude-sonnet-4-20250514-v1:0 + --max-turns 2 + --allowedTools Read + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ github.event.pull_request.number }} + + You are a senior technical-writer. + Read *diff.patch* (unified diff). + Reply with the single word **UPDATE** if the patch + a) adds new user-visible functionality, + b) changes or removes existing behaviour, + c) deprecates anything, + otherwise reply **SKIP**. + + update-docs: + name: Update Documentation + needs: docs-gate + if: ${{ github.event.sender.login != 'github-actions[bot]' && + needs.docs-gate.result == 'success' && + needs.docs-gate.outputs.should_update == 'UPDATE' }} + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + issues: write + actions: read + id-token: write + + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-DocsUpdate-${{ github.run_id }} + aws-region: us-east-1 + + - name: Save PR patch + run: gh pr diff ${{ needs.docs-gate.outputs.pr_number }} --patch > diff.patch + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Claude changes docs + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + track_progress: true + github_token: ${{ secrets.GITHUB_TOKEN }} + claude_args: | + --model us.anthropic.claude-opus-4-1-20250805-v1:0 + --max-turns 10 + --allowedTools Read,Edit,MultiEdit + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ needs.docs-gate.outputs.pr_number }} + + You are the team's documentation bot. + 1. Read *diff.patch*. + 2. For any change that affects users, **edit** files under *documentation/*** + (Mintlify structure) so docs stay accurate. + 3. Commit the edits. + If diff.patch has no user-visible change, do nothing. + 4. Finally, stage, commit and push the edits with a clear message. + + Note: AGENTS.md replaces CLAUDE.md (CLAUDE.md is a symlink). diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml new file mode 100644 index 000000000..414cc7812 --- /dev/null +++ b/.github/workflows/claude.yml @@ -0,0 +1,58 @@ +name: Claude Code + +on: + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] + issues: + types: [opened, assigned] + pull_request_review: + types: [submitted] + +jobs: + claude: + if: | + (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || + (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || + (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || + (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + issues: read + id-token: write + actions: read # Required for Claude to read CI results on PRs + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }} + role-session-name: GitHubActions-Claude-${{ github.run_id }} + aws-region: us-east-1 + + - name: Run Claude Code + id: claude + uses: anthropics/claude-code-action@v1 + with: + use_bedrock: "true" + + # This is an optional setting that allows Claude to read CI results on PRs + additional_permissions: | + actions: read + + # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. + # prompt: 'Update the pull request description to include a summary of changes.' + + # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md + # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options + claude_args: | + --model us.anthropic.claude-opus-4-1-20250805-v1:0 + --allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)" + diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index e90154f6f..79a81064f 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -22,11 +22,7 @@ jobs: - name: Collect merged PRs from the last two weeks id: collect_prs run: | - if [[ "$OSTYPE" == "darwin"* ]]; then - date_threshold=$(date -v-14d +"%Y-%m-%d") - else - date_threshold=$(date -d '-14 days' +"%Y-%m-%d") - fi + date_threshold=$(date -d '-14 days' +"%Y-%m-%d") echo "Fetching merged PRs since $date_threshold..." @@ -59,7 +55,7 @@ jobs: if: steps.collect_prs.outputs.has_prs == 'true' id: generate_changelog run: | - if ! python scripts/generate_changelog.py; then + if ! python src/scripts/generate_changelog.py; then echo "Error: Failed to generate changelog" exit 1 fi diff --git a/.github/workflows/generate-openapi-code-from-typespec.yml b/.github/workflows/generate-openapi-code-from-typespec.yml index c5dee9ec6..823d8aeb7 100644 --- a/.github/workflows/generate-openapi-code-from-typespec.yml +++ b/.github/workflows/generate-openapi-code-from-typespec.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is generating openapi code on: pull_request: paths: - - 'typespec/**' + - 'src/typespec/**' push: paths: - - 'typespec/**' + - 'src/typespec/**' jobs: Typecheck: @@ -20,7 +20,7 @@ jobs: with: node-version: 'latest' cache: npm - cache-dependency-path: 'typespec/package-lock.json' + cache-dependency-path: 'src/typespec/package-lock.json' - name: Install uv uses: astral-sh/setup-uv@v4 @@ -33,9 +33,9 @@ jobs: - name: Generate openapi code run: | - cd typespec; npm ci; cd - - export PATH=$PATH:$PWD/typespec/node_modules/.bin - bash scripts/generate_openapi_code.sh + cd src/typespec; npm ci; cd - + export PATH=$PATH:$PWD/src/typespec/node_modules/.bin + bash src/scripts/generate_openapi_code.sh concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/lint-agents-api-pr.yml b/.github/workflows/lint-agents-api-pr.yml index 5850441ef..8bc6d4999 100644 --- a/.github/workflows/lint-agents-api-pr.yml +++ b/.github/workflows/lint-agents-api-pr.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is linting the code on: pull_request: paths: - - 'agents-api/**' + - 'src/agents-api/**' push: paths: - - 'agents-api/**' + - 'src/agents-api/**' jobs: Lint-And-Format: @@ -31,13 +31,13 @@ jobs: - name: Set up python and install dependencies run: | - cd agents-api + cd src/agents-api uv python install uv sync --all-extras --dev - name: Lint and format run: | - cd agents-api + cd src/agents-api uv run poe format uv run poe lint diff --git a/.github/workflows/lint-integrations-service-pr.yml b/.github/workflows/lint-integrations-service-pr.yml index 50d492851..1cf9843d5 100644 --- a/.github/workflows/lint-integrations-service-pr.yml +++ b/.github/workflows/lint-integrations-service-pr.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is linting the code on: pull_request: paths: - - 'integrations-service/**' + - 'src/integrations-service/**' push: paths: - - 'integrations-service/**' + - 'src/integrations-service/**' jobs: Lint-And-Format: @@ -23,13 +23,13 @@ jobs: - name: Set up python and install dependencies run: | - cd integrations-service + cd src/integrations-service uv python install uv sync --all-extras --dev - name: Lint and format run: | - cd integrations-service + cd src/integrations-service uv run poe format uv run poe lint diff --git a/.github/workflows/publish-cli-prerelease.yml b/.github/workflows/publish-cli-prerelease.yml new file mode 100644 index 000000000..95aceff3d --- /dev/null +++ b/.github/workflows/publish-cli-prerelease.yml @@ -0,0 +1,142 @@ +name: Publish CLI Prerelease to PyPI + +# AIDEV-NOTE: Auto-publish CLI package to PyPI for prerelease versions only +permissions: + contents: write + packages: write + +on: + push: + branches: + - dev + - main + paths: + - 'src/cli/**' + workflow_dispatch: + +jobs: + check-and-publish: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./src/cli + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + enable-cache: true + + - name: Install dependencies + run: | + uv sync --dev + + - name: Extract version from pyproject.toml + id: version + run: | + # Extract version using grep and sed (no additional dependencies needed) + VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/') + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Extracted version: $VERSION" + + - name: Check if version is prerelease + id: prerelease + run: | + VERSION="${{ steps.version.outputs.version }}" + echo "Checking version: $VERSION" + + # Check if version contains prerelease indicators + if echo "$VERSION" | grep -E "(alpha|beta|rc|pre|dev)" > /dev/null; then + echo "is_prerelease=true" >> $GITHUB_OUTPUT + echo "✅ Version $VERSION is a prerelease" + else + echo "is_prerelease=false" >> $GITHUB_OUTPUT + echo "❌ Version $VERSION is NOT a prerelease" + fi + + - name: Run linting and type checking + if: steps.prerelease.outputs.is_prerelease == 'true' + run: | + uv run poe check + + - name: Run tests + if: steps.prerelease.outputs.is_prerelease == 'true' + run: | + uv run poe test + + - name: Build package + if: steps.prerelease.outputs.is_prerelease == 'true' + run: | + uv build + + - name: Check if version already exists on PyPI + if: steps.prerelease.outputs.is_prerelease == 'true' + id: check_pypi + run: | + VERSION="${{ steps.version.outputs.version }}" + + # Check if this version already exists on PyPI + if pip index versions julep-cli | grep "$VERSION" > /dev/null 2>&1; then + echo "version_exists=true" >> $GITHUB_OUTPUT + echo "⚠️ Version $VERSION already exists on PyPI" + else + echo "version_exists=false" >> $GITHUB_OUTPUT + echo "✅ Version $VERSION does not exist on PyPI, proceeding with publish" + fi + + - name: Publish to PyPI + if: steps.prerelease.outputs.is_prerelease == 'true' && steps.check_pypi.outputs.version_exists == 'false' + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} + packages-dir: src/cli/dist/ + verbose: true + + - name: Create GitHub Release + if: steps.check_pypi.outputs.version_exists == 'false' + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: cli-v${{ steps.version.outputs.version }} + release_name: CLI v${{ steps.version.outputs.version }} + body: | + 🚀 **Julep CLI Prerelease v${{ steps.version.outputs.version }}** + + This is a prerelease version of the Julep CLI. + + ## Installation + ```bash + pip install julep-cli==${{ steps.version.outputs.version }} + ``` + + ## Changes + See the [changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md) for detailed changes. + + --- + *This release was automatically generated by GitHub Actions.* + prerelease: true + draft: false + + - name: Summary + run: | + echo "## Workflow Summary" >> $GITHUB_STEP_SUMMARY + echo "- **Version**: ${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY + echo "- **Is Prerelease**: ${{ steps.prerelease.outputs.is_prerelease }}" >> $GITHUB_STEP_SUMMARY + echo "- **Version Exists on PyPI**: ${{ steps.check_pypi.outputs.version_exists }}" >> $GITHUB_STEP_SUMMARY + + if [ "${{ steps.prerelease.outputs.is_prerelease }}" == "true" ] && [ "${{ steps.check_pypi.outputs.version_exists }}" == "false" ]; then + echo "- **Action**: ✅ Published to PyPI and created GitHub release" >> $GITHUB_STEP_SUMMARY + elif [ "${{ steps.prerelease.outputs.is_prerelease }}" == "true" ] && [ "${{ steps.check_pypi.outputs.version_exists }}" == "true" ]; then + echo "- **Action**: ⚠️ Skipped (version already exists on PyPI)" >> $GITHUB_STEP_SUMMARY + else + echo "- **Action**: ❌ Skipped (not a prerelease version)" >> $GITHUB_STEP_SUMMARY + fi diff --git a/.github/workflows/sync-model-docs.yml b/.github/workflows/sync-model-docs.yml new file mode 100644 index 000000000..73a0b3461 --- /dev/null +++ b/.github/workflows/sync-model-docs.yml @@ -0,0 +1,51 @@ +name: Sync Model Documentation + +on: + push: + branches: + - dev + paths: + - 'src/llm-proxy/litellm-config.yaml' + - 'src/scripts/sync_model_docs.py' + workflow_dispatch: + +jobs: + sync-model-docs: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + pip install pyyaml + + - name: Run sync script + run: | + python src/scripts/sync_model_docs.py + + - name: Check for changes + id: check_changes + run: | + if git diff --quiet documentation/integrations/supported-models.mdx; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + + - name: Commit and push changes + if: steps.check_changes.outputs.changed == 'true' + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git add documentation/integrations/supported-models.mdx + git commit -m "chore: sync model documentation from litellm-config.yaml [skip ci]" + git push \ No newline at end of file diff --git a/.github/workflows/test-agents-api-pr.yml b/.github/workflows/test-agents-api-pr.yml index 80f736a87..ef5a246cd 100644 --- a/.github/workflows/test-agents-api-pr.yml +++ b/.github/workflows/test-agents-api-pr.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is testing the code on: pull_request: paths: - - 'agents-api/**' + - 'src/agents-api/**' push: paths: - - 'agents-api/**' + - 'src/agents-api/**' jobs: Test: @@ -23,7 +23,7 @@ jobs: uses: astral-sh/setup-uv@v4 with: enable-cache: true - + - name: Install Go migrate uses: jaxxstorm/action-install-gh-release@v1.10.0 with: # Grab the latest version @@ -31,13 +31,15 @@ jobs: - name: Set up python and install dependencies run: | - cd agents-api + cd src/agents-api uv python install uv sync --all-extras --dev - name: Run tests + env: + SECRETS_MASTER_KEY: ${{ secrets.SECRETS_MASTER_KEY }} run: | - cd agents-api + cd src/agents-api uv run poe test --fail-limit 3 concurrency: diff --git a/.github/workflows/test-integrations-service-pr.yml b/.github/workflows/test-integrations-service-pr.yml index 59c94d696..0ccf7b390 100644 --- a/.github/workflows/test-integrations-service-pr.yml +++ b/.github/workflows/test-integrations-service-pr.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is testing the code on: pull_request: paths: - - 'integrations-service/**' + - 'src/integrations-service/**' push: paths: - - 'integrations-service/**' + - 'src/integrations-service/**' jobs: Test: @@ -23,13 +23,13 @@ jobs: - name: Set up python and install dependencies run: | - cd integrations-service + cd src/integrations-service uv python install uv sync --all-extras --dev - name: Run tests run: | - cd integrations-service + cd src/integrations-service uv run poe test concurrency: diff --git a/.github/workflows/translate-readme.yml b/.github/workflows/translate-readme.yml index 7a9aa4033..b01bb6eb7 100644 --- a/.github/workflows/translate-readme.yml +++ b/.github/workflows/translate-readme.yml @@ -1,40 +1,31 @@ -name: Translate ReadME - -# on: -# push: -# paths: -# - "README.md" +name: Translate README +on: + pull_request: + paths: + - "README.md" + - ".github/README-*.md" jobs: - readme-translator: + translate_readme: runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Python v3.10.12 - uses: actions/setup-python@v5 - with: - python-version: "3.10.12" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install deep-translator git+https://github.com/Jwink3101/parmapper - - - name: Run translator script - run: python scripts/readme_translator.py - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 + - uses: actions/checkout@v4 + - uses: anthropics/claude-code-action@beta with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "chore(readme): translate README.md" - title: "Translate README.md" - body: "This PR updates the translated versions of README.md" - branch: "translate-readme" - delete-branch: true - add-paths: | - README.md - README-*.md + direct_prompt: >- + Use the root README.md to review the .github/README-{lang}.md files + to see if they are correctly translated and if needed + make changes as necessary. Keep the contents exactly the same, just + translated to the target languages. + + custom_instructions: >- + This is a monorepo with multiple different services. + The repo uses AGENTS.md as the file that contains instructions for + AI agents (instead of CLAUDE.md files). CLAUDE.md still exists but + is just a symlink to the corresponding AGENTS.md (usually in the same dir). + + anthropic_model: ${{ vars.TRANSLATOR_CLAUDE_MODEL }} + anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} + github_token: ${{ secrets.GITHUB_TOKEN }} + allowed_tools: "Bash(npm install),Bash(npm run test),Edit,Replace,NotebookEditCell" + disallowed_tools: "TaskOutput,KillTask" diff --git a/.github/workflows/typecheck-agents-api-pr.yml b/.github/workflows/typecheck-agents-api-pr.yml index 3569d65b4..d987b00db 100644 --- a/.github/workflows/typecheck-agents-api-pr.yml +++ b/.github/workflows/typecheck-agents-api-pr.yml @@ -4,10 +4,10 @@ run-name: ${{ github.actor }} is typechecking the code on: pull_request: paths: - - 'agents-api/**' + - 'src/agents-api/**' push: paths: - - 'agents-api/**' + - 'src/agents-api/**' jobs: Typecheck: @@ -22,7 +22,7 @@ jobs: - name: Cache pytype uses: actions/cache@v4 with: - path: agents-api/.pytype + path: src/agents-api/.pytype key: ${{ runner.os }}-agents-api-pytype-${{ github.base_ref }} restore-keys: | ${{ runner.os }}-agents-api-pytype- @@ -39,13 +39,13 @@ jobs: - name: Set up python and install dependencies run: | - cd integrations-service + cd src/integrations-service uv python install uv sync --all-extras --dev - name: Typecheck run: | - cd agents-api + cd src/agents-api uv run poe typecheck concurrency: diff --git a/.gitignore b/.gitignore index 591aabab1..aa212f96a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,11 @@ ngrok* .env *.env *.pyc -*/node_modules/ +**/node_modules/ .aider* .vscode/ schema.sql +*.egg-info/ +**/*.egg-info/ + +**/.claude/settings.local.json diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 000000000..18d44919d --- /dev/null +++ b/.mcp.json @@ -0,0 +1,29 @@ +{ + "mcpServers": { + "deepwiki": { + "type": "http", + "url": "https://mcp.deepwiki.com/mcp" + }, + "linear": { + "type": "sse", + "url": "https://mcp.linear.app/sse" + }, + "fetch": { + "type": "stdio", + "command": "uvx", + "args": [ + "mcp-server-fetch" + ], + "env": {} + }, + "firecrawl": { + "type": "stdio", + "command": "npx", + "args": [ + "-y", + "firecrawl-mcp" + ], + "env": {} + } + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..df7e739ca --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,329 @@ +# AGENTS.md. Julep AI +*Last updated 2025-05-09* + +> **purpose** – This file is the onboarding manual for every AI assistant (Claude, Cursor, GPT, etc.) and every human who edits this repository. +> It encodes our coding standards, guard-rails, and workflow tricks so the *human 30 %* (architecture, tests, domain judgment) stays in human hands.[^1] + +--- + +## 0. Project overview + +Julep is a serverless platform for building AI workflows and agents. It helps data and ML teams orchestrate complex AI operations, manage state across interactions, and integrate with existing data infrastructure and tools. Key components: + +- **src/ts-api**: Core service for agent definitions and task execution +- **src/memory-store**: Persistent storage with PostgreSQL and vector capabilities +- **src/scheduler**: Temporal-based workflow engine for execution +- **src/integrations-service**: Connectors to external services and tools +- **src/**: All core service modules are now organized under the src/ directory + +**Golden rule**: When unsure about implementation details or requirements, ALWAYS consult the developer rather than making assumptions. + +--- + +## 1. Non-negotiable golden rules + +| #: | AI *may* do | AI *must NOT* do | +|---|------------------------------------------------------------------------|-------------------------------------------------------------------------------------| +| G-0 | Whenever unsure about something that's related to the project, ask the developer for clarification before making changes. | ❌ Write changes or use tools when you are not sure about something project specific, or if you don't have context for a particular feature/decision. | +| G-1 | Generate code **only inside** relevant source directories (e.g., `src/agents-api/agents_api/` for the main API, `src/cli/src/` for the CLI, `src/integrations-service/` for integration-specific code) or explicitly pointed files. | ❌ Touch `tests/`, `SPEC.md`, or any `*_spec.py` / `*.ward` files (humans own tests & specs). | +| G-2 | Add/update **`AIDEV-NOTE:` anchor comments** near non-trivial edited code. | ❌ Delete or mangle existing `AIDEV-` comments. | +| G-3 | Follow lint/style configs (`pyproject.toml`, `.ruff.toml`, `.pre-commit-config.yaml`). Use the project's configured linter, if available, instead of manually re-formatting code. | ❌ Re-format code to any other style. | +| G-4 | For changes >300 LOC or >3 files, **ask for confirmation**. | ❌ Refactor large modules without human guidance. | +| G-5 | Stay within the current task context. Inform the dev if it'd be better to start afresh. | ❌ Continue work from a prior prompt after "new task" – start a fresh session. | + +--- + +## 2. Build, test & utility commands + +Use `poe` tasks for consistency (they ensure correct environment variables and configuration). + +```bash +# Format, lint, type-check, test, codegen +poe format # ruff format +poe lint # ruff check +poe typecheck # pytype --config pytype.toml (for agents-api) / pyright (for cli) +poe test # ward test --exclude .venv (pytest for integrations-service) +poe test --search "pattern" # Run specific tests by Ward pattern +poe check # format + lint + type + SQL validation +poe codegen # generate API code (e.g., OpenAPI from TypeSpec) +``` +For simple, quick Python script tests: `PYTHONPATH=$PWD python tests/test_file.py` (ensure correct CWD). + +--- + +## 3. Coding standards + +* **Python**: 3.12+, FastAPI, `async/await` preferred. +* **Formatting**: `ruff` enforces 96-char lines, double quotes, sorted imports. Standard `ruff` linter rules. +* **Typing**: Strict (Pydantic v2 models preferred); `from __future__ import annotations`. +* **Naming**: `snake_case` (functions/variables), `PascalCase` (classes), `SCREAMING_SNAKE` (constants). +* **Error Handling**: Typed exceptions; context managers for resources. +* **Documentation**: Google-style docstrings for public functions/classes. +* **Testing**: Separate test files matching source file patterns. + +**Error handling patterns**: +- Use typed, hierarchical exceptions defined in `exceptions.py` +- Catch specific exceptions, not general `Exception` +- Use context managers for resources (database connections, file handles) +- For async code, use `try/finally` to ensure cleanup + +Example: +```python +from agents_api.common.exceptions import ValidationError + +async def process_data(data: dict) -> Result: + try: + # Process data + return result + except KeyError as e: + raise ValidationError(f"Missing required field: {e}") from e +``` + +--- + +## 4. Project layout & Core Components + +| Directory | Description | +| --------------------------------- | ------------------------------------------------- | +| `src/agents-api/` | FastAPI service & Temporal activities | +| `src/memory-store/` | PostgreSQL + TimescaleDB schemas & migrations | +| `src/blob-store/` | S3-compatible object storage for files | +| `src/integrations-service/` | Adapters for external services (browsers, APIs) | +| `src/scheduler/` | Temporal workflow engine for execution | +| `src/gateway/` | API gateway (routing, request handling) | +| `src/llm-proxy/` | LiteLLM proxy for language models | +| `src/monitoring/` | Prometheus & Grafana | +| `src/typespec/` | **Source-of-truth** API specifications (TypeSpec) | +| `sdks/` | Node.js & Python client SDKs | + +See `.github/CONTRIBUTING.md` for a full architecture diagram. + +**Key domain models**: +- **Agents**: AI agent definitions with instructions and tools +- **Tasks**: Workflow definitions with individual steps +- **Tools**: Integrations and capabilities for agents to use +- **Sessions**: Conversation containers with context +- **Entries**: Message history tracking +- **Executions**: Task execution state tracking + +--- + +## 5. Anchor comments + +Add specially formatted comments throughout the codebase, where appropriate, for yourself as inline knowledge that can be easily `grep`ped for. + +### Guidelines: + +- Use `AIDEV-NOTE:`, `AIDEV-TODO:`, or `AIDEV-QUESTION:` (all-caps prefix) for comments aimed at AI and developers. +- Keep them concise (≤ 120 chars). +- **Important:** Before scanning files, always first try to **locate existing anchors** `AIDEV-*` in relevant subdirectories. +- **Update relevant anchors** when modifying associated code. +- **Do not remove `AIDEV-NOTE`s** without explicit human instruction. +- Make sure to add relevant anchor comments, whenever a file or piece of code is: + * too long, or + * too complex, or + * very important, or + * confusing, or + * could have a bug unrelated to the task you are currently working on. + +Example: +```python +# AIDEV-NOTE: perf-hot-path; avoid extra allocations (see ADR-24) +async def render_feed(...): + ... +``` + +--- + +## 6. Commit discipline + +* **Granular commits**: One logical change per commit. +* **Tag AI-generated commits**: e.g., `feat: optimise feed query [AI]`. +* **Clear commit messages**: Explain the *why*; link to issues/ADRs if architectural. +* **Use `git worktree`** for parallel/long-running AI branches (e.g., `git worktree add ../wip-foo -b wip-foo`). +* **Review AI-generated code**: Never merge code you don't understand. + +--- + +## 7. API models & codegen + +* To modify API models (e.g., in `src/agents-api/agents_api/autogen/`), **edit TypeSpec files** in `src/typespec/`. +* **Regenerate code** after TypeSpec changes: `bash src/scripts/generate_openapi_code.sh` (from project root). +* **Do NOT manually edit** generated files (e.g., in `autogen/` directories) as they will be overwritten. + +**API pattern examples**: +```python +# Route definition +@router.post("/sessions/{session_id}/entries", response_model=EntryResponse) +async def create_entry( + session_id: str, + entry_create: EntryCreate, + current_user: User = Depends(get_current_user), +) -> EntryResponse: + """Create a new entry in a session.""" + # Implementation... +``` + +--- + +## 8. Python expressions in tasks (agents-api) + +* Evaluated using `simpleeval` in a sandboxed environment. +* Use `validate_py_expression()` from `agents_api.activities.task_steps.base_evaluate` for static checks (syntax, undefined names, safety). +* Expressions have access to `_` (current input) and standard library modules. +* Test expressions: `PYTHONPATH=$PWD python -c "from agents_api.activities.task_steps.base_evaluate import validate_py_expression; print(validate_py_expression('$ your_expr_here'))"` +* Task validation handles raw task dictionaries and Pydantic models (after `task_to_spec` conversion). +* In `task_to_spec` converted tasks, `kind_` field denotes step type. Raw tasks use step type keys. +* For "if_else" steps, condition is in `if_` field (aliased as "if"). + +**Expression example**: +```python +# Simple expression example +"$_['customer']['total_orders'] > 5" # Checks if customer has more than 5 orders + +# More complex example with dict access and function calls +"$len([x for x in _['items'] if x['category'] == 'electronics']) > 0" +``` + +--- + +## 9. Ward testing framework + +* Use descriptive test names: `@test("Descriptive name of what is being tested")`. +* Activate virtual environment: `source .venv/bin/activate`. +* Ensure correct working directory (e.g., `src/agents-api/`) and `PYTHONPATH=$PWD` for script-based tests. +* Filter tests: `poe test --search "pattern_to_match"` (do NOT use `-p`). +* Limit failures for faster feedback: `poe test --fail-limit 1 --search "pattern_to_match"`. + +--- + +## 10. Directory-Specific AGENTS.md Files + +* **Always check for `AGENTS.md` files in specific directories** before working on code within them. These files contain targeted context. +* If a directory's `AGENTS.md` is outdated or incorrect, **update it**. +* If you make significant changes to a directory's structure, patterns, or critical implementation details, **document these in its `AGENTS.md`**. +* If a directory lacks a `AGENTS.md` but contains complex logic or patterns worth documenting for AI/humans, **suggest creating one**. + +--- + +## 11. Common pitfalls + +* Mixing pytest & ward syntax (ward uses `@test()` decorator, not pytest fixtures/classes). +* Forgetting to `source .venv/bin/activate`. +* Wrong current working directory (CWD) or `PYTHONPATH` for commands/tests (e.g., ensure you are in `agents-api/` not root for some `agents-api` tasks). +* Large AI refactors in a single commit (makes `git bisect` difficult). +* Delegating test/spec writing entirely to AI (can lead to false confidence). +* **Note about `src/`**: Only the `cli` component has a `src/` directory. For `src/agents-api`, code is directly in `agents_api/`. Follow the existing pattern for each component. + +--- + +## 12. Versioning conventions + +Components (e.g., `agents-api`, `julep-cli`, `integrations-service`) are versioned independently. Semantic Versioning (SemVer: `MAJOR.MINOR.PATCH`) is generally followed, as specified in each component's `pyproject.toml` file. + +* **MAJOR** version update: For incompatible API changes. +* **MINOR** version update: For adding functionality in a backward-compatible manner. +* **PATCH** version update: For backward-compatible bug fixes. + +--- + +## 13. Key File & Pattern References + +This section provides pointers to important files and common patterns within the codebase. + +* **API Route Definitions**: + * Location: `src/agents-api/agents_api/routers/` (e.g., `src/agents-api/agents_api/routers/sessions.py`) + * Pattern: FastAPI routers, Pydantic models for request/response, dependency injection. +* **Typed Exceptions**: + * Location: `src/agents-api/agents_api/common/exceptions/` + * Pattern: Custom exception classes inheriting from base exceptions. +* **Pydantic Models**: + * Location: Used extensively across services, often in `models.py` files within component directories (e.g., `agents_api/common/protocol/`), or directly in router/activity files. + * Pattern: Data validation, serialization, and settings management. +* **Temporal Workflows & Activities**: + * Location: `src/agents-api/agents_api/workflows/` (workflow definitions) and `src/agents-api/agents_api/activities/` (activity implementations). + * Pattern: Define complex, stateful operations using Temporal's primitives. +* **Database Queries & Models (Memory Store)**: + * Location: `src/agents-api/agents_api/queries/` (for SQL query builders/files) and `src/memory-store/` (for schema migrations). + * Pattern: Asyncpg for database interaction, often with helper functions for CRUD operations. + +--- + +## 14. Domain-Specific Terminology + +* **Agent**: An AI entity with specific instructions, tools, and capabilities, defined via API. Core model in `src/typespec/agents/models.tsp`. +* **Task**: A definition of a workflow composed of multiple steps that an agent can execute. Core model in `src/typespec/tasks/models.tsp`. +* **Tool**: A specific capability or integration an agent can use (e.g., web search, API call). Defined in `src/typespec/tools/`. +* **Session**: A container for a sequence of interactions (entries) with an agent, maintaining context. Core model in `src/typespec/sessions/models.tsp`. +* **Entry**: A single message or event within a session (e.g., user input, agent response). Core model in `src/typespec/entries/models.tsp`. +* **Execution**: The runtime instance and state of a task being performed by an agent. Core model in `src/typespec/executions/models.tsp`. +* **POE (PoeThePoet)**: The task runner used in this project for development tasks like formatting, linting, testing, and code generation (configured in `pyproject.toml`). +* **TypeSpec**: The language used to define API schemas. It is the source of truth for API models, which are then generated into Python Pydantic models in `autogen/` directories. +* **Ward**: The primary Python testing framework used for unit and integration tests in most components (e.g., `agents-api`, `cli`). +* **Temporal**: The distributed workflow engine used to orchestrate complex, long-running tasks and ensure their reliable execution. +* **AIDEV-NOTE/TODO/QUESTION**: Specially formatted comments to provide inline context or tasks for AI assistants and developers. + +--- + +## 15. Meta: Guidelines for updating AGENTS.md files + +### Elements that would be helpful to add: + +1. **Decision flowchart**: A simple decision tree for "when to use X vs Y" for key architectural choices would guide my recommendations. +2. **Reference links**: Links to key files or implementation examples that demonstrate best practices. +3. **Domain-specific terminology**: A small glossary of project-specific terms would help me understand domain language correctly. +4. **Versioning conventions**: How the project handles versioning, both for APIs and internal components. + +### Format preferences: + +1. **Consistent syntax highlighting**: Ensure all code blocks have proper language tags (`python`, `bash`, etc.). +2. **Hierarchical organization**: Consider using hierarchical numbering for subsections to make referencing easier. +3. **Tabular format for key facts**: The tables are very helpful - more structured data in tabular format would be valuable. +4. **Keywords or tags**: Adding semantic markers (like `#performance` or `#security`) to certain sections would help me quickly locate relevant guidance. + +[^1]: This principle emphasizes human oversight for critical aspects like architecture, testing, and domain-specific decisions, ensuring AI assists rather than fully dictates development. + +--- + +## 16. Files to NOT modify + +These files control which files should be ignored by AI tools and indexing systems: + +* @.agentignore : Specifies files that should be ignored by the Cursor IDE, including: + * Build and distribution directories + * Environment and configuration files + * Large data files (parquet, arrow, pickle, etc.) + * Generated documentation + * Package-manager files (lock files) + * Logs and cache directories + * IDE and editor files + * Compiled binaries and media files + +* @.agentindexignore : Controls which files are excluded from Cursor's indexing to improve performance, including: + * All files in `.agentignore` + * Files that may contain sensitive information + * Large JSON data files + * Generated TypeSpec outputs + * Memory-store migration files + * Docker templates and configuration files + +**Never modify these ignore files** without explicit permission, as they're carefully configured to optimize IDE performance while ensuring all relevant code is properly indexed. + +**When adding new files or directories**, check these ignore patterns to ensure your files will be properly included in the IDE's indexing and AI assistance features. + +--- + +## AI Assistant Workflow: Step-by-Step Methodology + +When responding to user instructions, the AI assistant (Claude, Cursor, GPT, etc.) should follow this process to ensure clarity, correctness, and maintainability: + +1. **Consult Relevant Guidance**: When the user gives an instruction, consult the relevant instructions from `AGENTS.md` files (both root and directory-specific) for the request. +2. **Clarify Ambiguities**: Based on what you could gather, see if there's any need for clarifications. If so, ask the user targeted questions before proceeding. +3. **Break Down & Plan**: Break down the task at hand and chalk out a rough plan for carrying it out, referencing project conventions and best practices. +4. **Trivial Tasks**: If the plan/request is trivial, go ahead and get started immediately. +5. **Non-Trivial Tasks**: Otherwise, present the plan to the user for review and iterate based on their feedback. +6. **Track Progress**: Use a to-do list (internally, or optionally in a `TODOS.md` file) to keep track of your progress on multi-step or complex tasks. +7. **If Stuck, Re-plan**: If you get stuck or blocked, return to step 3 to re-evaluate and adjust your plan. +8. **Update Documentation**: Once the user's request is fulfilled, update relevant anchor comments (`AIDEV-NOTE`, etc.) and `AGENTS.md` files in the files and directories you touched. +9. **User Review**: After completing the task, ask the user to review what you've done, and repeat the process as needed. +10. **Session Boundaries**: If the user's request isn't directly related to the current context and can be safely started in a fresh session, suggest starting from scratch to avoid context confusion. diff --git a/CHANGELOG.md b/CHANGELOG.md index edc85e07a..f26bf4854 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,12 +30,56 @@ -# **Julep AI Changelog for 11 Apri 2025** ✨ +# **Julep AI Changelog for 21 May 2025** ✨ + + + +- **Major Feature**: Introduced first-class **Projects**! + Adds `projects` table, association tables, CRUD endpoints, canonical-name support, and project-aware validation across agents, users, files, and sessions +- **Major Feature**: Landed encrypted **Secrets Vault** with full CRUD API, master-key encryption, and transparent secret-reference substitution in tool & API definitions ([#1312](https://github.com/julep-ai/julep/pull/1312)) + + + +- **Enhancement**: Added **custom-key aliasing** for secrets plus numerous workflow & cost-tracking refactors ([#1356](https://github.com/julep-ai/julep/pull/1356)) +- **Enhancement**: Added `decrypt` flag to secrets queries—retrieve values encrypted or in plaintext as needed ([#1369](https://github.com/julep-ai/julep/pull/1369)) + + + +- **Enhancement**: Implemented **monthly cost aggregation** + middleware that enforces free-tier usage caps and active-developer checks ([#1351](https://github.com/julep-ai/julep/pull/1351)) + + + +- **Fix**: Re-wrote project-resource SQL views for accurate mapping and removed weak default secrets key in production ([#1362](https://github.com/julep-ai/julep/pull/1362)) +- **Fix**: Hardened secrets endpoints & models, fixed insert/delete logic, and expanded expression-evaluator edge-cases ([#1343](https://github.com/julep-ai/julep/pull/1343)) + + + +- **Enhancement**: New GitHub Actions workflow automatically translates README files via Anthropic Claude, replacing the old Python job ([#1433](https://github.com/julep-ai/julep/pull/1433)) + +- **Other Breaking**: Removed fallback for `DEMO_*` placeholder credentials 💥 +- **Minor Docs**: Updated docs and cookbooks to remove `DEMO_API_KEY` references. +- **Minor Docs**: Updated footer use-case links to the new `cookbooks/advanced` paths. + +> _This list covers the most significant code-related PRs merged to **main** on 21 May 2025. +> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-04-21)._ + +# **Julep AI Changelog for 15 May 2025** ✨ + +- **Minor Feature**: Updated `julep run` to execute tasks via the API with clearer error reporting ✨ +- **Minor Docs**: Added examples for task execution and error handling in CLI docs 📚 + +# **Julep AI Changelog for 9 May 2025** ✨ + +- **Minor Docs**: Added links to cookbooks for Quick, Community, and Industry pages. +- **Minor Docs**: Updated cookbook links to use absolute GitHub URLs. + +# **Julep AI Changelog for 11 April 2025** ✨ - **Major Feature**: Introduced support for Gemini models in `litellm-config.yaml` ✨ - **Minor Feature**: Added environment configuration for Open Responses API ✨ - **Critical Fix**: Corrected cardinality violations in SQL queries across agents-api 🔧 - **Minor Fix**: Resolved documentation formatting issues in 21 files 🔧 +- **Minor Fix**: `get_live_urls` now uses `asyncio.to_thread` to avoid blocking the event loop 🔧 - **Major Enhancement**: Refactored API calls to include developer ID for better tracking 📈 - **Minor Enhancement**: Improved Gunicorn worker configurability via environment variables 📈 - **Secondary Performance**: Integrated OpenAPI model and TyeSpecs for expanded functionality 🚀 diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index cc547504f..000000000 --- a/CLAUDE.md +++ /dev/null @@ -1,98 +0,0 @@ -# Julep Development Guidelines - -## Build & Test Commands -- **Format code**: `poe format` (runs `ruff format`) -- **Lint code**: `poe lint` (runs `ruff check`) -- **Type checking**: `poe typecheck` (runs `pytype --config pytype.toml` or `pyright` for CLI) -- **Test**: `poe test` (runs `ward test --exclude .venv` or `pytest` for integrations-service) -- **Single test**: `poe test --search "pattern"` (e.g., `poe test --search "test_session_routes"`) -- **Quick test file**: `PYTHONPATH=$PWD python tests/test_file.py` (for simple tests) -- **Run all checks**: `poe check` (runs lint, format, typecheck, SQL validation) -- **Generate API code**: `poe codegen` - -Note: Always prefer using `poe` commands over direct tool invocation when available. The project uses poethepoet (poe) as a task runner to ensure consistent environment and configuration. - -## Code Style -- **Python**: 3.12+ (fastAPI, async/await preferred) -- **Line length**: 96 characters -- **Indentation**: 4 spaces -- **Quotes**: Double quotes -- **Imports**: Use ruff's import organization (isort compatible) -- **Types**: Use strict typing (Pydantic models preferred) -- **Naming**: snake_case for functions/variables, PascalCase for classes -- **Error handling**: Use typed exceptions, context managers for resources -- **Documentation**: Docstrings for public functions/classes -- **Testing**: Separate test files matching source file patterns - -## Project Structure -See `CONTRIBUTING.md` for details on architecture and component relationships. - -## Core System Components -- **agents-api**: Main service implementing agent and task functionality -- **memory-store**: PostgreSQL database with TimescaleDB for persistent storage -- **blob-store**: Object storage for files and binary data -- **scheduler**: Temporal workflow engine for execution orchestration -- **integrations-service**: External service integrations (browsers, APIs, etc.) -- **gateway**: API gateway for routing and request handling -- **llm-proxy**: LLM service proxy using litellm -- **monitoring**: Monitoring infrastructure with Prometheus and Grafana -- **typespec**: API specifications in TypeSpec format -- **sdks**: Client SDKs for Node.js and Python - -## Directory-Specific Documentation -When working in specific directories, **ALWAYS check for CLAUDE.md files first**. These files contain detailed notes on architecture, patterns, and implementation details specific to that directory. They are designed to be LLM-friendly and provide essential context for understanding and making changes to the code. - -- **agents-api/CLAUDE.md**: Service-level overview for Agents API -- **agents-api/agents_api/activities/CLAUDE.md**: Temporal activities for task execution -- **agents-api/agents_api/autogen/CLAUDE.md**: Auto-generated TypeSpec API models -- **agents-api/agents_api/clients/CLAUDE.md**: External service client implementations -- **agents-api/agents_api/common/CLAUDE.md**: Shared utilities and protocol definitions -- **agents-api/agents_api/queries/CLAUDE.md**: Database query implementations -- **agents-api/agents_api/routers/CLAUDE.md**: API endpoint handlers -- **agents-api/agents_api/worker/CLAUDE.md**: Temporal worker configuration -- **agents-api/agents_api/workflows/CLAUDE.md**: Workflow definitions and helpers -- **memory-store/CLAUDE.md**: Database schemas and data storage architecture -- **integrations-service/CLAUDE.md**: External integrations architecture and patterns -- **cli/CLAUDE.md**: CLI architecture, workflows, and command structure -- **typespec/CLAUDE.md**: API specifications and TypeSpec architecture - -### Important Instructions for Working with CLAUDE.md Files -1. **ALWAYS read the directory's CLAUDE.md file first** before analyzing or modifying code in that directory. -2. If you notice that information in a CLAUDE.md file is outdated, incorrect, or missing relative to the actual code, **update the CLAUDE.md file** to match the current state of the directory. -3. If you make significant changes to a directory's structure, patterns, or important implementation details, **document these changes in the corresponding CLAUDE.md file**. -4. If a directory doesn't have a CLAUDE.md file but you gather substantial information about its architecture and patterns, **suggest creating a new CLAUDE.md file** for that directory. - -This approach ensures that documentation remains current and useful for future development and analysis tasks. - -## Important Developer Notes - -### Modifying API models -- To modify auto-generated API models (in autogen/[A-Z]*.py files), always edit the corresponding TypeSpec files in `typespec/` directory -- After modifying TypeSpec files, regenerate code with `bash scripts/generate_openapi_code.sh` from the root directory -- Never modify the autogen files directly, as they will be overwritten during code generation - -### Working with Python expressions in tasks -- Python expressions in tasks are evaluated using `simpleeval` in a sandbox environment -- Use `validate_py_expression()` from `base_evaluate.py` to statically check expressions -- Expression validation checks syntax, undefined names, unsafe operations, and runtime errors -- All expressions should have access to `_` (current input) and stdlib modules -- Testing expressions: `PYTHONPATH=$PWD python -c "from agents_api.activities.task_steps.base_evaluate import validate_py_expression; print(validate_py_expression('$ your_expr_here'))"` -- Task validation handles both raw task dictionaries and Pydantic models (after task_to_spec conversion) -- When a task is converted through task_to_spec, step types can change (e.g., "if" becomes "if_else" with alias) -- The `validate_task_expressions` function needs to check for both `kind_` field (in converted tasks) and for step type keys (in raw tasks) -- For "if_else" steps, the condition is in the `if_` field (with alias "if") to avoid Python keyword conflicts - -### Ward Testing Framework -- Use descriptive Ward test names: `@test("What the test is verifying")` -- When testing specific patterns: `poe test --search "pattern_to_match"` (NOT `-p` which isn't supported in Ward) -- Limit failures for faster feedback: `poe test --fail-limit 1 --search "pattern_to_match"` -- For quick Python script tests, use `PYTHONPATH=$PWD python tests/test_file.py` -- The environment needs to be activated: `source .venv/bin/activate` -- Path issues: Make sure you're in the right directory (agents-api/, not julep/) - -### Common Mistakes to Avoid -- Mixing pytest and ward syntax: Ward uses `@test()` decorator, not pytest fixtures/classes -- Forgetting to activate venv: Always run `source .venv/bin/activate` first -- PYTHONPATH issues: Use `PYTHONPATH=$PWD` for script-based tests -- Running from wrong directory: Make sure to cd into agents-api/ not the parent julep/ -- Insufficient error inspection: Use simple script-based tests to isolate validation issues \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/README.md b/README.md index 7e0ee3185..d6b1894a8 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,28 @@ -
[English](README.md) | [中文翻译](./.github/README-CN.md) | [日本語翻訳](./.github/README-JA.md) | [French](./.github/README-FR.md)
+
+ + [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | + [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | + [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | + [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | + [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | + [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | + [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | + [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh) +
-
-julep + +
+ +``` + ██╗ ██╗ ██╗ ██╗ ███████╗ ██████╗ █████╗ ██╗ + ██║ ██║ ██║ ██║ ██╔════╝ ██╔══██╗ ██╔══██╗ ██║ + ██║ ██║ ██║ ██║ █████╗ ██████╔╝ ███████║ ██║ + ██ ██║ ██║ ██║ ██║ ██╔══╝ ██╔═══╝ ██╔══██║ ██║ + ╚█████╔╝ ╚██████╔╝ ███████╗ ███████╗ ██║ ██║ ██║ ██║ + ╚════╝ ╚═════╝ ╚══════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ +```
-

- - Get API Key - -   - - Documentation - -

NPM Version   @@ -23,625 +33,105 @@ GitHub License

-

- Discord +

+ · - 𝕏 + · - LinkedIn -

-
- -
-

Serverless AI Workflows for Data & ML Teams

-
- -## 🎉 Announcing: Julep Open Responses API (Alpha) - -
- -We're excited to announce the launch of our Open Responses API! This new API offers: - -1. **OpenAI-compatible interface** - A drop-in replacement for your existing code -2. **Self-hosted, open-source implementation** - Works with any LLM backend -3. **Model Provider Agnostic** - Connect to any LLM provider (OpenAI, Anthropic, etc.) + -The Open Responses API makes it easy to integrate with your existing applications while adding powerful new capabilities. - -Ready to try it out? Check out our [Open Responses API documentation](https://docs.julep.ai/responses/quickstart) to get started! +
-Julep is a serverless platform that helps data and ML teams build sophisticated AI workflows. It provides a robust foundation for orchestrating complex AI operations, managing state across interactions, and integrating with your existing data infrastructure and tools. - -Whether you're building data pipelines or creating AI workflows, Julep makes it easy to compose and scale LLM-powered workflows without managing infrastructure. Imagine you want to build an AI agent that can do more than just answer simple questions—it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs. That's where Julep comes in. Our platform handles the heavy lifting so you can focus on building intelligent solutions for your business. - -💡 To learn more about Julep, check out the **[Documentation](https://docs.julep.ai/docs/introduction/overview)**. +**Try Julep Today:** Visit the **[Julep Website](https://julep.ai)** · Get started on the **[Julep Dashboard](https://dashboard.julep.ai)** (free API key) · Read the **[Documentation](https://docs.julep.ai/introduction/julep)**

📖 Table of Contents

-- [✨ Key Features](#-key-features) -- [🧠 Mental Model](#-mental-model) -- [📦 Installation](#-installation) - - [🛠️ Julep SDKs](#-julep-sdks) - - [🛠️ Julep CLI](#-julep-cli) -- [🚀 Quick Start](#-quick-start) - - [What's Next?](#whats-next) -- [🔍 Reference](#-reference) - - [📚 SDK Reference](#-sdk-reference) - - [🛠️ API Reference](#-api-reference) -- [💻 Local Setup](#-local-setup) - - [1. Clone the Repository](#1-clone-the-repository) - - [2. Navigate to the Root Directory](#2-navigate-to-the-root-directory) - - [3. Set Up Environment Variables](#3-set-up-environment-variables) - - [4. Create a Docker Volume for Backup](#4-create-a-docker-volume-for-backup) - - [5. Run the Project using Docker Compose](#5-run-the-project-using-docker-compose) - - [6. Interaction](#6-interaction) - - [7. Troubleshooting](#7-troubleshooting) -- [👥 Contributors](#-contributors) - - [Join Our Community! 🌟](#join-our-community-) -- [📄 License](#-license) +- [Why Julep?](#why-julep) +- [Getting Started](#getting-started) +- [Documentation and Examples](#documentation-and-examples) +- [Community and Contributions](#community-and-contributions) +- [License](#license) ---- - -## ✨ Key Features - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
🧠Smart MemoryAgents that remember context and learn from past interactions
🔄Workflow EngineBuild complex, multi-step processes with branching and loops
Parallel ProcessingRun multiple operations simultaneously for maximum efficiency
🛠️Tool IntegrationSeamlessly connect with external APIs and services
🔌Easy SetupGet started quickly with Python and Node.js SDKs
🔒Reliable & SecureBuilt-in error handling, retries, and security features
📊MonitoringTrack task progress and performance in real-time
-
- -💡 To learn more about Julep, check out the **[Documentation](https://docs.julep.ai/docs/introduction/overview)**. ---- - -## 🧠 Mental Model - -

-Julep is made up of the following components: - -- **Julep Platform**: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform. -- **Julep SDKs**: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way. -- **Julep CLI**: The Julep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal. -- **Julep API**: The Julep API is a RESTful API that you can use to interact with the Julep platform. -

- -
- -
-

-Think of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here's how to visualize it: -1. **Your Application Code:** +## Why Julep? - - You can use the Julep SDK in your application to define agents, tasks, and workflows. - - The SDK provides functions and classes that make it easy to set up and manage these components. - - You can use the Julep CLI to interact with the Julep platform directly from your terminal. +Julep is an open-source platform for building **agent-based AI workflows** that go far beyond simple chains of prompts. It lets you orchestrate complex, multi-step processes with Large Language Models (LLMs) and tools **without managing any infrastructure**. With Julep, you can create AI agents that **remember past interactions** and handle sophisticated tasks with branching logic, loops, parallel execution, and integration of external APIs. In short, Julep acts like a *“Firebase for AI agents,”* providing a robust backend for intelligent workflows at scale. -2. **Julep Backend Service:** +**Key Features and Benefits:** - - The SDK communicates with the Julep backend over the network. - - The CLI communicates with the Julep backend via the SDK. - - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows. +* **Persistent Memory:** Build AI agents that maintain context and long-term memory across conversations, so they can learn and improve over time. +* **Modular Workflows:** Define complex tasks as modular steps (in YAML or code) with conditional logic, loops, and error handling. Julep’s workflow engine manages multi-step processes and decisions automatically. +* **Tool Orchestration:** Easily integrate external tools and APIs (web search, databases, third-party services, etc.) as part of your agent’s toolkit. Julep’s agents can invoke these tools to augment their capabilities, enabling Retrieval-Augmented Generation and more. +* **Parallel & Scalable:** Run multiple operations in parallel for efficiency, and let Julep handle scaling and concurrency under the hood. The platform is serverless, so it seamlessly scales workflows without extra devops overhead. +* **Reliable Execution:** Don’t worry about glitches – Julep provides built-in retries, self-healing steps, and robust error handling to keep long-running tasks on track. You also get real-time monitoring and logging to track progress. +* **Easy Integration:** Get started quickly with our SDKs for **Python** and **Node.js**, or use the Julep CLI for scripting. Julep’s REST API is available if you want to integrate directly into other systems. -3. **Integration with Tools and APIs:** - - Within your workflows, you can integrate external tools and services. - - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs. -

+ ---- - -## 📦 Installation - -
-

🛠️ Julep SDKs

- - To get started with Julep, install it using [npm](https://www.npmjs.com/package/@julep/sdk) or [pip](https://pypi.org/project/julep/): - -

Node.js

- - ```bash - npm install @julep/sdk - - # or - - bun add @julep/sdk - ``` - -

Python

- - ```bash - pip install julep - ``` - - > [!NOTE] - > 🔑 Get your API key [here](https://dashboard.julep.ai). - > - > Reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get to know more about Julep. -
+*Focus on your AI logic and creativity, while Julep takes care of the heavy lifting!* -### 🛠️ Julep CLI -

-Julep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal. It provides a convenient way to manage your AI workflows, tasks, and agents without needing to write code. -

-```bash -pip install julep-cli -``` - -For more details, check out the **[Julep CLI Documentation](https://docs.julep.ai/docs/julepcli/introduction)**. - -> [!NOTE] -> The CLI is currently in beta and available for Python only. Node.js support coming soon! - ---- - -## 🚀 Quick Start - -

- -Imagine a Research AI agent that can do the following: - -1. **Take a topic**, -2. **Come up with 30 search queries** for that topic, -3. Perform those web **searches in parallel**, -4. **Summarize** the results, -5. Send the **summary to Discord**. - -

- -> [!NOTE] -> In Julep, this would be a single task under 80 lines of code and run fully managed all on its own. All of the steps are executed on Julep's own servers and you don't need to lift a finger. - -Here's a complete example of a task definition: - -```yaml -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json -name: Research Agent -description: A research assistant that can search the web and send the summary to Discord -######################################################## -####################### INPUT ########################## -######################################################## - -# Define the input schema for the task -input_schema: - type: object - properties: - topic: - type: string - description: The main topic to research - num_questions: - type: integer - description: The number of search queries to generate - -######################################################## -####################### TOOLS ########################## -######################################################## - -# Define the tools that the agent can use -tools: - - name: web_search - type: integration - integration: - provider: brave - setup: - api_key: "" - - - name: discord_webhook - type: api_call - api_call: - url: https://discord.com/api/webhooks// - method: POST - headers: - Content-Type: application/json - -######################################################## -####################### MAIN WORKFLOW ################# -######################################################## - -# Special variables: -# - steps[index].input: for accessing the input to the step at that index -# - steps[index].output: for accessing the output of the step at that index -# - _: for accessing the output of the previous step - -# Define the main workflow -main: -# Step 0: Generate search queries -- prompt: - - role: system - content: >- - $ f""" - You are a research assistant. - Generate {{steps[0].input.num_questions|default(30, true)}} diverse search queries related to the topic: - {steps[0].input.topic} - - Write one query per line. - """ - unwrap: true - -# Step 1: Evaluate the search queries using a simple python expression -- evaluate: - search_queries: $ _.split(NEWLINE) - -# Step 2: Run the web search in parallel for each query -- over: $ _.search_queries - map: - tool: web_search - arguments: - query: $ _ - parallelism: 5 - -# Step 3: Collect the results from the web search -- evaluate: - search_results: $ _ - -# Step 4: Summarize the results -- prompt: - - role: system - content: > - $ f""" - You are a research summarizer. Create a comprehensive summary of the following research results on the topic {steps[0].input.topic}. - The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point. - The length of the summary should be less than 150 words. - Here are the search results: - {_.search_results} - """ - unwrap: true - settings: - model: gpt-4o-mini - -# Step 5: Send the summary to Discord -- evaluate: - discord_message: |- - $ f''' - **Research Summary for {steps[0].input.topic}** - {_} - ''' - -# Step 6: Send the summary to Discord -- tool: discord_webhook - arguments: - json_: - content: $ _.discord_message[:2000] # Discord has a 2000 character limit -``` - -Here you can execute the above workflow using the Julep SDK: - -
-Python (Click to expand) - -```python -from julep import Client -import yaml -import time - -# Initialize the client -client = Client(api_key=JULEP_API_KEY) - -# Create the agent -agent = client.agents.create( - name="Julep Browser Use Agent", - description="A Julep agent that can use the computer tool to interact with the browser.", -) - -# Load the task definition -with open('./research_agent.yaml', 'r') as file: - task_definition = yaml.safe_load(file) - -# Create the task -task = client.tasks.create( - agent_id=agent.id, - **task_definition -) - -# Create the execution -execution = client.executions.create( - task_id=task.id, - input={ - "topic": "artificial intelligence", - "num_questions": 30 - } -) - -# Wait for the execution to complete -while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']: - print(result.status) - time.sleep(1) - -# Print the result -if result.status == "succeeded": - print(result.output) -else: - print(f"Error: {result.error}") - -``` -
- -
-
-Node.js (Click to expand) - -```js -import { Julep } from '@julep/sdk'; -import yaml from 'yaml'; -import fs from 'fs'; - -// Initialize the client -const client = new Julep({ - apiKey: 'your_julep_api_key' -}); - -// Create the agent -const agent = await client.agents.create({ - name: "Julep Browser Use Agent", - description: "A Julep agent that can use the computer tool to interact with the browser.", -}); - -// Parse the task definition -const taskDefinition = yaml.parse(fs.readFileSync('./research_agent.yaml', 'utf8')); - -// Create the task -const task = await client.tasks.create( - agent.id, - taskDefinition -); - -// Create the execution -const execution = await client.executions.create( - task.id, - { - input: { - "topic": "artificial intelligence", - "num_questions": 30 - } - } -); - -// Wait for the execution to complete -let result; -while (true) { - result = await client.executions.get(execution.id); - if (result.status === 'succeeded' || result.status === 'failed') break; - console.log(result.status); - await new Promise(resolve => setTimeout(resolve, 1000)); -} - -// Print the result -if (result.status === 'succeeded') { - console.log(result.output); -} else { - console.error(`Error: ${result.error}`); -} -``` -
-
- -In this example, Julep will automatically manage parallel executions, retry failed steps, resend API requests, and keep the tasks running reliably until completion. - -> This runs in under 30 seconds and returns the following output: - -

- -

-Research Summary for AI (Click to expand) - -> **Research Summary for AI** -> -> ### Summary of Research Results on Artificial Intelligence (AI) -> -> #### Introduction -> -> The field of Artificial Intelligence (AI) has seen significant advancements in recent years, marked by the development of methods and technologies that enable machines to perceive their environment, learn from data, and make decisions. The primary focus of this summary is on the insights derived from various research findings related to AI. -> -> #### Key Findings -> -> 1. **Definition and Scope of AI**: -> -> - AI is defined as a branch of computer science focused on creating systems that can perform tasks requiring human-like intelligence, including learning, reasoning, and problem-solving (Wikipedia). -> - It encompasses various subfields, including machine learning, natural language processing, robotics, and computer vision. -> -> 2. **Impact and Applications**: -> -> - AI technologies are being integrated into numerous sectors, improving efficiency and productivity. Applications range from autonomous vehicles and healthcare diagnostics to customer service automation and financial forecasting (OpenAI). -> - Google's commitment to making AI beneficial for everyone highlights its potential to significantly improve daily life by enhancing user experiences across various platforms (Google AI). -> -> 3. **Ethical Considerations**: -> -> - There is an ongoing discourse regarding the ethical implications of AI, including concerns about privacy, bias, and accountability in decision-making processes. The need for a framework that ensures the safe and responsible use of AI technologies is emphasized (OpenAI). -> -> 4. **Learning Mechanisms**: -> -> - AI systems utilize different learning mechanisms, such as supervised learning, unsupervised learning, and reinforcement learning. These methods allow AI to improve performance over time by learning from past experiences and data (Wikipedia). -> - The distinction between supervised and unsupervised learning is critical; supervised learning relies on labeled data, while unsupervised learning identifies patterns without predefined labels (Unsupervised). -> -> 5. **Future Directions**: -> - Future AI developments are expected to focus on enhancing the interpretability and transparency of AI systems, ensuring that they can provide justifiable decisions and actions (OpenAI). -> - There is also a push towards making AI systems more accessible and user-friendly, encouraging broader adoption across different demographics and industries (Google AI). -> -> #### Conclusion -> -> AI represents a transformative force across multiple domains, promising to reshape industries and improve quality of life. However, as its capabilities expand, it is crucial to address the ethical and societal implications that arise. Continued research and collaboration among technologists, ethicists, and policymakers will be essential in navigating the future landscape of AI. - -
- -### What's Next? - -- 📚 Explore more examples in our [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks) -- 🔧 Learn about [Tool Integration](https://docs.julep.ai/docs/tools/overview) -- 🧠 Understand [Agent Memory](https://docs.julep.ai/docs/agents/memory) -- 🔄 Dive into [Complex Workflows](https://docs.julep.ai/docs/tasks/workflows) - -> [!TIP] -> 💡 Checkout more tutorials in the [Tutorials](https://docs.julep.ai/docs/tutorials/) section of the documentation. -> -> 💡 If you are a beginner, we recommend starting with the [Quickstart Guide](https://docs.julep.ai/docs/introduction/quickstart). -> -> 💡 If you are looking for more ideas, check out the [Ideas](https://github.com/julep-ai/julep/blob/dev/cookbooks/IDEAS.md) section of the repository. -> -> 💡 If you more into cookbook style recipes, check out the [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks) section of the repository. ---- - -## 🔍 Reference - -### 📚 SDK Reference - -- **Node.js** [SDK Reference](https://github.com/julep-ai/node-sdk/blob/main/api.md) | [NPM Package](https://www.npmjs.com/package/@julep/sdk) -- **Python** [SDK Reference](https://github.com/julep-ai/python-sdk/blob/main/api.md) | [PyPI Package](https://pypi.org/project/julep/) - -### 🛠️ API Reference - -Explore our API documentation to learn more about agents, tasks, tools, and the Julep CLI here: [API Reference](https://docs.julep.ai/api-reference/) - ---- - -## 💻 Local Setup - -### 1. Clone the Repository - -Clone the repository from your preferred source: - -```bash -git clone -``` - -### 2. Navigate to the Root Directory - -Change to the root directory of the project: - -```bash -cd -``` - -### 3. Set Up Environment Variables - -- Create a `.env` file in the root directory. -- Refer to the `.env.example` file for a list of required variables. -- Ensure that all necessary variables are set in the `.env` file. - -### 4. Create a Docker Volume for Backup - -Create a Docker volume named `grafana_data`, `memory_store_data`, `temporal-db-data`, `prometheus_data`, `seaweedfs_data`: - -```bash -docker volume create grafana_data -docker volume create memory_store_data -docker volume create temporal-db-data -docker volume create prometheus_data -docker volume create seaweedfs_data -``` - -### 5. Run the Project using Docker Compose - -You can run the project in two different modes: **Single Tenant** or **Multi-Tenant**. Choose one of the following commands based on your requirement: - -1. Single-Tenant Mode - -Run the project in single-tenant mode: - -```bash -docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch -``` - -> **Note:** In single-tenant mode, you can interact with the SDK directly without the need for the API KEY. - -2. Multi-Tenant Mode - -Run the project in multi-tenant mode: - -```bash -docker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --force-recreate --build --watch -``` - -> **Note:** In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK. - -Generate a JWT Token (Only for Multi-Tenant Mode) - -To generate a JWT token, `jwt-cli` is required. Kindly install the same before proceeding with the next steps. +## Getting Started +

+ + Get API Key + +   + + Documentation + +

+Getting up and running with Julep is simple: -Use the following command and replace `JWT_SHARED_KEY` with the corresponding key from your `.env` file to generate a JWT token: +1. **Sign Up & API Key:** First, sign up on the [Julep Dashboard](https://dashboard.julep.ai) to obtain your API key (needed for authenticating your SDK calls). +2. **Install the SDK:** Install the Julep SDK for your preferred language: -```bash -jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -d '+10 days' +%s) --sub '00000000-0000-0000-0000-000000000000' '{}' -``` + * **Python:** `pip install julep` + * **Node.js:** `npm install @julep/sdk` (or `yarn add @julep/sdk`) +3. **Define Your Agent:** Use the SDK or YAML to define an agent and its task workflow. For example, you can specify the agent’s memory, tools it can use, and a step-by-step task logic. (See the **[Quick Start](https://docs.julep.ai/introduction/quick-start)** in our docs for a detailed walkthrough.) +4. **Run a Workflow:** Invoke your agent through the SDK to execute the task. The Julep platform will orchestrate the entire workflow in the cloud and manage the state, tool calls, and LLM interactions for you. You can check the agent’s output, monitor the execution on the dashboard, and iterate as needed. -This command generates a JWT token that will be valid for 10 days. +That’s it! Your first AI agent can be up and running in minutes. For a complete tutorial, check out the **[Quick Start Guide](https://docs.julep.ai/introduction/quick-start)** in the documentation. -### 6. Interaction +> **Note:** Julep also offers a command-line interface (CLI) (currently in beta for Python) to manage workflows and agents. If you prefer a no-code approach or want to script common tasks, see the [Julep CLI docs](https://docs.julep.ai/responses/quickstart#cli-installation) for details. -- **Temporal UI**: You can access the Temporal UI through the specified port in your `.env` file. -- **Julep SDK**: The Julep SDK is a Python/Node.js library that allows you to interact with the Julep API. -```python -from julep import Client -client = Client(api_key="your_jwt_token") -``` +## Documentation and Examples -**Note:** SDK in Multi-Tenant mode, you need to generate a JWT token locally that acts as an API KEY to interact with the SDK. Furthermore, while initializing the client you will need to set the environment to `local_multi_tenant` and the api key to the JWT token you generated in the previous step. Whereas in Single-Tenant mode you can interact with the SDK directly without the need for the API KEY and set the environment to `local`. -### 7. Troubleshooting +Looking to dive deeper? The **[Julep Documentation](https://docs.julep.ai)** covers everything you need to master the platform – from core concepts (Agents, Tasks, Sessions, Tools) to advanced topics like agent memory management and architecture internals. Key resources include: -- Ensure that all required Docker images are available. -- Check for missing environment variables in the `.env` file. -- Use the `docker compose logs` command to view detailed logs for debugging. +* **[Concept Guides](https://docs.julep.ai/concepts/):** Learn about Julep’s architecture, how sessions and memory work, using tools, managing long conversations, and more. +* **[API & SDK Reference](https://docs.julep.ai/api-reference/):** Find detailed reference for all SDK methods and REST API endpoints to integrate Julep into your applications. +* **[Tutorials](https://docs.julep.ai/tutorials/):** Step-by-step guides for building real applications (e.g. a research agent that searches the web, a trip-planning assistant, or a chatbot with custom knowledge). +* **[Cookbook Recipes](https://github.com/julep-ai/julep/tree/dev/cookbooks):** Explore the **Julep Cookbook** for ready-made example workflows and agents. These recipes demonstrate common patterns and use cases – a great way to learn by example. *Browse the [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) directory in this repository for sample agent definitions.* +* **[IDE Integration](https://context7.com/julep-ai/julep):** Access Julep documentation directly in your IDE! Perfect for getting instant answers while coding. ---- -## 👥 Contributors -

Join Our Community! 🌟

+## Community and Contributions -We're excited to welcome new contributors to the Julep project! We've created several "good first issues" to help you get started. +Join our growing community of developers and AI enthusiasts! Here are some ways to get involved and get support: -

How to Contribute:

+* **Discord Community:** Have questions or ideas? Join the conversation on our [official Discord server](https://discord.gg/7H5peSN9QP) to chat with the Julep team and other users. We’re happy to help with troubleshooting or brainstorm new use cases. +* **GitHub Discussions and Issues:** Feel free to use GitHub for reporting bugs, requesting features, or discussing implementation details. Check out the [**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) if you’d like to contribute – we welcome contributions of all kinds. +* **Contributing:** If you want to contribute code or improvements, please see our [Contributing Guide](.github/CONTRIBUTING.md) for how to get started. We appreciate all PRs and feedback. By collaborating, we can make Julep even better! -1. 📖 Check out our [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) file for guidelines -2. 🔍 Browse our [good first issues](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) -3. 💬 Join our [Discord](https://discord.com/invite/JTSBGRZrzj) for help and discussions +*Pro tip: Star our repo to stay updated – we’re constantly adding new features and examples.*
-Your contributions, big or small, are valuable to us. Let's build something amazing together! 🚀 +Your contributions, big or small, are valuable to us. Let's build something amazing together! +

Our Amazing Contributors:

@@ -649,12 +139,8 @@ Your contributions, big or small, are valuable to us. Let's build something amaz ---- - -## 📄 License - -Julep is licensed under the [Apache License 2.0](LICENSE). +
-See the LICENSE file for more details. +## License ---- +Julep is offered under the **Apache 2.0 License**, which means it’s free to use in your own projects. See the [LICENSE](.github/LICENSE) file for details. Enjoy building with Julep! diff --git a/agents-api/CLAUDE.md b/agents-api/CLAUDE.md deleted file mode 100644 index 5577b7046..000000000 --- a/agents-api/CLAUDE.md +++ /dev/null @@ -1,41 +0,0 @@ -# Julep Agents API - -## Service Overview -- FastAPI-based service for orchestrating agent workflows -- Handles tasks, executions, sessions, and tools -- Temporal-based workflow engine for task execution -- PostgreSQL for data storage -- S3 for remote object storage - -## Architecture -- REST API (defined in routers/) -- Database queries (queries/) -- Workflow definitions (workflows/) -- Task activities (activities/) -- Background worker processing (worker/) -- Common utilities and protocol definitions (common/) - -## Key Concepts -- Tasks: Workflow specifications with steps and tools -- Executions: Running instances of tasks -- Sessions: User interaction contexts -- Agents: LLM-based interfaces for users -- Tools: Integrations and capabilities usable by agents - -## Runtime Flow -- User defines tasks with step definitions -- Task execution creates workflow in Temporal -- Activities run individual steps (prompt, tool calls, etc.) -- Transitions track execution state -- Results stored in database, retrievable via API - -## Expression Evaluation -- Task steps use Python expressions for logic/data flow -- Expressions prefixed with '$' executed in sandbox -- Backward compatibility: '{{variable}}' → '${variable}' -- Input context: '_' holds current input, 'inputs' and 'outputs' for history - -## Validation -- Expression validation checks syntax, undefined names, unsafe operations -- Task validation checks all expressions in workflow steps -- Security: Sandbox with limited function/module access \ No newline at end of file diff --git a/agents-api/agents_api/activities/task_steps/pg_query_step.py b/agents-api/agents_api/activities/task_steps/pg_query_step.py deleted file mode 100644 index a681e05d4..000000000 --- a/agents-api/agents_api/activities/task_steps/pg_query_step.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import Any - -from beartype import beartype -from temporalio import activity - -from ... import queries -from ...app import app -from ...env import pg_dsn - - -@activity.defn -@beartype -async def pg_query_step( - query_name: str, - values: dict[str, Any], - dsn: str = pg_dsn, -) -> Any: - (module_name, name) = query_name.split(".") - - module = getattr(queries, module_name) - query = getattr(module, name) - return await query(**values, connection_pool=app.state.postgres_pool) diff --git a/agents-api/agents_api/queries/agents/create_agent.py b/agents-api/agents_api/queries/agents/create_agent.py deleted file mode 100644 index a7b4e49f1..000000000 --- a/agents-api/agents_api/queries/agents/create_agent.py +++ /dev/null @@ -1,102 +0,0 @@ -""" -This module contains the functionality for creating agents in the PostgreSQL database. -It includes functions to construct and execute SQL queries for inserting new agent records. -""" - -from uuid import UUID - -from beartype import beartype -from uuid_extensions import uuid7 - -from ...autogen.openapi_model import Agent, CreateAgentRequest -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query -agent_query = """ -INSERT INTO agents ( - developer_id, - agent_id, - canonical_name, - name, - about, - instructions, - model, - metadata, - default_settings, - default_system_template -) -VALUES ( - $1, - $2, - $3, - $4, - $5, - $6, - $7, - $8, - $9, - $10 -) -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("agent", ["create"])) -@wrap_in_class( - Agent, - one=True, - transform=lambda d: {**d, "id": d["agent_id"]}, -) -@query_metrics("create_agent") -@pg_query -@beartype -async def create_agent( - *, - developer_id: UUID, - agent_id: UUID | None = None, - data: CreateAgentRequest, -) -> tuple[str, list]: - """ - Constructs and executes a SQL query to create a new agent in the database. - - Parameters: - agent_id (UUID | None): The unique identifier for the agent. - developer_id (UUID): The unique identifier for the developer creating the agent. - data (CreateAgentRequest): The data for the new agent. - - Returns: - tuple[str, dict]: SQL query and parameters for creating the agent. - """ - agent_id = agent_id or uuid7() - - # Ensure instructions is a list - data.instructions = ( - data.instructions if isinstance(data.instructions, list) else [data.instructions] - ) - - # Convert default_settings to dict if it exists - default_settings = data.default_settings or {} - - # Set default values - data.metadata = data.metadata or {} - data.canonical_name = data.canonical_name or generate_canonical_name() - - params = [ - developer_id, - agent_id, - data.canonical_name, - data.name, - data.about, - data.instructions, - data.model, - data.metadata, - default_settings, - data.default_system_template, - ] - - return ( - agent_query, - params, - ) diff --git a/agents-api/agents_api/queries/agents/create_or_update_agent.py b/agents-api/agents_api/queries/agents/create_or_update_agent.py deleted file mode 100644 index 6be94e1b2..000000000 --- a/agents-api/agents_api/queries/agents/create_or_update_agent.py +++ /dev/null @@ -1,117 +0,0 @@ -""" -This module contains the functionality for creating or updating agents in the PostgreSQL database. -It constructs and executes SQL queries to insert a new agent or update an existing agent's details based on agent ID and developer ID. -""" - -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import Agent, CreateOrUpdateAgentRequest -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query -agent_query = """ -WITH existing_agent AS ( - SELECT canonical_name - FROM agents - WHERE developer_id = $1 AND agent_id = $2 -) -INSERT INTO agents ( - developer_id, - agent_id, - canonical_name, - name, - about, - instructions, - model, - metadata, - default_settings, - default_system_template -) -VALUES ( - $1, -- developer_id - $2, -- agent_id - COALESCE( -- canonical_name - (SELECT canonical_name FROM existing_agent), - $3 - ), - $4, -- name - $5, -- about - $6, -- instructions - $7, -- model - $8, -- metadata - $9, -- default_settings - $10 -- default_system_template -) -ON CONFLICT (developer_id, agent_id) DO UPDATE SET - canonical_name = EXCLUDED.canonical_name, - name = EXCLUDED.name, - about = EXCLUDED.about, - instructions = EXCLUDED.instructions, - model = EXCLUDED.model, - metadata = EXCLUDED.metadata, - default_settings = EXCLUDED.default_settings, - default_system_template = EXCLUDED.default_system_template -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("agent", ["create", "update"])) -@wrap_in_class( - Agent, - one=True, - transform=lambda d: {**d, "id": d["agent_id"]}, -) -@query_metrics("create_or_update_agent") -@pg_query -@beartype -async def create_or_update_agent( - *, - agent_id: UUID, - developer_id: UUID, - data: CreateOrUpdateAgentRequest, -) -> tuple[str, list]: - """ - Constructs the SQL queries to create a new agent or update an existing agent's details. - - Args: - agent_id (UUID): The UUID of the agent to create or update. - developer_id (UUID): The UUID of the developer owning the agent. - agent_data (Dict[str, Any]): A dictionary containing agent fields to insert or update. - - Returns: - tuple[list[str], dict]: A tuple containing the list of SQL queries and their parameters. - """ - - # Ensure instructions is a list - data.instructions = ( - data.instructions if isinstance(data.instructions, list) else [data.instructions] - ) - - # Convert default_settings to dict if it exists - default_settings = data.default_settings or {} - - # Set default values - data.metadata = data.metadata or {} - data.canonical_name = data.canonical_name or generate_canonical_name() - - params = [ - developer_id, - agent_id, - data.canonical_name, - data.name, - data.about, - data.instructions, - data.model, - data.metadata, - default_settings, - data.default_system_template, - ] - - return ( - agent_query, - params, - ) diff --git a/agents-api/agents_api/queries/agents/patch_agent.py b/agents-api/agents_api/queries/agents/patch_agent.py deleted file mode 100644 index 940a2b34d..000000000 --- a/agents-api/agents_api/queries/agents/patch_agent.py +++ /dev/null @@ -1,98 +0,0 @@ -""" -This module contains the functionality for partially updating an agent in the PostgreSQL database. -It constructs and executes SQL queries to update specific fields of an agent based on agent ID and developer ID. -""" - -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import Agent, PatchAgentRequest -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query -agent_query = """ -UPDATE agents -SET - name = CASE - WHEN $3::text IS NOT NULL THEN $3 - ELSE name - END, - about = CASE - WHEN $4::text IS NOT NULL THEN $4 - ELSE about - END, - metadata = CASE - WHEN $5::jsonb IS NOT NULL THEN metadata || $5 - ELSE metadata - END, - model = CASE - WHEN $6::text IS NOT NULL THEN $6 - ELSE model - END, - default_settings = CASE - WHEN $7::jsonb IS NOT NULL THEN $7 - ELSE default_settings - END, - default_system_template = CASE - WHEN $8::text IS NOT NULL THEN $8 - ELSE default_system_template - END, - instructions = CASE - WHEN $9::text[] IS NOT NULL THEN $9 - ELSE instructions - END, - canonical_name = CASE - WHEN $10::citext IS NOT NULL THEN $10 - ELSE canonical_name - END -WHERE agent_id = $2 AND developer_id = $1 -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("agent", ["patch"])) -@wrap_in_class( - Agent, - one=True, - transform=lambda d: {**d, "id": d["agent_id"]}, -) -@query_metrics("patch_agent") -@pg_query -@beartype -async def patch_agent( - *, - agent_id: UUID, - developer_id: UUID, - data: PatchAgentRequest, -) -> tuple[str, list]: - """ - Constructs the SQL query to partially update an agent's details. - - Args: - agent_id (UUID): The UUID of the agent to update. - developer_id (UUID): The UUID of the developer owning the agent. - data (PatchAgentRequest): A dictionary of fields to update. - - Returns: - tuple[str, list]: A tuple containing the SQL query and its parameters. - """ - params = [ - developer_id, - agent_id, - data.name, - data.about, - data.metadata, - data.model, - data.default_settings, - data.default_system_template, - [data.instructions] if isinstance(data.instructions, str) else data.instructions, - data.canonical_name, - ] - - return ( - agent_query, - params, - ) diff --git a/agents-api/agents_api/queries/agents/update_agent.py b/agents-api/agents_api/queries/agents/update_agent.py deleted file mode 100644 index efc18fef7..000000000 --- a/agents-api/agents_api/queries/agents/update_agent.py +++ /dev/null @@ -1,70 +0,0 @@ -""" -This module contains the functionality for fully updating an agent in the PostgreSQL database. -It constructs and executes SQL queries to replace an agent's details based on agent ID and developer ID. -""" - -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import Agent, UpdateAgentRequest -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query -agent_query = """ -UPDATE agents -SET - metadata = $3, - name = $4, - about = $5, - model = $6, - default_settings = $7::jsonb, - default_system_template = $8 -WHERE agent_id = $2 AND developer_id = $1 -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("agent", ["update"])) -@wrap_in_class( - Agent, - one=True, - transform=lambda d: {**d, "id": d["agent_id"]}, -) -@query_metrics("update_agent") -@pg_query -@beartype -async def update_agent( - *, - agent_id: UUID, - developer_id: UUID, - data: UpdateAgentRequest, -) -> tuple[str, list]: - """ - Constructs the SQL query to fully update an agent's details. - - Args: - agent_id (UUID): The UUID of the agent to update. - developer_id (UUID): The UUID of the developer owning the agent. - data (UpdateAgentRequest): A dictionary containing all agent fields to update. - - Returns: - tuple[str, list]: A tuple containing the SQL query and its parameters. - """ - params = [ - developer_id, - agent_id, - data.metadata or {}, - data.name, - data.about, - data.model, - data.default_settings or {}, - data.default_system_template, - ] - - return ( - agent_query, - params, - ) diff --git a/agents-api/agents_api/queries/users/create_or_update_user.py b/agents-api/agents_api/queries/users/create_or_update_user.py deleted file mode 100644 index 48c62af3a..000000000 --- a/agents-api/agents_api/queries/users/create_or_update_user.py +++ /dev/null @@ -1,77 +0,0 @@ -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import CreateOrUpdateUserRequest, User -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query for creating or updating a user -user_query = """ -INSERT INTO users ( - developer_id, - user_id, - name, - about, - metadata -) -VALUES ( - $1, -- developer_id - $2, -- user_id - $3, -- name - $4, -- about - $5::jsonb -- metadata -) -ON CONFLICT (developer_id, user_id) DO UPDATE SET - name = EXCLUDED.name, - about = EXCLUDED.about, - metadata = EXCLUDED.metadata -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("user", ["create_or_update"])) -@wrap_in_class( - User, - one=True, - transform=lambda d: { - **d, - "id": d["user_id"], - }, -) -@query_metrics("create_or_update_user") -@pg_query -@beartype -async def create_or_update_user( - *, - developer_id: UUID, - user_id: UUID, - data: CreateOrUpdateUserRequest, -) -> tuple[str, list]: - """ - Constructs an SQL query to create or update a user. - - Args: - developer_id (UUID): The UUID of the developer. - user_id (UUID): The UUID of the user. - data (CreateOrUpdateUserRequest): The user data to insert or update. - - Returns: - tuple[str, list]: SQL query and parameters. - - Raises: - HTTPException: If developer doesn't exist (404) or on unique constraint violation (409) - """ - params = [ - developer_id, # $1 - user_id, # $2 - data.name, # $3 - data.about, # $4 - data.metadata or {}, # $5 - ] - - return ( - user_query, - params, - ) diff --git a/agents-api/agents_api/queries/users/create_user.py b/agents-api/agents_api/queries/users/create_user.py deleted file mode 100644 index e8f3aa986..000000000 --- a/agents-api/agents_api/queries/users/create_user.py +++ /dev/null @@ -1,74 +0,0 @@ -from uuid import UUID - -from beartype import beartype -from uuid_extensions import uuid7 - -from ...autogen.openapi_model import CreateUserRequest, User -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query outside the function -user_query = """ -INSERT INTO users ( - developer_id, - user_id, - name, - about, - metadata -) -VALUES ( - $1, -- developer_id - $2, -- user_id - $3, -- name - $4, -- about - $5::jsonb -- metadata -) -RETURNING *; -""" - - -@rewrap_exceptions(common_db_exceptions("user", ["create"])) -@wrap_in_class( - User, - one=True, - transform=lambda d: { - **d, - "id": d["user_id"], - }, -) -@query_metrics("create_user") -@pg_query -@beartype -async def create_user( - *, - developer_id: UUID, - user_id: UUID | None = None, - data: CreateUserRequest, -) -> tuple[str, list]: - """ - Constructs the SQL query to create a new user. - - Args: - developer_id (UUID): The UUID of the developer creating the user. - user_id (UUID, optional): The UUID for the new user. If None, one will be generated. - data (CreateUserRequest): The user data to insert. - - Returns: - tuple[str, list]: A tuple containing the SQL query and its parameters. - """ - user_id = user_id or uuid7() - metadata = data.metadata or {} - - params = [ - developer_id, # $1 - user_id, # $2 - data.name, # $3 - data.about, # $4 - metadata, # $5 - ] - - return ( - user_query, - params, - ) diff --git a/agents-api/agents_api/queries/users/patch_user.py b/agents-api/agents_api/queries/users/patch_user.py deleted file mode 100644 index 9bd0d3cea..000000000 --- a/agents-api/agents_api/queries/users/patch_user.py +++ /dev/null @@ -1,80 +0,0 @@ -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import PatchUserRequest, User -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query outside the function -user_query = """ -UPDATE users -SET - name = CASE - WHEN $3::text IS NOT NULL THEN $3 -- name - ELSE name - END, - about = CASE - WHEN $4::text IS NOT NULL THEN $4 -- about - ELSE about - END, - metadata = CASE - WHEN $5::jsonb IS NOT NULL THEN metadata || $5 -- metadata - ELSE metadata - END -WHERE developer_id = $1 -AND user_id = $2 -RETURNING - user_id as id, -- user_id - developer_id, -- developer_id - name, -- name - about, -- about - metadata, -- metadata - created_at, -- created_at - updated_at; -- updated_at -""" - - -@rewrap_exceptions(common_db_exceptions("user", ["patch"])) -@wrap_in_class( - User, - one=True, - transform=lambda d: { - **d, - "id": d["id"], - }, -) -@query_metrics("patch_user") -@pg_query -@beartype -async def patch_user( - *, - developer_id: UUID, - user_id: UUID, - data: PatchUserRequest, -) -> tuple[str, list]: - """ - Constructs an optimized SQL query for partial user updates. - Uses primary key for efficient update and jsonb_merge for metadata. - - Args: - developer_id (UUID): The developer's UUID - user_id (UUID): The user's UUID - data (PatchUserRequest): Partial update data - - Returns: - tuple[str, list]: SQL query and parameters - """ - params = [ - developer_id, # $1 - user_id, # $2 - data.name, # $3. Will be NULL if not provided - data.about, # $4. Will be NULL if not provided - data.metadata, # $5. Will be NULL if not provided - ] - - return ( - user_query, - params, - ) diff --git a/agents-api/agents_api/queries/users/update_user.py b/agents-api/agents_api/queries/users/update_user.py deleted file mode 100644 index d84f99217..000000000 --- a/agents-api/agents_api/queries/users/update_user.py +++ /dev/null @@ -1,64 +0,0 @@ -from uuid import UUID - -from beartype import beartype - -from ...autogen.openapi_model import UpdateUserRequest, User -from ...common.utils.db_exceptions import common_db_exceptions -from ...metrics.counters import query_metrics -from ..utils import pg_query, rewrap_exceptions, wrap_in_class - -# Define the raw SQL query outside the function -user_query = """ -UPDATE users -SET - name = $3, -- name - about = $4, -- about - metadata = $5 -- metadata -WHERE developer_id = $1 -- developer_id -AND user_id = $2 -- user_id -RETURNING * -""" - - -@rewrap_exceptions(common_db_exceptions("user", ["update"])) -@wrap_in_class( - User, - one=True, - transform=lambda d: { - **d, - "id": d["user_id"], - }, -) -@query_metrics("update_user") -@pg_query -@beartype -async def update_user( - *, - developer_id: UUID, - user_id: UUID, - data: UpdateUserRequest, -) -> tuple[str, list]: - """ - Constructs an optimized SQL query to update a user's details. - Uses primary key for efficient update. - - Args: - developer_id (UUID): The developer's UUID - user_id (UUID): The user's UUID - data (UpdateUserRequest): Updated user data - - Returns: - tuple[str, list]: SQL query and parameters - """ - params = [ - developer_id, - user_id, - data.name, - data.about, - data.metadata or {}, - ] - - return ( - user_query, - params, - ) diff --git a/agents-api/agents_api/routers/sessions/chat.py b/agents-api/agents_api/routers/sessions/chat.py deleted file mode 100644 index 21f0de8f0..000000000 --- a/agents-api/agents_api/routers/sessions/chat.py +++ /dev/null @@ -1,132 +0,0 @@ -from typing import Annotated, Any -from uuid import UUID - -from fastapi import BackgroundTasks, Depends, Header -from starlette.status import HTTP_201_CREATED -from uuid_extensions import uuid7 - -from ...autogen.openapi_model import ( - ChatInput, - ChatResponse, - ChunkChatResponse, - CreateEntryRequest, - MessageChatResponse, -) -from ...clients import litellm -from ...common.protocol.developers import Developer -from ...common.utils.datetime import utcnow -from ...dependencies.developer_id import get_developer_data -from ...queries.entries.create_entries import create_entries -from .metrics import total_tokens_per_user -from .render import render_chat_input -from .router import router - -COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" - - -@router.post( - "/sessions/{session_id}/chat", - status_code=HTTP_201_CREATED, - tags=["sessions", "chat"], -) -async def chat( - developer: Annotated[Developer, Depends(get_developer_data)], - session_id: UUID, - chat_input: ChatInput, - background_tasks: BackgroundTasks, - x_custom_api_key: str | None = Header(None, alias="X-Custom-Api-Key"), - connection_pool: Any = None, # FIXME: Placeholder that should be removed -) -> ChatResponse: - """ - Initiates a chat session. - - Parameters: - developer (Developer): The developer associated with the chat session. - session_id (UUID): The unique identifier of the chat session. - chat_input (ChatInput): The chat input data. - background_tasks (BackgroundTasks): The background tasks to run. - x_custom_api_key (Optional[str]): The custom API key. - - Returns: - ChatResponse: The chat response. - """ - ( - messages, - doc_references, - formatted_tools, - settings, - new_messages, - chat_context, - ) = await render_chat_input( - developer=developer, - session_id=session_id, - chat_input=chat_input, - ) - - # Use litellm for other models - params = { - "messages": messages, - "tools": formatted_tools or None, - "user": str(developer.id), - "tags": developer.tags, - "custom_api_key": x_custom_api_key, - } - payload = {**settings, **params} - - model_response = await litellm.acompletion(**payload) - - # Save the input and the response to the session history - if chat_input.save: - new_entries = [ - CreateEntryRequest.from_model_input( - model=settings["model"], - **msg, - source="api_request", - ) - for msg in new_messages - ] - - # Add the response to the new entries - # FIXME: We need to save all the choices - new_entries.append( - CreateEntryRequest.from_model_input( - model=settings["model"], - **model_response.choices[0].model_dump()["message"], - source="api_response", - ), - ) - background_tasks.add_task( - create_entries, - developer_id=developer.id, - session_id=session_id, - data=new_entries, - ) - - # Adaptive context handling - jobs = [] - if chat_context.session.context_overflow == "adaptive": - # FIXME: Start the adaptive context workflow - # SCRUM-8 - - # jobs = [await start_adaptive_context_workflow] - msg = "Adaptive context is not yet implemented" - raise NotImplementedError(msg) - - # Return the response - # FIXME: Implement streaming for chat - chat_response_class = ChunkChatResponse if chat_input.stream else MessageChatResponse - - chat_response: ChatResponse = chat_response_class( - id=uuid7(), - created_at=utcnow(), - jobs=jobs, - docs=doc_references, - usage=model_response.usage.model_dump(), - choices=[choice.model_dump() for choice in model_response.choices], - ) - - total_tokens_per_user.labels(str(developer.id)).inc( - amount=chat_response.usage.total_tokens if chat_response.usage is not None else 0, - ) - - return chat_response diff --git a/agents-api/agents_api/routers/utils/model_validation.py b/agents-api/agents_api/routers/utils/model_validation.py deleted file mode 100644 index 5b5b56f46..000000000 --- a/agents-api/agents_api/routers/utils/model_validation.py +++ /dev/null @@ -1,19 +0,0 @@ -from fastapi import HTTPException -from starlette.status import HTTP_400_BAD_REQUEST - -from ...clients.litellm import get_model_list - - -async def validate_model(model_name: str | None) -> None: - """ - Validates if a given model name is available in LiteLLM. - Raises HTTPException if model is not available. - """ - models = await get_model_list() - available_models = [model["id"] for model in models] - - if model_name not in available_models: - raise HTTPException( - status_code=HTTP_400_BAD_REQUEST, - detail=f"Model {model_name} not available. Available models: {available_models}", - ) diff --git a/agents-api/tests/test_agent_queries.py b/agents-api/tests/test_agent_queries.py deleted file mode 100644 index a70a9778a..000000000 --- a/agents-api/tests/test_agent_queries.py +++ /dev/null @@ -1,201 +0,0 @@ -# Tests for agent queries - -from agents_api.autogen.openapi_model import ( - Agent, - CreateAgentRequest, - CreateOrUpdateAgentRequest, - PatchAgentRequest, - ResourceDeletedResponse, - UpdateAgentRequest, -) -from agents_api.clients.pg import create_db_pool -from agents_api.queries.agents import ( - create_agent, - create_or_update_agent, - delete_agent, - get_agent, - list_agents, - patch_agent, - update_agent, -) -from fastapi import HTTPException -from uuid_extensions import uuid7 -from ward import raises, test - -from tests.fixtures import pg_dsn, test_agent, test_developer_id - - -@test("query: create agent sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that an agent can be successfully created.""" - - pool = await create_db_pool(dsn=dsn) - await create_agent( - developer_id=developer_id, - data=CreateAgentRequest( - name="test agent", - about="test agent about", - model="gpt-4o-mini", - ), - connection_pool=pool, - ) # type: ignore[not-callable] - - -@test("query: create or update agent sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that an agent can be successfully created or updated.""" - - pool = await create_db_pool(dsn=dsn) - await create_or_update_agent( - developer_id=developer_id, - agent_id=uuid7(), - data=CreateOrUpdateAgentRequest( - name="test agent", - canonical_name="test_agent2", - about="test agent about", - model="gpt-4o-mini", - instructions=["test instruction"], - ), - connection_pool=pool, - ) # type: ignore[not-callable] - - -@test("query: update agent sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): - """Test that an existing agent's information can be successfully updated.""" - - pool = await create_db_pool(dsn=dsn) - result = await update_agent( - agent_id=agent.id, - developer_id=developer_id, - data=UpdateAgentRequest( - name="updated agent", - about="updated agent about", - model="gpt-4o-mini", - default_settings={"temperature": 1.0}, - metadata={"hello": "world"}, - ), - connection_pool=pool, - ) # type: ignore[not-callable] - - assert result is not None - assert isinstance(result, Agent) - assert result.name == "updated agent" - assert result.about == "updated agent about" - assert result.model == "gpt-4o-mini" - assert result.default_settings["temperature"] == 1.0 - assert result.metadata == {"hello": "world"} - - -@test("query: get agent not exists sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that retrieving a non-existent agent raises an exception.""" - - agent_id = uuid7() - pool = await create_db_pool(dsn=dsn) - - with raises(Exception): - await get_agent(agent_id=agent_id, developer_id=developer_id, connection_pool=pool) # type: ignore[not-callable] - - -@test("query: get agent exists sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): - """Test that retrieving an existing agent returns the correct agent information.""" - - pool = await create_db_pool(dsn=dsn) - result = await get_agent( - agent_id=agent.id, - developer_id=developer_id, - connection_pool=pool, - ) # type: ignore[not-callable] - - assert result is not None - assert isinstance(result, Agent) - assert result.id == agent.id - assert result.name == agent.name - assert result.about == agent.about - assert result.model == agent.model - assert result.default_settings == agent.default_settings - assert result.metadata == agent.metadata - - -@test("query: list agents sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that listing agents returns a collection of agent information.""" - - pool = await create_db_pool(dsn=dsn) - result = await list_agents(developer_id=developer_id, connection_pool=pool) # type: ignore[not-callable] - - assert isinstance(result, list) - assert all(isinstance(agent, Agent) for agent in result) - - -@test("query: list agents sql, invalid sort direction") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that listing agents with an invalid sort direction raises an exception.""" - - pool = await create_db_pool(dsn=dsn) - with raises(HTTPException) as exc: - await list_agents( - developer_id=developer_id, - connection_pool=pool, - direction="invalid", - ) # type: ignore[not-callable] - - assert exc.raised.status_code == 400 - assert exc.raised.detail == "Invalid sort direction" - - -@test("query: patch agent sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): - """Test that an agent can be successfully patched.""" - - pool = await create_db_pool(dsn=dsn) - result = await patch_agent( - agent_id=agent.id, - developer_id=developer_id, - data=PatchAgentRequest( - name="patched agent", - about="patched agent about", - default_settings={"temperature": 1.0}, - metadata={"something": "else"}, - ), - connection_pool=pool, - ) # type: ignore[not-callable] - - assert result is not None - assert isinstance(result, Agent) - assert result.name == "patched agent" - assert result.about == "patched agent about" - assert result.default_settings["temperature"] == 1.0 - - -@test("query: delete agent sql") -async def _(dsn=pg_dsn, developer_id=test_developer_id): - """Test that an agent can be successfully deleted.""" - - pool = await create_db_pool(dsn=dsn) - create_result = await create_agent( - developer_id=developer_id, - data=CreateAgentRequest( - name="test agent", - about="test agent about", - model="gpt-4o-mini", - ), - connection_pool=pool, - ) # type: ignore[not-callable] - delete_result = await delete_agent( - agent_id=create_result.id, - developer_id=developer_id, - connection_pool=pool, - ) # type: ignore[not-callable] - - assert delete_result is not None - assert isinstance(delete_result, ResourceDeletedResponse) - - with raises(Exception): - await get_agent( - developer_id=developer_id, - agent_id=create_result.id, - connection_pool=pool, - ) # type: ignore[not-callable] diff --git a/agents-api/tests/test_get_doc_search.py b/agents-api/tests/test_get_doc_search.py deleted file mode 100644 index 9b507c8fe..000000000 --- a/agents-api/tests/test_get_doc_search.py +++ /dev/null @@ -1,180 +0,0 @@ -from agents_api.autogen.openapi_model import ( - HybridDocSearchRequest, - TextOnlyDocSearchRequest, - VectorDocSearchRequest, -) -from agents_api.common.utils.get_doc_search import get_language, get_search_fn_and_params -from agents_api.queries.docs.search_docs_by_embedding import search_docs_by_embedding -from agents_api.queries.docs.search_docs_by_text import search_docs_by_text -from agents_api.queries.docs.search_docs_hybrid import search_docs_hybrid -from fastapi import HTTPException -from ward import raises, test - - -@test("get_language: valid language code returns lowercase language name") -def _(): - result = get_language("en") - assert result == "english_unaccent" - - result = get_language("fr") - assert result == "french" - - -@test("get_language: empty language code raises HTTPException") -def _(): - with raises(HTTPException) as exc: - get_language("") - - assert exc.raised.status_code == 422 - assert exc.raised.detail == "Invalid ISO 639 language code." - - -@test("get_search_fn_and_params: text-only search request") -def _(): - request = TextOnlyDocSearchRequest( - text="search query", - limit=10, - lang="en", - metadata_filter={"field": "value"}, - trigram_similarity_threshold=0.4, - ) - - search_fn, params = get_search_fn_and_params(request) - - assert search_fn == search_docs_by_text - assert params == { - "query": "search query", - "k": 10, - "metadata_filter": {"field": "value"}, - "search_language": "english_unaccent", - "extract_keywords": False, - "trigram_similarity_threshold": 0.4, - } - - -@test("get_search_fn_and_params: vector search request without MMR") -def _(): - request = VectorDocSearchRequest( - vector=[0.1, 0.2, 0.3], - limit=5, - confidence=0.8, - metadata_filter={"field": "value"}, - mmr_strength=0, - ) - - search_fn, params = get_search_fn_and_params(request) - - assert search_fn == search_docs_by_embedding - assert params == { - "embedding": [0.1, 0.2, 0.3], - "k": 5, - "confidence": 0.8, - "metadata_filter": {"field": "value"}, - } - - -@test("get_search_fn_and_params: vector search request with MMR") -def _(): - request = VectorDocSearchRequest( - vector=[0.1, 0.2, 0.3], - limit=5, - confidence=0.8, - metadata_filter={"field": "value"}, - mmr_strength=0.5, - ) - - search_fn, params = get_search_fn_and_params(request) - - assert search_fn == search_docs_by_embedding - assert params == { - "embedding": [0.1, 0.2, 0.3], - "k": 15, # 5 * 3 because MMR is enabled - "confidence": 0.8, - "metadata_filter": {"field": "value"}, - } - - -@test("get_search_fn_and_params: hybrid search request") -def _(): - request = HybridDocSearchRequest( - text="search query", - vector=[0.1, 0.2, 0.3], - lang="en", - limit=5, - confidence=0.8, - alpha=0.5, - metadata_filter={"field": "value"}, - mmr_strength=0, - trigram_similarity_threshold=0.4, - k_multiplier=7, - ) - - search_fn, params = get_search_fn_and_params(request) - - assert search_fn == search_docs_hybrid - assert params == { - "text_query": "search query", - "embedding": [0.1, 0.2, 0.3], - "k": 5, - "confidence": 0.8, - "alpha": 0.5, - "metadata_filter": {"field": "value"}, - "search_language": "english_unaccent", - "extract_keywords": False, - "trigram_similarity_threshold": 0.4, - "k_multiplier": 7, - } - - -@test("get_search_fn_and_params: hybrid search request with MMR") -def _(): - request = HybridDocSearchRequest( - text="search query", - vector=[0.1, 0.2, 0.3], - lang="en", - limit=5, - confidence=0.8, - alpha=0.5, - metadata_filter={"field": "value"}, - mmr_strength=0.5, - trigram_similarity_threshold=0.4, - k_multiplier=7, - ) - - search_fn, params = get_search_fn_and_params(request) - - assert search_fn == search_docs_hybrid - assert params == { - "text_query": "search query", - "embedding": [0.1, 0.2, 0.3], - "k": 15, # 5 * 3 because MMR is enabled - "confidence": 0.8, - "alpha": 0.5, - "metadata_filter": {"field": "value"}, - "search_language": "english_unaccent", - "extract_keywords": False, - "trigram_similarity_threshold": 0.4, - "k_multiplier": 7, - } - - -@test("get_search_fn_and_params: hybrid search request with invalid language") -def _(): - request = HybridDocSearchRequest( - text="search query", - vector=[0.1, 0.2, 0.3], - lang="en-axzs", # Invalid language code - limit=5, - confidence=0.8, - alpha=0.5, - metadata_filter={"field": "value"}, - mmr_strength=0, - trigram_similarity_threshold=0.4, - k_multiplier=7, - ) - - with raises(HTTPException) as exc: - _search_fn, _params = get_search_fn_and_params(request) - - assert exc.raised.status_code == 422 - assert exc.raised.detail == "Invalid ISO 639 language code." diff --git a/agents-api/tests/test_litellm_utils.py b/agents-api/tests/test_litellm_utils.py deleted file mode 100644 index dd075e674..000000000 --- a/agents-api/tests/test_litellm_utils.py +++ /dev/null @@ -1,25 +0,0 @@ -from unittest.mock import patch - -from agents_api.clients.litellm import acompletion -from litellm.types.utils import ModelResponse -from ward import test - - -@test("litellm_utils: acompletion - no tools") -async def _(): - with patch("agents_api.clients.litellm._acompletion") as mock_acompletion: - mock_acompletion.return_value = ModelResponse( - id="test-id", - choices=[{"message": {"content": "test"}}], - model="gpt-4", - usage={"total_tokens": 10}, - ) - - messages = [{"role": "user", "content": "test", "tool_calls": []}] - - await acompletion(model="gpt-4", messages=messages) - - # Check that tool_calls was removed from the message - mock_acompletion.assert_called_once() - called_messages = mock_acompletion.call_args[1]["messages"] - assert "tool_calls" not in called_messages[0] diff --git a/agents-api/tests/test_pg_query_step.py b/agents-api/tests/test_pg_query_step.py deleted file mode 100644 index 6416502cc..000000000 --- a/agents-api/tests/test_pg_query_step.py +++ /dev/null @@ -1,92 +0,0 @@ -from unittest.mock import AsyncMock, MagicMock, patch - -from agents_api.activities.task_steps.pg_query_step import pg_query_step -from ward import test - - -@test("pg_query_step correctly calls the specified query") -async def _(): - # Mock the database connection pool - mock_pool = AsyncMock() - - # Create a mock query function that will be returned by getattr - mock_query = AsyncMock(return_value={"result": "test"}) - - # Mock the app state to provide the postgres_pool - mock_app_state = MagicMock() - mock_app_state.postgres_pool = mock_pool - - # Patch the relevant modules and functions - with ( - patch("agents_api.activities.task_steps.pg_query_step.queries") as mock_queries, - patch("agents_api.activities.task_steps.pg_query_step.app") as mock_app, - ): - # Set up the mock app state - mock_app.state = mock_app_state - - # Set up module resolution - mock_module = MagicMock() - mock_module.test_query = mock_query - mock_queries.test_module = mock_module - - # Call the function with a query in the format "module_name.query_name" - result = await pg_query_step( - query_name="test_module.test_query", - values={"param1": "value1"}, - ) - - # Verify the query was called with the expected arguments - mock_query.assert_called_once_with(param1="value1", connection_pool=mock_pool) - - # Verify the function returns the result from the query - assert result == {"result": "test"} - - -@test("pg_query_step raises exception for invalid query name format") -async def _(): - # Try with an invalid query name (no dot separator) - try: - await pg_query_step(query_name="invalid_query_name", values={}) - assert False, "Expected an exception but none was raised" - except ValueError: - # Expected behavior - ValueError should be raised - pass - except Exception as e: - assert False, f"Expected ValueError but got {type(e).__name__}" - - -@test("pg_query_step propagates exceptions from the underlying query") -async def _(): - # Mock the database connection pool - mock_pool = AsyncMock() - - # Create a mock query function that raises an exception - mock_query = AsyncMock(side_effect=Exception("Test query error")) - - # Mock the app state to provide the postgres_pool - mock_app_state = MagicMock() - mock_app_state.postgres_pool = mock_pool - - # Patch the relevant modules and functions - with ( - patch("agents_api.activities.task_steps.pg_query_step.queries") as mock_queries, - patch("agents_api.activities.task_steps.pg_query_step.app") as mock_app, - ): - # Set up the mock app state - mock_app.state = mock_app_state - - # Set up module resolution - mock_module = MagicMock() - mock_module.test_query = mock_query - mock_queries.test_module = mock_module - - # Call the function and expect an exception - try: - await pg_query_step( - query_name="test_module.test_query", - values={}, - ) - assert False, "Expected an exception but none was raised" - except Exception as e: - # Verify the exception is propagated - assert str(e) == "Test query error" diff --git a/changelog/Templates/JulepCustom/entries.html b/changelog/Templates/JulepCustom/entries.html new file mode 100644 index 000000000..44df3ea04 --- /dev/null +++ b/changelog/Templates/JulepCustom/entries.html @@ -0,0 +1,16 @@ +{{> head}} +{{> header}} + +
+ {{#entries}} +
+

{{title}}

+ + {{#summary}} +

{{summary}}

+ {{/summary}} +
+ {{/entries tagged "main"}} +
+ +{{> footer}} \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/entry.html b/changelog/Templates/JulepCustom/entry.html new file mode 100644 index 000000000..ea31d7393 --- /dev/null +++ b/changelog/Templates/JulepCustom/entry.html @@ -0,0 +1,15 @@ +{{> head}} +{{> header}} + +
+
+

{{title}}

+ + {{{html}}} + {{#tags}} + + {{/tags}} +
+
+ +{{> footer}} \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/footer.html b/changelog/Templates/JulepCustom/footer.html new file mode 100644 index 000000000..d37cf81b9 --- /dev/null +++ b/changelog/Templates/JulepCustom/footer.html @@ -0,0 +1,7 @@ +
+
+

© {{year}} Julep AI

+
+
+ + \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/head.html b/changelog/Templates/JulepCustom/head.html new file mode 100644 index 000000000..c1c019dd4 --- /dev/null +++ b/changelog/Templates/JulepCustom/head.html @@ -0,0 +1,11 @@ + + + + + + {{title}} + + + + + \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/header.html b/changelog/Templates/JulepCustom/header.html new file mode 100644 index 000000000..7bc460772 --- /dev/null +++ b/changelog/Templates/JulepCustom/header.html @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/package.json b/changelog/Templates/JulepCustom/package.json new file mode 100644 index 000000000..931944875 --- /dev/null +++ b/changelog/Templates/JulepCustom/package.json @@ -0,0 +1,11 @@ +{ + "name": "JulepCustom", + "author": "Julep AI", + "version": "0.1.0", + "description": "Custom minimal template with main/dev channels", + "locals": { + "site": { + "title": "Julep Changelog" + } + } +} \ No newline at end of file diff --git a/changelog/Templates/JulepCustom/style.css b/changelog/Templates/JulepCustom/style.css new file mode 100644 index 000000000..73d63f75e --- /dev/null +++ b/changelog/Templates/JulepCustom/style.css @@ -0,0 +1,104 @@ +/* ────────────────────────────────────────────────────────── + Julep Custom Template – CSS + Simple, responsive, dark-mode aware styling for changelog + ────────────────────────────────────────────────────────── */ + +:root{ + --body-bg:#ffffff; + --text-color:#111111; + --link-color:#0077cc; + --link-hover-color:#005fa3; + --border-color:#e5e5e5; + --container-width:680px; + --stable-green:#28a745; + --dev-orange:#d49144; +} + +@media (prefers-color-scheme: dark){ + :root{ + --body-bg:#1e1e1e; + --text-color:#f5f5f5; + --link-color:#8ab4ff; + --link-hover-color:#a8c6ff; + --border-color:#333333; + } +} + +*{box-sizing:border-box;} + +body{ + margin:0; + background:var(--body-bg); + color:var(--text-color); + font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; + line-height:1.6; + font-size:17px; +} + +a{color:var(--link-color);text-decoration:none;} +a:hover{color:var(--link-hover-color);text-decoration:underline;} + +.container{ + width:100%; + max-width:var(--container-width); + margin:0 auto; + padding:0 1rem; +} + +/* ── Header ─────────────────────────────── */ + +.site-header{ + border-bottom:1px solid var(--border-color); + padding:1rem 0; +} + +.logo{margin:0;font-size:1.5rem;} +.logo a{color:var(--text-color);text-decoration:none;} + +nav.channels{margin-top:.5rem;} +nav.channels a{font-weight:600;margin-right:1rem;} +nav.channels a.stable{color:var(--stable-green);} +nav.channels a.dev{color:var(--dev-orange);} + +/* ── Entries list ───────────────────────── */ + +.entries-list .entry-list-item{ + border-bottom:1px solid var(--border-color); + padding:1.5rem 0; +} + +.entries-list .entry-title{ + margin:0; + font-size:1.25rem; +} + +.entry-meta{ + margin:.3rem 0 .8rem; + font-size:.9rem; + color:var(--border-color); +} + +.entry-summary{margin:.2rem 0 0;} + +/* ── Single entry page ──────────────────── */ + +.entry-page .entry-title{ + margin-top:0; + font-size:2rem; +} + +.entry-tag{ + display:inline-block; + margin-right:.5rem; + font-size:.85rem; + opacity:.75; +} + +/* ── Footer ─────────────────────────────── */ + +.site-footer{ + border-top:1px solid var(--border-color); + padding:1.5rem 0; + font-size:.9rem; + text-align:center; +} \ No newline at end of file diff --git a/changelog/Templates/index-template/archives.html b/changelog/Templates/index-template/archives.html new file mode 100644 index 000000000..a07ebaba2 --- /dev/null +++ b/changelog/Templates/index-template/archives.html @@ -0,0 +1,28 @@ + + + {{> head}} + + + {{> header}} + +

Archives

+ + {{#archives}} + {{#months}} +
+

{{month}} {{year}}  {{entries.length}} post{{s}}

+ + + {{#entries}} + {{title}}{{^last}}  · {{/last}} + {{/entries}} + + +
+ {{/months}} + {{/archives}} + + {{> footer}} + + + \ No newline at end of file diff --git a/changelog/Templates/index-template/entries.html b/changelog/Templates/index-template/entries.html new file mode 100644 index 000000000..1fd93e699 --- /dev/null +++ b/changelog/Templates/index-template/entries.html @@ -0,0 +1,48 @@ + + + {{> head}} + + + {{> header}} + + {{^pagination.previous}} + {{> home-summary}} +
+ {{/pagination.previous}} + + + {{#pagination.previous}}Page {{pagination.current}} of {{pagination.total}}{{/pagination.previous}} + {{^pagination.previous}}Latest posts:{{/pagination.previous}} + + +

+ + {{#entries}} + {{title}} {{#date}} ·  {{date}}{{/date}} + {{/entries}} + +


+ + {{#pagination}} + + {{#previous}} + ← Newer posts         + {{/previous}} + + {{#next}} + Next page → + {{/next}} + +
+ +
+ Page {{current}} of {{total}} +
+ + {{/pagination}} + +
+ + {{> footer}} + + \ No newline at end of file diff --git a/changelog/Templates/index-template/entry.html b/changelog/Templates/index-template/entry.html new file mode 100644 index 000000000..c46460c6e --- /dev/null +++ b/changelog/Templates/index-template/entry.html @@ -0,0 +1,61 @@ + + + {{> head}} + + {{> header}} + + {{#entry}} +
+ + {{#tags.length}} +
+ {{#tags}} + {{name}} + {{/tags}} +
+ {{/tags.length}} + + {{{html}}} + + {{#date}} + Posted on {{date}} + {{/date}} + + {{#tags.length}} + + {{#tags}} +   #{{name}}   + {{/tags}} + + {{/tags.length}} + + {{> pluginHTML}} + +

+
+ +


+
+ + {{#adjacent}} +
+ {{/adjacent}} + + + {{#next}} + ← Next post + {{/next}} + + {{#next}}{{#previous}}   ·   {{/previous}}{{/next}} + + {{#previous}} + Previous post → + {{/previous}} + +
+ + {{/entry}} + + {{> footer}} + + diff --git a/changelog/Templates/index-template/error.html b/changelog/Templates/index-template/error.html new file mode 100644 index 000000000..9fde7538a --- /dev/null +++ b/changelog/Templates/index-template/error.html @@ -0,0 +1,12 @@ + + + {{> head}} + + {{> header}} + +

{{error.title}}

+

{{error.message}}

+ + {{> footer}} + + \ No newline at end of file diff --git a/changelog/Templates/index-template/feed.rss b/changelog/Templates/index-template/feed.rss new file mode 100644 index 000000000..45258627f --- /dev/null +++ b/changelog/Templates/index-template/feed.rss @@ -0,0 +1,20 @@ + + + + <![CDATA[ {{{title}}}]]> + {{{blogURL}}} + + + {{#recentEntries}} + + <![CDATA[ {{{title}}} ]]> + {{{absoluteURL}}} + {{{absoluteURL}}} + {{! RSS feeds need a RFC 822 date}} + {{#formatDate}}ddd, DD MMM YYYY HH:mm:ss ZZ{{/formatDate}} + + + + {{/recentEntries}} + + \ No newline at end of file diff --git a/changelog/Templates/index-template/footer.html b/changelog/Templates/index-template/footer.html new file mode 100644 index 000000000..817f5116d --- /dev/null +++ b/changelog/Templates/index-template/footer.html @@ -0,0 +1,7 @@ +
+
+ © {{year}} Julep AI · julep.ai +
+
+ + \ No newline at end of file diff --git a/changelog/Templates/index-template/head.html b/changelog/Templates/index-template/head.html new file mode 100644 index 000000000..f0a8dcfaa --- /dev/null +++ b/changelog/Templates/index-template/head.html @@ -0,0 +1,11 @@ + + + {{> title}} + + + + + {{#avatar}} + + {{/avatar}} + \ No newline at end of file diff --git a/changelog/Templates/index-template/header.html b/changelog/Templates/index-template/header.html new file mode 100644 index 000000000..b3ae8aaf0 --- /dev/null +++ b/changelog/Templates/index-template/header.html @@ -0,0 +1,20 @@ + +
+ +Website +Dashboard +Docs + + + + +

+
\ No newline at end of file diff --git a/changelog/Templates/index-template/home-summary.html b/changelog/Templates/index-template/home-summary.html new file mode 100644 index 000000000..b00961132 --- /dev/null +++ b/changelog/Templates/index-template/home-summary.html @@ -0,0 +1,13 @@ +

✨ Latest Highlights

+15 August 2025 Release +main +
    +
  • GPT-5 Model Family Support
    + Added support for GPT-5 model family with 8 variants (gpt-5, gpt-5-mini, gpt-5-nano).
  • + +
  • Comprehensive GPT-5 Documentation
    + Added comprehensive GPT-5 documentation including capabilities, pricing, and parameters.
  • + +
  • LiteLLM Proxy Configuration
    + Added GPT-5 models to LiteLLM proxy configuration with appropriate tags and API keys.
  • +
\ No newline at end of file diff --git a/changelog/Templates/index-template/package.json b/changelog/Templates/index-template/package.json new file mode 100644 index 000000000..fe93739ac --- /dev/null +++ b/changelog/Templates/index-template/package.json @@ -0,0 +1,51 @@ +{ + "name": "Index", + "locals": { + "page_size": 20 + }, + "views": { + "search.html": { + "partials": { + "title": "Search - {{{title}}}", + "description": "Search all the entries posted on {{{title}}}" + } + }, + "archives.html": { + "url": "/archives", + "partials": { + "title": "Archives - {{{title}}}", + "description": "All the entries posted on {{{title}}}" + } + }, + "public.html": { + "partials": { + "title": "Index of {{{path}}}", + "description": "All the files and folders inside {{{path}}}" + } + }, + "entries.html": { + "partials": { + "title": "{{{title}}}", + "description": "The latest entries posted on {{{title}}}" + } + }, + "entry.html": { + "partials": { + "title": "{{{entry.title}}} - {{{title}}}", + "description": "{{{entry.summary}}}" + } + }, + "error.html": { + "partials": { + "title": "{{{error.title}}} - {{{title}}}", + "description": "Error on {{{title}}}" + } + }, + "tagged.html": { + "partials": { + "title": "Entries tagged {{{tag}}} from {{{title}}}", + "description": "All of the entries posted on {{{title}}} tagged {{{tag}}}" + } + } + } +} \ No newline at end of file diff --git a/changelog/Templates/index-template/public.html b/changelog/Templates/index-template/public.html new file mode 100644 index 000000000..3315deba1 --- /dev/null +++ b/changelog/Templates/index-template/public.html @@ -0,0 +1,23 @@ + + + {{> head}} + + +

+ {{#breadcrumbs}} + {{name}} / + {{/breadcrumbs}} + {{dirname}} +

+ + {{#contents}} + + + + {{/contents}} +
{{name}}
+ + \ No newline at end of file diff --git a/changelog/Templates/index-template/robots.txt b/changelog/Templates/index-template/robots.txt new file mode 100644 index 000000000..8d03a289f --- /dev/null +++ b/changelog/Templates/index-template/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: {{{blogURL}}}/sitemap.xml \ No newline at end of file diff --git a/changelog/Templates/index-template/script.js b/changelog/Templates/index-template/script.js new file mode 100644 index 000000000..81953d550 --- /dev/null +++ b/changelog/Templates/index-template/script.js @@ -0,0 +1,3 @@ +{{{appJS}}} + +// This script is embedded in the footer of every page \ No newline at end of file diff --git a/changelog/Templates/index-template/search.html b/changelog/Templates/index-template/search.html new file mode 100644 index 000000000..7525f6ae8 --- /dev/null +++ b/changelog/Templates/index-template/search.html @@ -0,0 +1,27 @@ + + + {{> head}} + + {{> header}} + +
+ + +
+ +
+ + {{#query}} + {{^entries}} +

Sorry, nothing found for “{{query}}”

+ {{/entries}} + {{/query}} + + {{#entries}} + {{title}} {{#date}} ·  {{date}}{{/date}} + {{/entries}} + + {{> footer}} + + + \ No newline at end of file diff --git a/changelog/Templates/index-template/sitemap.xml b/changelog/Templates/index-template/sitemap.xml new file mode 100644 index 000000000..be2c41ed0 --- /dev/null +++ b/changelog/Templates/index-template/sitemap.xml @@ -0,0 +1,21 @@ + + + + {{blogURL}} + + + {{blogURL}}/archives/ + + {{#menu}} + {{#isPage}} + + {{blogURL}}{{url}}/ + + {{/isPage}} + {{/menu}} + {{#allEntries}} + + {{blogURL}}{{url}}/ + + {{/allEntries}} + \ No newline at end of file diff --git a/changelog/Templates/index-template/style.css b/changelog/Templates/index-template/style.css new file mode 100644 index 000000000..54c3fb375 --- /dev/null +++ b/changelog/Templates/index-template/style.css @@ -0,0 +1,390 @@ +/* This template tag is replaced by CSS when this file is rendered */ +{{{appCSS}}} + +body { + font: 1.125rem / 1.4 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + word-wrap: break-word; + max-width: 32em; + margin: 0 auto; + padding: 2.5em 1.25em 10em; + color: #333; +} + +/* Text */ + +a {color: inherit;text-decoration: none;padding: 0.25em 0.5em;background: none;margin: -0.25em -0.5em;border-radius: 4px;transition: background 0.2s ease;} +a:hover {background: rgba(0,0,0,0.02);color: #468CC7;} +a:active {opacity: 0.9} + +h1 {font-size: 2.25em;line-height:1.2;} +h2 {font-size: 1.25em;} +h3, h4, h5, h6 {font-size: 1em} + +hr {margin: 1.25em 0;border: 0;border-top: 1px solid #eee;} +br {width: 100%;clear: both;float: none;} + +blockquote {padding: 0 0 0 0.75em;color: #777} + +small, .menu, .caption {color: #9e9e9e;font-weight: 400;} +sup {font-size: 0.83;line-height: 0;vertical-align: super;} + +.entry {position: relative;} +.entry a {text-decoration: underline;} + +.caption {font-size: smaller;} +.caption {max-width: 36rem;display: block;margin: .625em auto 1.25em auto;} + +/* Theme specific styles */ + +#logo {font-weight: bold;display: inline-block;line-height: 1.75} +#logo img {max-width: 8em;max-height:8em;margin-bottom: 0.25em} +#logo img.rounded {border-radius: 50%;margin-left: -1em} + +#logo:hover {opacity: 0.8;background: none;color: inherit;} +#logo:active {opacity: 0.75} + +a.menu {margin-right: 0em;line-height: 1.75} + + +a.row { + display: inline-block; + position: relative; + margin-top: 0.25em; + margin-bottom: 0.25em; + padding-right: 16em; + width: 50vw; + left: 50%; + margin-left: -16.5em; +} + +/* This allows the horizontal rules and full-width links on the index page to fill the entire screen without triggering a scrollbar */ +hr.full { + width: 50vw; + padding-left: 16em; + position: relative; + left: 50%; + margin-left: -16em; +} + +.archive {color: black;line-height: 1.75;margin-bottom: 0} + +input[name=q] { + display: inline-block; + font-size: inherit; + box-sizing: border-box; + width: 70%; + padding: 0.444em 0.666em; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + font-family: inherit; +} + +input[type=submit] { + display: inline-block; + padding: 0.444em 0.666em; + font-size: inherit; + cursor: pointer; + text-align: center; + white-space: nowrap; + border: 1px solid transparent; + border-radius: 4px; + padding-left: 2em; + border: 1px solid #ccc; + background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iaWNvbi1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGlkPSJzZWFyY2giIGQ9Ik03Ljk5LDYuOTI4TDUuODQ3LDQuNzg0YzAuMjg5LTAuNDc2LDAuNDU4LTEuMDMzLDAuNDU4LTEuNjNDNi4zMDUsMS40MTIsNC44OTUsMCwzLjE1MiwwDQoJQzEuNDExLDAsMCwxLjQxMiwwLDMuMTU0YzAsMS43NDEsMS40MTIsMy4xNTEsMy4xNTMsMy4xNTFjMC41OTcsMCwxLjE1NC0wLjE2OSwxLjYzLTAuNDU4bDIuMTQ1LDIuMTQ2TDcuOTksNi45Mjh6IE0xLjIwMywzLjE1NA0KCWMwLjAwMi0xLjA3NywwLjg3NC0xLjk0OSwxLjk1MS0xLjk1MWMxLjA3NiwwLjAwMiwxLjk0OCwwLjg3NCwxLjk0OSwxLjk1MUM1LjEwMSw0LjIzLDQuMjI5LDUuMTAzLDMuMTUzLDUuMTAzDQoJQzIuMDc1LDUuMTAzLDEuMjA1LDQuMjMsMS4yMDMsMy4xNTR6Ii8+DQo8L3N2Zz4=) 0.8em center/0.8em no-repeat; + +} + +input#search:focus { + outline: none; +} + +:-moz-placeholder {color: #ccc;} +::-moz-placeholder {color: #ccc;} +:-ms-input-placeholder {color: #ccc;} +::-webkit-input-placeholder {color: #ccc;} + +a.footnote-ref {margin-left: 0;margin-right: 0;text-decoration: none;} + +/* CODE */ + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + background: rgba(0,0,0,.03); + border-radius: 4px; + font-size: smaller; + line-height: inherit; + margin: 0; +} + +p code { + line-height: 1em; + padding: 2px; + margin-left: -2px; + display: inline-block; +} + +pre code { + display: block;padding: 12px 18px; + margin: 0 0 0 -18px; + background-color: rgba(0,0,0,.02) +} + +/* TABLES */ + +table { + display: block; + width: auto; + overflow: auto; + word-break: normal; + word-break: keep-all; + border-collapse: collapse; + border-spacing: 0; + box-sizing: border-box; + font-size: inherit; + line-height: inherit; +} + +tr {box-sizing: border-box;border-top: 1px solid #ccc;padding: 0} +th, td {box-sizing: border-box;border: 1px solid #ddd;padding: 5px 12px 6px} + +/* LISTS */ + +ul, ol { + margin-left: 0; + padding-left: 0; + list-style-position: outside; + margin-bottom: 1.25em; +} + +ul {list-style: circle;} + +ul ul, ol ul, ol ol, ul ol {margin-left: 1.25em;margin-bottom: 0} + +li {margin: 0} + +/* IMAGES */ + +img {vertical-align: middle;max-width: 100%;height: auto;} + + +/* VIDEOS & tweets */ +/* Only apply vertical margin to direct + descendants, prevents multi margins */ + +iframe {width: 100%;} +.entry > iframe {margin: 1.25em 0!important;} + +/* Small caps */ +.small-caps {} + +/* Double quote (") marks */ +.pull-double{margin-left:-.45em} +.push-double{margin-right:.45em} + +/* Single quote (') marks */ +.pull-single{margin-left:-.20em} +.push-single{margin-right:.20em} + +/* Optical margin alignment for particular letters */ +.pull-T, .pull-V, .pull-W, .pull-Y {margin-left: -0.1em} +.push-T, .push-V, .push-W, .push-Y {margin-right: 0.1em} + +.pull-O, .pull-C, .pull-o, .pull-c {margin-left: -0.06em} +.push-O, .push-C, .push-o, .push-c {margin-right: 0.06em} + +.pull-A {margin-left: -0.04em} +.push-A {margin-right: 0.04em} + +/* Layout tags */ + +.wide.left .caption {margin-left: 22.680412113%} +.wide.right .caption {margin-right: 22.680412113%} + +.right {float: right;} +.left {float: left;} + + +.margin, .inside { + box-sizing: border-box; + width: 29.3333%; +} + +.margin { position: absolute;} + +.left.inside {margin-right: 2em} +.right.inside {margin-left: 2em} + +.margin blockquote {margin: 3px 0;color:#232323;padding: 3px 6px;font-size: smaller;} +.margin blockquote p {margin: 0} + +.margin h1, .margin h2, .margin h3 {margin-top:0} + +.margin img, +.column img {margin-top: 6px} + +.margin p, .inside p {font-style: italic;margin-top: 0} + +.left.margin { + left: -29.3333%; + padding-right: 2em; + text-align: right; +} + +.right.margin { + right: -29.3333%; + padding-left: 2em; +} + +.wide { + width: 158.6666667%; + margin-left: -29.3333333%; + overflow: auto; /* collapse internal margins */ +} + +.wide.left, .wide.right {width: 129.3333333%;float: none;} +.wide.left {margin: 0 0 0 -29.3333333%} +.wide.right {margin: 0 -29.3333333% 0 0} + + +.column { + box-sizing: border-box; + float: left; +} + +.column .caption {margin-bottom: 6px} + +.column.two { + width: 50%; + padding-right: 12px; +} + +.column.three { + width: 33%; + padding-right: 24px; +} + +.column.two + .column.two { + padding: 0 0 0 12px; +} + +.column h1, +.column h2, +.column h3 {margin-bottom: -12px} + +/* The theme used by the syntax highlighting app */ +.hljs {display: block;overflow-x: auto;} +.hljs-comment, .hljs-quote, .hljs-variable {color: #008000;} +.hljs-keyword, .hljs-selector-tag, .hljs-built_in, .hljs-name, .hljs-tag {color: #00f;} +.hljs-string, .hljs-title, .hljs-section, .hljs-attribute, .hljs-literal, .hljs-template-tag, .hljs-template-variable, .hljs-type, .hljs-addition {color: #a31515;} +.hljs-deletion, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-meta {color: #2b91af;} +.hljs-doctag {color: #808080;} +.hljs-attr {color: #f00;} +.hljs-symbol, .hljs-bullet, .hljs-link {color: #00b0e8;} +.hljs-emphasis {font-style: italic;} +.hljs-strong {font-weight: bold;} + + +@media screen and (max-width: 952px) { + + .entry .margin {position: relative;top: auto;left: auto;right: auto;bottom: auto;} + .entry .margin.right {float: right;} + .entry .margin.left {text-align: left;display: block;float: left;} + + .entry .margin .caption, + .entry .margin p {margin-bottom: 6px;text-align: left;} + + .wide, .wide.left, .wide.right {width: 100%;margin: 0} + .wide.left .caption {margin-left: 0} +} + +@media screen and (max-width: 34em) { + + hr.full, a.row {width: 100%;margin-left: 0;margin-right:0;padding-right: 0;padding-left:0;position: relative;left: 0;} + +} + +@media screen and (max-width: 730px) { + + ul, li {margin-left: 24px} + ul ul, ol ul, ol ol, ul ol {margin-left: 0} + .nav .right {clear: both;float: none;margin-top: 3px} + a.search {margin-left: 0} + body {font-size: 1rem;padding: 1rem} + +} + +@media screen and (max-width: 400px) { + body {font-size: 0.9rem;padding: 0.5rem;margin: 0} +} + +/* ───────────────────────────────────────────── + Julep Custom – Channel navigation styles + ------------------------------------------------------------------ */ + +nav.channels{ + margin-top:.5rem; +} + +nav.channels a{ + font-weight:600; + margin-right:1rem; +} + +nav.channels a.stable{ + color:#28a745; +} + +nav.channels a.dev{ + color:#d49144; +} + +/* ───────────────────────────────────────────── + Tag badges for entry pages + ------------------------------------------------------------------ */ +.tag-badges{ + margin-bottom:1rem; +} + +.tag{ + display:inline-block; + font-size:0.75rem; + font-weight:600; + padding:0.2em 0.6em; + border-radius:4px; + margin-right:0.4rem; + text-transform:uppercase; +} + +.tag a{color:#fff;text-decoration:none;} + +.tag.main{background:#28a745;color:#fff;} +.tag.dev{background:#d49144;color:#fff;} + +/* ───────────────────────────────────────────── + Footer styles + ------------------------------------------------------------------ */ +.container{ + width:100%; + max-width:32em; + margin:0 auto; + padding:0 1rem; +} + +.site-footer{ + border-top:1px solid #eee; + padding:2rem 0; + text-align:center; + font-size:.85rem; + color:#9e9e9e; +} + +.site-footer a{color:inherit;text-decoration:none;} +.site-footer a:hover{text-decoration:underline;} \ No newline at end of file diff --git a/changelog/Templates/index-template/tagged.html b/changelog/Templates/index-template/tagged.html new file mode 100644 index 000000000..69c8f9aed --- /dev/null +++ b/changelog/Templates/index-template/tagged.html @@ -0,0 +1,22 @@ + + + {{> head}} + + {{> header}} + +

{{tag}}

+ +
+ + + All posts tagged {{tag}}: + + + {{#entries}} + {{title}} {{#date}} ·  {{date}}{{/date}} + {{/entries}} + + {{> footer}} + + + diff --git a/changelog/dev/2025-06-17.md b/changelog/dev/2025-06-17.md new file mode 100644 index 000000000..a1cc69b3e --- /dev/null +++ b/changelog/dev/2025-06-17.md @@ -0,0 +1,12 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-17 +tags: [dev] +--- + +- Added automated Claude-driven documentation update workflows for PR events +- Added manual workflow dispatch for on-demand documentation updates +- Added automated changelog generation for PRs targeting main and dev branches +- Added changelog synchronization with external Blot blog platform +- Added skip logic with `[skip-claude]` tag to prevent infinite automation loops +- Added changelog templates and infrastructure for automated publishing \ No newline at end of file diff --git a/changelog/dev/2025-06-23.md b/changelog/dev/2025-06-23.md new file mode 100644 index 000000000..c8d688897 --- /dev/null +++ b/changelog/dev/2025-06-23.md @@ -0,0 +1,14 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-23 +tags: [dev] +--- + +## Development Updates + +- Added automated Claude-driven documentation update workflows +- Introduced changelog sync automation with Blot blog platform +- Implemented manual trigger workflows for documentation updates +- Added gating logic to determine when documentation updates are needed +- Created templates for changelog presentation and styling +- Added `include_embeddings` parameter to document APIs for bandwidth optimization \ No newline at end of file diff --git a/changelog/dev/2025-06-25.md b/changelog/dev/2025-06-25.md new file mode 100644 index 000000000..28055dfb8 --- /dev/null +++ b/changelog/dev/2025-06-25.md @@ -0,0 +1,9 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-25 +tags: [dev] +--- + +## Julep AI Changelog - June 25, 2025 + +- Extended `include_embeddings` parameter to document search endpoints for additional bandwidth optimization \ No newline at end of file diff --git a/changelog/dev/2025-06-26.md b/changelog/dev/2025-06-26.md new file mode 100644 index 000000000..a2fd674ab --- /dev/null +++ b/changelog/dev/2025-06-26.md @@ -0,0 +1,11 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-26 +tags: [dev] +--- + +## Julep AI Changelog - June 26, 2025 + +- Added `include_embeddings` parameter to document APIs for bandwidth optimization +- Added JWT allowed skew configuration option for improved token validation flexibility +- Pinned vectorizer worker to version v0.10.5 for improved stability \ No newline at end of file diff --git a/changelog/dev/2025-06-30.md b/changelog/dev/2025-06-30.md new file mode 100644 index 000000000..d76e9094e --- /dev/null +++ b/changelog/dev/2025-06-30.md @@ -0,0 +1,23 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-30 +tags: [dev] +--- + +## Julep AI Changelog - June 30, 2025 + +### Tool Calling Enhancements +- Added comprehensive tool calling functionality in tasks and sessions for enhanced agent capabilities +- Added integration tools conversion to OpenAI-compatible format for better tool interoperability +- Added new tool runner system for improved tool execution and management + +### New API Parameters +- Added prompt step parameters: `tool_choice`, `unwrap`, `auto_run_tools`, and `disable_cache` for granular control +- Added session parameters: `auto_run_tools` and `forward_tool_calls` for enhanced session behavior + +### Anthropic Tool Support +- Added support for new Anthropic tool types: `computer_20241022`, `text_editor_20241022`, and `bash_20241022` + +### Infrastructure & Platform +- Added feature flags integration using Unleash with OpenFeature for controlled feature rollouts +- Refactored prompt steps to integrate with tool runner functionalities for better performance \ No newline at end of file diff --git a/changelog/dev/2025-07-02.md b/changelog/dev/2025-07-02.md new file mode 100644 index 000000000..ca6a095a9 --- /dev/null +++ b/changelog/dev/2025-07-02.md @@ -0,0 +1,17 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-02 +tags: [dev] +--- + +## Julep AI Changelog - July 2, 2025 + +### Tool Calling Updates +- Changed default value of `auto_run_tools` from `true` to `false` in PromptStep for safer defaults +- Fixed tool call prevention when `auto_run_tools` is disabled by passing empty tools list to model +- Added comprehensive test coverage for `auto_run_tools` behavior in both enabled and disabled states + +### API Schema Enhancements +- Renamed `ApiCallDef` to separate `ApiCallDef-Input` and `ApiCallDef-Output` variants for better type safety +- Added new parameter schema definitions: `ParameterSchema-Input`, `ParameterSchema-Output`, and `ParameterSchemaUpdate` +- Added property definition types: `PropertyDefinition-Input`, `PropertyDefinition-Output`, and `PropertyDefinitionUpdate` \ No newline at end of file diff --git a/changelog/dev/2025-07-03.md b/changelog/dev/2025-07-03.md new file mode 100644 index 000000000..86a13a9c1 --- /dev/null +++ b/changelog/dev/2025-07-03.md @@ -0,0 +1,19 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-03 +tags: [dev] +--- + +## Julep AI Changelog - July 3, 2025 + +### Chat API Enhancements +- Added `auto_run_tools` property to ChatInput with default value of `false` +- Added `recall_tools` property to ChatInput with default value of `true` for controlling tool recall +- Implemented automatic tool execution when `auto_run_tools=true` - tools are executed automatically and results fed back to the model +- Added new chat implementation that supports automatic tool calling workflow +- Separated legacy and new chat code for better maintainability + +### API Architecture Improvements +- Refactored `execute_integration` and `execute_system` functions to accept explicit parameters instead of context objects +- Added context-free tool execution capability for use in chat endpoints +- Improved code organization with dedicated auto-tools and legacy directories \ No newline at end of file diff --git a/changelog/dev/2025-07-04.md b/changelog/dev/2025-07-04.md new file mode 100644 index 000000000..bbef47467 --- /dev/null +++ b/changelog/dev/2025-07-04.md @@ -0,0 +1,12 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-04 +tags: [dev] +--- + +## Julep AI Changelog - July 4, 2025 + +### Chat API Enhancements +- Added `recall_tools` property to ChatInput with default value of `true` +- Enhanced chat session control over tool request/response recall behavior +- Improved automatic tool execution workflow with better message history management \ No newline at end of file diff --git a/changelog/dev/2025-07-05.md b/changelog/dev/2025-07-05.md new file mode 100644 index 000000000..c1ff1bc21 --- /dev/null +++ b/changelog/dev/2025-07-05.md @@ -0,0 +1,13 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-05 +tags: [dev] +--- + +## Julep AI Changelog - July 5, 2025 + +### Documentation Enhancements +- Enhanced documentation for automatic tool execution across chat, sessions, and tools +- Added comprehensive examples and usage patterns for `auto_run_tools` and `recall_tools` +- Added documentation for `params_schema` in API call tools with JSON Schema validation +- Updated SDK documentation with new tool integration examples for Python and Node.js \ No newline at end of file diff --git a/changelog/dev/2025-07-08.md b/changelog/dev/2025-07-08.md new file mode 100644 index 000000000..1d79d3bec --- /dev/null +++ b/changelog/dev/2025-07-08.md @@ -0,0 +1,11 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-08 +tags: [dev] +--- + +## Julep AI Changelog - July 8, 2025 + +### Model Additions +- Added gemini-2.5-pro model to LiteLLM configuration +- Added gemini-2.5-flash model to LiteLLM configuration \ No newline at end of file diff --git a/changelog/dev/2025-07-09.md b/changelog/dev/2025-07-09.md new file mode 100644 index 000000000..e0465aae1 --- /dev/null +++ b/changelog/dev/2025-07-09.md @@ -0,0 +1,18 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-09 +tags: [dev] +--- + +## Julep AI Changelog - July 9, 2025 + +### Features +- Enhanced LLM client to support custom API keys from user secrets +- Added model name conversion utility for LiteLLM integration +- Added automated workflow to sync model documentation from configuration +- Enhanced supported models page with transparent feature comparison tables +- Added comprehensive model capability tracking (context window, max output, tool calling, vision, audio, caching, cost tiers) + +### Bug Fixes +- Fixed cartesian product bug in get_task query that caused duplicate tools +- Re-enabled model validation in session chat rendering \ No newline at end of file diff --git a/changelog/dev/2025-07-31.md b/changelog/dev/2025-07-31.md new file mode 100644 index 000000000..eab0da4c7 --- /dev/null +++ b/changelog/dev/2025-07-31.md @@ -0,0 +1,8 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-31 +tags: [dev] +--- + +- Added secrets support to task definitions for secure access in task expressions +- Removed support for claude-3-sonnet model from LLM proxy configuration \ No newline at end of file diff --git a/changelog/dev/2025-08-06.md b/changelog/dev/2025-08-06.md new file mode 100644 index 000000000..d2ba00494 --- /dev/null +++ b/changelog/dev/2025-08-06.md @@ -0,0 +1,7 @@ +--- +title: "Julep AI Changelog" +date: 2025-08-06 +tags: [dev] +--- + +- Added gemini-2.5-pro-preview-06-05 model to LLM proxy configuration \ No newline at end of file diff --git a/changelog/dev/2025-08-07.md b/changelog/dev/2025-08-07.md new file mode 100644 index 000000000..8fee1f2fb --- /dev/null +++ b/changelog/dev/2025-08-07.md @@ -0,0 +1,11 @@ +--- +title: "Julep AI Changelog" +date: 2025-08-07 +tags: [dev] +--- + +- Added Llama model cost multiplier with LLAMA_MODEL_MULTIPLIER environment variable +- Enhanced usage tracking with automatic Llama model detection +- Deprecated discontinued Groq models (llama-3.1-70b, mistral-saba-24b, qwen-qwq-32b) +- Migrated Cerebras models to OpenRouter endpoints +- Updated model configurations in LLM proxy \ No newline at end of file diff --git a/changelog/dev/2025-08-08.md b/changelog/dev/2025-08-08.md new file mode 100644 index 000000000..9387ae8b5 --- /dev/null +++ b/changelog/dev/2025-08-08.md @@ -0,0 +1,12 @@ +--- +title: "Julep AI Changelog" +date: 2025-08-08 +tags: [dev] +--- + +- Migrated Anthropic models from direct API to AWS Bedrock endpoints +- Updated LiteLLM version from 1.57.0 to 1.74.9 for improved compatibility +- Added Bedrock API key support and AWS region configuration +- Re-enabled claude-3-sonnet model via Bedrock integration +- Added new claude-opus-4-1 model support +- Updated dependency versions for enhanced Bedrock integration \ No newline at end of file diff --git a/changelog/dev/2025-08-15.md b/changelog/dev/2025-08-15.md new file mode 100644 index 000000000..89059c2f9 --- /dev/null +++ b/changelog/dev/2025-08-15.md @@ -0,0 +1,9 @@ +--- +title: "Julep AI Changelog" +date: 2025-08-15 +tags: [dev] +--- + +- Added support for GPT-5 model family with 8 variants (gpt-5, gpt-5-mini, gpt-5-nano) +- Added comprehensive GPT-5 documentation including capabilities, pricing, and parameters +- Added GPT-5 models to LiteLLM proxy configuration with appropriate tags and API keys \ No newline at end of file diff --git a/changelog/stable (main)/2025-01-31.md b/changelog/stable (main)/2025-01-31.md new file mode 100644 index 000000000..e7c0e91b6 --- /dev/null +++ b/changelog/stable (main)/2025-01-31.md @@ -0,0 +1,16 @@ +--- +title: "Julep AI Changelog" +date: 2025-01-31 +tags: [main] +--- + +- **Major Feature**: Added experimental CLI with comprehensive management commands for agents and tasks ✨ +- **Minor Feature**: Introduced new import functionality for agents in CLI ✨ +- **Critical Fix**: Replaced `GITHUB_ENV` with `GITHUB_OUTPUT` for environment variable handling 🔧 +- **Minor Fix**: Fixed CLI documentation by removing `pipx` installation 🔧 +- **Major Enhancement**: Refactored task execution workflow for modularity 📈 +- **Minor Enhancement**: Improved documentation with updated quickstart and lifecycle guides 📈 +- **Key Performance**: Enhanced CLI with rich text and progress indicators 🚀 +- **Secondary Performance**: Reduced API response times by 15% 🚀 +- **Critical Breaking**: Removed `previous_inputs` parameter in workflows 💥 +- **Other Breaking**: Deprecated legacy API (v1) to be removed next month 💥 diff --git a/changelog/stable (main)/2025-02-14.md b/changelog/stable (main)/2025-02-14.md new file mode 100644 index 000000000..3d0a10c6b --- /dev/null +++ b/changelog/stable (main)/2025-02-14.md @@ -0,0 +1,16 @@ +--- +title: "Julep AI Changelog" +date: 2025-02-14 +tags: [main] +--- + +- **Major Feature**: Default `parallelism` in MapReduce now set to `task_max_parallelism` for optimized processing ✨ +- **Minor Feature**: Backward compatibility support added for older syntax in `base_evaluate` ➕ +- **Critical Fix**: Resolved data inconsistencies in subworkflow validations for smoother operations 🔧 +- **Minor Fix**: Addressed hotfixes in `workflows.py` for robust workflow handling 🔧 +- **Major Enhancement**: Introduced `backwards_compatibility` to refine evaluation logic 📈 +- **Minor Enhancement**: Enhanced CLI documentation and guides for improved user understanding 📈 +- **Key Performance**: Implemented Prometheus metrics for advanced monitoring and streamlined performance 🚀 +- **Secondary Performance**: Enhanced task evaluation functions with efficient expression handling 🚀 +- **Critical Breaking**: Deprecated legacy API with a migration guide for users 💥 +- **Other Breaking**: Updated agent settings to be untyped, affecting configuration handling 💥 diff --git a/changelog/stable (main)/2025-04-11.md b/changelog/stable (main)/2025-04-11.md new file mode 100644 index 000000000..09bb0c3b7 --- /dev/null +++ b/changelog/stable (main)/2025-04-11.md @@ -0,0 +1,16 @@ +--- +title: "Julep AI Changelog" +date: 2025-04-11 +tags: [main] +--- + +- **Major Feature**: Introduced support for Gemini models in `litellm-config.yaml` ✨ +- **Minor Feature**: Added environment configuration for Open Responses API ✨ +- **Critical Fix**: Corrected cardinality violations in SQL queries across agents-api 🔧 +- **Minor Fix**: Resolved documentation formatting issues in 21 files 🔧 +- **Minor Fix**: `get_live_urls` now uses `asyncio.to_thread` to avoid blocking the event loop 🔧 +- **Major Enhancement**: Refactored API calls to include developer ID for better tracking 📈 +- **Minor Enhancement**: Improved Gunicorn worker configurability via environment variables 📈 +- **Secondary Performance**: Integrated OpenAPI model and TyeSpecs for expanded functionality 🚀 +- **Critical Breaking**: Replaced Postgraphile with Hasura for GraphQL services 💥 +- **Other Breaking**: Updated Docker configurations to adhere to new deployment requirements 💥 diff --git a/changelog/stable (main)/2025-05-09.md b/changelog/stable (main)/2025-05-09.md new file mode 100644 index 000000000..f18cb8897 --- /dev/null +++ b/changelog/stable (main)/2025-05-09.md @@ -0,0 +1,8 @@ +--- +title: "Julep AI Changelog" +date: 2025-05-09 +tags: [main] +--- + +- **Minor Docs**: Added links to cookbooks for Quick, Community, and Industry pages. +- **Minor Docs**: Updated cookbook links to use absolute GitHub URLs. diff --git a/changelog/stable (main)/2025-05-21.md b/changelog/stable (main)/2025-05-21.md new file mode 100644 index 000000000..a73dc52f2 --- /dev/null +++ b/changelog/stable (main)/2025-05-21.md @@ -0,0 +1,38 @@ +--- +title: "Julep AI Changelog" +date: 2025-05-21 +tags: [main] +--- + + + +- **Major Feature**: Introduced first-class **Projects**! + Adds `projects` table, association tables, CRUD endpoints, canonical-name support, and project-aware validation across agents, users, files, and sessions +- **Major Feature**: Landed encrypted **Secrets Vault** with full CRUD API, master-key encryption, and transparent secret-reference substitution in tool & API definitions ([#1312](https://github.com/julep-ai/julep/pull/1312)) + + + +- **Enhancement**: Added **custom-key aliasing** for secrets plus numerous workflow & cost-tracking refactors ([#1356](https://github.com/julep-ai/julep/pull/1356)) +- **Enhancement**: Added `decrypt` flag to secrets queries—retrieve values encrypted or in plaintext as needed ([#1369](https://github.com/julep-ai/julep/pull/1369)) + + + +- **Enhancement**: Implemented **monthly cost aggregation** + middleware that enforces free-tier usage caps and active-developer checks ([#1351](https://github.com/julep-ai/julep/pull/1351)) + + + +- **Fix**: Re-wrote project-resource SQL views for accurate mapping and removed weak default secrets key in production ([#1362](https://github.com/julep-ai/julep/pull/1362)) +- **Fix**: Hardened secrets endpoints & models, fixed insert/delete logic, and expanded expression-evaluator edge-cases ([#1343](https://github.com/julep-ai/julep/pull/1343)) + + + +- **Enhancement**: New GitHub Actions workflow automatically translates README files via Anthropic Claude, replacing the old Python job ([#1433](https://github.com/julep-ai/julep/pull/1433)) + +- **Other Breaking**: Removed fallback for `DEMO_*` placeholder credentials 💥 +- **Minor Docs**: Updated docs and cookbooks to remove `DEMO_API_KEY` references. +- **Minor Docs**: Updated footer use-case links to the new `cookbooks/advanced` paths. + +> _This list covers the most significant code-related PRs merged to **main** on 21 May 2025. +> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-04-21)._ + +--- diff --git a/changelog/stable (main)/2025-06-23.md b/changelog/stable (main)/2025-06-23.md new file mode 100644 index 000000000..5507973ce --- /dev/null +++ b/changelog/stable (main)/2025-06-23.md @@ -0,0 +1,34 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-23 +tags: [main] +--- + + + +- **Major Feature**: Added **metadata support** to chat functionality - enables dynamic system template variables at message level +- **Major Feature**: Extended **agent and task schemas** with project fields and secret references for enhanced configuration management +- **Major Feature**: Added **encrypted API keys infrastructure** with PostgreSQL storage, AES256 encryption, and soft delete functionality +- **Major Feature**: Added **comprehensive system templates documentation** covering template hierarchy, variables, Jinja2 features, and best practices + + + +- **Enhancement**: Refactored **analytics service** setup - switched to official Metabase image with dedicated PostgreSQL database +- **Enhancement**: Added **new LLM model configurations** - extended Groq support with Llama 4, DeepSeek, and other latest models +- **Enhancement**: Added **optional trigram search** capabilities for improved document search performance + + + +- **Documentation**: Updated chat API docs with metadata parameter examples and usage patterns +- **Documentation**: Enhanced agent and session documentation with system template references +- **Documentation**: Added advanced guide for system templates with debugging techniques and best practices + + + +- **Enhancement**: Code formatting improvements with consistent multi-line type annotations across autogenerated models +- **Enhancement**: Added comprehensive test coverage for chat metadata functionality with edge case handling + +> _This list covers the most significant code-related changes merged to **main** on 23 June 2025. +> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-05-23)._ + +--- \ No newline at end of file diff --git a/changelog/stable (main)/2025-06-30.md b/changelog/stable (main)/2025-06-30.md new file mode 100644 index 000000000..1e4185922 --- /dev/null +++ b/changelog/stable (main)/2025-06-30.md @@ -0,0 +1,13 @@ +--- +title: "Julep AI Changelog" +date: 2025-06-30 +tags: [main] +--- + +# Changes for June 30, 2025 + +- Added IDE Integration documentation for Context7 MCP server access +- Enhanced integrations documentation with visual slider component and new asset logos +- Restructured documentation navigation from versions to tabs layout +- Added custom CSS styling for documentation CTA buttons +- Fixed JSON serialization mode in tool creation API \ No newline at end of file diff --git a/changelog/stable (main)/2025-07-04.md b/changelog/stable (main)/2025-07-04.md new file mode 100644 index 000000000..7fba9d72e --- /dev/null +++ b/changelog/stable (main)/2025-07-04.md @@ -0,0 +1,18 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-04 +tags: [main] +--- + +# Changes for July 4, 2025 + +- Added automatic tool execution with `auto_run_tools` parameter for enhanced agent workflows +- Added tool recall control with `recall_tools` parameter for better conversation management +- Implemented OpenAI-compatible tool format conversion for improved integration compatibility +- Added support for new Anthropic tool types: computer, text editor, and bash tools +- Enhanced tool calling system with dedicated tool runner for better performance +- Added feature flags integration using Unleash for controlled feature rollouts +- Improved API schema with separate input/output type definitions for better type safety +- Enhanced prompt step parameters with tool choice, unwrap, and caching control options +- Refactored chat API with auto-tools support and legacy code separation +- Added comprehensive tool execution capabilities for both tasks and sessions \ No newline at end of file diff --git a/changelog/stable (main)/2025-07-05.md b/changelog/stable (main)/2025-07-05.md new file mode 100644 index 000000000..2e78221e0 --- /dev/null +++ b/changelog/stable (main)/2025-07-05.md @@ -0,0 +1,18 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-05 +tags: [main] +--- + +# Changes for July 5, 2025 + +- Added feature flags infrastructure with Unleash integration for controlled feature rollouts +- Added auto-tools chat implementation with automatic tool execution capabilities +- Added enhanced tool runner utilities for improved tool execution performance +- Added parameter schema support for API call tools with JSON Schema validation +- Added `auto_run_tools` and `recall_tools` fields to chat input for better control +- Changed `auto_run_tools` default from `true` to `false` in prompt step definitions +- Enhanced tool execution system with support for all tool types +- Added modular architecture separating legacy and auto-tools implementations +- Added comprehensive test coverage for new auto-tools functionality +- Fixed tool metadata query column alias and improved error handling \ No newline at end of file diff --git a/changelog/stable (main)/2025-07-08.md b/changelog/stable (main)/2025-07-08.md new file mode 100644 index 000000000..4737da28f --- /dev/null +++ b/changelog/stable (main)/2025-07-08.md @@ -0,0 +1,14 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-08 +tags: [main] +--- + +# Changes for July 8, 2025 + +- Added gemini-2.5-pro model to LiteLLM configuration with paid tier access +- Added gemini-2.5-flash model to LiteLLM configuration with paid tier access +- Added comprehensive customer support tutorial showing how to build RAG-powered AI assistants +- Added new architecture diagram SVG for improved system visualization +- Enhanced documentation structure with new tutorial navigation +- Updated architecture deep-dive documentation with latest system design \ No newline at end of file diff --git a/changelog/stable (main)/2025-07-18.md b/changelog/stable (main)/2025-07-18.md new file mode 100644 index 000000000..19918775e --- /dev/null +++ b/changelog/stable (main)/2025-07-18.md @@ -0,0 +1,18 @@ +--- +title: "Julep AI Changelog" +date: 2025-07-18 +tags: [main] +--- + +## Julep AI Changelog - July 18, 2025 + +### Features +- Enhanced LLM client to support custom API keys from user secrets +- Added model name conversion utility for LiteLLM integration +- Added automated workflow to sync model documentation from configuration +- Enhanced supported models page with transparent feature comparison tables +- Added comprehensive model capability tracking (context window, max output, tool calling, vision, audio, caching, cost tiers) + +### Bug Fixes +- Fixed cartesian product bug in get_task query that caused duplicate tools +- Re-enabled model validation in session chat rendering \ No newline at end of file diff --git a/cli/src/julep_cli/run.py b/cli/src/julep_cli/run.py deleted file mode 100644 index 1141d84f2..000000000 --- a/cli/src/julep_cli/run.py +++ /dev/null @@ -1,81 +0,0 @@ -import json -from pathlib import Path -from typing import Annotated -from uuid import UUID - -import typer - -from .app import app, console, error_console -from .executions import create_execution -from .logs import logs -from .utils import get_julep_client - - -@app.command() -def run( - task: Annotated[ - UUID, - typer.Option( - "--task", - "-t", - help="ID of the task to execute", - ), - ], - input: Annotated[ - str | None, - typer.Option( - "--input", - help="JSON string representing the input for the task (defaults to {})", - ), - ] = None, - input_file: Annotated[ - Path | None, - typer.Option( - "--input-file", - help="Path to a file containing the input for the task", - ), - ] = None, - wait: Annotated[ - bool, - typer.Option( - "--wait", - help="Wait for the task to complete before exiting, stream logs to stdout", - ), - ] = False, -): - """Run a defined task with specified input parameters""" - - # Parse input - task_input = {} - if input and input_file: - msg = "Cannot specify both --input and --input-file" - raise typer.BadParameter(msg) - - if input: - try: - task_input = json.loads(input) - except json.JSONDecodeError: - msg = "Input must be valid JSON" - raise typer.BadParameter(msg) - elif input_file: - try: - with open(input_file) as f: - task_input = json.load(f) - except (json.JSONDecodeError, FileNotFoundError) as e: - msg = f"Error reading input file: {e}" - raise typer.BadParameter(msg) - - # TODO: Implement task execution logic - typer.echo(f"Running task '{task}' with input: {task_input}") - - client = get_julep_client() - - try: - execution = create_execution(client, str(task), task_input) - console.print(f"Execution created successfully! Execution ID: {execution.id}") - except Exception as e: - error_console.print(f"Error creating execution: {e}", highlight=True) - raise typer.Exit(1) - - if wait: - logs(execution_id=execution.id, tailing=True) diff --git a/cli/tests/test_auth.py b/cli/tests/test_auth.py deleted file mode 100644 index 51c0c8fd6..000000000 --- a/cli/tests/test_auth.py +++ /dev/null @@ -1,75 +0,0 @@ -from pathlib import Path -from unittest.mock import patch - -from julep_cli import app -from typer.testing import CliRunner -from ward import test - - -def create_runner(env: dict | None = None): - env = env or {} - return CliRunner(env=env) - - -mock_config_dir = Path("/tmp/mock/.config/julep") - - -@test("auth command should save API key when provided via command line") -def _(): - test_api_key = "test-api-key-123" - - runner = create_runner() - - with ( - patch("julep_cli.CONFIG_DIR", mock_config_dir), - patch("julep_cli.save_config") as mock_save, - ): - result = runner.invoke(app, ["auth", "--api-key", test_api_key]) - - assert result.exit_code == 0 - assert "Successfully authenticated!" in result.stdout - mock_save.assert_called_once_with({"api_key": test_api_key}) - - -@test("auth command should use API key from environment if not provided") -def _(): - test_api_key = "test-env-api-key-456" - - runner = create_runner({"JULEP_API_KEY": test_api_key}) - - with ( - patch("julep_cli.CONFIG_DIR", mock_config_dir), - patch("julep_cli.save_config") as mock_save, - ): - result = runner.invoke(app, ["auth"]) - - assert result.exit_code == 0 - assert "Successfully authenticated!" in result.stdout - mock_save.assert_called_once_with({"api_key": test_api_key}) - - -@test("auth command should fail when no API key is provided") -def _(): - runner = create_runner() - - result = runner.invoke(app, ["auth"]) - - assert result.exit_code == 1 - assert "No API key provided" in result.stdout - - -@test("auth command should prompt for API key if not provided and not in env") -def _(): - test_api_key = "test-prompt-key-789" - - runner = create_runner() - - with ( - patch("julep_cli.CONFIG_DIR", mock_config_dir), - patch("julep_cli.save_config") as mock_save, - ): - result = runner.invoke(app, ["auth"], input=f"{test_api_key}\n") - - assert result.exit_code == 0 - assert "Successfully authenticated!" in result.stdout - mock_save.assert_called_once_with({"api_key": test_api_key}) diff --git a/cli/uv.lock b/cli/uv.lock deleted file mode 100644 index 4be45ee24..000000000 --- a/cli/uv.lock +++ /dev/null @@ -1,2599 +0,0 @@ -version = 1 -requires-python = ">=3.11, <3.13" -resolution-markers = [ - "python_full_version >= '3.12'", - "python_full_version < '3.12'", -] - -[[package]] -name = "aiohappyeyeballs" -version = "2.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/08/07/508f9ebba367fc3370162e53a3cfd12f5652ad79f0e0bfdf9f9847c6f159/aiohappyeyeballs-2.4.6.tar.gz", hash = "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0", size = 21726 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4c/03fb05f56551828ec67ceb3665e5dc51638042d204983a03b0a1541475b6/aiohappyeyeballs-2.4.6-py3-none-any.whl", hash = "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", size = 14543 }, -] - -[[package]] -name = "aiohttp" -version = "3.11.13" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohappyeyeballs" }, - { name = "aiosignal" }, - { name = "attrs" }, - { name = "frozenlist" }, - { name = "multidict" }, - { name = "propcache" }, - { name = "yarl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b3/3f/c4a667d184c69667b8f16e0704127efc5f1e60577df429382b4d95fd381e/aiohttp-3.11.13.tar.gz", hash = "sha256:8ce789231404ca8fff7f693cdce398abf6d90fd5dae2b1847477196c243b1fbb", size = 7674284 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/93/8e012ae31ff1bda5d43565d6f9e0bad325ba6f3f2d78f298bd39645be8a3/aiohttp-3.11.13-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b35aab22419ba45f8fc290d0010898de7a6ad131e468ffa3922b1b0b24e9d2e", size = 709013 }, - { url = "https://files.pythonhosted.org/packages/d8/be/fc7c436678ffe547d038319add8e44fd5e33090158752e5c480aed51a8d0/aiohttp-3.11.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81cba651db8795f688c589dd11a4fbb834f2e59bbf9bb50908be36e416dc760", size = 468896 }, - { url = "https://files.pythonhosted.org/packages/d9/1c/56906111ac9d4dab4baab43c89d35d5de1dbb38085150257895005b08bef/aiohttp-3.11.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f55d0f242c2d1fcdf802c8fabcff25a9d85550a4cf3a9cf5f2a6b5742c992839", size = 455968 }, - { url = "https://files.pythonhosted.org/packages/ba/16/229d36ed27c2bb350320364efb56f906af194616cc15fc5d87f3ef21dbef/aiohttp-3.11.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bea08a6aad9195ac9b1be6b0c7e8a702a9cec57ce6b713698b4a5afa9c2e33", size = 1686082 }, - { url = "https://files.pythonhosted.org/packages/3a/44/78fd174509c56028672e5dfef886569cfa1fced0c5fd5c4480426db19ac9/aiohttp-3.11.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6070bcf2173a7146bb9e4735b3c62b2accba459a6eae44deea0eb23e0035a23", size = 1744056 }, - { url = "https://files.pythonhosted.org/packages/a3/11/325145c6dce8124b5caadbf763e908f2779c14bb0bc5868744d1e5cb9cb7/aiohttp-3.11.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:718d5deb678bc4b9d575bfe83a59270861417da071ab44542d0fcb6faa686636", size = 1785810 }, - { url = "https://files.pythonhosted.org/packages/95/de/faba18a0af09969e10eb89fdbd4cb968bea95e75449a7fa944d4de7d1d2f/aiohttp-3.11.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f6b2c5b4a4d22b8fb2c92ac98e0747f5f195e8e9448bfb7404cd77e7bfa243f", size = 1675540 }, - { url = "https://files.pythonhosted.org/packages/ea/53/0437c46e960b79ae3b1ff74c1ec12f04bf4f425bd349c8807acb38aae3d7/aiohttp-3.11.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:747ec46290107a490d21fe1ff4183bef8022b848cf9516970cb31de6d9460088", size = 1620210 }, - { url = "https://files.pythonhosted.org/packages/04/2f/31769ed8e29cc22baaa4005bd2749a7fd0f61ad0f86024d38dff8e394cf6/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:01816f07c9cc9d80f858615b1365f8319d6a5fd079cd668cc58e15aafbc76a54", size = 1654399 }, - { url = "https://files.pythonhosted.org/packages/b0/24/acb24571815b9a86a8261577c920fd84f819178c02a75b05b1a0d7ab83fb/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a08ad95fcbd595803e0c4280671d808eb170a64ca3f2980dd38e7a72ed8d1fea", size = 1660424 }, - { url = "https://files.pythonhosted.org/packages/91/45/30ca0c3ba5bbf7592eee7489eae30437736f7ff912eaa04cfdcf74edca8c/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c97be90d70f7db3aa041d720bfb95f4869d6063fcdf2bb8333764d97e319b7d0", size = 1650415 }, - { url = "https://files.pythonhosted.org/packages/86/8d/4d887df5e732cc70349243c2c9784911979e7bd71c06f9e7717b8a896f75/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ab915a57c65f7a29353c8014ac4be685c8e4a19e792a79fe133a8e101111438e", size = 1733292 }, - { url = "https://files.pythonhosted.org/packages/40/c9/bd950dac0a4c84d44d8da8d6e0f9c9511d45e02cf908a4e1fca591f46a25/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:35cda4e07f5e058a723436c4d2b7ba2124ab4e0aa49e6325aed5896507a8a42e", size = 1755536 }, - { url = "https://files.pythonhosted.org/packages/32/04/aafeda6b4ed3693a44bb89eae002ebaa74f88b2265a7e68f8a31c33330f5/aiohttp-3.11.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:af55314407714fe77a68a9ccaab90fdb5deb57342585fd4a3a8102b6d4370080", size = 1693126 }, - { url = "https://files.pythonhosted.org/packages/a1/4f/67729187e884b0f002a0317d2cc7962a5a0416cadc95ea88ba92477290d9/aiohttp-3.11.13-cp311-cp311-win32.whl", hash = "sha256:42d689a5c0a0c357018993e471893e939f555e302313d5c61dfc566c2cad6185", size = 416800 }, - { url = "https://files.pythonhosted.org/packages/29/23/d98d491ca073ee92cc6a741be97b6b097fb06dacc5f95c0c9350787db549/aiohttp-3.11.13-cp311-cp311-win_amd64.whl", hash = "sha256:b73a2b139782a07658fbf170fe4bcdf70fc597fae5ffe75e5b67674c27434a9f", size = 442891 }, - { url = "https://files.pythonhosted.org/packages/9a/a9/6657664a55f78db8767e396cc9723782ed3311eb57704b0a5dacfa731916/aiohttp-3.11.13-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2eabb269dc3852537d57589b36d7f7362e57d1ece308842ef44d9830d2dc3c90", size = 705054 }, - { url = "https://files.pythonhosted.org/packages/3b/06/f7df1fe062d16422f70af5065b76264f40b382605cf7477fa70553a9c9c1/aiohttp-3.11.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b77ee42addbb1c36d35aca55e8cc6d0958f8419e458bb70888d8c69a4ca833d", size = 464440 }, - { url = "https://files.pythonhosted.org/packages/22/3a/8773ea866735754004d9f79e501fe988bdd56cfac7fdecbc8de17fc093eb/aiohttp-3.11.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55789e93c5ed71832e7fac868167276beadf9877b85697020c46e9a75471f55f", size = 456394 }, - { url = "https://files.pythonhosted.org/packages/7f/61/8e2f2af2327e8e475a2b0890f15ef0bbfd117e321cce1e1ed210df81bbac/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c929f9a7249a11e4aa5c157091cfad7f49cc6b13f4eecf9b747104befd9f56f2", size = 1682752 }, - { url = "https://files.pythonhosted.org/packages/24/ed/84fce816bc8da39aa3f6c1196fe26e47065fea882b1a67a808282029c079/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d33851d85537bbf0f6291ddc97926a754c8f041af759e0aa0230fe939168852b", size = 1737375 }, - { url = "https://files.pythonhosted.org/packages/d9/de/35a5ba9e3d21ebfda1ebbe66f6cc5cbb4d3ff9bd6a03e5e8a788954f8f27/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9229d8613bd8401182868fe95688f7581673e1c18ff78855671a4b8284f47bcb", size = 1793660 }, - { url = "https://files.pythonhosted.org/packages/ff/fe/0f650a8c7c72c8a07edf8ab164786f936668acd71786dd5885fc4b1ca563/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669dd33f028e54fe4c96576f406ebb242ba534dd3a981ce009961bf49960f117", size = 1692233 }, - { url = "https://files.pythonhosted.org/packages/a8/20/185378b3483f968c6303aafe1e33b0da0d902db40731b2b2b2680a631131/aiohttp-3.11.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c1b20a1ace54af7db1f95af85da530fe97407d9063b7aaf9ce6a32f44730778", size = 1619708 }, - { url = "https://files.pythonhosted.org/packages/a4/f9/d9c181750980b17e1e13e522d7e82a8d08d3d28a2249f99207ef5d8d738f/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5724cc77f4e648362ebbb49bdecb9e2b86d9b172c68a295263fa072e679ee69d", size = 1641802 }, - { url = "https://files.pythonhosted.org/packages/50/c7/1cb46b72b1788710343b6e59eaab9642bd2422f2d87ede18b1996e0aed8f/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:aa36c35e94ecdb478246dd60db12aba57cfcd0abcad43c927a8876f25734d496", size = 1684678 }, - { url = "https://files.pythonhosted.org/packages/71/87/89b979391de840c5d7c34e78e1148cc731b8aafa84b6a51d02f44b4c66e2/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9b5b37c863ad5b0892cc7a4ceb1e435e5e6acd3f2f8d3e11fa56f08d3c67b820", size = 1646921 }, - { url = "https://files.pythonhosted.org/packages/a7/db/a463700ac85b72f8cf68093e988538faaf4e865e3150aa165cf80ee29d6e/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e06cf4852ce8c4442a59bae5a3ea01162b8fcb49ab438d8548b8dc79375dad8a", size = 1702493 }, - { url = "https://files.pythonhosted.org/packages/b8/32/1084e65da3adfb08c7e1b3e94f3e4ded8bd707dee265a412bc377b7cd000/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5194143927e494616e335d074e77a5dac7cd353a04755330c9adc984ac5a628e", size = 1735004 }, - { url = "https://files.pythonhosted.org/packages/a0/bb/a634cbdd97ce5d05c2054a9a35bfc32792d7e4f69d600ad7e820571d095b/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:afcb6b275c2d2ba5d8418bf30a9654fa978b4f819c2e8db6311b3525c86fe637", size = 1694964 }, - { url = "https://files.pythonhosted.org/packages/fd/cf/7d29db4e5c28ec316e5d2ac9ac9df0e2e278e9ea910e5c4205b9b64c2c42/aiohttp-3.11.13-cp312-cp312-win32.whl", hash = "sha256:7104d5b3943c6351d1ad7027d90bdd0ea002903e9f610735ac99df3b81f102ee", size = 411746 }, - { url = "https://files.pythonhosted.org/packages/65/a9/13e69ad4fd62104ebd94617f9f2be58231b50bb1e6bac114f024303ac23b/aiohttp-3.11.13-cp312-cp312-win_amd64.whl", hash = "sha256:47dc018b1b220c48089b5b9382fbab94db35bef2fa192995be22cbad3c5730c8", size = 438078 }, -] - -[[package]] -name = "aiohttp-jinja2" -version = "1.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "jinja2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e6/39/da5a94dd89b1af7241fb7fc99ae4e73505b5f898b540b6aba6dc7afe600e/aiohttp-jinja2-1.6.tar.gz", hash = "sha256:a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2", size = 53057 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/90/65238d4246307195411b87a07d03539049819b022c01bcc773826f600138/aiohttp_jinja2-1.6-py3-none-any.whl", hash = "sha256:0df405ee6ad1b58e5a068a105407dc7dcc1704544c559f1938babde954f945c7", size = 11736 }, -] - -[[package]] -name = "aiosignal" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frozenlist" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, -] - -[[package]] -name = "altgraph" -version = "0.17.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/a8/7145824cf0b9e3c28046520480f207df47e927df83aa9555fb47f8505922/altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406", size = 48418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/3f/3bc3f1d83f6e4a7fcb834d3720544ca597590425be5ba9db032b2bf322a2/altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff", size = 21212 }, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, -] - -[[package]] -name = "antiorm" -version = "1.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/f8/71baa4824d9666c1be51d117119579a97f461ddbded48b2e01a6ad0554b5/antiorm-1.2.1.tar.gz", hash = "sha256:96eb1841ce5163db4cf1dc13f4499ec2d7cffc190cf724b78ffdd3e6b7c4ff93", size = 171953 } - -[[package]] -name = "anyio" -version = "4.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/73/199a98fc2dae33535d6b8e8e6ec01f8c1d76c9adb096c6b7d64823038cde/anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a", size = 181126 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a", size = 96041 }, -] - -[[package]] -name = "appnope" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, -] - -[[package]] -name = "argon2-cffi" -version = "23.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argon2-cffi-bindings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, -] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, -] - -[[package]] -name = "arrow" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, - { name = "types-python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, -] - -[[package]] -name = "asttokens" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, -] - -[[package]] -name = "async-lru" -version = "2.0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/e2/2b4651eff771f6fd900d233e175ddc5e2be502c7eb62c0c42f975c6d36cd/async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627", size = 10019 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/9f/3c3503693386c4b0f245eaf5ca6198e3b28879ca0a40bde6b0e319793453/async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224", size = 6111 }, -] - -[[package]] -name = "attrs" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/49/7c/fdf464bcc51d23881d110abd74b512a42b3d5d376a55a831b44c603ae17f/attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", size = 810562 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a", size = 63152 }, -] - -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, -] - -[[package]] -name = "beartype" -version = "0.20.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/48/fe1177f4272a1bc344f3371414aa5b76e19c30d7280d711ce90c5335a6f5/beartype-0.20.0.tar.gz", hash = "sha256:599ecc86b88549bcb6d1af626f44d85ffbb9151ace5d7f9f3b493dce2ffee529", size = 1390635 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ce/9cf60b72e3fbd36a6dd16e31ecbe9ae137a8ead77cb24a5f75302adfc9a9/beartype-0.20.0-py3-none-any.whl", hash = "sha256:090d10e3540b3fca209a0ab5f1c15f9652a075da0a7249c2e6713011e9e5f6ef", size = 1139097 }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.13.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f0/3c/adaf39ce1fb4afdd21b611e3d530b183bb7759c9b673d60db0e347fd4439/beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", size = 619516 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16", size = 186015 }, -] - -[[package]] -name = "bleach" -version = "6.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, -] - -[package.optional-dependencies] -css = [ - { name = "tinycss2" }, -] - -[[package]] -name = "certifi" -version = "2025.1.31" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, -] - -[[package]] -name = "click" -version = "8.1.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, -] - -[[package]] -name = "click-completion" -version = "0.5.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "jinja2" }, - { name = "shellingham" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/93/18/74e2542defdda23b021b12b835b7abbd0fc55896aa8d77af280ad65aa406/click-completion-0.5.2.tar.gz", hash = "sha256:5bf816b81367e638a190b6e91b50779007d14301b3f9f3145d68e3cade7bce86", size = 10019 } - -[[package]] -name = "click-default-group" -version = "1.2.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1d/ce/edb087fb53de63dad3b36408ca30368f438738098e668b78c87f93cd41df/click_default_group-1.2.4.tar.gz", hash = "sha256:eb3f3c99ec0d456ca6cd2a7f08f7d4e91771bef51b01bdd9580cc6450fe1251e", size = 3505 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/1a/aff8bb287a4b1400f69e09a53bd65de96aa5cee5691925b38731c67fc695/click_default_group-1.2.4-py2.py3-none-any.whl", hash = "sha256:9b60486923720e7fc61731bdb32b617039aba820e22e1c88766b1125592eaa5f", size = 4123 }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "comm" -version = "0.2.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, -] - -[[package]] -name = "cucumber-tag-expressions" -version = "4.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/0f/980a044d0592a49460199b117880de1cbbb8e46d9c385c772bf87aa537ef/cucumber-tag-expressions-4.1.0.tar.gz", hash = "sha256:e314d5fed6eebb2f90380271f562248fb15e18636764faf40f4dde4b28b1f960", size = 33630 } - -[[package]] -name = "db" -version = "0.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antiorm" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a9/22/f65d64c83e63790b3273c6adb3bff338ad594f46d84b41bd1f94593b40a6/db-0.1.1.tar.gz", hash = "sha256:980e772f15c1161d3b287ffec4f144e40961b0b3e6d5102809577870bf6c5808", size = 3350 } - -[[package]] -name = "db-sqlite3" -version = "0.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "db" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ff/00/e1f3d7bf1e0bff7c0574c0d5535c041e139d4ce43db196147e4c62f52ed5/db-sqlite3-0.0.1.tar.gz", hash = "sha256:4dd410aa28a2c5b66de477f9dc62f523133217dd31c7ed7eb085214bea148db9", size = 1390 } - -[[package]] -name = "debugpy" -version = "1.8.12" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/68/25/c74e337134edf55c4dfc9af579eccb45af2393c40960e2795a94351e8140/debugpy-1.8.12.tar.gz", hash = "sha256:646530b04f45c830ceae8e491ca1c9320a2d2f0efea3141487c82130aba70dce", size = 1641122 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/9f/5b8af282253615296264d4ef62d14a8686f0dcdebb31a669374e22fff0a4/debugpy-1.8.12-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:36f4829839ef0afdfdd208bb54f4c3d0eea86106d719811681a8627ae2e53dd5", size = 2174643 }, - { url = "https://files.pythonhosted.org/packages/ef/31/f9274dcd3b0f9f7d1e60373c3fa4696a585c55acb30729d313bb9d3bcbd1/debugpy-1.8.12-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a28ed481d530e3138553be60991d2d61103ce6da254e51547b79549675f539b7", size = 3133457 }, - { url = "https://files.pythonhosted.org/packages/ab/ca/6ee59e9892e424477e0c76e3798046f1fd1288040b927319c7a7b0baa484/debugpy-1.8.12-cp311-cp311-win32.whl", hash = "sha256:4ad9a94d8f5c9b954e0e3b137cc64ef3f579d0df3c3698fe9c3734ee397e4abb", size = 5106220 }, - { url = "https://files.pythonhosted.org/packages/d5/1a/8ab508ab05ede8a4eae3b139bbc06ea3ca6234f9e8c02713a044f253be5e/debugpy-1.8.12-cp311-cp311-win_amd64.whl", hash = "sha256:4703575b78dd697b294f8c65588dc86874ed787b7348c65da70cfc885efdf1e1", size = 5130481 }, - { url = "https://files.pythonhosted.org/packages/ba/e6/0f876ecfe5831ebe4762b19214364753c8bc2b357d28c5d739a1e88325c7/debugpy-1.8.12-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:7e94b643b19e8feb5215fa508aee531387494bf668b2eca27fa769ea11d9f498", size = 2500846 }, - { url = "https://files.pythonhosted.org/packages/19/64/33f41653a701f3cd2cbff8b41ebaad59885b3428b5afd0d93d16012ecf17/debugpy-1.8.12-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:086b32e233e89a2740c1615c2f775c34ae951508b28b308681dbbb87bba97d06", size = 4222181 }, - { url = "https://files.pythonhosted.org/packages/32/a6/02646cfe50bfacc9b71321c47dc19a46e35f4e0aceea227b6d205e900e34/debugpy-1.8.12-cp312-cp312-win32.whl", hash = "sha256:2ae5df899732a6051b49ea2632a9ea67f929604fd2b036613a9f12bc3163b92d", size = 5227017 }, - { url = "https://files.pythonhosted.org/packages/da/a6/10056431b5c47103474312cf4a2ec1001f73e0b63b1216706d5fef2531eb/debugpy-1.8.12-cp312-cp312-win_amd64.whl", hash = "sha256:39dfbb6fa09f12fae32639e3286112fc35ae976114f1f3d37375f3130a820969", size = 5267555 }, - { url = "https://files.pythonhosted.org/packages/38/c4/5120ad36405c3008f451f94b8f92ef1805b1e516f6ff870f331ccb3c4cc0/debugpy-1.8.12-py2.py3-none-any.whl", hash = "sha256:274b6a2040349b5c9864e475284bce5bb062e63dce368a394b8cc865ae3b00c6", size = 5229490 }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, -] - -[[package]] -name = "distro" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277 }, -] - -[[package]] -name = "dnspython" -version = "2.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, -] - -[[package]] -name = "email-validator" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, -] - -[[package]] -name = "environs" -version = "14.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "marshmallow" }, - { name = "python-dotenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/d3/e82bdbb8cc332e751f67a3f668c5d134d57f983497d9f3a59a375b6e8fd8/environs-14.1.1.tar.gz", hash = "sha256:03db7ee2d50ec697b68814cd175a3a05a7c7954804e4e419ca8b570dc5a835cf", size = 32050 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/1c/ab9752f02d32d981d647c05822be9ff93809be8953dacea2da2bec9a9de9/environs-14.1.1-py3-none-any.whl", hash = "sha256:45bc56f1d53bbc59d8dd69bba97377dd88ec28b8229d81cedbd455b21789445b", size = 15566 }, -] - -[[package]] -name = "executing" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, -] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, -] - -[[package]] -name = "fqdn" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, -] - -[[package]] -name = "frozenlist" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987 }, - { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584 }, - { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499 }, - { url = "https://files.pythonhosted.org/packages/98/a8/d0ac0b9276e1404f58fec3ab6e90a4f76b778a49373ccaf6a563f100dfbc/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", size = 276357 }, - { url = "https://files.pythonhosted.org/packages/ad/c9/c7761084fa822f07dac38ac29f841d4587570dd211e2262544aa0b791d21/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", size = 287516 }, - { url = "https://files.pythonhosted.org/packages/a1/ff/cd7479e703c39df7bdab431798cef89dc75010d8aa0ca2514c5b9321db27/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", size = 283131 }, - { url = "https://files.pythonhosted.org/packages/59/a0/370941beb47d237eca4fbf27e4e91389fd68699e6f4b0ebcc95da463835b/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", size = 261320 }, - { url = "https://files.pythonhosted.org/packages/b8/5f/c10123e8d64867bc9b4f2f510a32042a306ff5fcd7e2e09e5ae5100ee333/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", size = 274877 }, - { url = "https://files.pythonhosted.org/packages/fa/79/38c505601ae29d4348f21706c5d89755ceded02a745016ba2f58bd5f1ea6/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", size = 269592 }, - { url = "https://files.pythonhosted.org/packages/19/e2/39f3a53191b8204ba9f0bb574b926b73dd2efba2a2b9d2d730517e8f7622/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", size = 265934 }, - { url = "https://files.pythonhosted.org/packages/d5/c9/3075eb7f7f3a91f1a6b00284af4de0a65a9ae47084930916f5528144c9dd/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", size = 283859 }, - { url = "https://files.pythonhosted.org/packages/05/f5/549f44d314c29408b962fa2b0e69a1a67c59379fb143b92a0a065ffd1f0f/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", size = 287560 }, - { url = "https://files.pythonhosted.org/packages/9d/f8/cb09b3c24a3eac02c4c07a9558e11e9e244fb02bf62c85ac2106d1eb0c0b/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", size = 277150 }, - { url = "https://files.pythonhosted.org/packages/37/48/38c2db3f54d1501e692d6fe058f45b6ad1b358d82cd19436efab80cfc965/frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", size = 45244 }, - { url = "https://files.pythonhosted.org/packages/ca/8c/2ddffeb8b60a4bce3b196c32fcc30d8830d4615e7b492ec2071da801b8ad/frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", size = 51634 }, - { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, - { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, - { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, - { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, - { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, - { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, - { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, - { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, - { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, - { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, - { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, - { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, - { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, - { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, - { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, - { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, -] - -[[package]] -name = "h11" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, -] - -[[package]] -name = "httpcore" -version = "1.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 }, -] - -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, -] - -[[package]] -name = "ipykernel" -version = "6.29.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "appnope", marker = "sys_platform == 'darwin'" }, - { name = "comm" }, - { name = "debugpy" }, - { name = "ipython" }, - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "matplotlib-inline" }, - { name = "nest-asyncio" }, - { name = "packaging" }, - { name = "psutil" }, - { name = "pyzmq" }, - { name = "tornado" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, -] - -[[package]] -name = "ipython" -version = "9.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "decorator" }, - { name = "ipython-pygments-lexers" }, - { name = "jedi" }, - { name = "matplotlib-inline" }, - { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit" }, - { name = "pygments" }, - { name = "stack-data" }, - { name = "traitlets" }, - { name = "typing-extensions", marker = "python_full_version < '3.12'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/de/39/264894738a202ddaf6abae39b3f84671ddee23fd292dbb3e10039e70300c/ipython-9.0.0.tar.gz", hash = "sha256:9368d65b3d4a471e9a698fed3ea486bbf6737e45111e915279c971b77f974397", size = 4364165 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/a1/894e4c0b6ac994045c6edeb2b6fdf69c59f20fcd2e348a42f4e40889181c/ipython-9.0.0-py3-none-any.whl", hash = "sha256:2cce23069b830a54a5b9d3d66ccd6433047c1503a7b9a3b34593c0b5c2c08477", size = 592040 }, -] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, -] - -[[package]] -name = "ipywidgets" -version = "8.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "comm" }, - { name = "ipython" }, - { name = "jupyterlab-widgets" }, - { name = "traitlets" }, - { name = "widgetsnbextension" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c7/4c/dab2a281b07596a5fc220d49827fe6c794c66f1493d7a74f1df0640f2cc5/ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17", size = 116723 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/2d/9c0b76f2f9cc0ebede1b9371b6f317243028ed60b90705863d493bae622e/ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245", size = 139767 }, -] - -[[package]] -name = "isoduration" -version = "20.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "arrow" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, -] - -[[package]] -name = "jedi" -version = "0.19.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "parso" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, -] - -[[package]] -name = "jinja2" -version = "3.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, -] - -[[package]] -name = "jiter" -version = "0.8.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/70/90bc7bd3932e651486861df5c8ffea4ca7c77d28e8532ddefe2abc561a53/jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d", size = 163007 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b0/c1a7caa7f9dc5f1f6cfa08722867790fe2d3645d6e7170ca280e6e52d163/jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b", size = 303666 }, - { url = "https://files.pythonhosted.org/packages/f5/97/0468bc9eeae43079aaa5feb9267964e496bf13133d469cfdc135498f8dd0/jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15", size = 311934 }, - { url = "https://files.pythonhosted.org/packages/e5/69/64058e18263d9a5f1e10f90c436853616d5f047d997c37c7b2df11b085ec/jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0", size = 335506 }, - { url = "https://files.pythonhosted.org/packages/9d/14/b747f9a77b8c0542141d77ca1e2a7523e854754af2c339ac89a8b66527d6/jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f", size = 355849 }, - { url = "https://files.pythonhosted.org/packages/53/e2/98a08161db7cc9d0e39bc385415890928ff09709034982f48eccfca40733/jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099", size = 381700 }, - { url = "https://files.pythonhosted.org/packages/7a/38/1674672954d35bce3b1c9af99d5849f9256ac8f5b672e020ac7821581206/jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74", size = 389710 }, - { url = "https://files.pythonhosted.org/packages/f8/9b/92f9da9a9e107d019bcf883cd9125fa1690079f323f5a9d5c6986eeec3c0/jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586", size = 345553 }, - { url = "https://files.pythonhosted.org/packages/44/a6/6d030003394e9659cd0d7136bbeabd82e869849ceccddc34d40abbbbb269/jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc", size = 376388 }, - { url = "https://files.pythonhosted.org/packages/ad/8d/87b09e648e4aca5f9af89e3ab3cfb93db2d1e633b2f2931ede8dabd9b19a/jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88", size = 511226 }, - { url = "https://files.pythonhosted.org/packages/77/95/8008ebe4cdc82eac1c97864a8042ca7e383ed67e0ec17bfd03797045c727/jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6", size = 504134 }, - { url = "https://files.pythonhosted.org/packages/26/0d/3056a74de13e8b2562e4d526de6dac2f65d91ace63a8234deb9284a1d24d/jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44", size = 203103 }, - { url = "https://files.pythonhosted.org/packages/4e/1e/7f96b798f356e531ffc0f53dd2f37185fac60fae4d6c612bbbd4639b90aa/jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855", size = 206717 }, - { url = "https://files.pythonhosted.org/packages/a1/17/c8747af8ea4e045f57d6cfd6fc180752cab9bc3de0e8a0c9ca4e8af333b1/jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f", size = 302027 }, - { url = "https://files.pythonhosted.org/packages/3c/c1/6da849640cd35a41e91085723b76acc818d4b7d92b0b6e5111736ce1dd10/jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44", size = 310326 }, - { url = "https://files.pythonhosted.org/packages/06/99/a2bf660d8ccffee9ad7ed46b4f860d2108a148d0ea36043fd16f4dc37e94/jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f", size = 334242 }, - { url = "https://files.pythonhosted.org/packages/a7/5f/cea1c17864828731f11427b9d1ab7f24764dbd9aaf4648a7f851164d2718/jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60", size = 356654 }, - { url = "https://files.pythonhosted.org/packages/e9/13/62774b7e5e7f5d5043efe1d0f94ead66e6d0f894ae010adb56b3f788de71/jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57", size = 379967 }, - { url = "https://files.pythonhosted.org/packages/ec/fb/096b34c553bb0bd3f2289d5013dcad6074948b8d55212aa13a10d44c5326/jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e", size = 389252 }, - { url = "https://files.pythonhosted.org/packages/17/61/beea645c0bf398ced8b199e377b61eb999d8e46e053bb285c91c3d3eaab0/jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887", size = 345490 }, - { url = "https://files.pythonhosted.org/packages/d5/df/834aa17ad5dcc3cf0118821da0a0cf1589ea7db9832589278553640366bc/jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d", size = 376991 }, - { url = "https://files.pythonhosted.org/packages/67/80/87d140399d382fb4ea5b3d56e7ecaa4efdca17cd7411ff904c1517855314/jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152", size = 510822 }, - { url = "https://files.pythonhosted.org/packages/5c/37/3394bb47bac1ad2cb0465601f86828a0518d07828a650722e55268cdb7e6/jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29", size = 503730 }, - { url = "https://files.pythonhosted.org/packages/f9/e2/253fc1fa59103bb4e3aa0665d6ceb1818df1cd7bf3eb492c4dad229b1cd4/jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e", size = 203375 }, - { url = "https://files.pythonhosted.org/packages/41/69/6d4bbe66b3b3b4507e47aa1dd5d075919ad242b4b1115b3f80eecd443687/jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c", size = 204740 }, -] - -[[package]] -name = "json5" -version = "0.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/3d/bbe62f3d0c05a689c711cff57b2e3ac3d3e526380adb7c781989f075115c/json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559", size = 48202 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa", size = 34049 }, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, -] - -[[package]] -name = "jsonschema" -version = "4.23.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "jsonschema-specifications" }, - { name = "referencing" }, - { name = "rpds-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, -] - -[package.optional-dependencies] -format-nongpl = [ - { name = "fqdn" }, - { name = "idna" }, - { name = "isoduration" }, - { name = "jsonpointer" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "uri-template" }, - { name = "webcolors" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2024.10.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, -] - -[[package]] -name = "julep" -version = "1.73.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "pydantic" }, - { name = "python-dotenv" }, - { name = "ruamel-yaml" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/ae/6590dcda804d694ee1c740dc37a7eeb825708e40febe69974082663b0441/julep-1.73.0.tar.gz", hash = "sha256:44779e1c0c333e1d3e7f188554b32b52e752f16de2b918a9cad56795faa4b31c", size = 329814 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/04/39858bd1beb3b8be17ecb652f4b5fe874dc4410074a6e2111d982c768e53/julep-1.73.0-py3-none-any.whl", hash = "sha256:45e20f3043c3cd34089da7c2af72a4c39f61f8209bc877c2e9ef6afdd3763d38", size = 339158 }, -] - -[[package]] -name = "julep-cli" -version = "0.1.13" -source = { editable = "." } -dependencies = [ - { name = "anyio" }, - { name = "beartype" }, - { name = "db-sqlite3" }, - { name = "environs" }, - { name = "jsonschema" }, - { name = "julep" }, - { name = "openai" }, - { name = "pandas" }, - { name = "pydantic", extra = ["email"] }, - { name = "pyjwt" }, - { name = "questionary" }, - { name = "requests" }, - { name = "stringcase" }, - { name = "textual" }, - { name = "trogon", extra = ["typer"] }, - { name = "typer" }, - { name = "typer-config", extra = ["yaml"] }, - { name = "unique-namer" }, - { name = "uvloop" }, - { name = "watchdog" }, - { name = "xxhash" }, -] - -[package.dev-dependencies] -dev = [ - { name = "ipython" }, - { name = "ipywidgets" }, - { name = "jupyterlab" }, - { name = "pip" }, - { name = "poethepoet" }, - { name = "pyinstaller" }, - { name = "pyright" }, - { name = "ruff" }, - { name = "textual-dev" }, - { name = "ward" }, -] - -[package.metadata] -requires-dist = [ - { name = "anyio", specifier = ">=4.4.0" }, - { name = "beartype", specifier = ">=0.18.5" }, - { name = "db-sqlite3", specifier = ">=0.0.1" }, - { name = "environs", specifier = ">=10.3.0" }, - { name = "jsonschema", specifier = ">=4.22.0" }, - { name = "julep", specifier = ">=1.56.0" }, - { name = "openai", specifier = ">=1.55.0" }, - { name = "pandas", specifier = ">=2.2.2" }, - { name = "pydantic", extras = ["email"], specifier = ">=2.10.2" }, - { name = "pyjwt", specifier = ">=2.10.1" }, - { name = "questionary", specifier = ">=2.1.0" }, - { name = "requests", specifier = ">=2.32.3" }, - { name = "stringcase", specifier = ">=1.2.0" }, - { name = "textual", specifier = ">=1.0.0" }, - { name = "trogon", extras = ["typer"], specifier = ">=0.6.0" }, - { name = "typer", specifier = ">=0.15.1" }, - { name = "typer-config", extras = ["yaml"], specifier = ">=1.4.2" }, - { name = "unique-namer", specifier = ">=1.6.1" }, - { name = "uvloop", specifier = ">=0.21.0" }, - { name = "watchdog", specifier = ">=6.0.0" }, - { name = "xxhash", specifier = ">=3.5.0" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "ipython", specifier = ">=8.30.0" }, - { name = "ipywidgets", specifier = ">=8.1.5" }, - { name = "jupyterlab", specifier = ">=4.3.1" }, - { name = "pip", specifier = ">=24.3.1" }, - { name = "poethepoet", specifier = ">=0.31.1" }, - { name = "pyinstaller", specifier = ">=6.11.1" }, - { name = "pyright", specifier = ">=1.1.391" }, - { name = "ruff", specifier = ">=0.8.4" }, - { name = "textual-dev", specifier = ">=1.7.0" }, - { name = "ward", specifier = ">=0.68.0b0" }, -] - -[[package]] -name = "jupyter-client" -version = "8.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-core" }, - { name = "python-dateutil" }, - { name = "pyzmq" }, - { name = "tornado" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, -] - -[[package]] -name = "jupyter-core" -version = "5.7.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "platformdirs" }, - { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, -] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema", extra = ["format-nongpl"] }, - { name = "packaging" }, - { name = "python-json-logger" }, - { name = "pyyaml" }, - { name = "referencing" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, -] - -[[package]] -name = "jupyter-lsp" -version = "2.2.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, -] - -[[package]] -name = "jupyter-server" -version = "2.15.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "argon2-cffi" }, - { name = "jinja2" }, - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "jupyter-events" }, - { name = "jupyter-server-terminals" }, - { name = "nbconvert" }, - { name = "nbformat" }, - { name = "overrides" }, - { name = "packaging" }, - { name = "prometheus-client" }, - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "pyzmq" }, - { name = "send2trash" }, - { name = "terminado" }, - { name = "tornado" }, - { name = "traitlets" }, - { name = "websocket-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, -] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "terminado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, -] - -[[package]] -name = "jupyterlab" -version = "4.3.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "async-lru" }, - { name = "httpx" }, - { name = "ipykernel" }, - { name = "jinja2" }, - { name = "jupyter-core" }, - { name = "jupyter-lsp" }, - { name = "jupyter-server" }, - { name = "jupyterlab-server" }, - { name = "notebook-shim" }, - { name = "packaging" }, - { name = "setuptools" }, - { name = "tornado" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/17/6f3d73c3e54b71bbaf03edcc4a54b0aa6328e0a134755f297ea87d425711/jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d", size = 21800023 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/73/6f/94d4c879b3e2b7b9bca1913ea6fbbef180f8b1ed065b46ade40d651ec54d/jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb", size = 11666944 }, -] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "jinja2" }, - { name = "json5" }, - { name = "jsonschema" }, - { name = "jupyter-server" }, - { name = "packaging" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, -] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.13" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/59/73/fa26bbb747a9ea4fca6b01453aa22990d52ab62dd61384f1ac0dc9d4e7ba/jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed", size = 203556 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/93/858e87edc634d628e5d752ba944c2833133a28fa87bb093e6832ced36a3e/jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54", size = 214392 }, -] - -[[package]] -name = "linkify-it-py" -version = "2.0.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "uc-micro-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820 }, -] - -[[package]] -name = "macholib" -version = "1.16.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "altgraph" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/ee/af1a3842bdd5902ce133bd246eb7ffd4375c38642aeb5dc0ae3a0329dfa2/macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30", size = 59309 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/5d/c059c180c84f7962db0aeae7c3b9303ed1d73d76f2bfbc32bc231c8be314/macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c", size = 38094 }, -] - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, -] - -[package.optional-dependencies] -linkify = [ - { name = "linkify-it-py" }, -] -plugins = [ - { name = "mdit-py-plugins" }, -] - -[[package]] -name = "markupsafe" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, - { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, - { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, - { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, - { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, - { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, - { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, - { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, -] - -[[package]] -name = "marshmallow" -version = "3.26.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/5e/5e53d26b42ab75491cda89b871dab9e97c840bf12c63ec58a1919710cd06/marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6", size = 221825 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/75/51952c7b2d3873b44a0028b1bd26a25078c18f92f256608e8d1dc61b39fd/marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", size = 50878 }, -] - -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, -] - -[[package]] -name = "mdit-py-plugins" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, -] - -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, -] - -[[package]] -name = "mistune" -version = "3.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/f7/f6d06304c61c2a73213c0a4815280f70d985429cda26272f490e42119c1a/mistune-3.1.2.tar.gz", hash = "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff", size = 94613 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319", size = 53696 }, -] - -[[package]] -name = "msgpack" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803 }, - { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343 }, - { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408 }, - { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096 }, - { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671 }, - { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414 }, - { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759 }, - { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405 }, - { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041 }, - { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538 }, - { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871 }, - { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, - { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, - { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, - { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, - { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, - { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, - { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, - { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, - { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, - { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, - { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, -] - -[[package]] -name = "multidict" -version = "6.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, - { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, - { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, - { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, - { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, - { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, - { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, - { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, - { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, - { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, - { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, - { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, - { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, - { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, - { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, - { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, - { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, - { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, - { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, - { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, - { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, - { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, - { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, - { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, - { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, - { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, - { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, - { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, - { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, - { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, - { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "nbformat" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, -] - -[[package]] -name = "nbconvert" -version = "7.16.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "bleach", extra = ["css"] }, - { name = "defusedxml" }, - { name = "jinja2" }, - { name = "jupyter-core" }, - { name = "jupyterlab-pygments" }, - { name = "markupsafe" }, - { name = "mistune" }, - { name = "nbclient" }, - { name = "nbformat" }, - { name = "packaging" }, - { name = "pandocfilters" }, - { name = "pygments" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, -] - -[[package]] -name = "nbformat" -version = "5.10.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastjsonschema" }, - { name = "jsonschema" }, - { name = "jupyter-core" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, -] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, -] - -[[package]] -name = "nodeenv" -version = "1.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, -] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, -] - -[[package]] -name = "numpy" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/90/8956572f5c4ae52201fdec7ba2044b2c882832dcec7d5d0922c9e9acf2de/numpy-2.2.3.tar.gz", hash = "sha256:dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020", size = 20262700 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/86/453aa3949eab6ff54e2405f9cb0c01f756f031c3dc2a6d60a1d40cba5488/numpy-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:16372619ee728ed67a2a606a614f56d3eabc5b86f8b615c79d01957062826ca8", size = 21237256 }, - { url = "https://files.pythonhosted.org/packages/20/c3/93ecceadf3e155d6a9e4464dd2392d8d80cf436084c714dc8535121c83e8/numpy-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5521a06a3148686d9269c53b09f7d399a5725c47bbb5b35747e1cb76326b714b", size = 14408049 }, - { url = "https://files.pythonhosted.org/packages/8d/29/076999b69bd9264b8df5e56f2be18da2de6b2a2d0e10737e5307592e01de/numpy-2.2.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7c8dde0ca2f77828815fd1aedfdf52e59071a5bae30dac3b4da2a335c672149a", size = 5408655 }, - { url = "https://files.pythonhosted.org/packages/e2/a7/b14f0a73eb0fe77cb9bd5b44534c183b23d4229c099e339c522724b02678/numpy-2.2.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:77974aba6c1bc26e3c205c2214f0d5b4305bdc719268b93e768ddb17e3fdd636", size = 6949996 }, - { url = "https://files.pythonhosted.org/packages/72/2f/8063da0616bb0f414b66dccead503bd96e33e43685c820e78a61a214c098/numpy-2.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d42f9c36d06440e34226e8bd65ff065ca0963aeecada587b937011efa02cdc9d", size = 14355789 }, - { url = "https://files.pythonhosted.org/packages/e6/d7/3cd47b00b8ea95ab358c376cf5602ad21871410950bc754cf3284771f8b6/numpy-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2712c5179f40af9ddc8f6727f2bd910ea0eb50206daea75f58ddd9fa3f715bb", size = 16411356 }, - { url = "https://files.pythonhosted.org/packages/27/c0/a2379e202acbb70b85b41483a422c1e697ff7eee74db642ca478de4ba89f/numpy-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c8b0451d2ec95010d1db8ca733afc41f659f425b7f608af569711097fd6014e2", size = 15576770 }, - { url = "https://files.pythonhosted.org/packages/bc/63/a13ee650f27b7999e5b9e1964ae942af50bb25606d088df4229283eda779/numpy-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9b4a8148c57ecac25a16b0e11798cbe88edf5237b0df99973687dd866f05e1b", size = 18200483 }, - { url = "https://files.pythonhosted.org/packages/4c/87/e71f89935e09e8161ac9c590c82f66d2321eb163893a94af749dfa8a3cf8/numpy-2.2.3-cp311-cp311-win32.whl", hash = "sha256:1f45315b2dc58d8a3e7754fe4e38b6fce132dab284a92851e41b2b344f6441c5", size = 6588415 }, - { url = "https://files.pythonhosted.org/packages/b9/c6/cd4298729826af9979c5f9ab02fcaa344b82621e7c49322cd2d210483d3f/numpy-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f48ba6f6c13e5e49f3d3efb1b51c8193215c42ac82610a04624906a9270be6f", size = 12929604 }, - { url = "https://files.pythonhosted.org/packages/43/ec/43628dcf98466e087812142eec6d1c1a6c6bdfdad30a0aa07b872dc01f6f/numpy-2.2.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12c045f43b1d2915eca6b880a7f4a256f59d62df4f044788c8ba67709412128d", size = 20929458 }, - { url = "https://files.pythonhosted.org/packages/9b/c0/2f4225073e99a5c12350954949ed19b5d4a738f541d33e6f7439e33e98e4/numpy-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:87eed225fd415bbae787f93a457af7f5990b92a334e346f72070bf569b9c9c95", size = 14115299 }, - { url = "https://files.pythonhosted.org/packages/ca/fa/d2c5575d9c734a7376cc1592fae50257ec95d061b27ee3dbdb0b3b551eb2/numpy-2.2.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:712a64103d97c404e87d4d7c47fb0c7ff9acccc625ca2002848e0d53288b90ea", size = 5145723 }, - { url = "https://files.pythonhosted.org/packages/eb/dc/023dad5b268a7895e58e791f28dc1c60eb7b6c06fcbc2af8538ad069d5f3/numpy-2.2.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a5ae282abe60a2db0fd407072aff4599c279bcd6e9a2475500fc35b00a57c532", size = 6678797 }, - { url = "https://files.pythonhosted.org/packages/3f/19/bcd641ccf19ac25abb6fb1dcd7744840c11f9d62519d7057b6ab2096eb60/numpy-2.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5266de33d4c3420973cf9ae3b98b54a2a6d53a559310e3236c4b2b06b9c07d4e", size = 14067362 }, - { url = "https://files.pythonhosted.org/packages/39/04/78d2e7402fb479d893953fb78fa7045f7deb635ec095b6b4f0260223091a/numpy-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b787adbf04b0db1967798dba8da1af07e387908ed1553a0d6e74c084d1ceafe", size = 16116679 }, - { url = "https://files.pythonhosted.org/packages/d0/a1/e90f7aa66512be3150cb9d27f3d9995db330ad1b2046474a13b7040dfd92/numpy-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:34c1b7e83f94f3b564b35f480f5652a47007dd91f7c839f404d03279cc8dd021", size = 15264272 }, - { url = "https://files.pythonhosted.org/packages/dc/b6/50bd027cca494de4fa1fc7bf1662983d0ba5f256fa0ece2c376b5eb9b3f0/numpy-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d8335b5f1b6e2bce120d55fb17064b0262ff29b459e8493d1785c18ae2553b8", size = 17880549 }, - { url = "https://files.pythonhosted.org/packages/96/30/f7bf4acb5f8db10a96f73896bdeed7a63373137b131ca18bd3dab889db3b/numpy-2.2.3-cp312-cp312-win32.whl", hash = "sha256:4d9828d25fb246bedd31e04c9e75714a4087211ac348cb39c8c5f99dbb6683fe", size = 6293394 }, - { url = "https://files.pythonhosted.org/packages/42/6e/55580a538116d16ae7c9aa17d4edd56e83f42126cb1dfe7a684da7925d2c/numpy-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:83807d445817326b4bcdaaaf8e8e9f1753da04341eceec705c001ff342002e5d", size = 12626357 }, -] - -[[package]] -name = "openai" -version = "1.65.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/03/0bbf201a7e44920d892db0445874c8111be4255cb9495379df18d6d36ea1/openai-1.65.2.tar.gz", hash = "sha256:729623efc3fd91c956f35dd387fa5c718edd528c4bed9f00b40ef290200fb2ce", size = 359185 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/3b/722ed868cb56f70264190ed479b38b3e46d14daa267d559a3fe3bd9061cf/openai-1.65.2-py3-none-any.whl", hash = "sha256:27d9fe8de876e31394c2553c4e6226378b6ed85e480f586ccfe25b7193fb1750", size = 473206 }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, -] - -[[package]] -name = "packaging" -version = "24.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, -] - -[[package]] -name = "pandas" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "python-dateutil" }, - { name = "pytz" }, - { name = "tzdata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222 }, - { url = "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", size = 11321274 }, - { url = "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", size = 15579836 }, - { url = "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", size = 13058505 }, - { url = "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", size = 16744420 }, - { url = "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", size = 14440457 }, - { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166 }, - { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, - { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, - { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, - { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, - { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, - { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, -] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, -] - -[[package]] -name = "parso" -version = "0.8.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, -] - -[[package]] -name = "pastel" -version = "0.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955 }, -] - -[[package]] -name = "pefile" -version = "2023.2.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/78/c5/3b3c62223f72e2360737fd2a57c30e5b2adecd85e70276879609a7403334/pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc", size = 74854 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/26/d0ad8b448476d0a1e8d3ea5622dc77b916db84c6aa3cb1e1c0965af948fc/pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6", size = 71791 }, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, -] - -[[package]] -name = "pip" -version = "25.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/53/b309b4a497b09655cb7e07088966881a57d082f48ac3cb54ea729fd2c6cf/pip-25.0.1.tar.gz", hash = "sha256:88f96547ea48b940a3a385494e181e29fb8637898f88d88737c5049780f196ea", size = 1950850 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/bc/b7db44f5f39f9d0494071bddae6880eb645970366d0a200022a1a93d57f5/pip-25.0.1-py3-none-any.whl", hash = "sha256:c46efd13b6aa8279f33f2864459c8ce587ea6a1a59ee20de055868d8f7688f7f", size = 1841526 }, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - -[[package]] -name = "poethepoet" -version = "0.32.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pastel" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ee/c6/4bc7e21166726fc96f82f58b31fd032fdf8864d3aa17e2622578cb96c24d/poethepoet-0.32.2.tar.gz", hash = "sha256:1d68871dac1b191e27bd68fea57d0e01e9afbba3fcd01dbe6f6bc3fcb071fe4c", size = 61381 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/1f/4e7a9b6b33a085172a826d1f9d0a19a2e77982298acea13d40442f14ef28/poethepoet-0.32.2-py3-none-any.whl", hash = "sha256:97e165de8e00b07d33fd8d72896fad8b20ccafcd327b1118bb6a3da26af38d33", size = 81726 }, -] - -[[package]] -name = "pprintpp" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/1a/7737e7a0774da3c3824d654993cf57adc915cb04660212f03406334d8c0b/pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403", size = 17995 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/d1/e4ed95fdd3ef13b78630280d9e9e240aeb65cc7c544ec57106149c3942fb/pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d", size = 16952 }, -] - -[[package]] -name = "prometheus-client" -version = "0.21.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, -] - -[[package]] -name = "prompt-toolkit" -version = "3.0.50" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wcwidth" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/e1/bd15cb8ffdcfeeb2bdc215de3c3cffca11408d829e4b8416dcfe71ba8854/prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab", size = 429087 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198", size = 387816 }, -] - -[[package]] -name = "propcache" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/92/76/f941e63d55c0293ff7829dd21e7cf1147e90a526756869a9070f287a68c9/propcache-0.3.0.tar.gz", hash = "sha256:a8fd93de4e1d278046345f49e2238cdb298589325849b2645d4a94c53faeffc5", size = 42722 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/c9/cf09ff7e6d09f14149094f7cd50d2dec032b24e61af21fc4540da2b17bfb/propcache-0.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9ddd49258610499aab83b4f5b61b32e11fce873586282a0e972e5ab3bcadee51", size = 79568 }, - { url = "https://files.pythonhosted.org/packages/c8/32/2424d89da88cd81b7d148e0d2b3131461b570a02aa9d84a2e567509adb0d/propcache-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2578541776769b500bada3f8a4eeaf944530516b6e90c089aa368266ed70c49e", size = 45895 }, - { url = "https://files.pythonhosted.org/packages/f6/91/ee5b6aa7aa31754fefcf0c5180e09223cac380ef195c4ddc8c266eb641ea/propcache-0.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8074c5dd61c8a3e915fa8fc04754fa55cfa5978200d2daa1e2d4294c1f136aa", size = 45427 }, - { url = "https://files.pythonhosted.org/packages/bf/73/38f0128462b8b616181d8c53bd5d04eac41c50c449b07615c65d56ba0a9b/propcache-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b58229a844931bca61b3a20efd2be2a2acb4ad1622fc026504309a6883686fbf", size = 232427 }, - { url = "https://files.pythonhosted.org/packages/59/82/f3d4e84f4539dcfc9c3d338282b9e915f5b63c921986ecfdf7af2d12f87c/propcache-0.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e45377d5d6fefe1677da2a2c07b024a6dac782088e37c0b1efea4cfe2b1be19b", size = 239985 }, - { url = "https://files.pythonhosted.org/packages/42/e8/029f58cccbae83c9969a7ee7a06558d5b83a93dfc54e0f4f70234bbaea1b/propcache-0.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ec5060592d83454e8063e487696ac3783cc48c9a329498bafae0d972bc7816c9", size = 238827 }, - { url = "https://files.pythonhosted.org/packages/8b/a2/c373561777c0cb9b9e7b9b9a10b9b3a7b6bde75a2535b962231cecc8fdb8/propcache-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15010f29fbed80e711db272909a074dc79858c6d28e2915704cfc487a8ac89c6", size = 231348 }, - { url = "https://files.pythonhosted.org/packages/d7/d2/4673f715beedf6038b485bcd976813149231d9df5bb6196cb69a09c185c9/propcache-0.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a254537b9b696ede293bfdbc0a65200e8e4507bc9f37831e2a0318a9b333c85c", size = 220426 }, - { url = "https://files.pythonhosted.org/packages/e0/f6/1da65f900927bafd4675a16e890618ec7643f2f922bf0e4d84bb38645618/propcache-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2b975528998de037dfbc10144b8aed9b8dd5a99ec547f14d1cb7c5665a43f075", size = 220294 }, - { url = "https://files.pythonhosted.org/packages/ff/86/620451bdc02e91b1712cd71890c17077ee97e2a28493836a87e47b8e70ff/propcache-0.3.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:19d36bb351ad5554ff20f2ae75f88ce205b0748c38b146c75628577020351e3c", size = 212492 }, - { url = "https://files.pythonhosted.org/packages/6e/1b/e8f86921ed4016da80faf3b8f515f7829decabdbff106736bfff353bceba/propcache-0.3.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6032231d4a5abd67c7f71168fd64a47b6b451fbcb91c8397c2f7610e67683810", size = 215113 }, - { url = "https://files.pythonhosted.org/packages/1a/95/a61d86cc49aa0945f6c06f3a4614fc543e311a50558c92861f5e9691a37c/propcache-0.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6985a593417cdbc94c7f9c3403747335e450c1599da1647a5af76539672464d3", size = 228330 }, - { url = "https://files.pythonhosted.org/packages/8f/7d/10dbae48ff2bb189e92c2b3487a48f3229146a25941ad0d485934d1104d4/propcache-0.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:6a1948df1bb1d56b5e7b0553c0fa04fd0e320997ae99689488201f19fa90d2e7", size = 231942 }, - { url = "https://files.pythonhosted.org/packages/39/ce/82d16aec96c5513ae7db13ab901a65a1e54c915292fb5b2390e33275b61d/propcache-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8319293e85feadbbfe2150a5659dbc2ebc4afdeaf7d98936fb9a2f2ba0d4c35c", size = 223077 }, - { url = "https://files.pythonhosted.org/packages/c8/e0/cb077e8e7a583c733df7f53327fcbdb92e42be59b976ce60bf1d904a0efe/propcache-0.3.0-cp311-cp311-win32.whl", hash = "sha256:63f26258a163c34542c24808f03d734b338da66ba91f410a703e505c8485791d", size = 40455 }, - { url = "https://files.pythonhosted.org/packages/d8/35/57abeb6146fe3c19081eeaf3d9d4cfea256f87f1e5101acf80d3332c1820/propcache-0.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:cacea77ef7a2195f04f9279297684955e3d1ae4241092ff0cfcef532bb7a1c32", size = 44705 }, - { url = "https://files.pythonhosted.org/packages/8d/2c/921f15dc365796ec23975b322b0078eae72995c7b4d49eba554c6a308d70/propcache-0.3.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e53d19c2bf7d0d1e6998a7e693c7e87300dd971808e6618964621ccd0e01fe4e", size = 79867 }, - { url = "https://files.pythonhosted.org/packages/11/a5/4a6cc1a559d1f2fb57ea22edc4245158cdffae92f7f92afcee2913f84417/propcache-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a61a68d630e812b67b5bf097ab84e2cd79b48c792857dc10ba8a223f5b06a2af", size = 46109 }, - { url = "https://files.pythonhosted.org/packages/e1/6d/28bfd3af3a567ad7d667348e7f46a520bda958229c4d545ba138a044232f/propcache-0.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb91d20fa2d3b13deea98a690534697742029f4fb83673a3501ae6e3746508b5", size = 45635 }, - { url = "https://files.pythonhosted.org/packages/73/20/d75b42eaffe5075eac2f4e168f6393d21c664c91225288811d85451b2578/propcache-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67054e47c01b7b349b94ed0840ccae075449503cf1fdd0a1fdd98ab5ddc2667b", size = 242159 }, - { url = "https://files.pythonhosted.org/packages/a5/fb/4b537dd92f9fd4be68042ec51c9d23885ca5fafe51ec24c58d9401034e5f/propcache-0.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997e7b8f173a391987df40f3b52c423e5850be6f6df0dcfb5376365440b56667", size = 248163 }, - { url = "https://files.pythonhosted.org/packages/e7/af/8a9db04ac596d531ca0ef7dde518feaadfcdabef7b17d6a5ec59ee3effc2/propcache-0.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d663fd71491dde7dfdfc899d13a067a94198e90695b4321084c6e450743b8c7", size = 248794 }, - { url = "https://files.pythonhosted.org/packages/9d/c4/ecfc988879c0fd9db03228725b662d76cf484b6b46f7e92fee94e4b52490/propcache-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8884ba1a0fe7210b775106b25850f5e5a9dc3c840d1ae9924ee6ea2eb3acbfe7", size = 243912 }, - { url = "https://files.pythonhosted.org/packages/04/a2/298dd27184faa8b7d91cc43488b578db218b3cc85b54d912ed27b8c5597a/propcache-0.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa806bbc13eac1ab6291ed21ecd2dd426063ca5417dd507e6be58de20e58dfcf", size = 229402 }, - { url = "https://files.pythonhosted.org/packages/be/0d/efe7fec316ca92dbf4bc4a9ba49ca889c43ca6d48ab1d6fa99fc94e5bb98/propcache-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6f4d7a7c0aff92e8354cceca6fe223973ddf08401047920df0fcb24be2bd5138", size = 226896 }, - { url = "https://files.pythonhosted.org/packages/60/63/72404380ae1d9c96d96e165aa02c66c2aae6072d067fc4713da5cde96762/propcache-0.3.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:9be90eebc9842a93ef8335291f57b3b7488ac24f70df96a6034a13cb58e6ff86", size = 221447 }, - { url = "https://files.pythonhosted.org/packages/9d/18/b8392cab6e0964b67a30a8f4dadeaff64dc7022b5a34bb1d004ea99646f4/propcache-0.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bf15fc0b45914d9d1b706f7c9c4f66f2b7b053e9517e40123e137e8ca8958b3d", size = 222440 }, - { url = "https://files.pythonhosted.org/packages/6f/be/105d9ceda0f97eff8c06bac1673448b2db2a497444de3646464d3f5dc881/propcache-0.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a16167118677d94bb48bfcd91e420088854eb0737b76ec374b91498fb77a70e", size = 234104 }, - { url = "https://files.pythonhosted.org/packages/cb/c9/f09a4ec394cfcce4053d8b2a04d622b5f22d21ba9bb70edd0cad061fa77b/propcache-0.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41de3da5458edd5678b0f6ff66691507f9885f5fe6a0fb99a5d10d10c0fd2d64", size = 239086 }, - { url = "https://files.pythonhosted.org/packages/ea/aa/96f7f9ed6def82db67c972bdb7bd9f28b95d7d98f7e2abaf144c284bf609/propcache-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:728af36011bb5d344c4fe4af79cfe186729efb649d2f8b395d1572fb088a996c", size = 230991 }, - { url = "https://files.pythonhosted.org/packages/5a/11/bee5439de1307d06fad176f7143fec906e499c33d7aff863ea8428b8e98b/propcache-0.3.0-cp312-cp312-win32.whl", hash = "sha256:6b5b7fd6ee7b54e01759f2044f936dcf7dea6e7585f35490f7ca0420fe723c0d", size = 40337 }, - { url = "https://files.pythonhosted.org/packages/e4/17/e5789a54a0455a61cb9efc4ca6071829d992220c2998a27c59aeba749f6f/propcache-0.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:2d15bc27163cd4df433e75f546b9ac31c1ba7b0b128bfb1b90df19082466ff57", size = 44404 }, - { url = "https://files.pythonhosted.org/packages/b5/35/6c4c6fc8774a9e3629cd750dc24a7a4fb090a25ccd5c3246d127b70f9e22/propcache-0.3.0-py3-none-any.whl", hash = "sha256:67dda3c7325691c2081510e92c561f465ba61b975f481735aefdfc845d2cd043", size = 12101 }, -] - -[[package]] -name = "psutil" -version = "7.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, -] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, -] - -[[package]] -name = "pycparser" -version = "2.22" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, -] - -[[package]] -name = "pydantic" -version = "2.10.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, -] - -[package.optional-dependencies] -email = [ - { name = "email-validator" }, -] - -[[package]] -name = "pydantic-core" -version = "2.27.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, - { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, - { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, - { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, - { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, - { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, - { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, - { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, - { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, - { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, - { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, - { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, - { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, - { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, - { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, - { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, - { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, - { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, - { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, - { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, - { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, - { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, - { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, - { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, - { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, - { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, - { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, - { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, -] - -[[package]] -name = "pygments" -version = "2.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, -] - -[[package]] -name = "pyinstaller" -version = "6.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "altgraph" }, - { name = "macholib", marker = "sys_platform == 'darwin'" }, - { name = "packaging" }, - { name = "pefile", marker = "sys_platform == 'win32'" }, - { name = "pyinstaller-hooks-contrib" }, - { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/10/c0/001e86a13f9f6104613f198721c72d377fa1fc2a09550cfe1ac9a1d12406/pyinstaller-6.12.0.tar.gz", hash = "sha256:1834797be48ce1b26015af68bdeb3c61a6c7500136f04e0fc65e468115dec777", size = 4267132 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/73/b897a3fda99a14130111abdb978d63da14cbc9932497b5e5064c5fe28187/pyinstaller-6.12.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:68f1e4cecf88a6272063977fa2a2c69ad37cf568e5901769d7206d0314c74f47", size = 997954 }, - { url = "https://files.pythonhosted.org/packages/4a/bc/0929ed6aca3c5ff3f20f8cfd4f2f7e90f18c9465440e0d151d56d8170851/pyinstaller-6.12.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:fea76fc9b55ffa730fcf90beb897cce4399938460b0b6f40507fbebfc752c753", size = 714097 }, - { url = "https://files.pythonhosted.org/packages/e1/9a/422d5eb04132e4a4735ca9099a53511324ff7d387b80231fe8dbd67bf322/pyinstaller-6.12.0-py3-none-manylinux2014_i686.whl", hash = "sha256:dac8a27988dbc33cdc34f2046803258bc3f6829de24de52745a5daa22bdba0f1", size = 724471 }, - { url = "https://files.pythonhosted.org/packages/64/1c/5028ba2e09f5b57f6792e9d88e888725224f8f016a07666e48664f6a9fcf/pyinstaller-6.12.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:83c7f3bde9871b4a6aa71c66a96e8ba5c21668ce711ed97f510b9382d10aac6c", size = 722753 }, - { url = "https://files.pythonhosted.org/packages/6f/d9/e7742caf4c4dc07d13e355ad2c14c7844c9bb2e66dea4f3386b4644bd106/pyinstaller-6.12.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:a69818815c6e0711c727edc30680cb1f81c691b59de35db81a2d9e0ae26a9ef1", size = 720906 }, - { url = "https://files.pythonhosted.org/packages/80/2b/14404f2dc95d1ec94d08879c62a76d5f26a176fab99fb023c2c70d2ff500/pyinstaller-6.12.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a2abf5fde31a8b38b6df7939bcef8ac1d0c51e97e25317ce3555cd675259750f", size = 716959 }, - { url = "https://files.pythonhosted.org/packages/11/a6/5c3a233cf19aa6d4caacf62f7ee1c728486cc20b73f5817be17485d7b7ff/pyinstaller-6.12.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:8e92e9873a616547bbabbb5a3a9843d5f2ab40c3d8b26810acdf0fe257bee4cf", size = 719414 }, - { url = "https://files.pythonhosted.org/packages/24/57/069d35236806b281a3331ef00ff94e43f3b91e4b36350de8b40b4baf9fd3/pyinstaller-6.12.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:aefe502d55c9cf6aeaed7feba80b5f8491ce43f8f2b5fe2d9aadca3ee5a05bc4", size = 715903 }, - { url = "https://files.pythonhosted.org/packages/4d/5f/857de8798836f9d16a620bd0a7c8899bba05b5fda7b3b4432762f148a86d/pyinstaller-6.12.0-py3-none-win32.whl", hash = "sha256:138856a5a503bb69c066377e0a22671b0db063e9cc14d5cf5c798a53561200d3", size = 1290980 }, - { url = "https://files.pythonhosted.org/packages/99/6e/d7d76d4d15f6351f1f942256633b795eec3d6c691d985869df1bf319cd9d/pyinstaller-6.12.0-py3-none-win_amd64.whl", hash = "sha256:0e62d3906309248409f215b386f33afec845214e69cc0f296b93222b26a88f43", size = 1348786 }, - { url = "https://files.pythonhosted.org/packages/47/c2/298ad6a3aa2cacb55cbc1f845068dc1e4a6c966082ffa0e19c69084cbc42/pyinstaller-6.12.0-py3-none-win_arm64.whl", hash = "sha256:0c271896a3a168f4f91827145702543db9c5427f4c7372a6df8c75925a3ac18a", size = 1289617 }, -] - -[[package]] -name = "pyinstaller-hooks-contrib" -version = "2025.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/1b/dc256d42f4217db99b50d6d32dbbf841a41b9615506cde77d2345d94f4a5/pyinstaller_hooks_contrib-2025.1.tar.gz", hash = "sha256:130818f9e9a0a7f2261f1fd66054966a3a50c99d000981c5d1db11d3ad0c6ab2", size = 147043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/48/833d67a585275e395f351e5787b4b7a8d462d87bca22a8c038f6ffdc2b3c/pyinstaller_hooks_contrib-2025.1-py3-none-any.whl", hash = "sha256:d3c799470cbc0bda60dcc8e6b4ab976777532b77621337f2037f558905e3a8e9", size = 346409 }, -] - -[[package]] -name = "pyjwt" -version = "2.10.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, -] - -[[package]] -name = "pyright" -version = "1.1.395" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nodeenv" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fb/47/a2e1dfd70f9f0db34f70d5b108c82be57bf24185af69c95acff57f9239fa/pyright-1.1.395.tar.gz", hash = "sha256:53703169068c160bfb41e1b44ba3e2512492869c26cfad927e1268cb3fbb1b1c", size = 3813566 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/a1/531897f8caa6c6cc99862cd1c908ddd8a366a51d968e83ab4523ded98b30/pyright-1.1.395-py3-none-any.whl", hash = "sha256:f9bc726870e740c6c77c94657734d90563a3e9765bb523b39f5860198ed75eef", size = 5688787 }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, -] - -[[package]] -name = "python-dotenv" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }, -] - -[[package]] -name = "python-json-logger" -version = "3.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/c4/358cd13daa1d912ef795010897a483ab2f0b41c9ea1b35235a8b2f7d15a7/python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008", size = 16287 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/72/2f30cf26664fcfa0bd8ec5ee62ec90c03bd485e4a294d92aabc76c5203a5/python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090", size = 14924 }, -] - -[[package]] -name = "pytz" -version = "2025.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/57/df1c9157c8d5a05117e455d66fd7cf6dbc46974f832b1058ed4856785d8a/pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e", size = 319617 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/38/ac33370d784287baa1c3d538978b5e2ea064d4c1b93ffbd12826c190dd10/pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", size = 507930 }, -] - -[[package]] -name = "pywin32" -version = "308" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/e2/02652007469263fe1466e98439831d65d4ca80ea1a2df29abecedf7e47b7/pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a", size = 5928156 }, - { url = "https://files.pythonhosted.org/packages/48/ef/f4fb45e2196bc7ffe09cad0542d9aff66b0e33f6c0954b43e49c33cad7bd/pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b", size = 6559559 }, - { url = "https://files.pythonhosted.org/packages/79/ef/68bb6aa865c5c9b11a35771329e95917b5559845bd75b65549407f9fc6b4/pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6", size = 7972495 }, - { url = "https://files.pythonhosted.org/packages/00/7c/d00d6bdd96de4344e06c4afbf218bc86b54436a94c01c71a8701f613aa56/pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897", size = 5939729 }, - { url = "https://files.pythonhosted.org/packages/21/27/0c8811fbc3ca188f93b5354e7c286eb91f80a53afa4e11007ef661afa746/pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47", size = 6543015 }, - { url = "https://files.pythonhosted.org/packages/9d/0f/d40f8373608caed2255781a3ad9a51d03a594a1248cd632d6a298daca693/pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091", size = 7976033 }, -] - -[[package]] -name = "pywin32-ctypes" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756 }, -] - -[[package]] -name = "pywinpty" -version = "2.0.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, -] - -[[package]] -name = "pyzmq" -version = "26.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "implementation_name == 'pypy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/e3/8d0382cb59feb111c252b54e8728257416a38ffcb2243c4e4775a3c990fe/pyzmq-26.2.1.tar.gz", hash = "sha256:17d72a74e5e9ff3829deb72897a175333d3ef5b5413948cae3cf7ebf0b02ecca", size = 278433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/03/5ecc46a6ed5971299f5c03e016ca637802d8660e44392bea774fb7797405/pyzmq-26.2.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:c059883840e634a21c5b31d9b9a0e2b48f991b94d60a811092bc37992715146a", size = 1346032 }, - { url = "https://files.pythonhosted.org/packages/40/51/48fec8f990ee644f461ff14c8fe5caa341b0b9b3a0ad7544f8ef17d6f528/pyzmq-26.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed038a921df836d2f538e509a59cb638df3e70ca0fcd70d0bf389dfcdf784d2a", size = 943324 }, - { url = "https://files.pythonhosted.org/packages/c1/f4/f322b389727c687845e38470b48d7a43c18a83f26d4d5084603c6c3f79ca/pyzmq-26.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9027a7fcf690f1a3635dc9e55e38a0d6602dbbc0548935d08d46d2e7ec91f454", size = 678418 }, - { url = "https://files.pythonhosted.org/packages/a8/df/2834e3202533bd05032d83e02db7ac09fa1be853bbef59974f2b2e3a8557/pyzmq-26.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d75fcb00a1537f8b0c0bb05322bc7e35966148ffc3e0362f0369e44a4a1de99", size = 915466 }, - { url = "https://files.pythonhosted.org/packages/b5/e2/45c0f6e122b562cb8c6c45c0dcac1160a4e2207385ef9b13463e74f93031/pyzmq-26.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0019cc804ac667fb8c8eaecdb66e6d4a68acf2e155d5c7d6381a5645bd93ae4", size = 873347 }, - { url = "https://files.pythonhosted.org/packages/de/b9/3e0fbddf8b87454e914501d368171466a12550c70355b3844115947d68ea/pyzmq-26.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f19dae58b616ac56b96f2e2290f2d18730a898a171f447f491cc059b073ca1fa", size = 874545 }, - { url = "https://files.pythonhosted.org/packages/1f/1c/1ee41d6e10b2127263b1994bc53b9e74ece015b0d2c0a30e0afaf69b78b2/pyzmq-26.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f5eeeb82feec1fc5cbafa5ee9022e87ffdb3a8c48afa035b356fcd20fc7f533f", size = 1208630 }, - { url = "https://files.pythonhosted.org/packages/3d/a9/50228465c625851a06aeee97c74f253631f509213f979166e83796299c60/pyzmq-26.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:000760e374d6f9d1a3478a42ed0c98604de68c9e94507e5452951e598ebecfba", size = 1519568 }, - { url = "https://files.pythonhosted.org/packages/c6/f2/6360b619e69da78863c2108beb5196ae8b955fe1e161c0b886b95dc6b1ac/pyzmq-26.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:817fcd3344d2a0b28622722b98500ae9c8bfee0f825b8450932ff19c0b15bebd", size = 1419677 }, - { url = "https://files.pythonhosted.org/packages/da/d5/f179da989168f5dfd1be8103ef508ade1d38a8078dda4f10ebae3131a490/pyzmq-26.2.1-cp311-cp311-win32.whl", hash = "sha256:88812b3b257f80444a986b3596e5ea5c4d4ed4276d2b85c153a6fbc5ca457ae7", size = 582682 }, - { url = "https://files.pythonhosted.org/packages/60/50/e5b2e9de3ffab73ff92bee736216cf209381081fa6ab6ba96427777d98b1/pyzmq-26.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:ef29630fde6022471d287c15c0a2484aba188adbfb978702624ba7a54ddfa6c1", size = 648128 }, - { url = "https://files.pythonhosted.org/packages/d9/fe/7bb93476dd8405b0fc9cab1fd921a08bd22d5e3016aa6daea1a78d54129b/pyzmq-26.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:f32718ee37c07932cc336096dc7403525301fd626349b6eff8470fe0f996d8d7", size = 562465 }, - { url = "https://files.pythonhosted.org/packages/9c/b9/260a74786f162c7f521f5f891584a51d5a42fd15f5dcaa5c9226b2865fcc/pyzmq-26.2.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:a6549ecb0041dafa55b5932dcbb6c68293e0bd5980b5b99f5ebb05f9a3b8a8f3", size = 1348495 }, - { url = "https://files.pythonhosted.org/packages/bf/73/8a0757e4b68f5a8ccb90ddadbb76c6a5f880266cdb18be38c99bcdc17aaa/pyzmq-26.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0250c94561f388db51fd0213cdccbd0b9ef50fd3c57ce1ac937bf3034d92d72e", size = 945035 }, - { url = "https://files.pythonhosted.org/packages/cf/de/f02ec973cd33155bb772bae33ace774acc7cc71b87b25c4829068bec35de/pyzmq-26.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36ee4297d9e4b34b5dc1dd7ab5d5ea2cbba8511517ef44104d2915a917a56dc8", size = 671213 }, - { url = "https://files.pythonhosted.org/packages/d1/80/8fc583085f85ac91682744efc916888dd9f11f9f75a31aef1b78a5486c6c/pyzmq-26.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2a9cb17fd83b7a3a3009901aca828feaf20aa2451a8a487b035455a86549c09", size = 908750 }, - { url = "https://files.pythonhosted.org/packages/c3/25/0b4824596f261a3cc512ab152448b383047ff5f143a6906a36876415981c/pyzmq-26.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:786dd8a81b969c2081b31b17b326d3a499ddd1856e06d6d79ad41011a25148da", size = 865416 }, - { url = "https://files.pythonhosted.org/packages/a1/d1/6fda77a034d02034367b040973fd3861d945a5347e607bd2e98c99f20599/pyzmq-26.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:2d88ba221a07fc2c5581565f1d0fe8038c15711ae79b80d9462e080a1ac30435", size = 865922 }, - { url = "https://files.pythonhosted.org/packages/ad/81/48f7fd8a71c427412e739ce576fc1ee14f3dc34527ca9b0076e471676183/pyzmq-26.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c84c1297ff9f1cd2440da4d57237cb74be21fdfe7d01a10810acba04e79371a", size = 1201526 }, - { url = "https://files.pythonhosted.org/packages/c7/d8/818f15c6ef36b5450e435cbb0d3a51599fc884a5d2b27b46b9c00af68ef1/pyzmq-26.2.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:46d4ebafc27081a7f73a0f151d0c38d4291656aa134344ec1f3d0199ebfbb6d4", size = 1512808 }, - { url = "https://files.pythonhosted.org/packages/d9/c4/b3edb7d0ae82ad6fb1a8cdb191a4113c427a01e85139906f3b655b07f4f8/pyzmq-26.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:91e2bfb8e9a29f709d51b208dd5f441dc98eb412c8fe75c24ea464734ccdb48e", size = 1411836 }, - { url = "https://files.pythonhosted.org/packages/69/1c/151e3d42048f02cc5cd6dfc241d9d36b38375b4dee2e728acb5c353a6d52/pyzmq-26.2.1-cp312-cp312-win32.whl", hash = "sha256:4a98898fdce380c51cc3e38ebc9aa33ae1e078193f4dc641c047f88b8c690c9a", size = 581378 }, - { url = "https://files.pythonhosted.org/packages/b6/b9/d59a7462848aaab7277fddb253ae134a570520115d80afa85e952287e6bc/pyzmq-26.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:a0741edbd0adfe5f30bba6c5223b78c131b5aa4a00a223d631e5ef36e26e6d13", size = 643737 }, - { url = "https://files.pythonhosted.org/packages/55/09/f37e707937cce328944c1d57e5e50ab905011d35252a0745c4f7e5822a76/pyzmq-26.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:e5e33b1491555843ba98d5209439500556ef55b6ab635f3a01148545498355e5", size = 558303 }, -] - -[[package]] -name = "questionary" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "prompt-toolkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/b8/d16eb579277f3de9e56e5ad25280fab52fc5774117fb70362e8c2e016559/questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587", size = 26775 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/3f/11dd4cd4f39e05128bfd20138faea57bec56f9ffba6185d276e3107ba5b2/questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec", size = 36747 }, -] - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, -] - -[[package]] -name = "requests" -version = "2.32.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, -] - -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, -] - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, -] - -[[package]] -name = "rich" -version = "13.9.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, -] - -[[package]] -name = "rpds-py" -version = "0.23.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/79/2ce611b18c4fd83d9e3aecb5cba93e1917c050f556db39842889fa69b79f/rpds_py-0.23.1.tar.gz", hash = "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707", size = 26806 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/67/6e5d4234bb9dee062ffca2a5f3c7cd38716317d6760ec235b175eed4de2c/rpds_py-0.23.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b79f5ced71efd70414a9a80bbbfaa7160da307723166f09b69773153bf17c590", size = 372264 }, - { url = "https://files.pythonhosted.org/packages/a7/0a/3dedb2daee8e783622427f5064e2d112751d8276ee73aa5409f000a132f4/rpds_py-0.23.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c9e799dac1ffbe7b10c1fd42fe4cd51371a549c6e108249bde9cd1200e8f59b4", size = 356883 }, - { url = "https://files.pythonhosted.org/packages/ed/fc/e1acef44f9c24b05fe5434b235f165a63a52959ac655e3f7a55726cee1a4/rpds_py-0.23.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721f9c4011b443b6e84505fc00cc7aadc9d1743f1c988e4c89353e19c4a968ee", size = 385624 }, - { url = "https://files.pythonhosted.org/packages/97/0a/a05951f6465d01622720c03ef6ef31adfbe865653e05ed7c45837492f25e/rpds_py-0.23.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f88626e3f5e57432e6191cd0c5d6d6b319b635e70b40be2ffba713053e5147dd", size = 391500 }, - { url = "https://files.pythonhosted.org/packages/ea/2e/cca0583ec0690ea441dceae23c0673b99755710ea22f40bccf1e78f41481/rpds_py-0.23.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:285019078537949cecd0190f3690a0b0125ff743d6a53dfeb7a4e6787af154f5", size = 444869 }, - { url = "https://files.pythonhosted.org/packages/cc/e6/95cda68b33a6d814d1e96b0e406d231ed16629101460d1740e92f03365e6/rpds_py-0.23.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92f5654157de1379c509b15acec9d12ecf6e3bc1996571b6cb82a4302060447", size = 444930 }, - { url = "https://files.pythonhosted.org/packages/5f/a7/e94cdb73411ae9c11414d3c7c9a6ad75d22ad4a8d094fb45a345ba9e3018/rpds_py-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e768267cbe051dd8d1c5305ba690bb153204a09bf2e3de3ae530de955f5b5580", size = 386254 }, - { url = "https://files.pythonhosted.org/packages/dd/c5/a4a943d90a39e85efd1e04b1ad5129936786f9a9aa27bb7be8fc5d9d50c9/rpds_py-0.23.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5334a71f7dc1160382d45997e29f2637c02f8a26af41073189d79b95d3321f1", size = 417090 }, - { url = "https://files.pythonhosted.org/packages/0c/a0/80d0013b12428d1fce0ab4e71829400b0a32caec12733c79e6109f843342/rpds_py-0.23.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6adb81564af0cd428910f83fa7da46ce9ad47c56c0b22b50872bc4515d91966", size = 557639 }, - { url = "https://files.pythonhosted.org/packages/a6/92/ec2e6980afb964a2cd7a99cbdef1f6c01116abe94b42cbe336ac93dd11c2/rpds_py-0.23.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cafa48f2133d4daa028473ede7d81cd1b9f9e6925e9e4003ebdf77010ee02f35", size = 584572 }, - { url = "https://files.pythonhosted.org/packages/3d/ce/75b6054db34a390789a82523790717b27c1bd735e453abb429a87c4f0f26/rpds_py-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fced9fd4a07a1ded1bac7e961ddd9753dd5d8b755ba8e05acba54a21f5f1522", size = 553028 }, - { url = "https://files.pythonhosted.org/packages/cc/24/f45abe0418c06a5cba0f846e967aa27bac765acd927aabd857c21319b8cc/rpds_py-0.23.1-cp311-cp311-win32.whl", hash = "sha256:243241c95174b5fb7204c04595852fe3943cc41f47aa14c3828bc18cd9d3b2d6", size = 220862 }, - { url = "https://files.pythonhosted.org/packages/2d/a6/3c0880e8bbfc36451ef30dc416266f6d2934705e468db5d21c8ba0ab6400/rpds_py-0.23.1-cp311-cp311-win_amd64.whl", hash = "sha256:11dd60b2ffddba85715d8a66bb39b95ddbe389ad2cfcf42c833f1bcde0878eaf", size = 232953 }, - { url = "https://files.pythonhosted.org/packages/f3/8c/d17efccb9f5b9137ddea706664aebae694384ae1d5997c0202093e37185a/rpds_py-0.23.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c", size = 364369 }, - { url = "https://files.pythonhosted.org/packages/6e/c0/ab030f696b5c573107115a88d8d73d80f03309e60952b64c584c70c659af/rpds_py-0.23.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba", size = 349965 }, - { url = "https://files.pythonhosted.org/packages/b3/55/b40170f5a079c4fb0b6a82b299689e66e744edca3c3375a8b160fb797660/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31", size = 389064 }, - { url = "https://files.pythonhosted.org/packages/ab/1c/b03a912c59ec7c1e16b26e587b9dfa8ddff3b07851e781e8c46e908a365a/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149", size = 397741 }, - { url = "https://files.pythonhosted.org/packages/52/6f/151b90792b62fb6f87099bcc9044c626881fdd54e31bf98541f830b15cea/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c", size = 448784 }, - { url = "https://files.pythonhosted.org/packages/71/2a/6de67c0c97ec7857e0e9e5cd7c52405af931b303eb1e5b9eff6c50fd9a2e/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5", size = 440203 }, - { url = "https://files.pythonhosted.org/packages/db/5e/e759cd1c276d98a4b1f464b17a9bf66c65d29f8f85754e27e1467feaa7c3/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc", size = 391611 }, - { url = "https://files.pythonhosted.org/packages/1c/1e/2900358efcc0d9408c7289769cba4c0974d9db314aa884028ed7f7364f61/rpds_py-0.23.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35", size = 423306 }, - { url = "https://files.pythonhosted.org/packages/23/07/6c177e6d059f5d39689352d6c69a926ee4805ffdb6f06203570234d3d8f7/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b", size = 562323 }, - { url = "https://files.pythonhosted.org/packages/70/e4/f9097fd1c02b516fff9850792161eb9fc20a2fd54762f3c69eae0bdb67cb/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef", size = 588351 }, - { url = "https://files.pythonhosted.org/packages/87/39/5db3c6f326bfbe4576ae2af6435bd7555867d20ae690c786ff33659f293b/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad", size = 557252 }, - { url = "https://files.pythonhosted.org/packages/fd/14/2d5ad292f144fa79bafb78d2eb5b8a3a91c358b6065443cb9c49b5d1fedf/rpds_py-0.23.1-cp312-cp312-win32.whl", hash = "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057", size = 222181 }, - { url = "https://files.pythonhosted.org/packages/a3/4f/0fce63e0f5cdd658e71e21abd17ac1bc9312741ebb8b3f74eeed2ebdf771/rpds_py-0.23.1-cp312-cp312-win_amd64.whl", hash = "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165", size = 237426 }, -] - -[[package]] -name = "ruamel-yaml" -version = "0.18.10" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ruamel-yaml-clib", marker = "platform_python_implementation == 'CPython'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ea/46/f44d8be06b85bc7c4d8c95d658be2b68f27711f279bf9dd0612a5e4794f5/ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58", size = 143447 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1", size = 117729 }, -] - -[[package]] -name = "ruamel-yaml-clib" -version = "0.2.12" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224 }, - { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480 }, - { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068 }, - { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012 }, - { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352 }, - { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344 }, - { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498 }, - { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205 }, - { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185 }, - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, -] - -[[package]] -name = "ruff" -version = "0.9.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 }, - { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 }, - { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 }, - { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 }, - { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 }, - { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 }, - { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 }, - { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 }, - { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 }, - { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 }, - { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 }, - { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 }, - { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 }, - { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 }, - { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 }, - { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, -] - -[[package]] -name = "setuptools" -version = "75.8.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d1/53/43d99d7687e8cdef5ab5f9ec5eaf2c0423c2b35133a2b7e7bc276fc32b21/setuptools-75.8.2.tar.gz", hash = "sha256:4880473a969e5f23f2a2be3646b2dfd84af9028716d398e46192f84bc36900d2", size = 1344083 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/38/7d7362e031bd6dc121e5081d8cb6aa6f6fedf2b67bf889962134c6da4705/setuptools-75.8.2-py3-none-any.whl", hash = "sha256:558e47c15f1811c1fa7adbd0096669bf76c1d3f433f58324df69f3f5ecac4e8f", size = 1229385 }, -] - -[[package]] -name = "shellingham" -version = "1.5.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, -] - -[[package]] -name = "soupsieve" -version = "2.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, -] - -[[package]] -name = "stack-data" -version = "0.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asttokens" }, - { name = "executing" }, - { name = "pure-eval" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, -] - -[[package]] -name = "stringcase" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/1f/1241aa3d66e8dc1612427b17885f5fcd9c9ee3079fc0d28e9a3aeeb36fa3/stringcase-1.2.0.tar.gz", hash = "sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008", size = 2958 } - -[[package]] -name = "terminado" -version = "0.18.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess", marker = "os_name != 'nt'" }, - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "tornado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, -] - -[[package]] -name = "textual" -version = "2.1.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py", extra = ["linkify", "plugins"] }, - { name = "platformdirs" }, - { name = "rich" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/62/4af4689dd971ed4fb3215467624016d53550bff1df9ca02e7625eec07f8b/textual-2.1.2.tar.gz", hash = "sha256:aae3f9fde00c7440be00e3c3ac189e02d014f5298afdc32132f93480f9e09146", size = 1596600 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/81/9df1988c908cbba77f10fecb8587496b3dff2838d4510457877a521d87fd/textual-2.1.2-py3-none-any.whl", hash = "sha256:95f37f49e930838e721bba8612f62114d410a3019665b6142adabc14c2fb9611", size = 680148 }, -] - -[[package]] -name = "textual-dev" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "click" }, - { name = "msgpack" }, - { name = "textual" }, - { name = "textual-serve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/d3/ed0b20f6de0af1b7062c402d59d256029c0daa055ad9e04c27471b450cdd/textual_dev-1.7.0.tar.gz", hash = "sha256:bf1a50eaaff4cd6a863535dd53f06dbbd62617c371604f66f56de3908220ccd5", size = 25935 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/4b/3c1eb9cbc39f2f28d27e10ef2fe42bfe0cf3c2f8445a454c124948d6169b/textual_dev-1.7.0-py3-none-any.whl", hash = "sha256:a93a846aeb6a06edb7808504d9c301565f7f4bf2e7046d56583ed755af356c8d", size = 27221 }, -] - -[[package]] -name = "textual-serve" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "aiohttp-jinja2" }, - { name = "jinja2" }, - { name = "rich" }, - { name = "textual" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/18/6c/57248070f525ea8a9a02d9f58dc2747c609b615b0bda1306aaeb80a233bd/textual_serve-1.1.1.tar.gz", hash = "sha256:71c662472c462e5e368defc660ee6e8eae3bfda88ca40c050c55474686eb0c54", size = 445957 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/a9/01d35770fde8d889e1fe28b726188cf28801e57afd369c614cd2bc100ee4/textual_serve-1.1.1-py3-none-any.whl", hash = "sha256:568782f1c0e60e3f7039d9121e1cb5c2f4ca1aaf6d6bd7aeb833d5763a534cb2", size = 445034 }, -] - -[[package]] -name = "tinycss2" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, -] - -[[package]] -name = "tomli" -version = "2.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, -] - -[[package]] -name = "tornado" -version = "6.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, - { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, - { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, - { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, - { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, - { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, - { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, - { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, - { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, - { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, -] - -[[package]] -name = "trogon" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "textual" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cf/ae/7367acac2194a215b092ba3fccde3b558272702110b8bb9bea164ab4ac42/trogon-0.6.0.tar.gz", hash = "sha256:fd1abfeb7b15d79d6e6cfc9e724aad2a2728812e4713a744d975f133e7ec73a4", size = 22902 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/30/33035d5796a3b8b9624997fec7545e3febd2268c7b48df38a715a95cb5e4/trogon-0.6.0-py3-none-any.whl", hash = "sha256:fb5b6c25acd7a0eaba8d2cd32a57f1d80c26413cea737dad7a4eebcda56060e0", size = 26077 }, -] - -[package.optional-dependencies] -typer = [ - { name = "typer" }, -] - -[[package]] -name = "typer" -version = "0.15.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "shellingham" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061 }, -] - -[[package]] -name = "typer-config" -version = "1.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/af/78f802bc49eaa5855082cca10e9c9d7d03469c957c149aa159561dc3d744/typer_config-1.4.2.tar.gz", hash = "sha256:69dffc0e06095b57754bfe9fb3e4caf28ab9c2c430dade6433b0ca128510f600", size = 10919 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/bd/2e9d407d7ed3f33a40d8211a481b76a0507ba4f117da9dec116c0de9871e/typer_config-1.4.2-py3-none-any.whl", hash = "sha256:b3e1f59bacc8276e5b830f35c9ca403cd85f14173169c23c3756fa816357a34f", size = 11698 }, -] - -[package.optional-dependencies] -yaml = [ - { name = "pyyaml" }, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20241206" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, -] - -[[package]] -name = "tzdata" -version = "2025.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, -] - -[[package]] -name = "uc-micro-py" -version = "1.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229 }, -] - -[[package]] -name = "unique-namer" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/47/26e9f45b64ad2d7c77eefb48a0e84ae0c0070fa812bf6ab95584559ce53c/unique_namer-1.6.1.tar.gz", hash = "sha256:7f4e3143f923c24baaed56bb93726e10669333271caa71ffd5d8f1a928a5befe", size = 73334 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/72/e06078006bbc3635490b872e8647294cf5921f378634de43520012b7c09e/unique_namer-1.6.1-py3-none-any.whl", hash = "sha256:6e76751c0886244625b43a8e5e7c18168a9205f5a944c0dbbbd9eb219c4812f2", size = 71111 }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, -] - -[[package]] -name = "uvloop" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410 }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476 }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855 }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185 }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256 }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323 }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, -] - -[[package]] -name = "ward" -version = "0.68.0b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "click-completion" }, - { name = "click-default-group" }, - { name = "cucumber-tag-expressions" }, - { name = "pluggy" }, - { name = "pprintpp" }, - { name = "rich" }, - { name = "tomli" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6b/d6/8e6ffa608e05ecc4c98f17272db67d00035a3d040671ce565ee6924c0d98/ward-0.68.0b0.tar.gz", hash = "sha256:d8aafa4ddb81f4d5787d95bdb2f7ba69a2e89f183feec78d8afcc64b2cd19ee9", size = 38657 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/dd/6999a6f4b01ab01bd5d8bc926d34d8224c232dce1f7353f746e93b482449/ward-0.68.0b0-py3-none-any.whl", hash = "sha256:0847e6b95db9d2b83c7d1b9cea9bcb7ac3b8e8f6d341b8dc8920d6afb05458b1", size = 43416 }, -] - -[[package]] -name = "watchdog" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, -] - -[[package]] -name = "wcwidth" -version = "0.2.13" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, -] - -[[package]] -name = "webcolors" -version = "24.11.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, -] - -[[package]] -name = "widgetsnbextension" -version = "4.0.13" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/56/fc/238c424fd7f4ebb25f8b1da9a934a3ad7c848286732ae04263661eb0fc03/widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6", size = 1164730 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/02/88b65cc394961a60c43c70517066b6b679738caf78506a5da7b88ffcb643/widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71", size = 2335872 }, -] - -[[package]] -name = "xxhash" -version = "3.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/5e/d6e5258d69df8b4ed8c83b6664f2b47d30d2dec551a29ad72a6c69eafd31/xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f", size = 84241 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/c7/afed0f131fbda960ff15eee7f304fa0eeb2d58770fade99897984852ef23/xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1", size = 31969 }, - { url = "https://files.pythonhosted.org/packages/8c/0c/7c3bc6d87e5235672fcc2fb42fd5ad79fe1033925f71bf549ee068c7d1ca/xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8", size = 30800 }, - { url = "https://files.pythonhosted.org/packages/04/9e/01067981d98069eec1c20201f8c145367698e9056f8bc295346e4ea32dd1/xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166", size = 221566 }, - { url = "https://files.pythonhosted.org/packages/d4/09/d4996de4059c3ce5342b6e1e6a77c9d6c91acce31f6ed979891872dd162b/xxhash-3.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28b2fdcee797e1c1961cd3bcd3d545cab22ad202c846235197935e1df2f8ef7", size = 201214 }, - { url = "https://files.pythonhosted.org/packages/62/f5/6d2dc9f8d55a7ce0f5e7bfef916e67536f01b85d32a9fbf137d4cadbee38/xxhash-3.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:924361811732ddad75ff23e90efd9ccfda4f664132feecb90895bade6a1b4623", size = 429433 }, - { url = "https://files.pythonhosted.org/packages/d9/72/9256303f10e41ab004799a4aa74b80b3c5977d6383ae4550548b24bd1971/xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89997aa1c4b6a5b1e5b588979d1da048a3c6f15e55c11d117a56b75c84531f5a", size = 194822 }, - { url = "https://files.pythonhosted.org/packages/34/92/1a3a29acd08248a34b0e6a94f4e0ed9b8379a4ff471f1668e4dce7bdbaa8/xxhash-3.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:685c4f4e8c59837de103344eb1c8a3851f670309eb5c361f746805c5471b8c88", size = 208538 }, - { url = "https://files.pythonhosted.org/packages/53/ad/7fa1a109663366de42f724a1cdb8e796a260dbac45047bce153bc1e18abf/xxhash-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbd2ecfbfee70bc1a4acb7461fa6af7748ec2ab08ac0fa298f281c51518f982c", size = 216953 }, - { url = "https://files.pythonhosted.org/packages/35/02/137300e24203bf2b2a49b48ce898ecce6fd01789c0fcd9c686c0a002d129/xxhash-3.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25b5a51dc3dfb20a10833c8eee25903fd2e14059e9afcd329c9da20609a307b2", size = 203594 }, - { url = "https://files.pythonhosted.org/packages/23/03/aeceb273933d7eee248c4322b98b8e971f06cc3880e5f7602c94e5578af5/xxhash-3.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a8fb786fb754ef6ff8c120cb96629fb518f8eb5a61a16aac3a979a9dbd40a084", size = 210971 }, - { url = "https://files.pythonhosted.org/packages/e3/64/ed82ec09489474cbb35c716b189ddc1521d8b3de12b1b5ab41ce7f70253c/xxhash-3.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a905ad00ad1e1c34fe4e9d7c1d949ab09c6fa90c919860c1534ff479f40fd12d", size = 415050 }, - { url = "https://files.pythonhosted.org/packages/71/43/6db4c02dcb488ad4e03bc86d70506c3d40a384ee73c9b5c93338eb1f3c23/xxhash-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:963be41bcd49f53af6d795f65c0da9b4cc518c0dd9c47145c98f61cb464f4839", size = 192216 }, - { url = "https://files.pythonhosted.org/packages/22/6d/db4abec29e7a567455344433d095fdb39c97db6955bb4a2c432e486b4d28/xxhash-3.5.0-cp311-cp311-win32.whl", hash = "sha256:109b436096d0a2dd039c355fa3414160ec4d843dfecc64a14077332a00aeb7da", size = 30120 }, - { url = "https://files.pythonhosted.org/packages/52/1c/fa3b61c0cf03e1da4767213672efe186b1dfa4fc901a4a694fb184a513d1/xxhash-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:b702f806693201ad6c0a05ddbbe4c8f359626d0b3305f766077d51388a6bac58", size = 30003 }, - { url = "https://files.pythonhosted.org/packages/6b/8e/9e6fc572acf6e1cc7ccb01973c213f895cb8668a9d4c2b58a99350da14b7/xxhash-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:c4dcb4120d0cc3cc448624147dba64e9021b278c63e34a38789b688fd0da9bf3", size = 26777 }, - { url = "https://files.pythonhosted.org/packages/07/0e/1bfce2502c57d7e2e787600b31c83535af83746885aa1a5f153d8c8059d6/xxhash-3.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:14470ace8bd3b5d51318782cd94e6f94431974f16cb3b8dc15d52f3b69df8e00", size = 31969 }, - { url = "https://files.pythonhosted.org/packages/3f/d6/8ca450d6fe5b71ce521b4e5db69622383d039e2b253e9b2f24f93265b52c/xxhash-3.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59aa1203de1cb96dbeab595ded0ad0c0056bb2245ae11fac11c0ceea861382b9", size = 30787 }, - { url = "https://files.pythonhosted.org/packages/5b/84/de7c89bc6ef63d750159086a6ada6416cc4349eab23f76ab870407178b93/xxhash-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08424f6648526076e28fae6ea2806c0a7d504b9ef05ae61d196d571e5c879c84", size = 220959 }, - { url = "https://files.pythonhosted.org/packages/fe/86/51258d3e8a8545ff26468c977101964c14d56a8a37f5835bc0082426c672/xxhash-3.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61a1ff00674879725b194695e17f23d3248998b843eb5e933007ca743310f793", size = 200006 }, - { url = "https://files.pythonhosted.org/packages/02/0a/96973bd325412feccf23cf3680fd2246aebf4b789122f938d5557c54a6b2/xxhash-3.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f2c61bee5844d41c3eb015ac652a0229e901074951ae48581d58bfb2ba01be", size = 428326 }, - { url = "https://files.pythonhosted.org/packages/11/a7/81dba5010f7e733de88af9555725146fc133be97ce36533867f4c7e75066/xxhash-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d32a592cac88d18cc09a89172e1c32d7f2a6e516c3dfde1b9adb90ab5df54a6", size = 194380 }, - { url = "https://files.pythonhosted.org/packages/fb/7d/f29006ab398a173f4501c0e4977ba288f1c621d878ec217b4ff516810c04/xxhash-3.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70dabf941dede727cca579e8c205e61121afc9b28516752fd65724be1355cc90", size = 207934 }, - { url = "https://files.pythonhosted.org/packages/8a/6e/6e88b8f24612510e73d4d70d9b0c7dff62a2e78451b9f0d042a5462c8d03/xxhash-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5d0ddaca65ecca9c10dcf01730165fd858533d0be84c75c327487c37a906a27", size = 216301 }, - { url = "https://files.pythonhosted.org/packages/af/51/7862f4fa4b75a25c3b4163c8a873f070532fe5f2d3f9b3fc869c8337a398/xxhash-3.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e5b5e16c5a480fe5f59f56c30abdeba09ffd75da8d13f6b9b6fd224d0b4d0a2", size = 203351 }, - { url = "https://files.pythonhosted.org/packages/22/61/8d6a40f288f791cf79ed5bb113159abf0c81d6efb86e734334f698eb4c59/xxhash-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149b7914451eb154b3dfaa721315117ea1dac2cc55a01bfbd4df7c68c5dd683d", size = 210294 }, - { url = "https://files.pythonhosted.org/packages/17/02/215c4698955762d45a8158117190261b2dbefe9ae7e5b906768c09d8bc74/xxhash-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:eade977f5c96c677035ff39c56ac74d851b1cca7d607ab3d8f23c6b859379cab", size = 414674 }, - { url = "https://files.pythonhosted.org/packages/31/5c/b7a8db8a3237cff3d535261325d95de509f6a8ae439a5a7a4ffcff478189/xxhash-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa9f547bd98f5553d03160967866a71056a60960be00356a15ecc44efb40ba8e", size = 192022 }, - { url = "https://files.pythonhosted.org/packages/78/e3/dd76659b2811b3fd06892a8beb850e1996b63e9235af5a86ea348f053e9e/xxhash-3.5.0-cp312-cp312-win32.whl", hash = "sha256:f7b58d1fd3551b8c80a971199543379be1cee3d0d409e1f6d8b01c1a2eebf1f8", size = 30170 }, - { url = "https://files.pythonhosted.org/packages/d9/6b/1c443fe6cfeb4ad1dcf231cdec96eb94fb43d6498b4469ed8b51f8b59a37/xxhash-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:fa0cafd3a2af231b4e113fba24a65d7922af91aeb23774a8b78228e6cd785e3e", size = 30040 }, - { url = "https://files.pythonhosted.org/packages/0f/eb/04405305f290173acc0350eba6d2f1a794b57925df0398861a20fbafa415/xxhash-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:586886c7e89cb9828bcd8a5686b12e161368e0064d040e225e72607b43858ba2", size = 26796 }, -] - -[[package]] -name = "yarl" -version = "1.18.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "multidict" }, - { name = "propcache" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, - { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, - { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, - { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 }, - { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 }, - { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 }, - { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 }, - { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 }, - { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 }, - { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 }, - { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 }, - { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 }, - { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 }, - { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 }, - { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 }, - { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 }, - { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, - { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, - { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, - { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, - { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, - { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, - { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, - { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, - { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, - { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, - { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, - { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, - { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, - { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, - { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, - { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, - { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, -] diff --git a/cookbooks/03-trip-planning-assistant.ipynb b/cookbooks/03-trip-planning-assistant.ipynb deleted file mode 100644 index 07c655e6e..000000000 --- a/cookbooks/03-trip-planning-assistant.ipynb +++ /dev/null @@ -1,1154 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task: Travel Itinerary Assistant\n", - "\n", - "### Overview\n", - "\n", - "The Travel Itinerary Assistant helps users plan a travel itinerary that takes into account **current weather conditions** and **local tourist attractions**. By integrating data from Wikipedia for tourist attractions and using a weather API for real-time weather updates, the system provides a comprehensive travel plan tailored to each location. The generated itinerary suggests appropriate activities based on the weather, enhancing the overall travel experience.\n", - "\n", - "### Task Flow\n", - "\n", - "1. **User Input**\n", - " - User provides a list of desired travel locations.\n", - " - Each location is processed individually to gather the required data.\n", - "\n", - "2. **Weather Data Retrieval**\n", - " - Fetch current weather data for each location using a weather API.\n", - " - Extract relevant weather details, such as temperature, weather condition, and recommendations.\n", - "\n", - "3. **Tourist Attractions Lookup**\n", - " - Use Wikipedia to search for the top tourist attractions for each location.\n", - " - The query format used is: `\" tourist attractions\"`.\n", - " - Retrieve and compile a list of popular tourist spots and landmarks.\n", - "\n", - "4. **Data Evaluation and Integration**\n", - " - Combine weather data and tourist attractions into a unified list for each location.\n", - " - Format the data into a structured tuple: `(location, weather, attractions)`.\n", - "\n", - "5. **Itinerary Generation**\n", - " - Create a detailed travel itinerary based on:\n", - " - Current weather conditions (e.g., sunny, rainy, cloudy).\n", - " - Top tourist attractions for each location.\n", - " - Suggested activities categorized as indoor or outdoor based on weather.\n", - "\n", - "### Key Features\n", - "\n", - "- **Multi-location Travel Planning**: Handles multiple destinations simultaneously, offering a consolidated travel plan.\n", - "- **Real-time Weather Data**: Leverages weather APIs to provide up-to-date weather conditions.\n", - "- **Tourist Attraction Discovery**: Integrates Wikipedia to find and recommend popular attractions.\n", - "- **Intelligent Itinerary Suggestions**: Suggests indoor or outdoor activities based on the weather.\n", - "- **Comprehensive Itinerary Output**: Combines weather and tourist data into a user-friendly travel plan.\n", - "\n", - "### Output\n", - "\n", - "- A detailed travel itinerary for each location\n", - "- Curated, up-to-date information gathered from weather searches and Wikipedia\n", - "\n", - "```plaintext\n", - "\n", - " +----------------+ +--------------------------+ +--------------------------+ +------------------------------+ +------------------+\n", - " | User Input | | Weather Data Retrieval | | Tourist Attractions | | Data Evaluation & Integration| | Itinerary |\n", - " | (List of | --> | (Weather API) | --> | Lookup (Wikipedia) | --> | (Combine Weather & | --> | Generation |\n", - " | Locations) | | | | | | Attractions Data) | | (Generate Plan) |\n", - " +----------------+ +--------------------------+ +--------------------------+ +------------------------------+ +------------------+\n", - " | | | | |\n", - " | | | | |\n", - " v v v v v\n", - "Location 1, Location 2, ... Fetch weather for each Search Wikipedia for Combine weather data and Create itinerary with\n", - "Each location processed location individually, \" tourist tourist attractions into suggested activities\n", - "individually for extracting temp., attractions\", retrieve a structured tuple: based on weather and\n", - "weather data. conditions, & top spots. (location, weather, attractions.\n", - " recommendations. attractions).\n", - "```\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Installing the Julep Client" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install julep -U --quiet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "# Global UUID is generated for agent and task\n", - "import uuid\n", - "\n", - "AGENT_UUID = uuid.uuid4()\n", - "TASK_UUID = uuid.uuid4() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "from julep import Client\n", - "import os\n", - "\n", - "JULEP_API_KEY = os.environ[\"JULEP_API_KEY\"]\n", - "\n", - "# Create a Julep client\n", - "client = Client(api_key=JULEP_API_KEY, environment=\"production\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating an \"agent\"\n", - "\n", - "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n", - "\n", - "To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents)." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "# Defining the agent\n", - "name = \"Jacob\"\n", - "about = \"A travel assistant that helps plan the perfect trip.\"\n", - "\n", - "# Create the agent\n", - "agent = client.agents.create_or_update(\n", - " agent_id=AGENT_UUID,\n", - " name=name,\n", - " about=about,\n", - " model=\"gpt-4o\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Defining a Task\n", - "\n", - "Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\n", - "\n", - "You can use them to conduct complex actions by defining them step-by-step.\n", - "\n", - "To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks)." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "import yaml\n", - "\n", - "openweathermap_api_key = \"YOUR_API_KEY\"\n", - "brave_api_key = \"YOUR_API_KEY\"\n", - "\n", - "# Defining the task\n", - "task_def = yaml.safe_load(f\"\"\"\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", - "name: Julep Tourist Plan With Weather And Attractions\n", - "description: A task that plans a trip with weather and attractions.\n", - "\n", - "########################################################\n", - "####################### INPUT SCHEMA ##################\n", - "######################################################## \n", - "input_schema:\n", - " type: object\n", - " properties:\n", - " locations:\n", - " type: array\n", - " items:\n", - " type: string\n", - " description: The locations to search for.\n", - "\n", - "########################################################\n", - "####################### TOOLS ##########################\n", - "########################################################\n", - "\n", - "# Define the tools that the task will use in this workflow\n", - "tools:\n", - "- name: wikipedia\n", - " type: integration\n", - " integration:\n", - " provider: wikipedia\n", - "\n", - "- name: weather\n", - " type: integration\n", - " integration:\n", - " provider: weather\n", - " setup:\n", - " openweathermap_api_key: {openweathermap_api_key}\n", - "\n", - "- name: internet_search\n", - " type: integration\n", - " integration:\n", - " provider: brave\n", - " setup:\n", - " brave_api_key: {brave_api_key}\n", - "\n", - "########################################################\n", - "####################### MAIN WORKFLOW ##########################\n", - "########################################################\n", - "\n", - "main:\n", - "# Step 0: Fetch weather data for each location\n", - "- over: $ steps[0].input.locations\n", - " map:\n", - " tool: weather\n", - " arguments:\n", - " location: $ _\n", - "\n", - "# Step 1: Search Wikipedia for tourist attractions for each location\n", - "- over: $ steps[0].input.locations\n", - " map:\n", - " tool: internet_search\n", - " arguments:\n", - " query: $ 'tourist attractions in ' + _\n", - "\n", - "# Step 2: Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n", - "- evaluate:\n", - " zipped: |-\n", - " $ list(\n", - " zip(\n", - " steps[0].input.locations,\n", - " [output['result'] for output in steps[0].output],\n", - " steps[1].output\n", - " )\n", - " )\n", - "\n", - "# Step 3: Create an itinerary for each location\n", - "- over: $ _['zipped']\n", - " parallelism: 3\n", - " # Inside the map step, each `_` represents the current element in the list\n", - " # which is a tuple of (location, weather, attractions)\n", - " map:\n", - " prompt:\n", - " - role: system\n", - " content: >-\n", - " $ f'''You are {{agent.name}}. Your task is to create a detailed itinerary\n", - " for visiting tourist attractions in some locations.\n", - " The user will give you the following information for each location:\n", - "\n", - " - The location\n", - " - The current weather condition\n", - " - The top tourist attractions'''\n", - " - role: user\n", - " content: >-\n", - " $ f'''Location: \"{{_[0]}}\"\n", - " Weather: \"{{_[1]}}\"\n", - " Attractions: \"{{_[2]}}\"'''\n", - " unwrap: true\n", - "\n", - "# Step 4: Create a final plan by joining the activities for each location\n", - "- evaluate:\n", - " final_plan: |-\n", - " $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "# creating the task object\n", - "task = client.tasks.create_or_update(\n", - " task_id=TASK_UUID,\n", - " agent_id=AGENT_UUID,\n", - " **task_def\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating an Execution\n", - "\n", - "An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\n", - "\n", - "To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution)." - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Started an execution. Execution ID: 067ffa47-3b83-79b7-8000-eaaa1a013f0e\n" - ] - } - ], - "source": [ - "execution = client.executions.create(\n", - " task_id=task.id,\n", - " input={\n", - " \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n", - " }\n", - ")\n", - "\n", - "print(\"Started an execution. Execution ID:\", execution.id)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Checking execution details and output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are multiple ways to get the execution details and the output:\n", - "\n", - "1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\n", - "\n", - "2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\n", - "\n", - "\n", - "Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: running\n", - "--------------------------------------------------\n", - "Execution status: succeeded\n", - "--------------------------------------------------\n", - "Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\n", - "\n", - "### Day 1: Arrival and Exploration\n", - "\n", - "**Morning:**\n", - "- **Central Park:**\n", - " - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74°C, and a chance to see the iconic landscapes.\n", - " - Address: New York, NY\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\n", - "\n", - "**Mid-Morning:**\n", - "- **Metropolitan Museum of Art:**\n", - " - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\n", - " - Address: 1000 5th Ave, New York, NY 10028\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\n", - "\n", - "**Afternoon:**\n", - "- **Lunch near the Upper East Side:**\n", - " - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\n", - "- **Museum of Modern Art (MoMA):**\n", - " - After lunch, take a short walk to MoMA for a dose of contemporary art.\n", - " - Address: 11 W 53rd St, New York, NY 10019\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Times Square:**\n", - " - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\n", - " - Address: Manhattan, NY 10036\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\n", - "\n", - "### Day 2: Iconic Landmarks\n", - "\n", - "**Morning:**\n", - "- **Statue of Liberty and Ellis Island:**\n", - " - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\n", - " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", - "\n", - "**Afternoon:**\n", - "- **Lunch in Lower Manhattan:**\n", - " - Explore dining options in the Financial District.\n", - "- **9/11 Memorial and Museum:**\n", - " - Visit this poignant site to pay respects and learn about the events of 9/11.\n", - " - Address: 180 Greenwich St, New York, NY 10007\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Broadway Show:**\n", - " - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\n", - " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", - "\n", - "### Day 3: Adventure and Relaxation\n", - "\n", - "**Morning:**\n", - "- **High Line Park:**\n", - " - Enjoy a unique stroll along this elevated linear park on a former rail track.\n", - " - Address: New York, NY 10011\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\n", - "\n", - "**Afternoon:**\n", - "- **Chelsea Market:**\n", - " - Experience an array of food options in this historic marketplace for lunch.\n", - " - Address: 75 9th Ave, New York, NY 10011\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Brooklyn Bridge Walk:**\n", - " - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\n", - "\n", - "With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\n", - "---------------\n", - "Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\n", - "\n", - "---\n", - "\n", - "**London Day Itinerary**\n", - "\n", - "**Morning:**\n", - "\n", - "1. **Breakfast at Borough Market**\n", - " - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\n", - "\n", - "2. **Tower of London**\n", - " - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\n", - "\n", - "**Midday:**\n", - "\n", - "3. **Walk Along the Thames & Tower Bridge**\n", - " - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\n", - "\n", - "4. **Lunch at a Pub in Covent Garden**\n", - " - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\n", - "\n", - "**Afternoon:**\n", - "\n", - "5. **British Museum**\n", - " - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\n", - "\n", - "6. **Stroll through Leadenhall Market**\n", - " - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\n", - "\n", - "**Evening:**\n", - "\n", - "7. **Dinner and Evening at The Sky Garden**\n", - " - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360° views of London's skyline.\n", - "\n", - "8. **Walk Around South Bank**\n", - " - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\n", - "\n", - "**Tips:**\n", - "- Carry an umbrella or a light waterproof jacket just in case.\n", - "- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\n", - "- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\n", - "\n", - "Have a fantastic day exploring London!\n", - "---------------\n", - "### Paris Itinerary\n", - "\n", - "#### **Day 1: Arrival and Evening River Cruise**\n", - "\n", - "- **Morning:**\n", - " - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \n", - " - **Breakfast at a Local Café:** Start your day with a classic Parisian breakfast: a croissant and café au lait at a nearby café.\n", - "\n", - "- **Afternoon:**\n", - " - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\n", - " - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the Marché Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\n", - "\n", - "- **Evening:**\n", - " - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\n", - " - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\n", - "\n", - "#### **Day 2: Classic Paris Sights**\n", - "\n", - "- **Morning:**\n", - " - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\n", - " - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don’t miss iconic pieces like the Mona Lisa and the Venus de Milo.\n", - "\n", - "- **Afternoon:**\n", - " - **Lunch at a Café:** Enjoy lunch at a café near the Louvre. Try classic French dishes like quiche or salade niçoise.\n", - " - **Walk along the Champs-Élysées:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\n", - "\n", - "- **Evening:**\n", - " - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\n", - "\n", - "#### **Day 3: Art, Culture, and Relaxation**\n", - "\n", - "- **Morning:**\n", - " - **Musée d'Orsay:** Visit the Musée d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\n", - " - **Explore Saint-Germain-des-Prés:** Discover the boutiques and cafés in this historic district.\n", - "\n", - "- **Afternoon:**\n", - " - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\n", - " - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\n", - "\n", - "- **Evening:**\n", - " - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\n", - "\n", - "#### **Tips:**\n", - "- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14°C).\n", - "- **Travel Consideration:** Use public transport like the Métro to navigate efficiently.\n", - "- **Pass Options:** Consider purchasing the Paris Pass® for discounts and ease of access at major attractions.\n", - "\n", - "With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\n", - "---------------\n", - "**Detailed Itinerary for a Day in Tokyo**\n", - "\n", - "*Weather Overview:*\n", - "- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37°C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\n", - "\n", - "**Morning:**\n", - "\n", - "1. **Visit Asakusa and Sensō-ji Temple:**\n", - " - Start your day in the historical district of Asakusa. Explore Sensō-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\n", - " - *Time: 9:00 AM - 11:00 AM*\n", - "\n", - "2. **Breakfast at Asakusa:**\n", - " - Enjoy a traditional Japanese breakfast at one of the local cafés. Try some fresh sushi or a hearty bowl of ramen.\n", - "\n", - "**Midday:**\n", - "\n", - "1. **Ueno Park and Museums:**\n", - " - Head over to Ueno Park, a large public park with museums and beautiful gardens.\n", - " - Visit the Tokyo National Museum to explore Japanese art and history.\n", - " - *Time: 11:30 AM - 1:30 PM*\n", - "\n", - "2. **Lunch in Ueno:**\n", - " - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\n", - "\n", - "**Afternoon:**\n", - "\n", - "1. **Tokyo Skytree:**\n", - " - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\n", - " - *Time: 2:30 PM - 4:00 PM*\n", - "\n", - "2. **Shibuya & Harajuku:**\n", - " - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\n", - " - Don’t miss a walk through Yoyogi Park, a large urban park that’s perfect for relaxing.\n", - " - *Time: 4:30 PM - 6:00 PM*\n", - "\n", - "**Evening:**\n", - "\n", - "1. **Dinner in Shinjuku:**\n", - " - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\n", - " - *Time: 7:00 PM - 8:30 PM*\n", - "\n", - "2. **Explore Shinjuku Nightlife:**\n", - " - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\n", - " - *Time: 8:30 PM onward*\n", - "\n", - "*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\n", - "- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\n", - "- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\n", - "- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\n", - "\n", - "Enjoy your day exploring the vibrant and diverse city of Tokyo!\n", - "---------------\n", - "### Sydney Itinerary - Exploring with Light Rain\n", - "\n", - "#### **Day 1: Arrival and Iconic Landmarks**\n", - "\n", - "**Morning:**\n", - "- **Sydney Opera House** \n", - " Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don’t forget to bring a light raincoat as there’s some rain expected.\n", - "\n", - "**Afternoon:**\n", - "- **Sydney Harbour Bridge** \n", - " Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it’s cloudy.\n", - "\n", - "**Evening:**\n", - "- **The Rocks District** \n", - " Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\n", - "\n", - "#### **Day 2: Culture and Relaxation**\n", - "\n", - "**Morning:**\n", - "- **Art Gallery of New South Wales** \n", - " Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It’s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\n", - "\n", - "**Afternoon:**\n", - "- **Sydney Royal Botanic Garden** \n", - " Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\n", - "\n", - "**Evening:**\n", - "- **Dinner in Darling Harbour** \n", - " Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\n", - "\n", - "#### **Day 3: Exploration and Adventure**\n", - "\n", - "**Morning:**\n", - "- **Taronga Zoo** \n", - " Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\n", - "\n", - "**Afternoon:** \n", - "- **Bondi Beach & Coastal Walk** \n", - " Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia’s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\n", - "\n", - "**Evening:**\n", - "- **Sydney Observatory** \n", - " Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\n", - "\n", - "### **Notes:**\n", - "- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\n", - "- **Bookings**: It’s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\n", - "- **Transportation**: Utilize Sydney’s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\n", - "\n", - "Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\n" - ] - } - ], - "source": [ - "import time\n", - "\n", - "execution = client.executions.get(execution.id)\n", - "\n", - "while execution.status != \"succeeded\":\n", - " time.sleep(5)\n", - " execution = client.executions.get(execution.id)\n", - " print(\"Execution status: \", execution.status)\n", - " print(\"-\"*50)\n", - "\n", - "execution = client.executions.get(execution.id)\n", - "\n", - "if 'final_plan' in execution.output:\n", - " print(execution.output['final_plan'])\n", - "else:\n", - " print(execution.output)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transition type: init\n", - "Transition output: {'locations': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']}\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Sydney\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: London\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Tokyo\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Paris\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: New York\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222°\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87°C\\n - High: 15.83°C\\n - Low: 13.86°C\\n - Feels like: 13.59°C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%'}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250°\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29°C\\n - High: 18.17°C\\n - Low: 16.53°C\\n - Feels like: 17.14°C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\"}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200°\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43°C\\n - High: 14.49°C\\n - Low: 12.43°C\\n - Feels like: 12.16°C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%'}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20°\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37°C\\n - High: 15.91°C\\n - Low: 13.67°C\\n - Feels like: 13.75°C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%'}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270°\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74°C\\n - High: 8.45°C\\n - Low: 6.64°C\\n - Feels like: 3.15°C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%'}\n", - "--------------------------------------------------\n", - "Transition type: step\n", - "Transition output: [{'result': 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270°\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74°C\\n - High: 8.45°C\\n - Low: 6.64°C\\n - Feels like: 3.15°C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%'}, {'result': 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222°\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87°C\\n - High: 15.83°C\\n - Low: 13.86°C\\n - Feels like: 13.59°C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%'}, {'result': 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200°\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43°C\\n - High: 14.49°C\\n - Low: 12.43°C\\n - Feels like: 12.16°C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%'}, {'result': 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20°\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37°C\\n - High: 15.91°C\\n - Low: 13.67°C\\n - Feels like: 13.75°C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%'}, {'result': \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250°\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29°C\\n - High: 18.17°C\\n - Low: 16.53°C\\n - Feels like: 17.14°C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\"}]\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Sydney\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: New York\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: London\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Tokyo\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: Paris\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass®', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass®. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c…'}]}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass®', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass®. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}\n", - "--------------------------------------------------\n", - "Transition type: step\n", - "Transition output: [{'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass®', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass®. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c…'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass®', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass®. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}, {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\n", - "--------------------------------------------------\n", - "Transition type: step\n", - "Transition output: {'zipped': [['New York', 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270°\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74°C\\n - High: 8.45°C\\n - Low: 6.64°C\\n - Feels like: 3.15°C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass®', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass®. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}], ['London', 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222°\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87°C\\n - High: 15.83°C\\n - Low: 13.86°C\\n - Feels like: 13.59°C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c…'}]}], ['Paris', 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200°\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43°C\\n - High: 14.49°C\\n - Low: 12.43°C\\n - Feels like: 12.16°C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass®', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass®. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}], ['Tokyo', 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20°\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37°C\\n - High: 15.91°C\\n - Low: 13.67°C\\n - Feels like: 13.75°C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}], ['Sydney', \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250°\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29°C\\n - High: 18.17°C\\n - Low: 16.53°C\\n - Feels like: 17.14°C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]]}\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: ['Paris', 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200°\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43°C\\n - High: 14.49°C\\n - Low: 12.43°C\\n - Feels like: 12.16°C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass®', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass®. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}]\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: ['London', 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222°\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87°C\\n - High: 15.83°C\\n - Low: 13.86°C\\n - Feels like: 13.59°C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c…'}]}]\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: ['New York', 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270°\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74°C\\n - High: 8.45°C\\n - Low: 6.64°C\\n - Feels like: 3.15°C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass®', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass®. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}]\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\n", - "\n", - "---\n", - "\n", - "**London Day Itinerary**\n", - "\n", - "**Morning:**\n", - "\n", - "1. **Breakfast at Borough Market**\n", - " - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\n", - "\n", - "2. **Tower of London**\n", - " - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\n", - "\n", - "**Midday:**\n", - "\n", - "3. **Walk Along the Thames & Tower Bridge**\n", - " - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\n", - "\n", - "4. **Lunch at a Pub in Covent Garden**\n", - " - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\n", - "\n", - "**Afternoon:**\n", - "\n", - "5. **British Museum**\n", - " - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\n", - "\n", - "6. **Stroll through Leadenhall Market**\n", - " - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\n", - "\n", - "**Evening:**\n", - "\n", - "7. **Dinner and Evening at The Sky Garden**\n", - " - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360° views of London's skyline.\n", - "\n", - "8. **Walk Around South Bank**\n", - " - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\n", - "\n", - "**Tips:**\n", - "- Carry an umbrella or a light waterproof jacket just in case.\n", - "- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\n", - "- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\n", - "\n", - "Have a fantastic day exploring London!\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: ### Paris Itinerary\n", - "\n", - "#### **Day 1: Arrival and Evening River Cruise**\n", - "\n", - "- **Morning:**\n", - " - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \n", - " - **Breakfast at a Local Café:** Start your day with a classic Parisian breakfast: a croissant and café au lait at a nearby café.\n", - "\n", - "- **Afternoon:**\n", - " - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\n", - " - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the Marché Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\n", - "\n", - "- **Evening:**\n", - " - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\n", - " - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\n", - "\n", - "#### **Day 2: Classic Paris Sights**\n", - "\n", - "- **Morning:**\n", - " - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\n", - " - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don’t miss iconic pieces like the Mona Lisa and the Venus de Milo.\n", - "\n", - "- **Afternoon:**\n", - " - **Lunch at a Café:** Enjoy lunch at a café near the Louvre. Try classic French dishes like quiche or salade niçoise.\n", - " - **Walk along the Champs-Élysées:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\n", - "\n", - "- **Evening:**\n", - " - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\n", - "\n", - "#### **Day 3: Art, Culture, and Relaxation**\n", - "\n", - "- **Morning:**\n", - " - **Musée d'Orsay:** Visit the Musée d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\n", - " - **Explore Saint-Germain-des-Prés:** Discover the boutiques and cafés in this historic district.\n", - "\n", - "- **Afternoon:**\n", - " - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\n", - " - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\n", - "\n", - "- **Evening:**\n", - " - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\n", - "\n", - "#### **Tips:**\n", - "- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14°C).\n", - "- **Travel Consideration:** Use public transport like the Métro to navigate efficiently.\n", - "- **Pass Options:** Consider purchasing the Paris Pass® for discounts and ease of access at major attractions.\n", - "\n", - "With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\n", - "\n", - "### Day 1: Arrival and Exploration\n", - "\n", - "**Morning:**\n", - "- **Central Park:**\n", - " - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74°C, and a chance to see the iconic landscapes.\n", - " - Address: New York, NY\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\n", - "\n", - "**Mid-Morning:**\n", - "- **Metropolitan Museum of Art:**\n", - " - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\n", - " - Address: 1000 5th Ave, New York, NY 10028\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\n", - "\n", - "**Afternoon:**\n", - "- **Lunch near the Upper East Side:**\n", - " - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\n", - "- **Museum of Modern Art (MoMA):**\n", - " - After lunch, take a short walk to MoMA for a dose of contemporary art.\n", - " - Address: 11 W 53rd St, New York, NY 10019\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Times Square:**\n", - " - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\n", - " - Address: Manhattan, NY 10036\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\n", - "\n", - "### Day 2: Iconic Landmarks\n", - "\n", - "**Morning:**\n", - "- **Statue of Liberty and Ellis Island:**\n", - " - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\n", - " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", - "\n", - "**Afternoon:**\n", - "- **Lunch in Lower Manhattan:**\n", - " - Explore dining options in the Financial District.\n", - "- **9/11 Memorial and Museum:**\n", - " - Visit this poignant site to pay respects and learn about the events of 9/11.\n", - " - Address: 180 Greenwich St, New York, NY 10007\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Broadway Show:**\n", - " - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\n", - " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", - "\n", - "### Day 3: Adventure and Relaxation\n", - "\n", - "**Morning:**\n", - "- **High Line Park:**\n", - " - Enjoy a unique stroll along this elevated linear park on a former rail track.\n", - " - Address: New York, NY 10011\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\n", - "\n", - "**Afternoon:**\n", - "- **Chelsea Market:**\n", - " - Experience an array of food options in this historic marketplace for lunch.\n", - " - Address: 75 9th Ave, New York, NY 10011\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\n", - "\n", - "**Evening:**\n", - "- **Brooklyn Bridge Walk:**\n", - " - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\n", - " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\n", - "\n", - "With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: ['Sydney', \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250°\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29°C\\n - High: 18.17°C\\n - Low: 16.53°C\\n - Feels like: 17.14°C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\n", - "--------------------------------------------------\n", - "Transition type: init_branch\n", - "Transition output: ['Tokyo', 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20°\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37°C\\n - High: 15.91°C\\n - Low: 13.67°C\\n - Feels like: 13.75°C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}]\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: ### Sydney Itinerary - Exploring with Light Rain\n", - "\n", - "#### **Day 1: Arrival and Iconic Landmarks**\n", - "\n", - "**Morning:**\n", - "- **Sydney Opera House** \n", - " Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don’t forget to bring a light raincoat as there’s some rain expected.\n", - "\n", - "**Afternoon:**\n", - "- **Sydney Harbour Bridge** \n", - " Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it’s cloudy.\n", - "\n", - "**Evening:**\n", - "- **The Rocks District** \n", - " Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\n", - "\n", - "#### **Day 2: Culture and Relaxation**\n", - "\n", - "**Morning:**\n", - "- **Art Gallery of New South Wales** \n", - " Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It’s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\n", - "\n", - "**Afternoon:**\n", - "- **Sydney Royal Botanic Garden** \n", - " Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\n", - "\n", - "**Evening:**\n", - "- **Dinner in Darling Harbour** \n", - " Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\n", - "\n", - "#### **Day 3: Exploration and Adventure**\n", - "\n", - "**Morning:**\n", - "- **Taronga Zoo** \n", - " Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\n", - "\n", - "**Afternoon:** \n", - "- **Bondi Beach & Coastal Walk** \n", - " Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia’s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\n", - "\n", - "**Evening:**\n", - "- **Sydney Observatory** \n", - " Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\n", - "\n", - "### **Notes:**\n", - "- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\n", - "- **Bookings**: It’s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\n", - "- **Transportation**: Utilize Sydney’s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\n", - "\n", - "Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\n", - "--------------------------------------------------\n", - "Transition type: finish_branch\n", - "Transition output: **Detailed Itinerary for a Day in Tokyo**\n", - "\n", - "*Weather Overview:*\n", - "- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37°C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\n", - "\n", - "**Morning:**\n", - "\n", - "1. **Visit Asakusa and Sensō-ji Temple:**\n", - " - Start your day in the historical district of Asakusa. Explore Sensō-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\n", - " - *Time: 9:00 AM - 11:00 AM*\n", - "\n", - "2. **Breakfast at Asakusa:**\n", - " - Enjoy a traditional Japanese breakfast at one of the local cafés. Try some fresh sushi or a hearty bowl of ramen.\n", - "\n", - "**Midday:**\n", - "\n", - "1. **Ueno Park and Museums:**\n", - " - Head over to Ueno Park, a large public park with museums and beautiful gardens.\n", - " - Visit the Tokyo National Museum to explore Japanese art and history.\n", - " - *Time: 11:30 AM - 1:30 PM*\n", - "\n", - "2. **Lunch in Ueno:**\n", - " - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\n", - "\n", - "**Afternoon:**\n", - "\n", - "1. **Tokyo Skytree:**\n", - " - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\n", - " - *Time: 2:30 PM - 4:00 PM*\n", - "\n", - "2. **Shibuya & Harajuku:**\n", - " - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\n", - " - Don’t miss a walk through Yoyogi Park, a large urban park that’s perfect for relaxing.\n", - " - *Time: 4:30 PM - 6:00 PM*\n", - "\n", - "**Evening:**\n", - "\n", - "1. **Dinner in Shinjuku:**\n", - " - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\n", - " - *Time: 7:00 PM - 8:30 PM*\n", - "\n", - "2. **Explore Shinjuku Nightlife:**\n", - " - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\n", - " - *Time: 8:30 PM onward*\n", - "\n", - "*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\n", - "- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\n", - "- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\n", - "- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\n", - "\n", - "Enjoy your day exploring the vibrant and diverse city of Tokyo!\n", - "--------------------------------------------------\n", - "Transition type: step\n", - "Transition output: [\"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\\n### Day 1: Arrival and Exploration\\n\\n**Morning:**\\n- **Central Park:**\\n - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74°C, and a chance to see the iconic landscapes.\\n - Address: New York, NY\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\\n**Mid-Morning:**\\n- **Metropolitan Museum of Art:**\\n - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n - Address: 1000 5th Ave, New York, NY 10028\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Lunch near the Upper East Side:**\\n - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n- **Museum of Modern Art (MoMA):**\\n - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n - Address: 11 W 53rd St, New York, NY 10019\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Times Square:**\\n - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n - Address: Manhattan, NY 10036\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\\n### Day 2: Iconic Landmarks\\n\\n**Morning:**\\n- **Statue of Liberty and Ellis Island:**\\n - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n**Afternoon:**\\n- **Lunch in Lower Manhattan:**\\n - Explore dining options in the Financial District.\\n- **9/11 Memorial and Museum:**\\n - Visit this poignant site to pay respects and learn about the events of 9/11.\\n - Address: 180 Greenwich St, New York, NY 10007\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Broadway Show:**\\n - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n### Day 3: Adventure and Relaxation\\n\\n**Morning:**\\n- **High Line Park:**\\n - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n - Address: New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Chelsea Market:**\\n - Experience an array of food options in this historic marketplace for lunch.\\n - Address: 75 9th Ave, New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Brooklyn Bridge Walk:**\\n - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\", \"Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\\n---\\n\\n**London Day Itinerary**\\n\\n**Morning:**\\n\\n1. **Breakfast at Borough Market**\\n - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\\n2. **Tower of London**\\n - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\\n**Midday:**\\n\\n3. **Walk Along the Thames & Tower Bridge**\\n - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\\n4. **Lunch at a Pub in Covent Garden**\\n - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\\n**Afternoon:**\\n\\n5. **British Museum**\\n - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\\n6. **Stroll through Leadenhall Market**\\n - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\\n**Evening:**\\n\\n7. **Dinner and Evening at The Sky Garden**\\n - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360° views of London's skyline.\\n\\n8. **Walk Around South Bank**\\n - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\\n**Tips:**\\n- Carry an umbrella or a light waterproof jacket just in case.\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\\nHave a fantastic day exploring London!\", \"### Paris Itinerary\\n\\n#### **Day 1: Arrival and Evening River Cruise**\\n\\n- **Morning:**\\n - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n - **Breakfast at a Local Café:** Start your day with a classic Parisian breakfast: a croissant and café au lait at a nearby café.\\n\\n- **Afternoon:**\\n - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the Marché Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\\n- **Evening:**\\n - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\\n#### **Day 2: Classic Paris Sights**\\n\\n- **Morning:**\\n - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don’t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\\n- **Afternoon:**\\n - **Lunch at a Café:** Enjoy lunch at a café near the Louvre. Try classic French dishes like quiche or salade niçoise.\\n - **Walk along the Champs-Élysées:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\\n- **Evening:**\\n - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\\n#### **Day 3: Art, Culture, and Relaxation**\\n\\n- **Morning:**\\n - **Musée d'Orsay:** Visit the Musée d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n - **Explore Saint-Germain-des-Prés:** Discover the boutiques and cafés in this historic district.\\n\\n- **Afternoon:**\\n - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\\n- **Evening:**\\n - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\\n#### **Tips:**\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14°C).\\n- **Travel Consideration:** Use public transport like the Métro to navigate efficiently.\\n- **Pass Options:** Consider purchasing the Paris Pass® for discounts and ease of access at major attractions.\\n\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\", \"**Detailed Itinerary for a Day in Tokyo**\\n\\n*Weather Overview:*\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37°C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\\n**Morning:**\\n\\n1. **Visit Asakusa and Sensō-ji Temple:**\\n - Start your day in the historical district of Asakusa. Explore Sensō-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n - *Time: 9:00 AM - 11:00 AM*\\n\\n2. **Breakfast at Asakusa:**\\n - Enjoy a traditional Japanese breakfast at one of the local cafés. Try some fresh sushi or a hearty bowl of ramen.\\n\\n**Midday:**\\n\\n1. **Ueno Park and Museums:**\\n - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n - Visit the Tokyo National Museum to explore Japanese art and history.\\n - *Time: 11:30 AM - 1:30 PM*\\n\\n2. **Lunch in Ueno:**\\n - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\\n**Afternoon:**\\n\\n1. **Tokyo Skytree:**\\n - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n - *Time: 2:30 PM - 4:00 PM*\\n\\n2. **Shibuya & Harajuku:**\\n - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n - Don’t miss a walk through Yoyogi Park, a large urban park that’s perfect for relaxing.\\n - *Time: 4:30 PM - 6:00 PM*\\n\\n**Evening:**\\n\\n1. **Dinner in Shinjuku:**\\n - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n - *Time: 7:00 PM - 8:30 PM*\\n\\n2. **Explore Shinjuku Nightlife:**\\n - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n - *Time: 8:30 PM onward*\\n\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\", '### Sydney Itinerary - Exploring with Light Rain\\n\\n#### **Day 1: Arrival and Iconic Landmarks**\\n\\n**Morning:**\\n- **Sydney Opera House** \\n Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don’t forget to bring a light raincoat as there’s some rain expected.\\n\\n**Afternoon:**\\n- **Sydney Harbour Bridge** \\n Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it’s cloudy.\\n\\n**Evening:**\\n- **The Rocks District** \\n Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\\n#### **Day 2: Culture and Relaxation**\\n\\n**Morning:**\\n- **Art Gallery of New South Wales** \\n Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It’s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\\n**Afternoon:**\\n- **Sydney Royal Botanic Garden** \\n Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\\n**Evening:**\\n- **Dinner in Darling Harbour** \\n Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\\n#### **Day 3: Exploration and Adventure**\\n\\n**Morning:**\\n- **Taronga Zoo** \\n Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\\n**Afternoon:** \\n- **Bondi Beach & Coastal Walk** \\n Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia’s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\\n**Evening:**\\n- **Sydney Observatory** \\n Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\\n### **Notes:**\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n- **Bookings**: It’s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n- **Transportation**: Utilize Sydney’s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!']\n", - "--------------------------------------------------\n", - "Transition type: finish\n", - "Transition output: {'final_plan': \"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\\n### Day 1: Arrival and Exploration\\n\\n**Morning:**\\n- **Central Park:**\\n - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74°C, and a chance to see the iconic landscapes.\\n - Address: New York, NY\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\\n**Mid-Morning:**\\n- **Metropolitan Museum of Art:**\\n - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n - Address: 1000 5th Ave, New York, NY 10028\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Lunch near the Upper East Side:**\\n - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n- **Museum of Modern Art (MoMA):**\\n - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n - Address: 11 W 53rd St, New York, NY 10019\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Times Square:**\\n - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n - Address: Manhattan, NY 10036\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\\n### Day 2: Iconic Landmarks\\n\\n**Morning:**\\n- **Statue of Liberty and Ellis Island:**\\n - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n**Afternoon:**\\n- **Lunch in Lower Manhattan:**\\n - Explore dining options in the Financial District.\\n- **9/11 Memorial and Museum:**\\n - Visit this poignant site to pay respects and learn about the events of 9/11.\\n - Address: 180 Greenwich St, New York, NY 10007\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Broadway Show:**\\n - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n### Day 3: Adventure and Relaxation\\n\\n**Morning:**\\n- **High Line Park:**\\n - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n - Address: New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Chelsea Market:**\\n - Experience an array of food options in this historic marketplace for lunch.\\n - Address: 75 9th Ave, New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Brooklyn Bridge Walk:**\\n - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\n---------------\\nSure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\\n---\\n\\n**London Day Itinerary**\\n\\n**Morning:**\\n\\n1. **Breakfast at Borough Market**\\n - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\\n2. **Tower of London**\\n - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\\n**Midday:**\\n\\n3. **Walk Along the Thames & Tower Bridge**\\n - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\\n4. **Lunch at a Pub in Covent Garden**\\n - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\\n**Afternoon:**\\n\\n5. **British Museum**\\n - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\\n6. **Stroll through Leadenhall Market**\\n - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\\n**Evening:**\\n\\n7. **Dinner and Evening at The Sky Garden**\\n - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360° views of London's skyline.\\n\\n8. **Walk Around South Bank**\\n - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\\n**Tips:**\\n- Carry an umbrella or a light waterproof jacket just in case.\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\\nHave a fantastic day exploring London!\\n---------------\\n### Paris Itinerary\\n\\n#### **Day 1: Arrival and Evening River Cruise**\\n\\n- **Morning:**\\n - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n - **Breakfast at a Local Café:** Start your day with a classic Parisian breakfast: a croissant and café au lait at a nearby café.\\n\\n- **Afternoon:**\\n - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the Marché Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\\n- **Evening:**\\n - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\\n#### **Day 2: Classic Paris Sights**\\n\\n- **Morning:**\\n - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don’t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\\n- **Afternoon:**\\n - **Lunch at a Café:** Enjoy lunch at a café near the Louvre. Try classic French dishes like quiche or salade niçoise.\\n - **Walk along the Champs-Élysées:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\\n- **Evening:**\\n - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\\n#### **Day 3: Art, Culture, and Relaxation**\\n\\n- **Morning:**\\n - **Musée d'Orsay:** Visit the Musée d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n - **Explore Saint-Germain-des-Prés:** Discover the boutiques and cafés in this historic district.\\n\\n- **Afternoon:**\\n - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\\n- **Evening:**\\n - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\\n#### **Tips:**\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14°C).\\n- **Travel Consideration:** Use public transport like the Métro to navigate efficiently.\\n- **Pass Options:** Consider purchasing the Paris Pass® for discounts and ease of access at major attractions.\\n\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\n---------------\\n**Detailed Itinerary for a Day in Tokyo**\\n\\n*Weather Overview:*\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37°C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\\n**Morning:**\\n\\n1. **Visit Asakusa and Sensō-ji Temple:**\\n - Start your day in the historical district of Asakusa. Explore Sensō-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n - *Time: 9:00 AM - 11:00 AM*\\n\\n2. **Breakfast at Asakusa:**\\n - Enjoy a traditional Japanese breakfast at one of the local cafés. Try some fresh sushi or a hearty bowl of ramen.\\n\\n**Midday:**\\n\\n1. **Ueno Park and Museums:**\\n - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n - Visit the Tokyo National Museum to explore Japanese art and history.\\n - *Time: 11:30 AM - 1:30 PM*\\n\\n2. **Lunch in Ueno:**\\n - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\\n**Afternoon:**\\n\\n1. **Tokyo Skytree:**\\n - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n - *Time: 2:30 PM - 4:00 PM*\\n\\n2. **Shibuya & Harajuku:**\\n - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n - Don’t miss a walk through Yoyogi Park, a large urban park that’s perfect for relaxing.\\n - *Time: 4:30 PM - 6:00 PM*\\n\\n**Evening:**\\n\\n1. **Dinner in Shinjuku:**\\n - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n - *Time: 7:00 PM - 8:30 PM*\\n\\n2. **Explore Shinjuku Nightlife:**\\n - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n - *Time: 8:30 PM onward*\\n\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\\n---------------\\n### Sydney Itinerary - Exploring with Light Rain\\n\\n#### **Day 1: Arrival and Iconic Landmarks**\\n\\n**Morning:**\\n- **Sydney Opera House** \\n Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don’t forget to bring a light raincoat as there’s some rain expected.\\n\\n**Afternoon:**\\n- **Sydney Harbour Bridge** \\n Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it’s cloudy.\\n\\n**Evening:**\\n- **The Rocks District** \\n Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\\n#### **Day 2: Culture and Relaxation**\\n\\n**Morning:**\\n- **Art Gallery of New South Wales** \\n Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It’s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\\n**Afternoon:**\\n- **Sydney Royal Botanic Garden** \\n Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\\n**Evening:**\\n- **Dinner in Darling Harbour** \\n Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\\n#### **Day 3: Exploration and Adventure**\\n\\n**Morning:**\\n- **Taronga Zoo** \\n Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\\n**Afternoon:** \\n- **Bondi Beach & Coastal Walk** \\n Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia’s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\\n**Evening:**\\n- **Sydney Observatory** \\n Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\\n### **Notes:**\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n- **Bookings**: It’s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n- **Transportation**: Utilize Sydney’s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\"}\n", - "--------------------------------------------------\n" - ] - } - ], - "source": [ - "# Lists all the task steps that have been executed up to this point in time\n", - "transitions = client.executions.transitions.list(execution_id=execution.id).items\n", - "\n", - "# Transitions are retrieved in reverse chronological order\n", - "for transition in reversed(transitions):\n", - " print(\"Transition type: \", transition.type)\n", - " print(\"Transition output: \", transition.output)\n", - " print(\"-\"*50)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cookbooks/08-rag-chatbot.ipynb b/cookbooks/08-rag-chatbot.ipynb deleted file mode 100644 index f2618ead9..000000000 --- a/cookbooks/08-rag-chatbot.ipynb +++ /dev/null @@ -1,8385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "# Task Definition: Chatbot for a Website\n", - "\n", - "### Overview\n", - "\n", - "This task implements an automated system to index and process a website. The system crawls the website, extracts relevant information, and creates a searchable knowledge base that can be queried programmatically. Finally, it creates a chatbot that can answer questions about the website using the RAG knowledge base.\n", - "\n", - "### Task Tools:\n", - "\n", - "- **get_page**: Web crawler component for systematically traversing the QuickBlox website using JIna's API\n", - "- **create_agent_doc**: Document processor for converting web content into indexed, searchable documents\n", - "\n", - "### Task Input:\n", - "\n", - "Required parameter:\n", - "- **url**: Entry point URL for the crawler (e.g., \"https://en.wikipedia.org/wiki/Artificial_intelligence\")\n", - "- **reducing_strength**: Number of sentences to club together to reduce the size of the chunks list\n", - "\n", - "### Task Output:\n", - "\n", - "- Indexed knowledge base containing processed QuickBlox documentation\n", - "- Query interface for programmatic access to the documentation\n", - "\n", - "### Task Flow\n", - "\n", - "1. Create an agent with the get_page tool\n", - "2. Get the get_page tool's API key \n", - "3. Crawl website using get_page tool:\n", - " - Specify URL and page limit\n", - " - Enable smart mode, proxy, readability\n", - " - Filter out images and SVGs\n", - " - Use sentence-based chunking (15 sentences per chunk)\n", - "4. For each crawled page:\n", - " - Extract content\n", - " - Break into chunks\n", - " - Generate succinct context for each chunk\n", - " - Combine chunk with context\n", - "5. Create agent documents:\n", - " - Store processed chunks as documents\n", - " - Add metadata like source\n", - " - Index for search/retrieval\n", - "6. Finally chat with the agent in the session and retrieve the documents that are relevant to the user's query\n", - "\n", - "```plaintext\n", - "+----------------+ +----------------+ +----------------+ +---------------+\n", - "| Jina AI | | Extract | | Process | | Create |\n", - "| Crawler | --> | Content | --> | Content | --> | Agent Docs |\n", - "| (URL Entry) | | (Web Pages) | | (Chunks) | | (Index) |\n", - "+----------------+ +----------------+ +----------------+ +---------------+\n", - " |\n", - "+----------------+ +----------------+ +----------------+ +---------------+\n", - "| Query | | Search | | Retrieve | | Chat with |\n", - "| Interface | <-- | Index | <-- | Documents | <-- | Agent |\n", - "| (User Input) | | (Knowledge) | | (Context) | | (Session) |\n", - "+----------------+ +----------------+ +----------------+ +---------------+\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Installing the Julep Client" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install --upgrade julep --quiet" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# Global UUID is generated for agent and task\n", - "import uuid\n", - "\n", - "# Set your API keys\n", - "AGENT_ID = uuid.uuid4()\n", - "TASK_ID = uuid.uuid4()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from julep import Client\n", - "\n", - "JULEP_API_KEY = \"julep_api_key_here\"\n", - "\n", - "# Create a Julep client\n", - "client = Client(api_key=JULEP_API_KEY, environment=\"production\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating an \"agent\"\n", - "\n", - "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n", - "\n", - "To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Create agent\n", - "agent = client.agents.create_or_update(\n", - " agent_id=AGENT_ID,\n", - " name=\"Website Crawler\",\n", - " about=\"An AI assistant that can crawl any website and create a knowledge base.\",\n", - " model=\"gpt-4o-mini\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of documents in the agent's document store: 0\n", - "[]\n" - ] - } - ], - "source": [ - "from pprint import pprint\n", - "num_docs = (client.agents.docs.list(agent_id=agent.id, limit=100).items)\n", - "print(f\"Number of documents in the agent's document store: {len(num_docs)}\")\n", - "pprint(num_docs)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Defining a Task\n", - "\n", - "Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\n", - "\n", - "You can use them to conduct complex actions by defining them step-by-step.\n", - "\n", - "To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import yaml\n", - "\n", - "JINA_API_KEY = \"your_jina_api_key_here\"\n", - "\n", - "task_def = yaml.safe_load(f'''\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json \n", - "name: Crawl a website and create a agent document\n", - "description: This task crawls a website and creates a agent document\n", - " \n", - "########################################################\n", - "####################### INPUT SCHEMA ###################\n", - "########################################################\n", - "input_schema:\n", - " type: object\n", - " properties:\n", - " url:\n", - " type: string\n", - " description: The URL of the website to crawl\n", - " reducing_strength:\n", - " type: integer\n", - " description: The no of sentence to club together\n", - " \n", - "########################################################\n", - "####################### TOOLS ##########################\n", - "########################################################\n", - " \n", - "# Define the tools that the agent will use in this workflow\n", - "tools:\n", - "- name : create_agent_doc\n", - " description: Create an agent doc\n", - " type: system\n", - " system:\n", - " resource: agent\n", - " subresource: doc\n", - " operation: create\n", - "\n", - "- name: get_page\n", - " type: api_call\n", - " api_call:\n", - " method: GET\n", - " url: https://r.jina.ai/\n", - " headers:\n", - " accept: application/json\n", - " x-return-format: markdown\n", - " x-with-images-summary: \"true\"\n", - " x-with-links-summary: \"true\"\n", - " x-retain-images: \"none\"\n", - " x-no-cache: \"true\"\n", - " Authorization: \"Bearer {JINA_API_KEY}\"\n", - "\n", - "########################################################\n", - "####################### SUB WORKFLOW ###################\n", - "########################################################\n", - "\n", - "index_page:\n", - "\n", - "# Step 0: Evaluate the content\n", - "- evaluate:\n", - " document: $ _.document\n", - " chunks: |\n", - " $ [\" \".join(_.content[i:i + max(_.reducing_strength, len(_.content) // 9)]) \n", - " for i in range(0, len(_.content), max(_.reducing_strength, len(_.content) // 9))]\n", - " label: docs\n", - "\n", - "# Step 1: Create a new document and add it to the agent docs store\n", - "- over: $ [(steps[0].input.document, chunk.strip()) for chunk in _.chunks]\n", - " parallelism: 3\n", - " map:\n", - " prompt: \n", - " - role: user\n", - " content: >-\n", - " $ f\"\"\"\n", - " \n", - " {{_[0]}} \n", - " \n", - "\n", - " Here is the chunk we want to situate within the whole document\n", - " \n", - " {{_[1]}}\n", - " \n", - "\n", - " Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. \n", - " Answer only with the succinct context and nothing else.\n", - " \"\"\"\n", - " unwrap: true\n", - " settings:\n", - " max_tokens: 16000\n", - "\n", - "# Step 2: Evaluate the final chunks\n", - "- evaluate:\n", - " final_chunks: |\n", - " $ [\n", - " NEWLINE.join([succint, chunk.strip()]) for chunk, succint in zip(steps['docs'].output.chunks, _)\n", - " ]\n", - "\n", - "# Step 3: Create a new document and add it to the agent docs store\n", - "- over: $ _.final_chunks\n", - " parallelism: 3\n", - " map:\n", - " tool: create_agent_doc\n", - " arguments:\n", - " agent_id: $ str(agent.id)\n", - " data:\n", - " metadata:\n", - " source: jina_crawler\n", - " title: Website Document\n", - " content: $ _\n", - "\n", - "########################################################\n", - "####################### MAIN WORKFLOW ##################\n", - "########################################################\n", - "\n", - "main:\n", - "# Step 0: Get the content of the product page\n", - "- tool: get_page\n", - " arguments:\n", - " url: $ \"https://r.jina.ai/\" + steps[0].input.url\n", - " \n", - "# Step 1: Chunk the content\n", - "- evaluate:\n", - " result: $ chunk_doc(_.json.data.content.strip())\n", - "\n", - "# Step 2: Evaluate step to document chunks\n", - "- workflow: index_page\n", - " arguments:\n", - " content: $ _.result\n", - " document: $ steps[0].output.json.data.content.strip()\n", - " reducing_strength: $ steps[0].input.reducing_strength\n", - "''')\n", - "\n", - "# Create the task\n", - "task = client.tasks.create_or_update(\n", - " agent_id=AGENT_ID,\n", - " task_id=TASK_ID,\n", - " **task_def\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Creating an Execution\n", - "\n", - "An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\n", - "\n", - "To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution)." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "execution = client.executions.create(\n", - " task_id=task.id,\n", - " input={\n", - " \"url\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"reducing_strength\": 5 # number of sentences to club together to reduce the size of the chunks list\n", - " }\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Checking execution details and output\n", - "\n", - "There are multiple ways to get the execution details and the output:\n", - "\n", - "1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\n", - "\n", - "2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\n", - "\n", - "\n", - "Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Execution status: starting\n" - ] - } - ], - "source": [ - "status = client.executions.get(execution_id=execution.id).status\n", - "\n", - "print(\"Execution status: \", status)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Index: 50 Type: finish\n", - "output: [\n", - " {\n", - " \"id\": \"067ae624-9790-7969-8000-6416fdb20d41\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\\nJump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.472970Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-979a-7024-8000-384a4aca6ec5\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\\nThe amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.475204Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9665-7cd4-8000-9753358d6265\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\\n16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.400076Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9bce-7699-8000-5e25c4f82005\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\\nISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.737997Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9be5-7940-8000-f9c0e7f0ad83\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.743658Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9b6e-7bf0-8000-ce4192e3976b\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.715868Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f8e-7c8a-8000-cabd42b8416a\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\\n\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.972470Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f80-772c-8000-87700f646776\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\\nISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.969081Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f21-7a86-8000-29413bd55a82\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\\nArchived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.945824Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-a662-75ca-8000-cf3d9cacc20d\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\\nPMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:14.399154Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " }\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 49 Type: finish_branch\n", - "output: [\n", - " {\n", - " \"id\": \"067ae624-9790-7969-8000-6416fdb20d41\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\\nJump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.472970Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-979a-7024-8000-384a4aca6ec5\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\\nThe amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.475204Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9665-7cd4-8000-9753358d6265\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\\n16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.400076Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9bce-7699-8000-5e25c4f82005\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\\nISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.737997Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9be5-7940-8000-f9c0e7f0ad83\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.743658Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9b6e-7bf0-8000-ce4192e3976b\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.715868Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f8e-7c8a-8000-cabd42b8416a\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\\n\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.972470Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f80-772c-8000-87700f646776\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\\nISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.969081Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-9f21-7a86-8000-29413bd55a82\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\\nArchived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.945824Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " },\n", - " {\n", - " \"id\": \"067ae624-a662-75ca-8000-cf3d9cacc20d\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\\nPMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:14.399154Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - " }\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 48 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-a662-75ca-8000-cf3d9cacc20d\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\\nPMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:14.399154Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 47 Type: init_branch\n", - "output: \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\\nPMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 46 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9f80-772c-8000-87700f646776\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\\nISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.969081Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 45 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9f8e-7c8a-8000-cabd42b8416a\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\\n\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.972470Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 44 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9f21-7a86-8000-29413bd55a82\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\\nArchived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.945824Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 43 Type: init_branch\n", - "output: \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\\n\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 42 Type: init_branch\n", - "output: \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\\nISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 41 Type: init_branch\n", - "output: \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\\nArchived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 40 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9be5-7940-8000-f9c0e7f0ad83\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.743658Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 39 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9bce-7699-8000-5e25c4f82005\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\\nISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.737997Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 38 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9b6e-7bf0-8000-ce4192e3976b\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.715868Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 37 Type: init_branch\n", - "output: \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 36 Type: init_branch\n", - "output: \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\\nISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 35 Type: init_branch\n", - "output: \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 34 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9790-7969-8000-6416fdb20d41\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\\nJump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.472970Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 33 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-979a-7024-8000-384a4aca6ec5\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\\nThe amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.475204Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 32 Type: finish_branch\n", - "output: {\n", - " \"id\": \"067ae624-9665-7cd4-8000-9753358d6265\",\n", - " \"title\": \"Website Document\",\n", - " \"content\": [\n", - " \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\\n16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\"\n", - " ],\n", - " \"language\": \"english\",\n", - " \"metadata\": {\n", - " \"source\": \"jina_crawler\"\n", - " },\n", - " \"modality\": \"text\",\n", - " \"created_at\": \"2025-02-13T21:21:13.400076Z\",\n", - " \"embeddings\": [],\n", - " \"embedding_model\": \"text-embedding-3-large\",\n", - " \"embedding_dimensions\": 1024\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 31 Type: init_branch\n", - "output: \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\\nThe amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 30 Type: init_branch\n", - "output: \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\\nJump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 29 Type: init_branch\n", - "output: \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\\n16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 28 Type: step\n", - "output: {\n", - " \"final_chunks\": [\n", - " \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\\nJump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\",\n", - " \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\\nThe amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\",\n", - " \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\\n16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\",\n", - " \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\\nISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\",\n", - " \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\",\n", - " \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\",\n", - " \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\\n\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\",\n", - " \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\\nISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\",\n", - " \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\\nArchived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\",\n", - " \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\\nPMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ]\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 27 Type: step\n", - "output: [\n", - " \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\",\n", - " \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\",\n", - " \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\",\n", - " \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\",\n", - " \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\",\n", - " \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\",\n", - " \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\",\n", - " \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\",\n", - " \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\",\n", - " \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 26 Type: finish_branch\n", - "output: \"This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \\\"Attention is All You Need,\\\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 25 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 24 Type: finish_branch\n", - "output: \"The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 23 Type: finish_branch\n", - "output: \"The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 22 Type: finish_branch\n", - "output: \"The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 21 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 20 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 19 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 18 Type: finish_branch\n", - "output: \"This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 17 Type: finish_branch\n", - "output: \"The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 16 Type: finish_branch\n", - "output: \"The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 15 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 14 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 13 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 12 Type: finish_branch\n", - "output: \"This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 11 Type: finish_branch\n", - "output: \"This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 10 Type: finish_branch\n", - "output: \"The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\"\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 9 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 8 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 7 Type: init_branch\n", - "output: [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\"\n", - "]\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 6 Type: step\n", - "output: {\n", - " \"chunks\": [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\",\n", - " \"The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^ builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^ ^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\",\n", - " \"16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\",\n", - " \"^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ ^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\",\n", - " \"^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017). Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\",\n", - " \"\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n\",\n", - " \"ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\",\n", - " \"Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\",\n", - " \"PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"document\": \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 5 Type: init_branch\n", - "output: {\n", - " \"content\": [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems.\",\n", - " \"AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid.\",\n", - " \"Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones.\",\n", - " \"The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n\",\n", - " \"It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match.\",\n", - " \"Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105]\",\n", - " \"Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF).\",\n", - " \"The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article:\",\n", - " \"In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158]\",\n", - " \"Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions.\",\n", - " \"Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n\",\n", - " \"During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source.\",\n", - " \"The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan.\",\n", - " \"If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237]\",\n", - " \"After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past.\",\n", - " \"The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works.\",\n", - " \"Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance.\",\n", - " \"A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk.\",\n", - " \"This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294]\",\n", - " \"He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed.\",\n", - " \"Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333]\",\n", - " \"It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8]\",\n", - " \"The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\",\n", - " \"The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1]\",\n", - " \"He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n\",\n", - " \"Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work.\",\n", - " \"Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind.\",\n", - " \"Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios.\",\n", - " \"Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer.\",\n", - " \"Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115]\",\n", - " \"For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^\",\n", - " \"When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\",\n", - " \"Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019).\",\n", - " \"^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt.\",\n", - " \"Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n\",\n", - " \"Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\".\",\n", - " \"18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n\",\n", - " \"16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n\",\n", - " \"Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^\",\n", - " \"builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n\",\n", - " \"6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^\",\n", - " \"^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect.\",\n", - " \"8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic:\",\n", - " \"4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n\",\n", - " \"Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^\",\n", - " \"Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\",\n", - " \"16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^\",\n", - " \"Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect.\",\n", - " \"6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024).\",\n", - " \"^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^\",\n", - " \"Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^\",\n", - " \"Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors.\",\n", - " \"^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023.\",\n", - " \"PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature:\",\n", - " \"\\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation.\",\n", - " \"Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\".\",\n", - " \"^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\".\",\n", - " \"ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022).\",\n", - " \"Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\".\",\n", - " \"Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1\",\n", - " \"Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n\",\n", - " \"Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024.\",\n", - " \"\\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024.\",\n", - " \"\\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\".\",\n", - " \"\\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^\",\n", - " \"Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024).\",\n", - " \"Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\".\",\n", - " \"^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News.\",\n", - " \"Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012.\",\n", - " \"Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review.\",\n", - " \"\\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press.\",\n", - " \"Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024.\",\n", - " \"^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\".\",\n", - " \"^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^\",\n", - " \"Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n\",\n", - " \"Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\".\",\n", - " \"^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^\",\n", - " \"^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140.\",\n", - " \"\\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020).\",\n", - " \"Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n\",\n", - " \"^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^\",\n", - " \"Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n\",\n", - " \"^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023.\",\n", - " \"^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^\",\n", - " \"New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\".\",\n", - " \"^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\".\",\n", - " \"^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\",\n", - " \"^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n\",\n", - " \"Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n\",\n", - " \"Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^\",\n", - " \"^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n\",\n", - " \"^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024).\",\n", - " \"Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\".\",\n", - " \"^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n\",\n", - " \"^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\".\",\n", - " \"^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n\",\n", - " \"Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^\",\n", - " \"Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n\",\n", - " \"Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n\",\n", - " \"Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n\",\n", - " \"Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^\",\n", - " \"^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024.\",\n", - " \"\\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024.\",\n", - " \"\\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024.\",\n", - " \"\\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n\",\n", - " \"S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\".\",\n", - " \"^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n\",\n", - " \"10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024.\",\n", - " \"^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\",\n", - " \"^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n\",\n", - " \"GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004).\",\n", - " \"Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^\",\n", - " \"^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0\",\n", - " \"AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023.\",\n", - " \"The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024.\",\n", - " \"Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024.\",\n", - " \"It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation.\",\n", - " \"\\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n\",\n", - " \"Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt.\",\n", - " \"Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n\",\n", - " \"^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think.\",\n", - " \"^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017).\",\n", - " \"Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018).\",\n", - " \"Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^\",\n", - " \"ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.).\",\n", - " \"ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998).\",\n", - " \"Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017).\",\n", - " \"Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS.\",\n", - " \"McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5.\",\n", - " \"Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018.\",\n", - " \"\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459.\",\n", - " \"doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\",\n", - " \"\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\".\",\n", - " \"Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\".\",\n", - " \"10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\".\",\n", - " \"doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362.\",\n", - " \"\\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\".\",\n", - " \"ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n\",\n", - " \"Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039.\",\n", - " \"Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n\",\n", - " \"What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020.\",\n", - " \"Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n\",\n", - " \"Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023.\",\n", - " \"\\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n\",\n", - " \"2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian.\",\n", - " \"Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat.\",\n", - " \"Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n\",\n", - " \"Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press.\",\n", - " \"Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016.\",\n", - " \"\\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\".\",\n", - " \"Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow.\",\n", - " \"S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n\",\n", - " \"ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\".\",\n", - " \"Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021.\",\n", - " \"\\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\".\",\n", - " \"Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n\",\n", - " \"Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n\",\n", - " \"The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net.\",\n", - " \"Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024.\",\n", - " \"\\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005).\",\n", - " \"doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.:\",\n", - " \"Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014).\",\n", - " \"Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\".\",\n", - " \"S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020.\",\n", - " \"AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316.\",\n", - " \"\\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1.\",\n", - " \"pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News.\",\n", - " \"Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019.\",\n", - " \"Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\".\",\n", - " \"ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023.\",\n", - " \"\\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022).\",\n", - " \"PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books.\",\n", - " \"Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024.\",\n", - " \"\\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\",\n", - " \"Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction.\",\n", - " \"Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023).\",\n", - " \"Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299.\",\n", - " \"doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n\",\n", - " \"Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\".\",\n", - " \"Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023.\",\n", - " \"\\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines.\",\n", - " \"Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599.\",\n", - " \"\\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018).\",\n", - " \"Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books.\",\n", - " \"The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015).\",\n", - " \"Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n\",\n", - " \"Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346.\",\n", - " \"Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online.\",\n", - " \"\\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist.\",\n", - " \"How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605.\",\n", - " \"596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n\",\n", - " \"Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux.\",\n", - " \"Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\",\n", - " \"Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate.\",\n", - " \"\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011).\",\n", - " \"doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\",\n", - " \"PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020.\",\n", - " \"White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"document\": \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"reducing_strength\": 5\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 4 Type: step\n", - "output: {\n", - " \"content\": [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems.\",\n", - " \"AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid.\",\n", - " \"Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones.\",\n", - " \"The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n\",\n", - " \"It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match.\",\n", - " \"Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105]\",\n", - " \"Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF).\",\n", - " \"The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article:\",\n", - " \"In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158]\",\n", - " \"Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions.\",\n", - " \"Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n\",\n", - " \"During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source.\",\n", - " \"The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan.\",\n", - " \"If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237]\",\n", - " \"After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past.\",\n", - " \"The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works.\",\n", - " \"Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance.\",\n", - " \"A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk.\",\n", - " \"This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294]\",\n", - " \"He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed.\",\n", - " \"Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333]\",\n", - " \"It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8]\",\n", - " \"The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\",\n", - " \"The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1]\",\n", - " \"He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n\",\n", - " \"Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work.\",\n", - " \"Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind.\",\n", - " \"Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios.\",\n", - " \"Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer.\",\n", - " \"Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115]\",\n", - " \"For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^\",\n", - " \"When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\",\n", - " \"Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019).\",\n", - " \"^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt.\",\n", - " \"Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n\",\n", - " \"Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\".\",\n", - " \"18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n\",\n", - " \"16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n\",\n", - " \"Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^\",\n", - " \"builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n\",\n", - " \"6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^\",\n", - " \"^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect.\",\n", - " \"8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic:\",\n", - " \"4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n\",\n", - " \"Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^\",\n", - " \"Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\",\n", - " \"16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^\",\n", - " \"Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect.\",\n", - " \"6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024).\",\n", - " \"^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^\",\n", - " \"Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^\",\n", - " \"Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors.\",\n", - " \"^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023.\",\n", - " \"PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature:\",\n", - " \"\\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation.\",\n", - " \"Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\".\",\n", - " \"^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\".\",\n", - " \"ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022).\",\n", - " \"Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\".\",\n", - " \"Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1\",\n", - " \"Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n\",\n", - " \"Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024.\",\n", - " \"\\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024.\",\n", - " \"\\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\".\",\n", - " \"\\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^\",\n", - " \"Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024).\",\n", - " \"Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\".\",\n", - " \"^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News.\",\n", - " \"Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012.\",\n", - " \"Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review.\",\n", - " \"\\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press.\",\n", - " \"Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024.\",\n", - " \"^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\".\",\n", - " \"^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^\",\n", - " \"Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n\",\n", - " \"Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\".\",\n", - " \"^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^\",\n", - " \"^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140.\",\n", - " \"\\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020).\",\n", - " \"Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n\",\n", - " \"^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^\",\n", - " \"Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n\",\n", - " \"^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023.\",\n", - " \"^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^\",\n", - " \"New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\".\",\n", - " \"^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\".\",\n", - " \"^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\",\n", - " \"^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n\",\n", - " \"Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n\",\n", - " \"Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^\",\n", - " \"^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n\",\n", - " \"^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024).\",\n", - " \"Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\".\",\n", - " \"^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n\",\n", - " \"^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\".\",\n", - " \"^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n\",\n", - " \"Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^\",\n", - " \"Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n\",\n", - " \"Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n\",\n", - " \"Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n\",\n", - " \"Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^\",\n", - " \"^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024.\",\n", - " \"\\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024.\",\n", - " \"\\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024.\",\n", - " \"\\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n\",\n", - " \"S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\".\",\n", - " \"^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n\",\n", - " \"10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024.\",\n", - " \"^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\",\n", - " \"^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n\",\n", - " \"GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004).\",\n", - " \"Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^\",\n", - " \"^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0\",\n", - " \"AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023.\",\n", - " \"The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024.\",\n", - " \"Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024.\",\n", - " \"It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation.\",\n", - " \"\\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n\",\n", - " \"Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt.\",\n", - " \"Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n\",\n", - " \"^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think.\",\n", - " \"^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017).\",\n", - " \"Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018).\",\n", - " \"Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^\",\n", - " \"ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.).\",\n", - " \"ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998).\",\n", - " \"Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017).\",\n", - " \"Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS.\",\n", - " \"McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5.\",\n", - " \"Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018.\",\n", - " \"\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459.\",\n", - " \"doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\",\n", - " \"\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\".\",\n", - " \"Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\".\",\n", - " \"10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\".\",\n", - " \"doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362.\",\n", - " \"\\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\".\",\n", - " \"ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n\",\n", - " \"Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039.\",\n", - " \"Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n\",\n", - " \"What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020.\",\n", - " \"Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n\",\n", - " \"Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023.\",\n", - " \"\\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n\",\n", - " \"2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian.\",\n", - " \"Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat.\",\n", - " \"Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n\",\n", - " \"Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press.\",\n", - " \"Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016.\",\n", - " \"\\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\".\",\n", - " \"Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow.\",\n", - " \"S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n\",\n", - " \"ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\".\",\n", - " \"Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021.\",\n", - " \"\\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\".\",\n", - " \"Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n\",\n", - " \"Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n\",\n", - " \"The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net.\",\n", - " \"Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024.\",\n", - " \"\\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005).\",\n", - " \"doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.:\",\n", - " \"Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014).\",\n", - " \"Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\".\",\n", - " \"S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020.\",\n", - " \"AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316.\",\n", - " \"\\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1.\",\n", - " \"pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News.\",\n", - " \"Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019.\",\n", - " \"Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\".\",\n", - " \"ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023.\",\n", - " \"\\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022).\",\n", - " \"PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books.\",\n", - " \"Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024.\",\n", - " \"\\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\",\n", - " \"Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction.\",\n", - " \"Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023).\",\n", - " \"Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299.\",\n", - " \"doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n\",\n", - " \"Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\".\",\n", - " \"Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023.\",\n", - " \"\\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines.\",\n", - " \"Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599.\",\n", - " \"\\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018).\",\n", - " \"Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books.\",\n", - " \"The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015).\",\n", - " \"Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n\",\n", - " \"Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346.\",\n", - " \"Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online.\",\n", - " \"\\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist.\",\n", - " \"How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605.\",\n", - " \"596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n\",\n", - " \"Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux.\",\n", - " \"Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\",\n", - " \"Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate.\",\n", - " \"\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011).\",\n", - " \"doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\",\n", - " \"PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020.\",\n", - " \"White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ],\n", - " \"document\": \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"reducing_strength\": 5\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 3 Type: step\n", - "output: {\n", - " \"result\": [\n", - " \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\n Toggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\n Part of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\n High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \\\"[2][3]\\n\\n Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems.\",\n", - " \"AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\n Goals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\n Knowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\n Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\n Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid.\",\n", - " \"Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\n A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones.\",\n", - " \"The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\n In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\n Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\n However, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\n State space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n\",\n", - " \"It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\n Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\n Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\n Probabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match.\",\n", - " \"Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\n Classifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\n An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105]\",\n", - " \"Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF).\",\n", - " \"The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\n Applications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\n Health and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article:\",\n", - " \"In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\n Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\n Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158]\",\n", - " \"Finance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions.\",\n", - " \"Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\n AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\n Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\n During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n\",\n", - " \"During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\n AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\n Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'. \\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source.\",\n", - " \"The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\n In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan.\",\n", - " \"If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237]\",\n", - " \"After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\n In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\n On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past.\",\n", - " \"The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work. \\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works.\",\n", - " \"Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\n It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\n A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance.\",\n", - " \"A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk.\",\n", - " \"This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\n First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead. \\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\n In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294]\",\n", - " \"He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier. \\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors. \\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests. \\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed.\",\n", - " \"Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\n The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333]\",\n", - " \"It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\n The study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8]\",\n", - " \"The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\",\n", - " \"The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\n In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1]\",\n", - " \"He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks. \\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\n Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\n Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\n Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n\",\n", - " \"Evaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\n Symbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action. \\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\n The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\n Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work.\",\n", - " \"Neat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\n Soft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\n Narrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\n Machine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind.\",\n", - " \"Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\n Consciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\n Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios.\",\n", - " \"Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\n However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\n Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer.\",\n", - " \"Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115]\",\n", - " \"For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^\",\n", - " \"When the law was passed in 2018, it still contained a form of this provision.\\n ^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science. \\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence. \\\"[115]\\n ^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students. \\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n ^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\",\n", - " \"Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about. \\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019).\",\n", - " \"^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n ^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\n Proposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n ^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\n The proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt.\",\n", - " \"Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n ^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n\",\n", - " \"Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a0 23\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n ^ Neumann & M\\u00f6ller (2008).\\n ^ Kuperman, Reichley & Bailey (2006).\\n ^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n ^ Russell & Norvig (2021), pp.\\u00a0272.\\n ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\".\",\n", - " \"18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n ^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n ^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n ^ Russell & Norvig (2021), p.\\u00a0528.\\n ^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n\",\n", - " \"16\\u201318).\\n ^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n ^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n ^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n\",\n", - " \"Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n ^ Solomonoff (1956).\\n ^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n ^\",\n", - " \"builtin.com. Retrieved 30 October 2023.\\n ^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n ^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n ^ Bushwick (2023).\\n ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n\",\n", - " \"6)\\n^ Russell & Norvig (2021), pp.\\u00a0 849\\u2013850.\\n ^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n ^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n ^ Challa et al. (2011).\\n ^ Russell & Norvig (2021), pp.\\u00a0 931\\u2013938.\\n ^ MIT AIL (2014).\\n ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n ^ Poria et al. (2017).\\n ^\",\n", - " \"^ Poria et al. (2017).\\n ^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a0 79\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect.\",\n", - " \"8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic:\",\n", - " \"4.1.2)\\n^ Merkle & Middendorf (2013).\\n ^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n\",\n", - " \"Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n ^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^\",\n", - " \"Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n ^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\",\n", - " \"16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^\",\n", - " \"Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n ^ Russell & Norvig (2021), p.\\u00a0751.\\n ^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n ^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n ^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect.\",\n", - " \"6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n ^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n ^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n ^ Marmouyet (2023).\\n ^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024).\",\n", - " \"^ Kobielus (2019).\\n ^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n ^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^\",\n", - " \"Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n ^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^\",\n", - " \"Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n ^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors.\",\n", - " \"^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n ^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023.\",\n", - " \"PMID\\u00a034265844.\\n ^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n ^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature:\",\n", - " \"\\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n ^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation.\",\n", - " \"Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n ^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n ^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\".\",\n", - " \"^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\".\",\n", - " \"ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n ^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n ^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022).\",\n", - " \"Retrieved 28 January 2024.\\n ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n ^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\".\",\n", - " \"Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n ^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n ^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1\",\n", - " \"Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n ^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n ^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n ^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite. AI. Retrieved 26 January 2025.\\n\",\n", - " \"Unite. AI. Retrieved 26 January 2025.\\n ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n ^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024.\",\n", - " \"\\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n ^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024.\",\n", - " \"\\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\".\",\n", - " \"\\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n ^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n ^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n ^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^\",\n", - " \"Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n\",\n", - " \"ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n ^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024).\",\n", - " \"Retrieved 14 March 2023.\\n ^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n ^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\".\",\n", - " \"^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News.\",\n", - " \"Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n ^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n ^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012.\",\n", - " \"Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n ^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review.\",\n", - " \"\\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n ^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press.\",\n", - " \"Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n ^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024.\",\n", - " \"^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\".\",\n", - " \"^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^\",\n", - " \"Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n ^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n\",\n", - " \"Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\".\",\n", - " \"^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^\",\n", - " \"^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140.\",\n", - " \"\\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n ^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020).\",\n", - " \"Retrieved 28 October 2024.\\n ^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Simonite (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0987.\\n ^ Laskowski (2023).\\n ^ GAO (2022).\\n ^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n\",\n", - " \"^ Valinsky (2019).\\n ^ Russell & Norvig (2021), p.\\u00a0991.\\n ^ Russell & Norvig (2021), pp.\\u00a0 991\\u2013992.\\n ^ Christian (2020), p.\\u00a063.\\n ^ Vincent (2022).\\n ^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^\",\n", - " \"Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n ^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n ^ Reisner (2023).\\n ^ Alter & Harris (2023).\\n ^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n\",\n", - " \"^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n ^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n ^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n ^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023.\",\n", - " \"^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n ^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n ^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n ^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n ^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^\",\n", - " \"New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n ^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\".\",\n", - " \"^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n ^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\".\",\n", - " \"^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics.\",\n", - " \"^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n ^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n ^ Nicas (2018).\\n\",\n", - " \"Bloomberg.\\n ^ Nicas (2018).\\n ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n ^ Williams (2023).\\n ^ Taylor & Hern (2023).\\n ^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n\",\n", - " \"Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n ^ \\nJump up to:\\na b Rose (2023).\\n ^ CNA (2019).\\n ^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n ^ Larson & Angwin (2016).\\n ^ Christian (2020), p.\\u00a067\\u201370.\\n ^\",\n", - " \"^ Christian (2020), p.\\u00a067\\u201370.\\n ^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n ^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n ^ Sample (2017).\\n ^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n ^ Christian (2020), p.\\u00a0110.\\n ^ Christian (2020), pp.\\u00a0 88\\u201391.\\n\",\n", - " \"^ Christian (2020), pp.\\u00a0 88\\u201391.\\n ^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n ^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n ^ Rothman (2020).\\n ^ Christian (2020), pp.\\u00a0105\\u2013108.\\n ^ Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024).\",\n", - " \"Christian (2020), pp.\\u00a0108\\u2013112.\\n ^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n ^ Russell & Norvig (2021), p.\\u00a0989.\\n ^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n ^ Russell & Norvig (2021), p.\\u00a0988.\\n ^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n ^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\".\",\n", - " \"^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n ^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n ^ Urbina et al. (2022).\\n ^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n\",\n", - " \"^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n ^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n ^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n ^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\".\",\n", - " \"^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n ^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a0 34\\u201339.\\n^ Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n\",\n", - " \"Cellan-Jones (2014).\\n ^ Russell & Norvig 2021, p.\\u00a01001.\\n ^ Bostrom (2014).\\n ^ Russell (2019).\\n ^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n ^ Harari (2023).\\n ^ M\\u00fcller & Bostrom (2014).\\n ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^\",\n", - " \"Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n ^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n ^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n ^ Valance (2023).\\n\",\n", - " \"Retrieved 6 July 2024.\\n ^ Valance (2023).\\n ^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n ^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n\",\n", - " \"Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n ^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n\",\n", - " \"Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n ^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n ^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^\",\n", - " \"^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n ^ AAAI (2014).\\n ^ Wallach (2010).\\n ^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n ^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024.\",\n", - " \"\\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n ^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n ^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024.\",\n", - " \"\\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n ^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024.\",\n", - " \"\\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n ^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023).\",\n", - " \"Retrieved 5 October 2024.\\n ^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n\",\n", - " \"S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\".\",\n", - " \"^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n\",\n", - " \"10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n ^ \\nJump up to:\\na b Vincent (2023).\\n ^ Stanford University (2023).\\n ^ \\nJump up to:\\na b c d UNESCO (2021).\\n ^ Kissinger (2021).\\n ^ Altman, Brockman & Sutskever (2023).\\n ^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024.\",\n", - " \"^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n ^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n ^ Edwards (2023).\\n ^ Kasperowicz (2023).\\n ^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror?\",\n", - " \"^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a0 10\\u201312.\\n ^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n ^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n\",\n", - " \"GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n ^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n ^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004).\",\n", - " \"Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n ^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n ^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\n Jump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n ^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^\",\n", - " \"^ Russell & Norvig (2003), p.\\u00a017.\\n ^ Russell & Norvig (2003), p.\\u00a018.\\n ^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n ^ \\nJump up to:\\na b Brooks (1990).\\n ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0\",\n", - " \"AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a0 14, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n ^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023.\",\n", - " \"The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n ^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n ^ DiFeliciantonio (2023).\\n ^ Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024.\",\n", - " \"Goswami (2023).\\n ^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n ^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n ^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024.\",\n", - " \"It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n ^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n ^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation.\",\n", - " \"\\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n ^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n ^ McCarthy (1999).\\n ^ Minsky (1986).\\n ^ \\\"What Is Artificial Intelligence (AI)? \\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n\",\n", - " \"Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n ^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n ^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n ^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt.\",\n", - " \"Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n ^ Katz (2012).\\n ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n ^ \\nJump up to:\\na b Roberts (2016).\\n ^ Russell & Norvig (2021), p.\\u00a0986.\\n ^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n\",\n", - " \"^ Chalmers (1995).\\n ^ Dennett (1991).\\n^ Horst (2005).\\n ^ Searle (1999).\\n ^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think.\",\n", - " \"^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n ^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n ^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n ^ Hern, Alex (12 January 2017).\",\n", - " \"Fast Company.\\n ^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018).\",\n", - " \"Retrieved 23 February 2024.\\n ^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n ^\",\n", - " \"ComputerWeekly.com. Retrieved 22 January 2025.\\n ^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\n AI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\n Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.).\",\n", - " \"ISBN\\u00a0978-0-0700-8770-5.\\n\\n The four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\n Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998).\",\n", - " \"Retrieved 18 November 2019.\\n Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\n Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017).\",\n", - " \"Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\n Other textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\n McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS.\",\n", - " \"McCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\n Other sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\n Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5.\",\n", - " \"Anderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\n Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\n Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n \\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018.\",\n", - " \"\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\n Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\n Beal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459.\",\n", - " \"doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\n Berryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\n Bertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\",\n", - " \"\\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\n Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\n Bostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\".\",\n", - " \"Retrieved 30 January 2020.\\n Brooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\n Brooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\n Buiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\".\",\n", - " \"10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\n Buttazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\".\",\n", - " \"doi:10.1109/2.933500.\\n Cambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\n Cellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Chalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362.\",\n", - " \"\\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\n Challa, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\n Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\".\",\n", - " \"ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\n Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a0 3642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\n Clark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n\",\n", - " \"Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\n CNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\n Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\n Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039.\",\n", - " \"Deng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\n Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Dickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\n Dockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\n Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n\",\n", - " \"What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\n Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020.\",\n", - " \"Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Edwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n\",\n", - " \"Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\n Fox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023.\",\n", - " \"\\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\n Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n \\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n\",\n", - " \"2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\n Galvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\n Geist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian.\",\n", - " \"Gibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Goffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\n Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat.\",\n", - " \"Goldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\n Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\n Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n\",\n", - " \"Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\n Grant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\n Goswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018).\",\n", - " \"Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Harari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\n Harari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\n Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press.\",\n", - " \"Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\n Holley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0 359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\n Horst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016.\",\n", - " \"\\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\n Howe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\n IGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\".\",\n", - " \"Retrieved 3 July 2019.\\n Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\n Jordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow.\",\n", - " \"S2CID\\u00a0677218.\\n Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\n Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n\",\n", - " \"ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\n Kasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Katz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\".\",\n", - " \"Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n \\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\n Kissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\n Kobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021.\",\n", - " \"\\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\n Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia. M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\n Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\".\",\n", - " \"Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\n Laskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n\",\n", - " \"Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\n Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\n Lee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n\",\n", - " \"Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\n Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n\",\n", - " \"The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n \\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\n Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net.\",\n", - " \"Madrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\n Mahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\n Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024.\",\n", - " \"\\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\n Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\n McCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005).\",\n", - " \"doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\n McGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\n McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.:\",\n", - " \"Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Morgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014).\",\n", - " \"Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\n M\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\n Neumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\".\",\n", - " \"S2CID\\u00a010767011.\\n Nilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\n Nicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\n Nilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020.\",\n", - " \"AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\n NRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\n Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\n Oudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316.\",\n", - " \"\\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\n Pennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1.\",\n", - " \"pp.\\u00a0 1\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\n Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News.\",\n", - " \"Rawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\n Reisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a0 14\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\n Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019.\",\n", - " \"Robitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\n Rose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a0 42\\u201343.\\n Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\".\",\n", - " \"ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\n Sainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\n Sample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\n Rothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023.\",\n", - " \"\\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Scassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\n Schmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022).\",\n", - " \"PMID\\u00a025462637. S2CID\\u00a011715509.\\n Schmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\n Searle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\n Searle, John (1999). Mind, language and society. New York: Basic Books.\",\n", - " \"Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n Smith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024.\",\n", - " \"\\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\n Smoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\n Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957).\",\n", - " \"Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a0 56\\u201362.\\n Stanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction.\",\n", - " \"Retrieved 19 June 2023.\\n Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0 981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n\",\n", - " \"The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n Thompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023).\",\n", - " \"Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Toews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\n Turing, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299.\",\n", - " \"doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\n Urbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n\",\n", - " \"Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\n Valance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\n Valinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\".\",\n", - " \"Retrieved 25 November 2023.\\n Vincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\n Vincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023.\",\n", - " \"\\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\n Vinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\n Waddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines.\",\n", - " \"Retrieved 24 April 2018.\\n Wallach, Wendell (2010). Moral Machines. Oxford University Press.\\n Wason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\n Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599.\",\n", - " \"\\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n \\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018).\",\n", - " \"Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\n Williams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\n Wong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books.\",\n", - " \"The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\n Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\n Cukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015).\",\n", - " \"Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\n Frank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n\",\n", - " \"Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\n Gertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\n Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346.\",\n", - " \"Halpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\n Henderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online.\",\n", - " \"\\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\n Hughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\n Immerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist.\",\n", - " \"How much does it matter? \\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\n Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\n Jumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605.\",\n", - " \"596 (7873): 583\\u2013589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\n LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n\",\n", - " \"Retrieved 19 June 2023.\\n Leffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\n Lepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation? \\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\n Marcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a0 42\\u201345.\\n Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux.\",\n", - " \"Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\n Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\",\n", - " \"Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\n Press, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n \\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\n Roivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate.\",\n", - " \"\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\n Schulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011).\",\n", - " \"doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\n Serenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\n Silver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023.\",\n", - " \"PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\n Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\n Vincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\n White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020.\",\n", - " \"White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\n External links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n \\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\n show\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\n Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\n Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"Privacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\"\n", - " ]\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 2 Type: step\n", - "output: {\n", - " \"json\": {\n", - " \"code\": 200,\n", - " \"data\": {\n", - " \"url\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"links\": {\n", - " \"\": \"https://en.wikipedia.org/wiki/Artificial_intelligence?action=edit\",\n", - " \"1\": \"https://en.wikipedia.org/wiki/GPT-1\",\n", - " \"2\": \"https://en.wikipedia.org/wiki/GPT-2\",\n", - " \"3\": \"https://en.wikipedia.org/wiki/GPT-3\",\n", - " \"4\": \"https://en.wikipedia.org/wiki/GPT-4\",\n", - " \"J\": \"https://en.wikipedia.org/wiki/GPT-J\",\n", - " \"^\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTEGalvan1997_451-0\",\n", - " \"b\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-Kateman-2023_436-1\",\n", - " \"c\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-Thomson-2022_435-2\",\n", - " \"d\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTEUNESCO2021_340-3\",\n", - " \"e\": \"https://en.wikipedia.org/wiki/Special:EditPage/Template:Glossaries_of_science_and_engineering\",\n", - " \"f\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTERussellNorvig2021785_124-5\",\n", - " \"g\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTERussellNorvig2021785_124-6\",\n", - " \"t\": \"https://en.wikipedia.org/wiki/Template_talk:Glossaries_of_science_and_engineering\",\n", - " \"v\": \"https://en.wikipedia.org/wiki/Template:Glossaries_of_science_and_engineering\",\n", - " \"15\": \"https://archive.org/details/softwarestudiesl00full_007/page/n29\",\n", - " \"4o\": \"https://en.wikipedia.org/wiki/GPT-4o\",\n", - " \"A*\": \"https://en.wikipedia.org/wiki/A*_search_algorithm\",\n", - " \"Go\": \"https://en.wikipedia.org/wiki/Go_(game)\",\n", - " \"IQ\": \"https://en.wikipedia.org/wiki/IQ\",\n", - " \"T5\": \"https://en.wikipedia.org/wiki/T5_(language_model)\",\n", - " \"o1\": \"https://en.wikipedia.org/wiki/OpenAI_o1\",\n", - " \"o3\": \"https://en.wikipedia.org/wiki/OpenAI_o3\",\n", - " \"ABB\": \"https://en.wikipedia.org/wiki/ABB\",\n", - " \"AGI\": \"https://en.wikipedia.org/wiki/Artificial_general_intelligence\",\n", - " \"Art\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_art\",\n", - " \"DQN\": \"https://en.wikipedia.org/wiki/Deep_Q-learning\",\n", - " \"FCC\": \"https://en.wikipedia.org/wiki/FCC\",\n", - " \"FDA\": \"https://en.wikipedia.org/wiki/FDA\",\n", - " \"FTC\": \"https://en.wikipedia.org/wiki/Federal_Trade_Commission\",\n", - " \"GPT\": \"https://en.wikipedia.org/wiki/Generative_pre-trained_transformer\",\n", - " \"GRE\": \"https://en.wikipedia.org/wiki/GRE\",\n", - " \"HWR\": \"https://en.wikipedia.org/wiki/Handwriting_recognition\",\n", - " \"IBM\": \"https://en.wikipedia.org/wiki/IBM\",\n", - " \"Ido\": \"https://io.wikipedia.org/wiki/Artifical_inteligenteso\",\n", - " \"NLP\": \"https://en.wikipedia.org/wiki/Natural_language_processing\",\n", - " \"NMT\": \"https://en.wikipedia.org/wiki/Neural_machine_translation\",\n", - " \"OCR\": \"https://en.wikipedia.org/wiki/Optical_character_recognition\",\n", - " \"PMC\": \"https://en.wikipedia.org/wiki/PMC_(identifier)\",\n", - " \"RAG\": \"https://en.wikipedia.org/wiki/Retrieval-augmented_generation\",\n", - " \"SAT\": \"https://en.wikipedia.org/wiki/SAT\",\n", - " \"SGD\": \"https://en.wikipedia.org/wiki/Stochastic_gradient_descent\",\n", - " \"Veo\": \"https://en.wikipedia.org/wiki/Google_DeepMind#Video_model\",\n", - " \"XAI\": \"https://en.wikipedia.org/wiki/Explainable_Artificial_Intelligence\",\n", - " \"[1]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211%E2%80%934-1\",\n", - " \"[2]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-2\",\n", - " \"[3]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-3\",\n", - " \"[4]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Artificial_general_intelligence-5\",\n", - " \"[5]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-7\",\n", - " \"[6]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Dartmouth_workshop-8\",\n", - " \"[7]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Succ1-9\",\n", - " \"[8]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Fund01-10\",\n", - " \"[9]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-First_AI_Winter-11\",\n", - " \"[a]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Problems_of_AI-4\",\n", - " \"[b]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Tools_of_AI-6\",\n", - " \"[c]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-34\",\n", - " \"[d]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-35\",\n", - " \"[e]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-48\",\n", - " \"[f]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-57\",\n", - " \"[g]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-100\",\n", - " \"[h]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-103\",\n", - " \"[i]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-129\",\n", - " \"[j]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-131\",\n", - " \"[k]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-247\",\n", - " \"[l]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-257\",\n", - " \"[m]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-263\",\n", - " \"[n]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-270\",\n", - " \"[o]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-279\",\n", - " \"[p]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-291\",\n", - " \"[q]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-300\",\n", - " \"[r]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-356\",\n", - " \"[s]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-360\",\n", - " \"[t]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-362\",\n", - " \"[u]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-364\",\n", - " \"[v]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-365\",\n", - " \"[w]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-370\",\n", - " \"[x]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-381\",\n", - " \"[y]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-388\",\n", - " \"[z]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-392\",\n", - " \"arm\": \"https://en.wikipedia.org/wiki/Robotic_arm\",\n", - " \"doi\": \"https://en.wikipedia.org/wiki/Doi_(identifier)\",\n", - " \"hdl\": \"https://en.wikipedia.org/wiki/Hdl_(identifier)\",\n", - " \"law\": \"https://en.wikipedia.org/wiki/Law\",\n", - " \"AAAI\": \"https://en.wikipedia.org/wiki/AAAI\",\n", - " \"ADAS\": \"https://en.wikipedia.org/wiki/Advanced_driver-assistance_system\",\n", - " \"AIME\": \"https://en.wikipedia.org/wiki/American_Invitational_Mathematics_Examination\",\n", - " \"BERT\": \"https://en.wikipedia.org/wiki/BERT_(language_model)\",\n", - " \"Data\": \"https://www.wikidata.org/wiki/Q11660\",\n", - " \"FRAM\": \"https://en.wikipedia.org/wiki/Ferroelectric_RAM\",\n", - " \"Face\": \"https://en.wikipedia.org/wiki/Facial_recognition_system\",\n", - " \"Fact\": \"https://en.wikipedia.org/wiki/Fact\",\n", - " \"Flux\": \"https://en.wikipedia.org/wiki/Flux_(text-to-image_model)\",\n", - " \"Form\": \"https://en.wikipedia.org/wiki/Form_factor_(design)\",\n", - " \"GPUs\": \"https://en.wikipedia.org/wiki/GPUs\",\n", - " \"Grok\": \"https://en.wikipedia.org/wiki/Grok_(chatbot)\",\n", - " \"Help\": \"https://en.wikipedia.org/wiki/Help:Contents\",\n", - " \"ISBN\": \"https://en.wikipedia.org/wiki/ISBN_(identifier)\",\n", - " \"ISSN\": \"https://en.wikipedia.org/wiki/ISSN_(identifier)\",\n", - " \"Idea\": \"https://en.wikipedia.org/wiki/Idea\",\n", - " \"Igbo\": \"https://ig.wikipedia.org/wiki/%E1%BB%8Cg%E1%BB%A5g%E1%BB%A5_isi\",\n", - " \"Jawa\": \"https://jv.wikipedia.org/wiki/Kacerdhasan_gaw%C3%A9yan\",\n", - " \"KUKA\": \"https://en.wikipedia.org/wiki/KUKA\",\n", - " \"Kits\": \"https://en.wikipedia.org/wiki/Robot_kit\",\n", - " \"LCCN\": \"https://en.wikipedia.org/wiki/LCCN_(identifier)\",\n", - " \"Laws\": \"https://en.wikipedia.org/wiki/Laws_of_robotics\",\n", - " \"Lean\": \"https://en.wikipedia.org/wiki/Lean_(proof_assistant)\",\n", - " \"Lisp\": \"https://en.wikipedia.org/wiki/Lisp_(programming_language)\",\n", - " \"List\": \"https://en.wikipedia.org/wiki/List_of_emerging_technologies\",\n", - " \"MRAM\": \"https://en.wikipedia.org/wiki/Magnetoresistive_RAM\",\n", - " \"Meta\": \"https://en.wikipedia.org/wiki/Meta_Platforms\",\n", - " \"Mind\": \"https://en.wikipedia.org/wiki/Mind\",\n", - " \"NRAM\": \"https://en.wikipedia.org/wiki/Nano-RAM\",\n", - " \"OCLC\": \"https://en.wikipedia.org/wiki/OCLC_(identifier)\",\n", - " \"PMID\": \"https://en.wikipedia.org/wiki/PMID_(identifier)\",\n", - " \"PRAM\": \"https://en.wikipedia.org/wiki/Phase-change_memory\",\n", - " \"PaLM\": \"https://en.wikipedia.org/wiki/PaLM\",\n", - " \"Pain\": \"https://en.wikipedia.org/wiki/Pain_(philosophy)\",\n", - " \"Qwen\": \"https://en.wikipedia.org/wiki/Qwen\",\n", - " \"RFID\": \"https://en.wikipedia.org/wiki/Radio-frequency_identification\",\n", - " \"RLHF\": \"https://en.wikipedia.org/wiki/Reinforcement_learning_from_human_feedback\",\n", - " \"RRAM\": \"https://en.wikipedia.org/wiki/Resistive_random-access_memory\",\n", - " \"Read\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"SSRN\": \"https://en.wikipedia.org/wiki/SSRN_(identifier)\",\n", - " \"Siri\": \"https://en.wikipedia.org/wiki/Siri\",\n", - " \"Size\": \"https://en.wikipedia.org/wiki/List_of_computer_size_categories\",\n", - " \"Sora\": \"https://en.wikipedia.org/wiki/Sora_(text-to-video_model)\",\n", - " \"Talk\": \"https://en.wikipedia.org/wiki/Talk:Artificial_intelligence\",\n", - " \"Udio\": \"https://en.wikipedia.org/wiki/Udio\",\n", - " \"WIPO\": \"https://en.wikipedia.org/wiki/WIPO\",\n", - " \"[10]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Second_AI_Winter-12\",\n", - " \"[11]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Deep_learning_revolution-13\",\n", - " \"[12]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEToews2023-14\",\n", - " \"[13]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-15\",\n", - " \"[14]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-16\",\n", - " \"[15]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Intractability_and_efficiency_and_the_combinatorial_explosion-17\",\n", - " \"[16]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Psychological_evidence_of_the_prevalence_of_sub-18\",\n", - " \"[17]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-19\",\n", - " \"[18]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESmoliarZhang1994-20\",\n", - " \"[19]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENeumannM%C3%B6ller2008-21\",\n", - " \"[20]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKupermanReichleyBailey2006-22\",\n", - " \"[21]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcGarry2005-23\",\n", - " \"[22]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBertiniDel_BimboTorniai2006-24\",\n", - " \"[23]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021272-25\",\n", - " \"[24]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-26\",\n", - " \"[25]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-27\",\n", - " \"[26]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-28\",\n", - " \"[27]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-29\",\n", - " \"[28]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Default_reasoning-30\",\n", - " \"[29]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Breadth_of_commonsense_knowledge-31\",\n", - " \"[30]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENewquist1994296-32\",\n", - " \"[31]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier1993204%E2%80%93208-33\",\n", - " \"[32]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021528-36\",\n", - " \"[33]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-37\",\n", - " \"[34]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-38\",\n", - " \"[35]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-39\",\n", - " \"[36]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-40\",\n", - " \"[37]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-41\",\n", - " \"[38]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-42\",\n", - " \"[39]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-43\",\n", - " \"[40]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-44\",\n", - " \"[41]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-45\",\n", - " \"[42]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring1950-46\",\n", - " \"[43]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESolomonoff1956-47\",\n", - " \"[44]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-49\",\n", - " \"[45]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Supervised_learning-50\",\n", - " \"[46]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-51\",\n", - " \"[47]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-52\",\n", - " \"[48]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-53\",\n", - " \"[49]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-54\",\n", - " \"[50]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-55\",\n", - " \"[51]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-56\",\n", - " \"[52]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021856%E2%80%93858-58\",\n", - " \"[53]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDickson2022-59\",\n", - " \"[54]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-60\",\n", - " \"[55]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2019-61\",\n", - " \"[56]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021875%E2%80%93878-62\",\n", - " \"[57]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBushwick2023-63\",\n", - " \"[58]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-64\",\n", - " \"[59]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021849%E2%80%93850-65\",\n", - " \"[60]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021895%E2%80%93899-66\",\n", - " \"[61]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021899%E2%80%93901-67\",\n", - " \"[62]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChallaMorelandMu%C5%A1ickiEvans2011-68\",\n", - " \"[63]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021931%E2%80%93938-69\",\n", - " \"[64]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMIT_AIL2014-70\",\n", - " \"[65]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-71\",\n", - " \"[66]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWaddell2018-72\",\n", - " \"[67]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEPoriaCambriaBajpaiHussain2017-73\",\n", - " \"[68]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-74\",\n", - " \"[69]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-75\",\n", - " \"[70]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021sect._11.2-76\",\n", - " \"[71]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-77\",\n", - " \"[72]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-78\",\n", - " \"[73]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-79\",\n", - " \"[74]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-80\",\n", - " \"[75]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-81\",\n", - " \"[76]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-82\",\n", - " \"[77]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMerkleMiddendorf2013-83\",\n", - " \"[78]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-84\",\n", - " \"[79]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-85\",\n", - " \"[80]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-86\",\n", - " \"[81]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-87\",\n", - " \"[82]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-88\",\n", - " \"[83]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-89\",\n", - " \"[84]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-90\",\n", - " \"[85]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-91\",\n", - " \"[86]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Stoch-92\",\n", - " \"[87]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-93\",\n", - " \"[88]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-94\",\n", - " \"[89]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-95\",\n", - " \"[90]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Stochastic_temporal_models-96\",\n", - " \"[91]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-97\",\n", - " \"[92]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-98\",\n", - " \"[93]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015chpt._6-99\",\n", - " \"[94]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-101\",\n", - " \"[95]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015210-102\",\n", - " \"[96]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-104\",\n", - " \"[97]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-105\",\n", - " \"[98]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-106\",\n", - " \"[99]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-107\",\n", - " \"[aa]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-413\",\n", - " \"[ab]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-419\",\n", - " \"[ac]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Searle's_strong_AI-432\",\n", - " \"bias\": \"https://en.wikipedia.org/wiki/Bias_(statistics)\",\n", - " \"deep\": \"https://en.wikipedia.org/wiki/Deep_learning\",\n", - " \"edit\": \"https://en.wikipedia.org/w/index.php?title=Generative_artificial_intelligence&action=edit\",\n", - " \"harm\": \"https://en.wikipedia.org/wiki/Harm\",\n", - " \"mind\": \"https://en.wikipedia.org/wiki/Mind\",\n", - " \"null\": \"https://en.wikipedia.org/wiki/Null_hypothesis\",\n", - " \"self\": \"https://en.wikipedia.org/wiki/Philosophy_of_self\",\n", - " \"soft\": \"https://en.wikipedia.org/wiki/Soft_computing\",\n", - " \"tree\": \"https://en.wikipedia.org/wiki/Game_tree\",\n", - " \"(Top)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#\",\n", - " \"0\\u2013L\": \"https://en.wikipedia.org/wiki/Glossary_of_cellular_and_molecular_biology_(0%E2%80%93L)\",\n", - " \"15.ai\": \"https://en.wikipedia.org/wiki/15.ai\",\n", - " \"Alexa\": \"https://en.wikipedia.org/wiki/Amazon_Alexa\",\n", - " \"Alvey\": \"https://en.wikipedia.org/wiki/Alvey\",\n", - " \"Apple\": \"https://en.wikipedia.org/wiki/Apple_Computer\",\n", - " \"Atari\": \"https://en.wikipedia.org/wiki/Atari\",\n", - " \"Audio\": \"https://en.wikipedia.org/wiki/Generative_audio\",\n", - " \"A\\u2013L\": \"https://en.wikipedia.org/wiki/Glossary_of_engineering:_A%E2%80%93L\",\n", - " \"A\\u2013M\": \"https://en.wikipedia.org/wiki/Glossary_of_geography_terms_(A%E2%80%93M)\",\n", - " \"BLOOM\": \"https://en.wikipedia.org/wiki/BLOOM_(language_model)\",\n", - " \"Baidu\": \"https://en.wikipedia.org/wiki/Baidu\",\n", - " \"CBRAM\": \"https://en.wikipedia.org/wiki/Programmable_metallization_cell\",\n", - " \"DARPA\": \"https://en.wikipedia.org/wiki/DARPA\",\n", - " \"Dansk\": \"https://da.wikipedia.org/wiki/Kunstig_intelligens\",\n", - " \"ECRAM\": \"https://en.wikipedia.org/wiki/Electrochemical_RAM\",\n", - " \"Eesti\": \"https://et.wikipedia.org/wiki/Tehisintellekt\",\n", - " \"FANUC\": \"https://en.wikipedia.org/wiki/FANUC\",\n", - " \"Fodor\": \"https://en.wikipedia.org/wiki/Jerry_Fodor\",\n", - " \"GOFAI\": \"https://en.wikipedia.org/wiki/GOFAI\",\n", - " \"GPGPU\": \"https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_units\",\n", - " \"GPT-3\": \"https://en.wikipedia.org/wiki/GPT-3\",\n", - " \"GPT-4\": \"https://en.wikipedia.org/wiki/GPT-4\",\n", - " \"Gaelg\": \"https://gv.wikipedia.org/wiki/Far-in%C3%A7hynaght\",\n", - " \"GloVe\": \"https://en.wikipedia.org/wiki/GloVe\",\n", - " \"Hausa\": \"https://ha.wikipedia.org/wiki/Kirkirar_Basira\",\n", - " \"Human\": \"https://en.wikipedia.org/wiki/Human_intelligence\",\n", - " \"Index\": \"https://en.wikipedia.org/wiki/Index_of_robotics_articles\",\n", - " \"Intel\": \"https://en.wikipedia.org/wiki/Intel\",\n", - " \"Ipsos\": \"https://en.wikipedia.org/wiki/Ipsos\",\n", - " \"JSTOR\": \"https://en.wikipedia.org/wiki/JSTOR_(identifier)\",\n", - " \"Japan\": \"https://id.ndl.go.jp/auth/ndlna/00574798\",\n", - " \"Kling\": \"https://en.wikipedia.org/wiki/Kling_(text-to-video_model)\",\n", - " \"LLaMA\": \"https://en.wikipedia.org/wiki/LLaMA\",\n", - " \"LLaMa\": \"https://en.wikipedia.org/wiki/Llama_(language_model)\",\n", - " \"LaMDA\": \"https://en.wikipedia.org/wiki/LaMDA\",\n", - " \"Llama\": \"https://en.wikipedia.org/wiki/Llama_(language_model)\",\n", - " \"Local\": \"https://en.wikipedia.org/wiki/Local_search_(optimization)\",\n", - " \"Logic\": \"https://en.wikipedia.org/wiki/Logic_in_computer_science\",\n", - " \"Malti\": \"https://mt.wikipedia.org/wiki/Intelli%C4%A1enza_artifi%C4%8Bjali\",\n", - " \"Mamba\": \"https://en.wikipedia.org/wiki/Mamba_(deep_learning_architecture)\",\n", - " \"Media\": \"https://commons.wikimedia.org/wiki/Category:Artificial_intelligence\",\n", - " \"Mixed\": \"https://en.wikipedia.org/wiki/Mixed_reality\",\n", - " \"Music\": \"https://en.wikipedia.org/wiki/Music_and_artificial_intelligence\",\n", - " \"M\\u2013Z\": \"https://en.wikipedia.org/wiki/Glossary_of_cellular_and_molecular_biology_(M%E2%80%93Z)\",\n", - " \"N\\u2013Z\": \"https://en.wikipedia.org/wiki/Glossary_of_geography_terms_(N%E2%80%93Z)\",\n", - " \"Pitts\": \"https://en.wikipedia.org/wiki/Walter_Pitts\",\n", - " \"Plato\": \"https://en.wikipedia.org/wiki/Plato\",\n", - " \"S2CID\": \"https://en.wikipedia.org/wiki/S2CID_(identifier)\",\n", - " \"SARSA\": \"https://en.wikipedia.org/wiki/State%E2%80%93action%E2%80%93reward%E2%80%93state%E2%80%93action\",\n", - " \"SONOS\": \"https://en.wikipedia.org/wiki/SONOS\",\n", - " \"Scots\": \"https://sco.wikipedia.org/wiki/Artifeecial_intelligence\",\n", - " \"Shqip\": \"https://sq.wikipedia.org/wiki/Inteligjenca_artificiale\",\n", - " \"Simon\": \"https://en.wikipedia.org/wiki/Herbert_A._Simon\",\n", - " \"Spain\": \"http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX4659822\",\n", - " \"Suite\": \"https://en.wikipedia.org/wiki/Robotics_suite\",\n", - " \"Suomi\": \"https://fi.wikipedia.org/wiki/Teko%C3%A4ly\",\n", - " \"Swarm\": \"https://en.wikipedia.org/wiki/Swarm_robotics\",\n", - " \"Types\": \"https://en.wikipedia.org/wiki/Robot\",\n", - " \"V\\u00f5ro\": \"https://fiu-vro.wikipedia.org/wiki/Kunstm%C3%B5istus\",\n", - " \"Walon\": \"https://wa.wikipedia.org/wiki/S%C3%BBtist%C3%A9_%C3%A9ndjolike\",\n", - " \"Waymo\": \"https://en.wikipedia.org/wiki/Waymo\",\n", - " \"[100]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-108\",\n", - " \"[101]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-109\",\n", - " \"[102]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015152-110\",\n", - " \"[103]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-111\",\n", - " \"[104]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Neural_networks-112\",\n", - " \"[105]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-113\",\n", - " \"[106]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-114\",\n", - " \"[107]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-115\",\n", - " \"[108]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-116\",\n", - " \"[109]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-117\",\n", - " \"[110]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Deep_learning-118\",\n", - " \"[111]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-119\",\n", - " \"[112]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDengYu2014199%E2%80%93200-120\",\n", - " \"[113]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECiresanMeierSchmidhuber2012-121\",\n", - " \"[114]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021751-122\",\n", - " \"[115]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202117-123\",\n", - " \"[116]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021785-124\",\n", - " \"[117]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._5-125\",\n", - " \"[118]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._6-126\",\n", - " \"[119]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._7-127\",\n", - " \"[120]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._8-128\",\n", - " \"[121]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-130\",\n", - " \"[122]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESmith2023-132\",\n", - " \"[123]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-133\",\n", - " \"[124]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-134\",\n", - " \"[125]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMarmouyet2023-135\",\n", - " \"[126]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKobielus2019-136\",\n", - " \"[127]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-137\",\n", - " \"[128]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-138\",\n", - " \"[129]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-139\",\n", - " \"[130]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-140\",\n", - " \"[131]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-141\",\n", - " \"[132]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-142\",\n", - " \"[133]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-143\",\n", - " \"[134]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Bax-2023-144\",\n", - " \"[135]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-145\",\n", - " \"[136]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-146\",\n", - " \"[137]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-147\",\n", - " \"[138]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-148\",\n", - " \"[139]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-149\",\n", - " \"[140]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-150\",\n", - " \"[141]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-151\",\n", - " \"[142]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-152\",\n", - " \"[143]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-153\",\n", - " \"[144]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-154\",\n", - " \"[145]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-155\",\n", - " \"[146]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-156\",\n", - " \"[147]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-157\",\n", - " \"[148]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-158\",\n", - " \"[149]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-159\",\n", - " \"[150]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-160\",\n", - " \"[151]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-161\",\n", - " \"[152]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-162\",\n", - " \"[153]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-163\",\n", - " \"[154]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-164\",\n", - " \"[155]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-165\",\n", - " \"[156]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-166\",\n", - " \"[157]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-167\",\n", - " \"[158]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-CRS-2019-168\",\n", - " \"[159]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Slyusar-2019-169\",\n", - " \"[160]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-170\",\n", - " \"[161]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Davies-2023-171\",\n", - " \"[162]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-172\",\n", - " \"[163]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-173\",\n", - " \"[164]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-174\",\n", - " \"[165]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-175\",\n", - " \"[166]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-176\",\n", - " \"[167]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_:0-177\",\n", - " \"[168]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-178\",\n", - " \"[169]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_nytimes-179\",\n", - " \"[170]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_bloomberg-180\",\n", - " \"[171]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_nytimes-gpt4-181\",\n", - " \"[172]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-182\",\n", - " \"[173]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-183\",\n", - " \"[174]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_:4-184\",\n", - " \"[175]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_economist1-185\",\n", - " \"[176]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-186\",\n", - " \"[177]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-187\",\n", - " \"[178]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_economist2-188\",\n", - " \"[179]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-189\",\n", - " \"[180]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_mckinsey-190\",\n", - " \"[181]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-191\",\n", - " \"[182]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-192\",\n", - " \"[183]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-193\",\n", - " \"[184]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-194\",\n", - " \"[185]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-195\",\n", - " \"[186]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-196\",\n", - " \"[187]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-197\",\n", - " \"[188]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-198\",\n", - " \"[189]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-199\",\n", - " \"[190]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-200\",\n", - " \"[191]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-201\",\n", - " \"[192]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-202\",\n", - " \"[193]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-203\",\n", - " \"[194]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-204\",\n", - " \"[195]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-205\",\n", - " \"[196]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-206\",\n", - " \"[197]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-207\",\n", - " \"[198]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-208\",\n", - " \"[199]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-209\",\n", - " \"[200]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-210\",\n", - " \"[201]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESimonite2016-211\",\n", - " \"[202]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021987-212\",\n", - " \"[203]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELaskowski2023-213\",\n", - " \"[204]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGAO2022-214\",\n", - " \"[205]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEValinsky2019-215\",\n", - " \"[206]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021991-216\",\n", - " \"[207]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021991%E2%80%93992-217\",\n", - " \"[208]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202063-218\",\n", - " \"[209]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2022-219\",\n", - " \"[210]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-220\",\n", - " \"[211]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-221\",\n", - " \"[212]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEReisner2023-222\",\n", - " \"[213]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAlterHarris2023-223\",\n", - " \"[214]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-224\",\n", - " \"[215]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-225\",\n", - " \"[216]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-226\",\n", - " \"[217]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-227\",\n", - " \"[218]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-228\",\n", - " \"[219]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-229\",\n", - " \"[220]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-230\",\n", - " \"[221]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-231\",\n", - " \"[222]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-232\",\n", - " \"[223]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-233\",\n", - " \"[224]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-234\",\n", - " \"[225]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-235\",\n", - " \"[226]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-236\",\n", - " \"[227]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-237\",\n", - " \"[228]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-238\",\n", - " \"[229]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-DatacenterDynamics-239\",\n", - " \"[230]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-bloombergjp-240\",\n", - " \"[231]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Bloomberg20241104-241\",\n", - " \"[232]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENicas2018-242\",\n", - " \"[233]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-243\",\n", - " \"[234]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWilliams2023-244\",\n", - " \"[235]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETaylorHern2023-245\",\n", - " \"[236]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Samuel-2022-246\",\n", - " \"[237]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERose2023-248\",\n", - " \"[238]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECNA2019-249\",\n", - " \"[239]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGoffrey200817-250\",\n", - " \"[240]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-251\",\n", - " \"[241]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202025-252\",\n", - " \"[242]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021995-253\",\n", - " \"[243]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGrantHill2023-254\",\n", - " \"[244]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELarsonAngwin2016-255\",\n", - " \"[245]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202067%E2%80%9370-256\",\n", - " \"[246]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-258\",\n", - " \"[247]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-259\",\n", - " \"[248]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-260\",\n", - " \"[249]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-261\",\n", - " \"[250]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-262\",\n", - " \"[251]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDockrill2022-264\",\n", - " \"[252]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESample2017-265\",\n", - " \"[253]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-266\",\n", - " \"[254]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020110-267\",\n", - " \"[255]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202088%E2%80%9391-268\",\n", - " \"[256]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-269\",\n", - " \"[257]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202091-271\",\n", - " \"[258]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202083-272\",\n", - " \"[259]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVerma2021-273\",\n", - " \"[260]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERothman2020-274\",\n", - " \"[261]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020105%E2%80%93108-275\",\n", - " \"[262]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020108%E2%80%93112-276\",\n", - " \"[263]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-277\",\n", - " \"[264]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021989-278\",\n", - " \"[265]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021987%E2%80%93990-280\",\n", - " \"[266]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021988-281\",\n", - " \"[267]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-282\",\n", - " \"[268]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHarari2018-283\",\n", - " \"[269]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-284\",\n", - " \"[270]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-285\",\n", - " \"[271]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEUrbinaLentzosInvernizziEkins2022-286\",\n", - " \"[272]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-E-287\",\n", - " \"[273]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-288\",\n", - " \"[274]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEIGM_Chicago2017-289\",\n", - " \"[275]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEArntzGregoryZierahn201633-290\",\n", - " \"[276]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-292\",\n", - " \"[277]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-293\",\n", - " \"[278]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-294\",\n", - " \"[279]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMorgenstern2015-295\",\n", - " \"[280]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-296\",\n", - " \"[281]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-297\",\n", - " \"[282]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECellan-Jones2014-298\",\n", - " \"[283]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211001-299\",\n", - " \"[284]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBostrom2014-301\",\n", - " \"[285]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussell2019-302\",\n", - " \"[286]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-303\",\n", - " \"[287]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHarari2023-304\",\n", - " \"[288]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEM%C3%BCllerBostrom2014-305\",\n", - " \"[289]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-306\",\n", - " \"[290]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-307\",\n", - " \"[291]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-308\",\n", - " \"[292]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-309\",\n", - " \"[293]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEValance2023-310\",\n", - " \"[294]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-311\",\n", - " \"[295]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-312\",\n", - " \"[296]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-313\",\n", - " \"[297]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-314\",\n", - " \"[298]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-315\",\n", - " \"[299]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-316\",\n", - " \"[300]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202067,_73-317\",\n", - " \"[301]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEYudkowsky2008-318\",\n", - " \"[302]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAndersonAnderson2011-319\",\n", - " \"[303]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAAAI2014-320\",\n", - " \"[304]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWallach2010-321\",\n", - " \"[305]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussell2019173-322\",\n", - " \"[306]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-323\",\n", - " \"[307]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-324\",\n", - " \"[308]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-325\",\n", - " \"[309]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-326\",\n", - " \"[310]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-327\",\n", - " \"[311]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-328\",\n", - " \"[312]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-329\",\n", - " \"[313]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-330\",\n", - " \"[314]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-331\",\n", - " \"[315]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-332\",\n", - " \"[316]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-333\",\n", - " \"[317]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-334\",\n", - " \"[318]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-335\",\n", - " \"[319]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-336\",\n", - " \"[320]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELaw_Library_of_Congress_(U.S.)._Global_Legal_Research_Directorate2019-337\",\n", - " \"[321]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2023-338\",\n", - " \"[322]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEStanford_University2023-339\",\n", - " \"[323]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEUNESCO2021-340\",\n", - " \"[324]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKissinger2021-341\",\n", - " \"[325]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAltmanBrockmanSutskever2023-342\",\n", - " \"[326]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-343\",\n", - " \"[327]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-344\",\n", - " \"[328]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEEdwards2023-345\",\n", - " \"[329]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKasperowicz2023-346\",\n", - " \"[330]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEFox_News2023-347\",\n", - " \"[331]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-348\",\n", - " \"[332]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-349\",\n", - " \"[333]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-350\",\n", - " \"[334]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-351\",\n", - " \"[335]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-352\",\n", - " \"[336]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20219-353\",\n", - " \"[337]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Clarendon_Press-2004-354\",\n", - " \"[338]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-355\",\n", - " \"[339]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-357\",\n", - " \"[340]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Turing-358\",\n", - " \"[341]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier199347%E2%80%9349-359\",\n", - " \"[342]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig200317-361\",\n", - " \"[343]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig200318-363\",\n", - " \"[344]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENewquist199486%E2%80%9386-366\",\n", - " \"[345]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-367\",\n", - " \"[346]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-368\",\n", - " \"[347]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202121-369\",\n", - " \"[348]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELighthill1973-371\",\n", - " \"[349]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENRC1999212%E2%80%93213-372\",\n", - " \"[350]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202122-373\",\n", - " \"[351]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-374\",\n", - " \"[352]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202124-375\",\n", - " \"[353]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENilsson19987-376\",\n", - " \"[354]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCorduck2004454%E2%80%93462-377\",\n", - " \"[355]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMoravec1988-378\",\n", - " \"[356]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBrooks1990-379\",\n", - " \"[357]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-380\",\n", - " \"[358]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202125-382\",\n", - " \"[359]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-383\",\n", - " \"[360]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202126-384\",\n", - " \"[361]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Formal_and_narrow_methods_adopted_in_the_1990s-385\",\n", - " \"[362]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-386\",\n", - " \"[363]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWong2023-387\",\n", - " \"[364]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-389\",\n", - " \"[365]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEClark2015b-390\",\n", - " \"[366]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-391\",\n", - " \"[367]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-393\",\n", - " \"[368]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-394\",\n", - " \"[369]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-395\",\n", - " \"[370]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDiFeliciantonio2023-396\",\n", - " \"[371]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGoswami2023-397\",\n", - " \"[372]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-398\",\n", - " \"[373]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-399\",\n", - " \"[374]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Jarow-2024-400\",\n", - " \"[375]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-401\",\n", - " \"[376]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring19501-402\",\n", - " \"[377]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring1950Under_%22The_Argument_from_Consciousness%22-403\",\n", - " \"[378]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-404\",\n", - " \"[379]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20213-405\",\n", - " \"[380]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMaker2006-406\",\n", - " \"[381]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCarthy1999-407\",\n", - " \"[382]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMinsky1986-408\",\n", - " \"[383]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-409\",\n", - " \"[384]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-410\",\n", - " \"[385]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-411\",\n", - " \"[386]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENilsson198310-412\",\n", - " \"[387]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHaugeland1985112%E2%80%93117-414\",\n", - " \"[388]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-415\",\n", - " \"[389]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-416\",\n", - " \"[390]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-417\",\n", - " \"[391]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier1993125-418\",\n", - " \"[392]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELangley2011-420\",\n", - " \"[393]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKatz2012-421\",\n", - " \"[394]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-422\",\n", - " \"[395]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEPennachinGoertzel2007-423\",\n", - " \"[396]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERoberts2016-424\",\n", - " \"[397]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021986-425\",\n", - " \"[398]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChalmers1995-426\",\n", - " \"[399]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDennett1991-427\",\n", - " \"[400]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHorst2005-428\",\n", - " \"[401]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESearle1999-429\",\n", - " \"[402]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESearle19801-430\",\n", - " \"[403]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20219817-431\",\n", - " \"[404]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-433\",\n", - " \"[405]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-434\",\n", - " \"[406]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Thomson-2022-435\",\n", - " \"[407]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Kateman-2023-436\",\n", - " \"[408]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-437\",\n", - " \"[409]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-438\",\n", - " \"[410]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-439\",\n", - " \"[411]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-440\",\n", - " \"[412]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-441\",\n", - " \"[413]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211005-442\",\n", - " \"[414]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-443\",\n", - " \"[415]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-444\",\n", - " \"[416]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-v935-445\",\n", - " \"[417]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-AI_in_myth-446\",\n", - " \"[418]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCorduck2004340%E2%80%93400-447\",\n", - " \"[419]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEButtazzo2001-448\",\n", - " \"[420]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAnderson2008-449\",\n", - " \"[421]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCauley2007-450\",\n", - " \"[422]\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGalvan1997-451\",\n", - " \"arXiv\": \"https://en.wikipedia.org/wiki/ArXiv_(identifier)\",\n", - " \"chess\": \"https://en.wikipedia.org/wiki/Chess\",\n", - " \"cs.AI\": \"https://arxiv.org/archive/cs.AI\",\n", - " \"cs.CL\": \"https://arxiv.org/archive/cs.CL\",\n", - " \"cs.LG\": \"https://arxiv.org/archive/cs.LG\",\n", - " \"learn\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"lidar\": \"https://en.wikipedia.org/wiki/Lidar\",\n", - " \"logic\": \"https://en.wikipedia.org/wiki/Logic\",\n", - " \"money\": \"https://en.wikipedia.org/wiki/Money\",\n", - " \"poker\": \"https://en.wikipedia.org/wiki/Poker\",\n", - " \"ruler\": \"https://en.wikipedia.org/wiki/Ruler\",\n", - " \"token\": \"https://en.wikipedia.org/wiki/Lexical_analysis\",\n", - " \"tools\": \"https://en.wikipedia.org/wiki/Programming_tool\",\n", - " \"trees\": \"https://en.wikipedia.org/wiki/Tree_structure\",\n", - " \"trope\": \"https://en.wikipedia.org/wiki/Trope_(literature)\",\n", - " \"515925\": \"https://api.semanticscholar.org/CorpusID:515925\",\n", - " \"677218\": \"https://api.semanticscholar.org/CorpusID:677218\",\n", - " \"AI art\": \"https://en.wikipedia.org/wiki/AI_art\",\n", - " \"Agency\": \"https://en.wikipedia.org/wiki/Agency_(philosophy)\",\n", - " \"Aliens\": \"https://en.wikipedia.org/wiki/Aliens_(film)\",\n", - " \"Amazon\": \"https://en.wikipedia.org/wiki/Amazon_(company)\",\n", - " \"Aurora\": \"https://en.wikipedia.org/wiki/Aurora_(text-to-image_model)\",\n", - " \"Betawi\": \"https://bew.wikipedia.org/wiki/Calakan_bikinan\",\n", - " \"Botany\": \"https://en.wikipedia.org/wiki/Glossary_of_botanical_terms\",\n", - " \"COMPAS\": \"https://en.wikipedia.org/wiki/COMPAS_(software)\",\n", - " \"Claude\": \"https://en.wikipedia.org/wiki/Claude_(language_model)\",\n", - " \"Cyborg\": \"https://en.wikipedia.org/wiki/Cyborg\",\n", - " \"DALL-E\": \"https://en.wikipedia.org/wiki/DALL-E\",\n", - " \"Donate\": \"https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en\",\n", - " \"Ethics\": \"https://en.wikipedia.org/wiki/Robot_ethics\",\n", - " \"Exelon\": \"https://en.wikipedia.org/wiki/Exelon\",\n", - " \"Formal\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Neat_vs._scruffy\",\n", - " \"France\": \"https://catalogue.bnf.fr/ark:/12148/cb11932084t\",\n", - " \"Furlan\": \"https://fur.wikipedia.org/wiki/Inteligjence_artifici%C3%A2l\",\n", - " \"Galego\": \"https://gl.wikipedia.org/wiki/Intelixencia_artificial\",\n", - " \"Gating\": \"https://en.wikipedia.org/wiki/Gating_mechanism\",\n", - " \"Gemini\": \"https://en.wikipedia.org/wiki/Gemini_(language_model)\",\n", - " \"Google\": \"https://en.wikipedia.org/wiki/Google\",\n", - " \"Gynoid\": \"https://en.wikipedia.org/wiki/Gynoid\",\n", - " \"IRobot\": \"https://en.wikipedia.org/wiki/IRobot\",\n", - " \"Imagen\": \"https://en.wikipedia.org/wiki/Google_Brain#Text-to-image_model\",\n", - " \"Israel\": \"https://www.nli.org.il/en/authorities/987007294969105171\",\n", - " \"Kismet\": \"https://en.wikipedia.org/wiki/Kismet_(robot)\",\n", - " \"Latina\": \"https://la.wikipedia.org/wiki/Intellegentia_artificialis\",\n", - " \"Latvia\": \"https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=000050010&P_CON_LNG=ENG\",\n", - " \"Ligure\": \"https://lij.wikipedia.org/wiki/Intelligensa_artifi%C3%A7iale\",\n", - " \"Log in\": \"https://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Artificial+intelligence\",\n", - " \"Magyar\": \"https://hu.wikipedia.org/wiki/Mesters%C3%A9ges_intelligencia\",\n", - " \"Minsky\": \"https://en.wikipedia.org/wiki/Marvin_Minsky\",\n", - " \"MuZero\": \"https://en.wikipedia.org/wiki/MuZero\",\n", - " \"Nature\": \"https://en.wikipedia.org/wiki/Nature_(philosophy)\",\n", - " \"Newell\": \"https://en.wikipedia.org/wiki/Allen_Newell\",\n", - " \"Norvig\": \"https://en.wikipedia.org/wiki/Norvig\",\n", - " \"Nvidia\": \"https://en.wikipedia.org/wiki/Nvidia\",\n", - " \"OpenAI\": \"https://en.wikipedia.org/wiki/OpenAI\",\n", - " \"Papert\": \"https://en.wikipedia.org/wiki/Papert\",\n", - " \"Patois\": \"https://jam.wikipedia.org/wiki/Aatifishal_intelijens\",\n", - " \"Picard\": \"https://pcd.wikipedia.org/wiki/Int%C3%A9rligince_artificielle\",\n", - " \"Polski\": \"https://pl.wikipedia.org/wiki/Sztuczna_inteligencja\",\n", - " \"Prolog\": \"https://en.wikipedia.org/wiki/Prolog\",\n", - " \"Python\": \"https://en.wikipedia.org/wiki/Python_(programming_language)\",\n", - " \"Qualia\": \"https://en.wikipedia.org/wiki/Qualia\",\n", - " \"R.U.R.\": \"https://en.wikipedia.org/wiki/R.U.R.\",\n", - " \"Retail\": \"https://en.wikipedia.org/wiki/Automated_retail\",\n", - " \"SHRDLU\": \"https://en.wikipedia.org/wiki/SHRDLU\",\n", - " \"Search\": \"https://en.wikipedia.org/wiki/Special:Search\",\n", - " \"Taiwan\": \"https://en.wikipedia.org/wiki/Taiwan\",\n", - " \"Theory\": \"https://en.wikipedia.org/wiki/Theory\",\n", - " \"TikTok\": \"https://en.wikipedia.org/wiki/TikTok\",\n", - " \"Tracks\": \"https://en.wikipedia.org/wiki/Continuous_track\",\n", - " \"Watson\": \"https://en.wikipedia.org/wiki/Watson_(artificial_intelligence_software)\",\n", - " \"Zazaki\": \"https://diq.wikipedia.org/wiki/Viro_v%C4%B1ra%C5%9Ft%C4%B1k%C3%AAn\",\n", - " \"Zombie\": \"https://en.wikipedia.org/wiki/Philosophical_zombie\",\n", - " \"aerial\": \"https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle\",\n", - " \"argued\": \"https://en.wikipedia.org/wiki/Dreyfus%27_critique_of_AI\",\n", - " \"axioms\": \"https://en.wikipedia.org/wiki/Axiom\",\n", - " \"biased\": \"https://en.wikipedia.org/wiki/Algorithmic_bias\",\n", - " \"choice\": \"https://en.wikipedia.org/wiki/Theory_choice\",\n", - " \"design\": \"https://en.wikipedia.org/wiki/Design_of_experiments\",\n", - " \"drones\": \"https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle\",\n", - " \"frames\": \"https://en.wikipedia.org/wiki/Frame_(artificial_intelligence)\",\n", - " \"ground\": \"https://en.wikipedia.org/wiki/Unmanned_ground_vehicle\",\n", - " \"iPhoto\": \"https://en.wikipedia.org/wiki/IPhoto\",\n", - " \"linear\": \"https://en.wikipedia.org/wiki/Linear\",\n", - " \"narrow\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Narrow_vs._general_AI\",\n", - " \"online\": \"https://www.nytimes.com/2023/07/18/magazine/wikipedia-ai-chatgpt.html\",\n", - " \"policy\": \"https://en.wikipedia.org/wiki/Reinforcement_learning#Policy\",\n", - " \"reason\": \"https://en.wikipedia.org/wiki/Reason\",\n", - " \"search\": \"https://en.wikipedia.org/wiki/State_space_search\",\n", - " \"weight\": \"https://en.wikipedia.org/wiki/Weighting\",\n", - " \"\\u4e2d\\u6587\": \"https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD\",\n", - " \"\\u5434\\u8bed\": \"https://wuu.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD\",\n", - " \"\\u7cb5\\u8a9e\": \"https://zh-yue.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD\",\n", - " \"\\u8d1b\\u8a9e\": \"https://gan.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD\",\n", - " \"1 Goals\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Goals\",\n", - " \"1452734\": \"https://api.semanticscholar.org/CorpusID:1452734\",\n", - " \"1513681\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1513681\",\n", - " \"1809459\": \"https://api.semanticscholar.org/CorpusID:1809459\",\n", - " \"1979315\": \"https://api.semanticscholar.org/CorpusID:1979315\",\n", - " \"2.7 GPT\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#GPT\",\n", - " \"2161592\": \"https://api.semanticscholar.org/CorpusID:2161592\",\n", - " \"2251299\": \"https://www.jstor.org/stable/2251299\",\n", - " \"3044448\": \"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3044448\",\n", - " \"3074096\": \"https://api.semanticscholar.org/CorpusID:3074096\",\n", - " \"4240644\": \"https://www.jstor.org/stable/4240644\",\n", - " \"6362217\": \"https://api.semanticscholar.org/CorpusID:6362217\",\n", - " \"6616181\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6616181\",\n", - " \"7373959\": \"https://api.semanticscholar.org/CorpusID:7373959\",\n", - " \"8371605\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605\",\n", - " \"8510016\": \"https://api.semanticscholar.org/CorpusID:8510016\",\n", - " \"8545201\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8545201\",\n", - " \"9544280\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9544280\",\n", - " \"AI boom\": \"https://en.wikipedia.org/wiki/AI_boom\",\n", - " \"AdSense\": \"https://en.wikipedia.org/wiki/AdSense\",\n", - " \"Aerobot\": \"https://en.wikipedia.org/wiki/Aerobot\",\n", - " \"AlexNet\": \"https://en.wikipedia.org/wiki/AlexNet\",\n", - " \"AlphaGo\": \"https://en.wikipedia.org/wiki/AlphaGo\",\n", - " \"Android\": \"https://en.wikipedia.org/wiki/Android_(robot)\",\n", - " \"Anybots\": \"https://en.wikipedia.org/wiki/Anybots\",\n", - " \"Article\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"AutoGPT\": \"https://en.wikipedia.org/wiki/AutoGPT\",\n", - " \"Bibcode\": \"https://en.wikipedia.org/wiki/Bibcode_(identifier)\",\n", - " \"Biology\": \"https://en.wikipedia.org/wiki/Glossary_of_biology\",\n", - " \"Catal\\u00e0\": \"https://ca.wikipedia.org/wiki/Intel%C2%B7lig%C3%A8ncia_artificial\",\n", - " \"Cebuano\": \"https://ceb.wikipedia.org/wiki/Intelihensiya_artipisyal\",\n", - " \"ChatGPT\": \"https://en.wikipedia.org/wiki/ChatGPT\",\n", - " \"Concept\": \"https://en.wikipedia.org/wiki/Concept\",\n", - " \"Copilot\": \"https://en.wikipedia.org/wiki/Microsoft_Copilot\",\n", - " \"Cymraeg\": \"https://cy.wikipedia.org/wiki/Deallusrwydd_artiffisial\",\n", - " \"Deutsch\": \"https://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz\",\n", - " \"Dualism\": \"https://en.wikipedia.org/wiki/Mind%E2%80%93body_dualism\",\n", - " \"Ecology\": \"https://en.wikipedia.org/wiki/Glossary_of_ecology\",\n", - " \"English\": \"https://en.wikipedia.org/wiki/English_(language)\",\n", - " \"Euskara\": \"https://eu.wikipedia.org/wiki/Adimen_artifizial\",\n", - " \"Face ID\": \"https://en.wikipedia.org/wiki/Face_ID\",\n", - " \"FaceNet\": \"https://en.wikipedia.org/wiki/FaceNet\",\n", - " \"Finance\": \"https://en.wikipedia.org/wiki/Applications_of_artificial_intelligence#Finance\",\n", - " \"Firefly\": \"https://en.wikipedia.org/wiki/Adobe_Firefly\",\n", - " \"Fordham\": \"https://en.wikipedia.org/wiki/Fordham_University\",\n", - " \"Gaeilge\": \"https://ga.wikipedia.org/wiki/Intleacht_shaorga\",\n", - " \"Geology\": \"https://en.wikipedia.org/wiki/Glossary_of_geology\",\n", - " \"Germany\": \"https://d-nb.info/gnd/4033447-8\",\n", - " \"Goldman\": \"https://en.wikipedia.org/wiki/Alvin_Goldman\",\n", - " \"Granite\": \"https://en.wikipedia.org/wiki/IBM_Granite\",\n", - " \"Hexapod\": \"https://en.wikipedia.org/wiki/Hexapod_(robotics)\",\n", - " \"History\": \"https://en.wikipedia.org/wiki/History_of_robots\",\n", - " \"IBM 701\": \"https://en.wikipedia.org/wiki/IBM_701\",\n", - " \"Ilokano\": \"https://ilo.wikipedia.org/wiki/Parbo_a_saririt\",\n", - " \"Inquiry\": \"https://en.wikipedia.org/wiki/Inquiry\",\n", - " \"IsiZulu\": \"https://zu.wikipedia.org/wiki/UHlakahlisombulu\",\n", - " \"Llama 2\": \"https://en.wikipedia.org/wiki/LLaMA\",\n", - " \"Lombard\": \"https://lmo.wikipedia.org/wiki/Intelligenza_artificiala\",\n", - " \"Medical\": \"https://en.wikipedia.org/wiki/Medical_robot\",\n", - " \"Mistral\": \"https://en.wikipedia.org/wiki/Mistral_AI\",\n", - " \"Netflix\": \"https://en.wikipedia.org/wiki/Netflix\",\n", - " \"Occitan\": \"https://oc.wikipedia.org/wiki/Intellig%C3%A9ncia_artificiala\",\n", - " \"Outline\": \"https://en.wikipedia.org/wiki/Outline_of_robotics\",\n", - " \"Physics\": \"https://en.wikipedia.org/wiki/Glossary_of_physics\",\n", - " \"Project\": \"https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Philosophy\",\n", - " \"Qwen-7B\": \"https://en.wikipedia.org/wiki/Qwen\",\n", - " \"Replika\": \"https://en.wikipedia.org/wiki/Replika\",\n", - " \"Reuters\": \"https://en.wikipedia.org/wiki/Reuters\",\n", - " \"Russell\": \"https://en.wikipedia.org/wiki/Stuart_J._Russell\",\n", - " \"STUDENT\": \"https://en.wikipedia.org/wiki/STUDENT\",\n", - " \"Scholia\": \"https://www.wikidata.org/wiki/Wikidata:Scholia\",\n", - " \"Seq2seq\": \"https://en.wikipedia.org/wiki/Seq2seq\",\n", - " \"Service\": \"https://en.wikipedia.org/wiki/Service_robot\",\n", - " \"Sigmoid\": \"https://en.wikipedia.org/wiki/Sigmoid_function\",\n", - " \"Softmax\": \"https://en.wikipedia.org/wiki/Softmax_function\",\n", - " \"Suno AI\": \"https://en.wikipedia.org/wiki/Suno_AI\",\n", - " \"Svenska\": \"https://sv.wikipedia.org/wiki/Artificiell_intelligens\",\n", - " \"Tagalog\": \"https://tl.wikipedia.org/wiki/Artipisyal_na_katalinuhan\",\n", - " \"Taoyuan\": \"https://en.wikipedia.org/wiki/Taoyuan,_Taiwan\",\n", - " \"Virtual\": \"https://en.wikipedia.org/wiki/Virtual_reality\",\n", - " \"V\\u00e8neto\": \"https://vec.wikipedia.org/wiki/Inte%C5%82ijensa_artifisa%C5%82e\",\n", - " \"Walking\": \"https://en.wikipedia.org/wiki/Legged_robot\",\n", - " \"WaveNet\": \"https://en.wikipedia.org/wiki/WaveNet\",\n", - " \"Whisper\": \"https://en.wikipedia.org/wiki/Whisper_(speech_recognition_system)\",\n", - " \"Winaray\": \"https://war.wikipedia.org/wiki/Intelihensya_artipisyal\",\n", - " \"Yaskawa\": \"https://en.wikipedia.org/wiki/Yaskawa_Electric_Corporation\",\n", - " \"YouTube\": \"https://en.wikipedia.org/wiki/YouTube\",\n", - " \"aligned\": \"https://en.wikipedia.org/wiki/AI_alignment\",\n", - " \"chatbot\": \"https://en.wikipedia.org/wiki/Gemini_(chatbot)\",\n", - " \"context\": \"https://en.wikipedia.org/wiki/Context_(linguistics)\",\n", - " \"control\": \"https://en.wikipedia.org/wiki/Control_variable\",\n", - " \"cyborgs\": \"https://en.wikipedia.org/wiki/Cyborg\",\n", - " \"discuss\": \"https://en.wikipedia.org/wiki/Talk:Artificial_intelligence#Dubious\",\n", - " \"dubious\": \"https://en.wikipedia.org/wiki/Wikipedia:Accuracy_dispute#Disputed_statement\",\n", - " \"economy\": \"https://en.wikipedia.org/wiki/Economy\",\n", - " \"eess.IV\": \"https://arxiv.org/archive/eess.IV\",\n", - " \"finance\": \"https://en.wikipedia.org/wiki/Credit_rating\",\n", - " \"housing\": \"https://en.wikipedia.org/wiki/Public_housing\",\n", - " \"mapping\": \"https://en.wikipedia.org/wiki/Robotic_mapping\",\n", - " \"markets\": \"https://en.wikipedia.org/wiki/Market_(economics)\",\n", - " \"more...\": \"https://en.wikipedia.org/wiki/Index_of_philosophy_of_science_articles\",\n", - " \"neurons\": \"https://en.wikipedia.org/wiki/Neurons\",\n", - " \"pigeons\": \"https://en.wikipedia.org/wiki/Pigeon\",\n", - " \"privacy\": \"https://en.wikipedia.org/wiki/Privacy\",\n", - " \"prompts\": \"https://en.wikipedia.org/wiki/Prompt_(natural_language)\",\n", - " \"proving\": \"https://en.wikipedia.org/wiki/Logical_proof\",\n", - " \"purpose\": \"https://en.wikipedia.org/wiki/Motivation\",\n", - " \"science\": \"https://en.wikipedia.org/wiki/Science\",\n", - " \"scripts\": \"https://en.wikipedia.org/wiki/Scripts_(artificial_intelligence)\",\n", - " \"slavery\": \"https://en.wikipedia.org/wiki/Slavery\",\n", - " \"symbols\": \"https://en.wikipedia.org/wiki/Symbolic_AI\",\n", - " \"utility\": \"https://en.wikipedia.org/wiki/Utility\",\n", - " \"vectors\": \"https://en.wikipedia.org/wiki/Vector_space\",\n", - " \"\\\"Kismet\\\"\": \"http://www.ai.mit.edu/projects/humanoid-robotics-group/kismet/kismet.html\",\n", - " \"10168773\": \"https://api.semanticscholar.org/CorpusID:10168773\",\n", - " \"10767011\": \"https://api.semanticscholar.org/CorpusID:10767011\",\n", - " \"11041459\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11041459\",\n", - " \"11062903\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11062903\",\n", - " \"11229402\": \"https://pubmed.ncbi.nlm.nih.gov/11229402\",\n", - " \"11715509\": \"https://api.semanticscholar.org/CorpusID:11715509\",\n", - " \"14636783\": \"https://api.semanticscholar.org/CorpusID:14636783\",\n", - " \"14987656\": \"https://api.semanticscholar.org/CorpusID:14987656\",\n", - " \"16622160\": \"https://pubmed.ncbi.nlm.nih.gov/16622160\",\n", - " \"17835457\": \"https://pubmed.ncbi.nlm.nih.gov/17835457\",\n", - " \"20190474\": \"https://lccn.loc.gov/20190474\",\n", - " \"25462637\": \"https://pubmed.ncbi.nlm.nih.gov/25462637\",\n", - " \"25719670\": \"https://pubmed.ncbi.nlm.nih.gov/25719670\",\n", - " \"26017442\": \"https://pubmed.ncbi.nlm.nih.gov/26017442\",\n", - " \"26185243\": \"https://pubmed.ncbi.nlm.nih.gov/26185243\",\n", - " \"26819042\": \"https://pubmed.ncbi.nlm.nih.gov/26819042\",\n", - " \"31296650\": \"https://pubmed.ncbi.nlm.nih.gov/31296650\",\n", - " \"31363513\": \"https://pubmed.ncbi.nlm.nih.gov/31363513\",\n", - " \"32236794\": \"https://pubmed.ncbi.nlm.nih.gov/32236794\",\n", - " \"32437713\": \"https://api.semanticscholar.org/CorpusID:32437713\",\n", - " \"32710913\": \"https://api.semanticscholar.org/CorpusID:32710913\",\n", - " \"34265844\": \"https://pubmed.ncbi.nlm.nih.gov/34265844\",\n", - " \"34786317\": \"https://pubmed.ncbi.nlm.nih.gov/34786317\",\n", - " \"35140384\": \"https://pubmed.ncbi.nlm.nih.gov/35140384\",\n", - " \"36211133\": \"https://pubmed.ncbi.nlm.nih.gov/36211133\",\n", - " \"36565267\": \"https://pubmed.ncbi.nlm.nih.gov/36565267\",\n", - " \"37272949\": \"https://api.semanticscholar.org/CorpusID:37272949\",\n", - " \"38632492\": \"https://pubmed.ncbi.nlm.nih.gov/38632492\",\n", - " \"38875587\": \"https://pubmed.ncbi.nlm.nih.gov/38875587\",\n", - " \"38875908\": \"https://pubmed.ncbi.nlm.nih.gov/38875908\",\n", - " \"39254628\": \"https://pubmed.ncbi.nlm.nih.gov/39254628\",\n", - " \"4 Ethics\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Ethics\",\n", - " \"46890682\": \"https://search.worldcat.org/oclc/46890682\",\n", - " \"54131797\": \"https://api.semanticscholar.org/CorpusID:54131797\",\n", - " \"55303721\": \"https://api.semanticscholar.org/CorpusID:55303721\",\n", - " \"59298502\": \"https://api.semanticscholar.org/CorpusID:59298502\",\n", - " \"7 Future\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Future\",\n", - " \"ALGOL 60\": \"https://en.wikipedia.org/wiki/ALGOL_60\",\n", - " \"Analysis\": \"https://en.wikipedia.org/wiki/Philosophical_analysis\",\n", - " \"Archived\": \"https://web.archive.org/web/20200220173419/https://ec.europa.eu/info/sites/info/files/commission-white-paper-artificial-intelligence-feb2020_en.pdf\",\n", - " \"BBC News\": \"https://en.wikipedia.org/wiki/BBC_News\",\n", - " \"Big Tech\": \"https://en.wikipedia.org/wiki/Big_Tech\",\n", - " \"Big data\": \"https://en.wikipedia.org/wiki/Big_data\",\n", - " \"Bill Joy\": \"https://en.wikipedia.org/wiki/Bill_Joy\",\n", - " \"BnF data\": \"https://data.bnf.fr/ark:/12148/cb11932084t\",\n", - " \"Boarisch\": \"https://bar.wikipedia.org/wiki/Kinschtlicha_Intelligenz\",\n", - " \"Bosanski\": \"https://bs.wikipedia.org/wiki/Umjetna_inteligencija\",\n", - " \"Calculus\": \"https://en.wikipedia.org/wiki/Glossary_of_calculus\",\n", - " \"Category\": \"https://en.wikipedia.org/wiki/Category:Existential_risk_from_artificial_general_intelligence\",\n", - " \"Climbing\": \"https://en.wikipedia.org/wiki/Climber_(BEAM)\",\n", - " \"Compiler\": \"https://en.wikipedia.org/wiki/Compiler_construction\",\n", - " \"Computer\": \"https://en.wikipedia.org/wiki/Computer_(magazine)\",\n", - " \"Contents\": \"https://en.wikipedia.org/wiki/Wikipedia:Contents\",\n", - " \"Datasets\": \"https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets\",\n", - " \"DeepFace\": \"https://en.wikipedia.org/wiki/DeepFace\",\n", - " \"DeepMind\": \"https://en.wikipedia.org/wiki/DeepMind\",\n", - " \"DeepSeek\": \"https://en.wikipedia.org/wiki/DeepSeek\",\n", - " \"Deepfake\": \"https://en.wikipedia.org/wiki/Deepfake\",\n", - " \"Domestic\": \"https://en.wikipedia.org/wiki/Domestic_robot\",\n", - " \"Embodied\": \"https://en.wikipedia.org/wiki/Embodied_mind\",\n", - " \"Espa\\u00f1ol\": \"https://es.wikipedia.org/wiki/Inteligencia_artificial\",\n", - " \"Facebook\": \"https://en.wikipedia.org/wiki/Facebook\",\n", - " \"FarmWise\": \"https://en.wikipedia.org/wiki/FarmWise\",\n", - " \"Fox News\": \"https://en.wikipedia.org/wiki/Fox_News\",\n", - " \"Glossary\": \"https://en.wikipedia.org/wiki/Glossary_of_robotics\",\n", - " \"Graphics\": \"https://en.wikipedia.org/wiki/Computer_graphics\",\n", - " \"HAL 9000\": \"https://en.wikipedia.org/wiki/HAL_9000\",\n", - " \"Hardware\": \"https://en.wikipedia.org/wiki/Computer_hardware\",\n", - " \"Hrvatski\": \"https://hr.wikipedia.org/wiki/Umjetna_inteligencija\",\n", - " \"Humanoid\": \"https://en.wikipedia.org/wiki/Humanoid_robot\",\n", - " \"Identity\": \"https://en.wikipedia.org/wiki/Identity_(philosophy)\",\n", - " \"Ideogram\": \"https://en.wikipedia.org/wiki/Ideogram_(text-to-image_model)\",\n", - " \"ImageNet\": \"https://en.wikipedia.org/wiki/ImageNet\",\n", - " \"Industry\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_industry\",\n", - " \"Italiano\": \"https://it.wikipedia.org/wiki/Intelligenza_artificiale\",\n", - " \"Journals\": \"https://en.wikipedia.org/wiki/Academic_journal\",\n", - " \"Juggling\": \"https://en.wikipedia.org/wiki/Juggling_robot\",\n", - " \"Learning\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"Limburgs\": \"https://li.wikipedia.org/wiki/K%C3%B3nsmaesige_intelligentie\",\n", - " \"Madhur\\u00e2\": \"https://mad.wikipedia.org/wiki/Kecerdasan_buatan\",\n", - " \"Malagasy\": \"https://mg.wikipedia.org/wiki/Haranitan-tsaina_voatr%27_olombelona\",\n", - " \"Medicine\": \"https://en.wikipedia.org/wiki/Glossary_of_medicine\",\n", - " \"Military\": \"https://en.wikipedia.org/wiki/Military_robot\",\n", - " \"Multivac\": \"https://en.wikipedia.org/wiki/Multivac\",\n", - " \"Mycology\": \"https://en.wikipedia.org/wiki/Glossary_of_mycology\",\n", - " \"NRC 1999\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNRC1999\",\n", - " \"Networks\": \"https://en.wikipedia.org/wiki/Computer_network\",\n", - " \"PanGu-\\u03a3\": \"https://en.wikipedia.org/wiki/Huawei_PanGu\",\n", - " \"Paradigm\": \"https://en.wikipedia.org/wiki/Paradigm\",\n", - " \"Planning\": \"https://en.wikipedia.org/wiki/Automated_planning_and_scheduling\",\n", - " \"Pluribus\": \"https://en.wikipedia.org/wiki/Pluribus_(poker_bot)\",\n", - " \"Progress\": \"https://en.wikipedia.org/wiki/Progress_in_artificial_intelligence\",\n", - " \"Projects\": \"https://en.wikipedia.org/wiki/List_of_artificial_intelligence_projects\",\n", - " \"Robotics\": \"https://en.wikipedia.org/wiki/Glossary_of_robotics\",\n", - " \"Rom\\u00e2n\\u0103\": \"https://ro.wikipedia.org/wiki/Inteligen%C8%9B%C4%83_artificial%C4%83\",\n", - " \"Sapience\": \"https://en.wikipedia.org/wiki/Sapience\",\n", - " \"Security\": \"https://en.wikipedia.org/wiki/Computer_security\",\n", - " \"Situated\": \"https://en.wikipedia.org/wiki/Situated_robotics\",\n", - " \"Software\": \"https://en.wikipedia.org/wiki/Robot_software\",\n", - " \"Stanford\": \"https://en.wikipedia.org/wiki/Stanford\",\n", - " \"Symbolic\": \"https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence\",\n", - " \"Symbotic\": \"https://en.wikipedia.org/wiki/Symbotic\",\n", - " \"Takeover\": \"https://en.wikipedia.org/wiki/AI_takeover\",\n", - " \"Timeline\": \"https://en.wikipedia.org/wiki/Timeline_of_artificial_intelligence\",\n", - " \"T\\u00fcrk\\u00e7e\": \"https://tr.wikipedia.org/wiki/Yapay_zek%C3%A2\",\n", - " \"UltraRAM\": \"https://en.wikipedia.org/wiki/UltraRAM\",\n", - " \"Variable\": \"https://en.wikipedia.org/wiki/Variable_and_attribute_(research)\",\n", - " \"Virology\": \"https://en.wikipedia.org/wiki/Glossary_of_virology\",\n", - " \"Vitalism\": \"https://en.wikipedia.org/wiki/Vitalism\",\n", - " \"Wikinews\": \"https://en.wikinews.org/wiki/Category:Artificial_intelligence\",\n", - " \"Word2vec\": \"https://en.wikipedia.org/wiki/Word2vec\",\n", - " \"Zhuangzi\": \"https://en.wikipedia.org/wiki/Zhuang_Zhou\",\n", - " \"archived\": \"https://web.archive.org/web/20131019182403/http://intelligence.org/files/AIPosNegFactor.pdf\",\n", - " \"bar exam\": \"https://en.wikipedia.org/wiki/Bar_exam\",\n", - " \"big data\": \"https://en.wikipedia.org/wiki/Big_data\",\n", - " \"buzzword\": \"https://en.wikipedia.org/wiki/Buzzword\",\n", - " \"cartoons\": \"https://en.wikipedia.org/wiki/Cartoon\",\n", - " \"chatbots\": \"https://en.wikipedia.org/wiki/Chatbots\",\n", - " \"checkers\": \"https://en.wikipedia.org/wiki/Checkers\",\n", - " \"classify\": \"https://en.wikipedia.org/wiki/Classifier_(machine_learning)\",\n", - " \"creative\": \"https://en.wikipedia.org/wiki/Computational_creativity\",\n", - " \"data set\": \"https://en.wikipedia.org/wiki/Data_set\",\n", - " \"degrowth\": \"https://en.wikipedia.org/wiki/Degrowth\",\n", - " \"disaster\": \"https://en.wikipedia.org/wiki/Disaster\",\n", - " \"equality\": \"https://en.wikipedia.org/wiki/Equality_(mathematics)\",\n", - " \"fair use\": \"https://en.wikipedia.org/wiki/Fair_use\",\n", - " \"fairness\": \"https://en.wikipedia.org/wiki/Fairness_(machine_learning)\",\n", - " \"flocking\": \"https://en.wikipedia.org/wiki/Flocking\",\n", - " \"forwards\": \"https://en.wikipedia.org/wiki/Forward_chaining\",\n", - " \"function\": \"https://en.wikipedia.org/wiki/Correlation_function\",\n", - " \"language\": \"https://en.wikipedia.org/wiki/Language\",\n", - " \"learning\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"machines\": \"https://en.wikipedia.org/wiki/Machine\",\n", - " \"medicine\": \"https://en.wikipedia.org/wiki/Health_equity\",\n", - " \"ontology\": \"https://en.wikipedia.org/wiki/Ontology_(information_science)\",\n", - " \"organoid\": \"https://en.wikipedia.org/wiki/Organoid\",\n", - " \"paradigm\": \"https://en.wikipedia.org/wiki/Paradigm\",\n", - " \"partisan\": \"https://en.wikipedia.org/wiki/Partisan_(politics)\",\n", - " \"planning\": \"https://en.wikipedia.org/wiki/Automated_planning_and_scheduling\",\n", - " \"policing\": \"https://en.wikipedia.org/wiki/Policing\",\n", - " \"premises\": \"https://en.wikipedia.org/wiki/Premise\",\n", - " \"progress\": \"https://en.wikipedia.org/wiki/Progress_in_artificial_intelligence\",\n", - " \"robotics\": \"https://en.wikipedia.org/wiki/Robotics\",\n", - " \"software\": \"https://en.wikipedia.org/wiki/Software\",\n", - " \"startups\": \"https://en.wikipedia.org/wiki/Startup_company\",\n", - " \"thesauri\": \"https://en.wikipedia.org/wiki/Thesauri\",\n", - " \"timeline\": \"https://en.wikipedia.org/wiki/Timeline_of_artificial_intelligence\",\n", - " \"too slow\": \"https://en.wikipedia.org/wiki/Computation_time\",\n", - " \"\\u0627\\u0631\\u062f\\u0648\": \"https://ur.wikipedia.org/wiki/%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C_%D8%B0%DB%81%D8%A7%D9%86%D8%AA\",\n", - " \"\\u0633\\u0646\\u068c\\u064a\": \"https://sd.wikipedia.org/wiki/%DA%BE%D9%BF%D8%B1%D8%A7%D8%AF%D9%88_%D8%B0%DA%BE%D8%A7%D9%86%D8%AA\",\n", - " \"\\u0645\\u0635\\u0631\\u0649\": \"https://arz.wikipedia.org/wiki/%D8%B0%D9%83%D8%A7%D8%A1_%D8%B5%D9%86%D8%A7%D8%B9%D9%89\",\n", - " \"\\u067e\\u069a\\u062a\\u0648\": \"https://ps.wikipedia.org/wiki/%D9%85%D8%B5%D9%86%D9%88%D8%B9%D9%8A_%DA%81%D9%8A%D8%B1%DA%A9%D8%AA%DB%8C%D8%A7\",\n", - " \"0007-6813\": \"https://search.worldcat.org/issn/0007-6813\",\n", - " \"0017-8012\": \"https://search.worldcat.org/issn/0017-8012\",\n", - " \"0022-4499\": \"https://search.worldcat.org/issn/0022-4499\",\n", - " \"0028-792X\": \"https://search.worldcat.org/issn/0028-792X\",\n", - " \"0036-8075\": \"https://search.worldcat.org/issn/0036-8075\",\n", - " \"0040-1625\": \"https://search.worldcat.org/issn/0040-1625\",\n", - " \"0099-9660\": \"https://search.worldcat.org/issn/0099-9660\",\n", - " \"0190-0692\": \"https://search.worldcat.org/issn/0190-0692\",\n", - " \"0190-8286\": \"https://search.worldcat.org/issn/0190-8286\",\n", - " \"0261-3077\": \"https://search.worldcat.org/issn/0261-3077\",\n", - " \"0362-4331\": \"https://search.worldcat.org/issn/0362-4331\",\n", - " \"0926-5805\": \"https://search.worldcat.org/issn/0926-5805\",\n", - " \"1059-1028\": \"https://search.worldcat.org/issn/1059-1028\",\n", - " \"1202.2745\": \"https://arxiv.org/abs/1202.2745\",\n", - " \"1404.7828\": \"https://arxiv.org/abs/1404.7828\",\n", - " \"143452957\": \"https://api.semanticscholar.org/CorpusID:143452957\",\n", - " \"1460-2113\": \"https://search.worldcat.org/issn/1460-2113\",\n", - " \"147612763\": \"https://api.semanticscholar.org/CorpusID:147612763\",\n", - " \"1524-8380\": \"https://search.worldcat.org/issn/1524-8380\",\n", - " \"1548-3592\": \"https://search.worldcat.org/issn/1548-3592\",\n", - " \"1572-8099\": \"https://search.worldcat.org/issn/1572-8099\",\n", - " \"1572-8633\": \"https://search.worldcat.org/issn/1572-8633\",\n", - " \"158433736\": \"https://api.semanticscholar.org/CorpusID:158433736\",\n", - " \"158829602\": \"https://api.semanticscholar.org/CorpusID:158829602\",\n", - " \"1610-1987\": \"https://search.worldcat.org/issn/1610-1987\",\n", - " \"166742927\": \"https://api.semanticscholar.org/CorpusID:166742927\",\n", - " \"1867-299X\": \"https://search.worldcat.org/issn/1867-299X\",\n", - " \"1936-1610\": \"https://search.worldcat.org/issn/1936-1610\",\n", - " \"198775713\": \"https://api.semanticscholar.org/CorpusID:198775713\",\n", - " \"2.2 Logic\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Logic\",\n", - " \"205242740\": \"https://api.semanticscholar.org/CorpusID:205242740\",\n", - " \"205433041\": \"https://api.semanticscholar.org/CorpusID:205433041\",\n", - " \"206451986\": \"https://api.semanticscholar.org/CorpusID:206451986\",\n", - " \"206485943\": \"https://api.semanticscholar.org/CorpusID:206485943\",\n", - " \"214766800\": \"https://api.semanticscholar.org/CorpusID:214766800\",\n", - " \"2158-2041\": \"https://search.worldcat.org/issn/2158-2041\",\n", - " \"2169-3536\": \"https://search.worldcat.org/issn/2169-3536\",\n", - " \"219336439\": \"https://api.semanticscholar.org/CorpusID:219336439\",\n", - " \"220523562\": \"https://api.semanticscholar.org/CorpusID:220523562\",\n", - " \"231867665\": \"https://search.worldcat.org/oclc/231867665\",\n", - " \"235959867\": \"https://api.semanticscholar.org/CorpusID:235959867\",\n", - " \"2378-0231\": \"https://search.worldcat.org/issn/2378-0231\",\n", - " \"247302391\": \"https://api.semanticscholar.org/CorpusID:247302391\",\n", - " \"2514-9369\": \"https://search.worldcat.org/issn/2514-9369\",\n", - " \"256681439\": \"https://api.semanticscholar.org/CorpusID:256681439\",\n", - " \"2573-0142\": \"https://search.worldcat.org/issn/2573-0142\",\n", - " \"259614124\": \"https://api.semanticscholar.org/CorpusID:259614124\",\n", - " \"264113883\": \"https://api.semanticscholar.org/CorpusID:264113883\",\n", - " \"2673-5067\": \"https://search.worldcat.org/issn/2673-5067\",\n", - " \"2817-1705\": \"https://search.worldcat.org/issn/2817-1705\",\n", - " \"3.2 Games\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Games\",\n", - " \"5 History\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#History\",\n", - " \"AI Winter\": \"https://en.wikipedia.org/wiki/AI_Winter\",\n", - " \"AI effect\": \"https://en.wikipedia.org/wiki/AI_effect\",\n", - " \"AI safety\": \"https://en.wikipedia.org/wiki/AI_safety\",\n", - " \"AI winter\": \"https://en.wikipedia.org/wiki/AI_winter\",\n", - " \"Adaptable\": \"https://en.wikipedia.org/wiki/Adaptable_robotics\",\n", - " \"Add topic\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#\",\n", - " \"Adversary\": \"https://en.wikipedia.org/wiki/Adversarial_machine_learning\",\n", - " \"Afrikaans\": \"https://af.wikipedia.org/wiki/Kunsmatige_intelligensie\",\n", - " \"AlphaFold\": \"https://en.wikipedia.org/wiki/AlphaFold\",\n", - " \"AlphaZero\": \"https://en.wikipedia.org/wiki/AlphaZero\",\n", - " \"Alva No\\u00eb\": \"https://en.wikipedia.org/wiki/Alva_No%C3%AB\",\n", - " \"Andrew Ng\": \"https://en.wikipedia.org/wiki/Andrew_Ng\",\n", - " \"Animation\": \"https://en.wikipedia.org/wiki/Computer_animation\",\n", - " \"Anthropic\": \"https://en.wikipedia.org/wiki/Anthropic\",\n", - " \"Aragon\\u00e9s\": \"https://an.wikipedia.org/wiki/Intelichencia_artificial\",\n", - " \"Aristotle\": \"https://en.wikipedia.org/wiki/Aristotle\",\n", - " \"Armstrong\": \"https://en.wikipedia.org/wiki/David_Malet_Armstrong\",\n", - " \"Astronomy\": \"https://en.wikipedia.org/wiki/Glossary_of_astronomy\",\n", - " \"Asturianu\": \"https://ast.wikipedia.org/wiki/Intelixencia_artificial\",\n", - " \"Attention\": \"https://en.wikipedia.org/wiki/Attention_(machine_learning)\",\n", - " \"Augmented\": \"https://en.wikipedia.org/wiki/Augmented_reality\",\n", - " \"Automaton\": \"https://en.wikipedia.org/wiki/Automaton\",\n", - " \"Batchnorm\": \"https://en.wikipedia.org/wiki/Batch_normalization\",\n", - " \"Bioethics\": \"https://en.wikipedia.org/wiki/Bioethics\",\n", - " \"Bloomberg\": \"https://en.wikipedia.org/wiki/Bloomberg_News\",\n", - " \"Brezhoneg\": \"https://br.wikipedia.org/wiki/Naouegezh_artifisiel\",\n", - " \"Causality\": \"https://en.wikipedia.org/wiki/Causality\",\n", - " \"Chemistry\": \"https://en.wikipedia.org/wiki/Glossary_of_chemistry_terms\",\n", - " \"CiteSeerX\": \"https://en.wikipedia.org/wiki/CiteSeerX_(identifier)\",\n", - " \"Cognition\": \"https://en.wikipedia.org/wiki/Cognition\",\n", - " \"Companies\": \"https://en.wikipedia.org/wiki/List_of_robotics_companies\",\n", - " \"Companion\": \"https://en.wikipedia.org/wiki/Companion_robot\",\n", - " \"Construct\": \"https://en.wikipedia.org/wiki/Construct_(philosophy)\",\n", - " \"Deep Blue\": \"https://en.wikipedia.org/wiki/IBM_Deep_Blue\",\n", - " \"DeepDream\": \"https://en.wikipedia.org/wiki/DeepDream\",\n", - " \"Deepfakes\": \"https://en.wikipedia.org/wiki/Deepfakes\",\n", - " \"Diffusion\": \"https://en.wikipedia.org/wiki/Diffusion_process\",\n", - " \"Economics\": \"https://en.wikipedia.org/wiki/Glossary_of_economics\",\n", - " \"Elon Musk\": \"https://en.wikipedia.org/wiki/Elon_Musk\",\n", - " \"Emergence\": \"https://en.wikipedia.org/wiki/Emergence\",\n", - " \"Esperanto\": \"https://eo.wikipedia.org/wiki/Artefarita_intelekto\",\n", - " \"Figure AI\": \"https://en.wikipedia.org/wiki/Figure_AI\",\n", - " \"Fran\\u00e7ais\": \"https://fr.wikipedia.org/wiki/Intelligence_artificielle\",\n", - " \"Geography\": \"https://en.wikipedia.org/wiki/Geography_of_robotics\",\n", - " \"Go player\": \"https://en.wikipedia.org/wiki/Go_player\",\n", - " \"G\\u00e0idhlig\": \"https://gd.wikipedia.org/wiki/Tuigse_inntealta\",\n", - " \"G\\u0129k\\u0169y\\u0169\": \"https://ki.wikipedia.org/wiki/%C5%A8%C5%A9g%C4%A9_wa_Kanyonde\",\n", - " \"Hailuo AI\": \"https://en.wikipedia.org/wiki/MiniMax_(company)#Hailuo_AI\",\n", - " \"Heuristic\": \"https://en.wikipedia.org/wiki/Heuristic\",\n", - " \"Humanity+\": \"https://en.wikipedia.org/wiki/Humanity%2B\",\n", - " \"Huw Price\": \"https://en.wikipedia.org/wiki/Huw_Price\",\n", - " \"Imitation\": \"https://en.wikipedia.org/wiki/Imitation_learning\",\n", - " \"Intuition\": \"https://en.wikipedia.org/wiki/Intuition\",\n", - " \"Jeopardy!\": \"https://en.wikipedia.org/wiki/Jeopardy!\",\n", - " \"Kiswahili\": \"https://sw.wikipedia.org/wiki/Akili_mnemba\",\n", - " \"Latvie\\u0161u\": \"https://lv.wikipedia.org/wiki/M%C4%81ksl%C4%ABgais_intelekts\",\n", - " \"Lee Sedol\": \"https://en.wikipedia.org/wiki/Lee_Sedol\",\n", - " \"Lietuvi\\u0173\": \"https://lt.wikipedia.org/wiki/Dirbtinis_intelektas\",\n", - " \"MIT Press\": \"https://en.wikipedia.org/wiki/MIT_Press\",\n", - " \"Main page\": \"https://en.wikipedia.org/wiki/Main_Page\",\n", - " \"Meta-Wiki\": \"https://meta.wikimedia.org/wiki/Artificial_intelligence\",\n", - " \"Microsoft\": \"https://en.wikipedia.org/wiki/Microsoft\",\n", - " \"Millipede\": \"https://en.wikipedia.org/wiki/Millipede_memory\",\n", - " \"NRC (1999\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNRC1999\",\n", - " \"Ned Block\": \"https://en.wikipedia.org/wiki/Ned_Block\",\n", - " \"PD-notice\": \"https://en.wikipedia.org/wiki/Template:PD-notice\",\n", - " \"Paradigms\": \"https://en.wikipedia.org/wiki/Robotic_paradigm\",\n", - " \"Parameter\": \"https://en.wikipedia.org/wiki/Parameter\",\n", - " \"Processor\": \"https://en.wikipedia.org/wiki/Processor_(computing)\",\n", - " \"Rectifier\": \"https://en.wikipedia.org/wiki/Rectifier_(neural_networks)\",\n", - " \"Rendering\": \"https://en.wikipedia.org/wiki/Rendering_(computer_graphics)\",\n", - " \"Resources\": \"https://en.wikiversity.org/wiki/Portal:Artificial_intelligence\",\n", - " \"Runa Simi\": \"https://qu.wikipedia.org/wiki/Wallpasqa_yuyay\",\n", - " \"Scientism\": \"https://en.wikipedia.org/wiki/Scientism\",\n", - " \"Semantics\": \"https://en.wikipedia.org/wiki/Semantics_(computer_science)\",\n", - " \"Simulator\": \"https://en.wikipedia.org/wiki/Robotics_simulator\",\n", - " \"Singapore\": \"https://en.wikipedia.org/wiki/Singapore\",\n", - " \"Solipsism\": \"https://en.wikipedia.org/wiki/Solipsism\",\n", - " \"Textbooks\": \"https://en.wikibooks.org/wiki/Artificial_Intelligence\",\n", - " \"The Press\": \"https://en.wikipedia.org/wiki/The_Press\",\n", - " \"Wikibooks\": \"https://en.wikibooks.org/wiki/Artificial_Intelligence\",\n", - " \"Wikiquote\": \"https://en.wikiquote.org/wiki/Artificial_intelligence\",\n", - " \"Yu-Chi Ho\": \"https://en.wikipedia.org/wiki/Yu-Chi_Ho\",\n", - " \"abduction\": \"https://en.wikipedia.org/wiki/Abductive_reasoning\",\n", - " \"attention\": \"https://en.wikipedia.org/wiki/Attention_(machine_learning)\",\n", - " \"backwards\": \"https://en.wikipedia.org/wiki/Backward_chaining\",\n", - " \"computing\": \"https://en.wikipedia.org/wiki/Computing\",\n", - " \"copyright\": \"https://en.wikipedia.org/wiki/Copyright\",\n", - " \"criminals\": \"https://en.wikipedia.org/wiki/Criminals\",\n", - " \"criticism\": \"https://en.wikipedia.org/wiki/Lighthill_report\",\n", - " \"databases\": \"https://en.wikipedia.org/wiki/Database\",\n", - " \"deepfakes\": \"https://en.wikipedia.org/wiki/Deepfakes\",\n", - " \"defendant\": \"https://en.wikipedia.org/wiki/Defendant\",\n", - " \"economics\": \"https://en.wikipedia.org/wiki/Economics\",\n", - " \"fake news\": \"https://en.wikipedia.org/wiki/Fake_news\",\n", - " \"free will\": \"https://en.wikipedia.org/wiki/Free_will\",\n", - " \"handicaps\": \"https://en.wikipedia.org/wiki/Go_handicaps\",\n", - " \"heuristic\": \"https://en.wikipedia.org/wiki/Heuristic\",\n", - " \"iteration\": \"https://en.wikipedia.org/wiki/Policy_iteration\",\n", - " \"ladenness\": \"https://en.wikipedia.org/wiki/Theory-ladenness\",\n", - " \"quiz show\": \"https://en.wikipedia.org/wiki/Quiz_show\",\n", - " \"reasoning\": \"https://en.wikipedia.org/wiki/Automated_reasoning\",\n", - " \"selecting\": \"https://en.wikipedia.org/wiki/Artificial_selection\",\n", - " \"sentience\": \"https://en.wikipedia.org/wiki/Sentience\",\n", - " \"strong AI\": \"https://en.wikipedia.org/wiki/Strong_AI_hypothesis\",\n", - " \"uncertain\": \"https://en.wikipedia.org/wiki/Uncertainty\",\n", - " \"unethical\": \"https://en.wikipedia.org/wiki/Unethical\",\n", - " \"\\u00cdslenska\": \"https://is.wikipedia.org/wiki/Gervigreind\",\n", - " \"\\u010ce\\u0161tina\": \"https://cs.wikipedia.org/wiki/Um%C4%9Bl%C3%A1_inteligence\",\n", - " \"\\u015al\\u016fnski\": \"https://szl.wikipedia.org/wiki/Kategoryjo:Sztuczno_inteligencyjo\",\n", - " \"\\u0e44\\u0e17\\u0e22\": \"https://th.wikipedia.org/wiki/%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%8D%E0%B8%B2%E0%B8%9B%E0%B8%A3%E0%B8%B0%E0%B8%94%E0%B8%B4%E0%B8%A9%E0%B8%90%E0%B9%8C\",\n", - " \"\\u0ea5\\u0eb2\\u0ea7\": \"https://lo.wikipedia.org/wiki/%E0%BA%9B%E0%BA%B1%E0%BA%99%E0%BA%8D%E0%BA%B2%E0%BA%9B%E0%BA%B0%E0%BA%94%E0%BA%B4%E0%BA%94\",\n", - " \"\\u65e5\\u672c\\u8a9e\": \"https://ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD\",\n", - " \"\\ud55c\\uad6d\\uc5b4\": \"https://ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5\",\n", - " \"0471614963\": \"https://en.wikipedia.org/wiki/Special:BookSources/0471614963\",\n", - " \"1039480085\": \"https://search.worldcat.org/oclc/1039480085\",\n", - " \"1083694322\": \"https://search.worldcat.org/oclc/1083694322\",\n", - " \"1110727808\": \"https://search.worldcat.org/oclc/1110727808\",\n", - " \"1233266753\": \"https://search.worldcat.org/oclc/1233266753\",\n", - " \"1606.08813\": \"https://arxiv.org/abs/1606.08813\",\n", - " \"1893/25490\": \"https://hdl.handle.net/1893%2F25490\",\n", - " \"2019668143\": \"https://lccn.loc.gov/2019668143\",\n", - " \"2201.08239\": \"https://arxiv.org/abs/2201.08239\",\n", - " \"2307.15208\": \"https://arxiv.org/abs/2307.15208\",\n", - " \"2402.19450\": \"https://arxiv.org/abs/2402.19450\",\n", - " \"3.7 Agents\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Agents\",\n", - " \"9 See also\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#See_also\",\n", - " \"AI winters\": \"https://en.wikipedia.org/wiki/AI_winter\",\n", - " \"Activation\": \"https://en.wikipedia.org/wiki/Activation_function\",\n", - " \"Algorithms\": \"https://en.wikipedia.org/wiki/Algorithm\",\n", - " \"Andy Clark\": \"https://en.wikipedia.org/wiki/Andy_Clark\",\n", - " \"Apple Inc.\": \"https://en.wikipedia.org/wiki/Apple_Inc.\",\n", - " \"Automation\": \"https://en.wikipedia.org/wiki/Automation\",\n", - " \"Ava\\u00f1e'\\u1ebd\": \"https://gn.wikipedia.org/wiki/Ava_japopyre_arandu\",\n", - " \"Bill Gates\": \"https://en.wikipedia.org/wiki/Bill_Gates\",\n", - " \"CNA (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCNA2019\",\n", - " \"Categories\": \"https://en.wikipedia.org/wiki/Help:Category\",\n", - " \"Cliff Shaw\": \"https://en.wikipedia.org/wiki/Cliff_Shaw\",\n", - " \"Clustering\": \"https://en.wikipedia.org/wiki/Cluster_analysis\",\n", - " \"Contact us\": \"https://en.wikipedia.org/wiki/Wikipedia:Contact_us\",\n", - " \"Creativity\": \"https://en.wikipedia.org/wiki/Creativity\",\n", - " \"David Hume\": \"https://en.wikipedia.org/wiki/David_Hume\",\n", - " \"Developers\": \"https://developer.wikimedia.org/\",\n", - " \"Disability\": \"https://en.wikipedia.org/wiki/Disability_robot\",\n", - " \"E-commerce\": \"https://en.wikipedia.org/wiki/E-commerce\",\n", - " \"Edit links\": \"https://www.wikidata.org/wiki/Special:EntityPage/Q11660#sitelinks-wikipedia\",\n", - " \"EleutherAI\": \"https://en.wikipedia.org/wiki/EleutherAI\",\n", - " \"ElevenLabs\": \"https://en.wikipedia.org/wiki/ElevenLabs\",\n", - " \"Empiricism\": \"https://en.wikipedia.org/wiki/Empiricism\",\n", - " \"Entomology\": \"https://en.wikipedia.org/wiki/Glossary_of_entomology_terms\",\n", - " \"Estreme\\u00f1u\": \"https://ext.wikipedia.org/wiki/Enteligencia_artificial\",\n", - " \"Ex Machina\": \"https://en.wikipedia.org/wiki/Ex_Machina_(film)\",\n", - " \"Expand all\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#\",\n", - " \"Experiment\": \"https://en.wikipedia.org/wiki/Experiment\",\n", - " \"Fei-Fei Li\": \"https://en.wikipedia.org/wiki/Fei-Fei_Li\",\n", - " \"Fiji Hindi\": \"https://hif.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"F\\u0254\\u0300ngb\\u00e8\": \"https://fon.wikipedia.org/wiki/N%C7%94nyw%C9%9B_gb%C9%9Bt%C9%94_%C9%96%C9%94hun_t%C9%94n\",\n", - " \"GAO (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGAO2022\",\n", - " \"Glossaries\": \"https://en.wikipedia.org/wiki/Template:Glossaries_of_computers\",\n", - " \"Government\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_government\",\n", - " \"Healthcare\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_healthcare\",\n", - " \"Heuristics\": \"https://en.wikipedia.org/wiki/Heuristics\",\n", - " \"Hypothesis\": \"https://en.wikipedia.org/wiki/Hypothesis\",\n", - " \"I. J. Good\": \"https://en.wikipedia.org/wiki/I._J._Good\",\n", - " \"IBM Watson\": \"https://en.wikipedia.org/wiki/IBM_Watson\",\n", - " \"Industrial\": \"https://en.wikipedia.org/wiki/Industrial_robot\",\n", - " \"John Locke\": \"https://en.wikipedia.org/wiki/John_Locke\",\n", - " \"Lee (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLee2014\",\n", - " \"Locomotion\": \"https://en.wikipedia.org/wiki/Robot_locomotion\",\n", - " \"McCullouch\": \"https://en.wikipedia.org/wiki/Warren_McCullouch\",\n", - " \"Middleware\": \"https://en.wikipedia.org/wiki/Middleware\",\n", - " \"Midjourney\": \"https://en.wikipedia.org/wiki/Midjourney\",\n", - " \"Multimodal\": \"https://en.wikipedia.org/wiki/Multimodal_learning\",\n", - " \"Naturalism\": \"https://en.wikipedia.org/wiki/Naturalism_(philosophy)\",\n", - " \"Navigation\": \"https://en.wikipedia.org/wiki/Robotic_navigation\",\n", - " \"Nederlands\": \"https://nl.wikipedia.org/wiki/Kunstmatige_intelligentie\",\n", - " \"Nondualism\": \"https://en.wikipedia.org/wiki/Nondualism\",\n", - " \"Nordfriisk\": \"https://frr.wikipedia.org/wiki/Konstelk_Inteligens\",\n", - " \"Perceptual\": \"https://en.wikipedia.org/wiki/Perceptual_robotics\",\n", - " \"Peripheral\": \"https://en.wikipedia.org/wiki/Peripheral\",\n", - " \"Philosophy\": \"https://en.wikipedia.org/wiki/Philosophy_of_artificial_intelligence\",\n", - " \"Portugu\\u00eas\": \"https://pt.wikipedia.org/wiki/Intelig%C3%AAncia_artificial\",\n", - " \"Positivism\": \"https://en.wikipedia.org/wiki/Positivism\",\n", - " \"Pragmatism\": \"https://en.wikipedia.org/wiki/Pragmatism\",\n", - " \"ProPublica\": \"https://en.wikipedia.org/wiki/ProPublica\",\n", - " \"Psychiatry\": \"https://en.wikipedia.org/wiki/Glossary_of_psychiatry\",\n", - " \"Psychology\": \"https://en.wikipedia.org/wiki/Philosophy_of_psychology\",\n", - " \"Q-learning\": \"https://en.wikipedia.org/wiki/Q-learning\",\n", - " \"Quotations\": \"https://en.wikiquote.org/wiki/Artificial_intelligence\",\n", - " \"Regression\": \"https://en.wikipedia.org/wiki/Regression_analysis\",\n", - " \"Reo tahiti\": \"https://ty.wikipedia.org/wiki/Intelligence_artificiel\",\n", - " \"Resolution\": \"https://en.wikipedia.org/wiki/Resolution_(logic)\",\n", - " \"Ripoarisch\": \"https://ksh.wikipedia.org/wiki/Artificial_Intelligence\",\n", - " \"Sam Altman\": \"https://en.wikipedia.org/wiki/Sam_Altman\",\n", - " \"Sam Harris\": \"https://en.wikipedia.org/wiki/Sam_Harris\",\n", - " \"Shane Legg\": \"https://en.wikipedia.org/wiki/Shane_Legg\",\n", - " \"Statistics\": \"https://stats.wikimedia.org/#/en.wikipedia.org\",\n", - " \"Stochastic\": \"https://en.wikipedia.org/wiki/Stochastic_computing\",\n", - " \"Task Force\": \"https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Philosophy/Mind\",\n", - " \"Technology\": \"https://en.wikipedia.org/wiki/Portal:Technology\",\n", - " \"TensorFlow\": \"https://en.wikipedia.org/wiki/TensorFlow\",\n", - " \"The Matrix\": \"https://en.wikipedia.org/wiki/The_Matrix\",\n", - " \"Ubiquitous\": \"https://en.wikipedia.org/wiki/Ubiquitous_robot\",\n", - " \"Underwater\": \"https://en.wikipedia.org/wiki/Autonomous_underwater_vehicle\",\n", - " \"Vasubandhu\": \"https://en.wikipedia.org/wiki/Vasubandhu\",\n", - " \"Yann LeCun\": \"https://en.wikipedia.org/wiki/Yann_LeCun\",\n", - " \"a workshop\": \"https://en.wikipedia.org/wiki/Dartmouth_workshop\",\n", - " \"algorithms\": \"https://en.wikipedia.org/wiki/Algorithm\",\n", - " \"ant trails\": \"https://en.wikipedia.org/wiki/Ant_trail\",\n", - " \"bad actors\": \"https://en.wikipedia.org/wiki/Bad_actor\",\n", - " \"best first\": \"https://en.wikipedia.org/wiki/Best-first_search\",\n", - " \"clustering\": \"https://en.wikipedia.org/wiki/Cluster_analysis\",\n", - " \"conclusion\": \"https://en.wikipedia.org/wiki/Logical_consequence\",\n", - " \"cybercrime\": \"https://en.wikipedia.org/wiki/Cybercrime\",\n", - " \"deductions\": \"https://en.wikipedia.org/wiki/Deductive_reasoning\",\n", - " \"do no harm\": \"https://en.wikipedia.org/wiki/Primum_non_nocere\",\n", - " \"fine-tuned\": \"https://en.wikipedia.org/wiki/Fine-tuning_(deep_learning)\",\n", - " \"generative\": \"https://en.wikipedia.org/wiki/Generative_AI\",\n", - " \"government\": \"https://en.wikipedia.org/wiki/Government\",\n", - " \"ideologies\": \"https://en.wikipedia.org/wiki/Ideologies\",\n", - " \"land mines\": \"https://en.wikipedia.org/wiki/Land_mines\",\n", - " \"leaf nodes\": \"https://en.wikipedia.org/wiki/Leaf_nodes\",\n", - " \"learn more\": \"https://en.wikipedia.org/wiki/Help:Introduction\",\n", - " \"maximizing\": \"https://en.wikipedia.org/wiki/Mathematical_optimization\",\n", - " \"microscopy\": \"https://en.wikipedia.org/wiki/Microscopy\",\n", - " \"modalities\": \"https://en.wikipedia.org/wiki/Modality_(human%E2%80%93computer_interaction)\",\n", - " \"open-world\": \"https://en.wikipedia.org/wiki/Open-world\",\n", - " \"paralegals\": \"https://en.wikipedia.org/wiki/Paralegal\",\n", - " \"perception\": \"https://en.wikipedia.org/wiki/Philosophy_of_perception\",\n", - " \"philosophy\": \"https://en.wikipedia.org/wiki/Philosophy\",\n", - " \"propaganda\": \"https://en.wikipedia.org/wiki/Propaganda\",\n", - " \"psychology\": \"https://en.wikipedia.org/wiki/Psychology\",\n", - " \"recidivist\": \"https://en.wikipedia.org/wiki/Recidivist\",\n", - " \"regression\": \"https://en.wikipedia.org/wiki/Regression_analysis\",\n", - " \"resolution\": \"https://en.wikipedia.org/wiki/Resolution_(logic)\",\n", - " \"robots.txt\": \"https://en.wikipedia.org/wiki/Robots.txt\",\n", - " \"scientific\": \"https://en.wikipedia.org/wiki/Scientific_theory\",\n", - " \"statistics\": \"https://en.wikipedia.org/wiki/Statistics\",\n", - " \"superhuman\": \"https://en.wikipedia.org/wiki/Superintelligence\",\n", - " \"supervised\": \"https://en.wikipedia.org/wiki/Supervised_learning\",\n", - " \"terrorists\": \"https://en.wikipedia.org/wiki/Terrorist\",\n", - " \"\\u05e2\\u05d1\\u05e8\\u05d9\\u05ea\": \"https://he.wikipedia.org/wiki/%D7%91%D7%99%D7%A0%D7%94_%D7%9E%D7%9C%D7%90%D7%9B%D7%95%D7%AA%D7%99%D7%AA\",\n", - " \"\\u0641\\u0627\\u0631\\u0633\\u06cc\": \"https://fa.wikipedia.org/wiki/%D9%87%D9%88%D8%B4_%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C\",\n", - " \"\\u06a9\\u0648\\u0631\\u062f\\u06cc\": \"https://ckb.wikipedia.org/wiki/%DA%98%DB%8C%D8%B1%DB%8C%DB%8C_%D8%AF%DB%95%D8%B3%D8%AA%DA%A9%D8%B1%D8%AF\",\n", - " \"\\\"Julius AI\\\"\": \"https://julius.ai/home/ai-math\",\n", - " \"\\\"Reasoning\\\"\": \"https://archive.org/details/newhorizonsinpsy0000foss\",\n", - " \"10179/17315\": \"https://hdl.handle.net/10179%2F17315\",\n", - " \"3.4 Finance\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Finance\",\n", - " \"AAAI (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAAAI2014\",\n", - " \"AI takeover\": \"https://en.wikipedia.org/wiki/AI_takeover\",\n", - " \"Agriculture\": \"https://en.wikipedia.org/wiki/Glossary_of_agriculture\",\n", - " \"Alan Turing\": \"https://en.wikipedia.org/wiki/Alan_Turing\",\n", - " \"Alemannisch\": \"https://als.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz\",\n", - " \"Alex Graves\": \"https://en.wikipedia.org/wiki/Alex_Graves_(computer_scientist)\",\n", - " \"AlphaFold 2\": \"https://en.wikipedia.org/wiki/AlphaFold_2\",\n", - " \"Altman, Sam\": \"https://en.wikipedia.org/wiki/Sam_Altman\",\n", - " \"Animatronic\": \"https://en.wikipedia.org/wiki/Animatronics\",\n", - " \"Archaeology\": \"https://en.wikipedia.org/wiki/Glossary_of_archaeology\",\n", - " \"Articulated\": \"https://en.wikipedia.org/wiki/Articulated_robot\",\n", - " \"Atomtronics\": \"https://en.wikipedia.org/wiki/Atomtronics\",\n", - " \"Autoencoder\": \"https://en.wikipedia.org/wiki/Autoencoder\",\n", - " \"Basic Books\": \"https://en.wikipedia.org/wiki/Basic_Books\",\n", - " \"Behaviorism\": \"https://en.wikipedia.org/wiki/Behaviorism\",\n", - " \"Biorobotics\": \"https://en.wikipedia.org/wiki/Biorobotics\",\n", - " \"Brad Rutter\": \"https://en.wikipedia.org/wiki/Brad_Rutter\",\n", - " \"C. D. Broad\": \"https://en.wikipedia.org/wiki/C._D._Broad\",\n", - " \"Classifiers\": \"https://en.wikipedia.org/wiki/Classifier_(mathematics)\",\n", - " \"Claytronics\": \"https://en.wikipedia.org/wiki/Claytronics\",\n", - " \"Coherentism\": \"https://en.wikipedia.org/wiki/Coherentism\",\n", - " \"Concurrency\": \"https://en.wikipedia.org/wiki/Concurrency_(computer_science)\",\n", - " \"Consilience\": \"https://en.wikipedia.org/wiki/Consilience\",\n", - " \"Convolution\": \"https://en.wikipedia.org/wiki/Convolution\",\n", - " \"Correlation\": \"https://en.wikipedia.org/wiki/Correlation\",\n", - " \"Cybenko, G.\": \"https://en.wikipedia.org/wiki/George_Cybenko\",\n", - " \"Cyberethics\": \"https://en.wikipedia.org/wiki/Cyberethics\",\n", - " \"Cybernetics\": \"https://en.wikipedia.org/wiki/Category:Cybernetics\",\n", - " \"Daniela Rus\": \"https://en.wikipedia.org/wiki/Daniela_Rus\",\n", - " \"Data mining\": \"https://en.wikipedia.org/wiki/Data_mining\",\n", - " \"Definitions\": \"https://en.wiktionary.org/wiki/artificial_intelligence\",\n", - " \"Determinism\": \"https://en.wikipedia.org/wiki/Determinism\",\n", - " \"Dharmakirti\": \"https://en.wikipedia.org/wiki/Dharmakirti\",\n", - " \"Digital art\": \"https://en.wikipedia.org/wiki/Digital_art\",\n", - " \"Disclaimers\": \"https://en.wikipedia.org/wiki/Wikipedia:General_disclaimer\",\n", - " \"Educational\": \"https://en.wikipedia.org/wiki/Educational_robotics\",\n", - " \"Fallibilism\": \"https://en.wikipedia.org/wiki/Fallibilism\",\n", - " \"Fearn (2007\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFFearn2007\",\n", - " \"Friendly AI\": \"https://en.wikipedia.org/wiki/Friendly_artificial_intelligence\",\n", - " \"Fuzzy logic\": \"https://en.wikipedia.org/wiki/Fuzzy_logic\",\n", - " \"Game theory\": \"https://en.wikipedia.org/wiki/Game_theory\",\n", - " \"Gary Marcus\": \"https://en.wikipedia.org/wiki/Gary_Marcus\",\n", - " \"Gen-3 Alpha\": \"https://en.wikipedia.org/wiki/Runway_(company)#Gen-3_Alpha\",\n", - " \"Good (1965)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGood1965\",\n", - " \"Good, I. J.\": \"https://en.wikipedia.org/wiki/I._J._Good\",\n", - " \"Gordon Pask\": \"https://en.wikipedia.org/wiki/Gordon_Pask\",\n", - " \"Homeostasis\": \"https://en.wikipedia.org/wiki/Homeostasis\",\n", - " \"Howe (1994)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHowe1994\",\n", - " \"Huang's law\": \"https://en.wikipedia.org/wiki/Huang%27s_law\",\n", - " \"IBM Watsonx\": \"https://en.wikipedia.org/wiki/IBM_Watsonx\",\n", - " \"Ian Hacking\": \"https://en.wikipedia.org/wiki/Ian_Hacking\",\n", - " \"Ichthyology\": \"https://en.wikipedia.org/wiki/Glossary_of_ichthyology\",\n", - " \"Interlingua\": \"https://ia.wikipedia.org/wiki/Intelligentia_artificial\",\n", - " \"Interlingue\": \"https://ie.wikipedia.org/wiki/Inteligentie_artificial\",\n", - " \"Interpreter\": \"https://en.wikipedia.org/wiki/Interpreter_(computing)\",\n", - " \"Jerry Fodor\": \"https://en.wikipedia.org/wiki/Jerry_Fodor\",\n", - " \"John Searle\": \"https://en.wikipedia.org/wiki/John_Searle\",\n", - " \"Joint Fires\": \"https://en.wikipedia.org/wiki/Forward_observers_in_the_U.S._military\",\n", - " \"Judea Pearl\": \"https://en.wikipedia.org/wiki/Judea_Pearl\",\n", - " \"Karl Popper\": \"https://en.wikipedia.org/wiki/Karl_Popper\",\n", - " \"Katz (2012)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKatz2012\",\n", - " \"La .lojban.\": \"https://jbo.wikipedia.org/wiki/rutni_menli\",\n", - " \"Linguistics\": \"https://en.wikipedia.org/wiki/Philosophy_of_linguistics\",\n", - " \"Lofti Zadeh\": \"https://en.wikipedia.org/wiki/Lofti_Zadeh\",\n", - " \"Lohr (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLohr2017\",\n", - " \"Longtermism\": \"https://en.wikipedia.org/wiki/Longtermism\",\n", - " \"Major goals\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Goals\",\n", - " \"Martin Rees\": \"https://en.wikipedia.org/wiki/Martin_Rees\",\n", - " \"Mathematics\": \"https://en.wikipedia.org/wiki/Glossary_of_areas_of_mathematics\",\n", - " \"Mating pool\": \"https://en.wikipedia.org/wiki/Mating_pool\",\n", - " \"Max Tegmark\": \"https://en.wikipedia.org/wiki/Max_Tegmark\",\n", - " \"Metaphysics\": \"https://en.wikipedia.org/wiki/Metaphysics\",\n", - " \"Meteorology\": \"https://en.wikipedia.org/wiki/Glossary_of_meteorology\",\n", - " \"Michael Tye\": \"https://en.wikipedia.org/wiki/Michael_Tye_(philosopher)\",\n", - " \"Microbotics\": \"https://en.wikipedia.org/wiki/Microbotics\",\n", - " \"Minangkabau\": \"https://min.wikipedia.org/wiki/Kecerdasan_buatan\",\n", - " \"Mobile view\": \"https://en.m.wikipedia.org/w/index.php?title=Artificial_intelligence&mobileaction=toggle_view_mobile\",\n", - " \"Moore's Law\": \"https://en.wikipedia.org/wiki/Moore%27s_Law\",\n", - " \"Moore's law\": \"https://en.wikipedia.org/wiki/Moore%27s_law\",\n", - " \"Necrobotics\": \"https://en.wikipedia.org/wiki/Necrobotics\",\n", - " \"Neuroethics\": \"https://en.wikipedia.org/wiki/Neuroethics\",\n", - " \"Non-science\": \"https://en.wikipedia.org/wiki/Non-science\",\n", - " \"Nouvelle AI\": \"https://en.wikipedia.org/wiki/Nouvelle_AI\",\n", - " \"Objectivity\": \"https://en.wikipedia.org/wiki/Objectivity_(philosophy)\",\n", - " \"Observation\": \"https://en.wikipedia.org/wiki/Observation\",\n", - " \"Open-source\": \"https://en.wikipedia.org/wiki/Open-source_robotics\",\n", - " \"OpenAI Five\": \"https://en.wikipedia.org/wiki/OpenAI_Five\",\n", - " \"Ornithology\": \"https://en.wikipedia.org/wiki/Glossary_of_bird_terms\",\n", - " \"Overfitting\": \"https://en.wikipedia.org/wiki/Overfitting\",\n", - " \"Parallelism\": \"https://en.wikipedia.org/wiki/Psychophysical_parallelism\",\n", - " \"Paul Werbos\": \"https://en.wikipedia.org/wiki/Paul_Werbos\",\n", - " \"Perceptrons\": \"https://en.wikipedia.org/wiki/Perceptron\",\n", - " \"Physicalism\": \"https://en.wikipedia.org/wiki/Physicalism\",\n", - " \"Piemont\\u00e8is\": \"https://pms.wikipedia.org/wiki/Inteligensa_Artifissial\",\n", - " \"Press, Eyal\": \"https://en.wikipedia.org/wiki/Eyal_Press\",\n", - " \"Probability\": \"https://en.wikipedia.org/wiki/Probability\",\n", - " \"Qian Xuesen\": \"https://en.wikipedia.org/wiki/Qian_Xuesen\",\n", - " \"Rationalism\": \"https://en.wikipedia.org/wiki/Rationalism\",\n", - " \"Roger Bacon\": \"https://en.wikipedia.org/wiki/Roger_Bacon\",\n", - " \"Rose (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRose2023\",\n", - " \"Sainath, T.\": \"https://en.wikipedia.org/wiki/Tara_Sainath\",\n", - " \"Section 230\": \"https://en.wikipedia.org/wiki/Section_230\",\n", - " \"Simon (1965\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSimon1965\",\n", - " \"Sloven\\u010dina\": \"https://sk.wikipedia.org/wiki/Umel%C3%A1_inteligencia\",\n", - " \"Space probe\": \"https://en.wikipedia.org/wiki/Space_probe\",\n", - " \"Susquehanna\": \"https://en.wikipedia.org/wiki/Susquehanna_Steam_Electric_Station\",\n", - " \"Symbolic AI\": \"https://en.wikipedia.org/wiki/Symbolic_AI\",\n", - " \"Synergetics\": \"https://en.wikipedia.org/wiki/Synergetics_(Haken)\",\n", - " \"Tabula rasa\": \"https://en.wikipedia.org/wiki/Tabula_rasa\",\n", - " \"Testability\": \"https://en.wikipedia.org/wiki/Testability\",\n", - " \"Thomas Kuhn\": \"https://en.wikipedia.org/wiki/Thomas_Kuhn\",\n", - " \"Thro (1993)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFThro1993\",\n", - " \"Transformer\": \"https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture)\",\n", - " \"Translation\": \"https://en.wikipedia.org/wiki/Machine_translation\",\n", - " \"Turing test\": \"https://en.wikipedia.org/wiki/Turing_test\",\n", - " \"Tyler Burge\": \"https://en.wikipedia.org/wiki/Tyler_Burge\",\n", - " \"T\\u00fcrkmen\\u00e7e\": \"https://tk.wikipedia.org/wiki/%C3%9Dasama_akyl\",\n", - " \"U.S. courts\": \"https://en.wikipedia.org/wiki/U.S._court\",\n", - " \"Upload file\": \"https://en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard\",\n", - " \"Video games\": \"https://en.wikipedia.org/wiki/Video_game\",\n", - " \"View source\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&action=edit\",\n", - " \"What is AI?\": \"http://jmc.stanford.edu/artificial-intelligence/what-is-ai/index.html\",\n", - " \"Wikiversity\": \"https://en.wikiversity.org/wiki/Portal:Artificial_intelligence\",\n", - " \"Wong (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWong2023\",\n", - " \"alternative\": \"https://en.wikipedia.org/wiki/Alternative_hypothesis\",\n", - " \"classifiers\": \"https://en.wikipedia.org/wiki/Classifier_(mathematics)\",\n", - " \"computer Go\": \"https://en.wikipedia.org/wiki/Computer_Go\",\n", - " \"cybernetics\": \"https://en.wikipedia.org/wiki/Cybernetics\",\n", - " \"engineering\": \"https://en.wikipedia.org/wiki/Engineering\",\n", - " \"fine-tuning\": \"https://en.wikipedia.org/wiki/Fine-tuning_(deep_learning)\",\n", - " \"fuzzy logic\": \"https://en.wikipedia.org/wiki/Fuzzy_logic\",\n", - " \"game theory\": \"https://en.wikipedia.org/wiki/Game_theory\",\n", - " \"governments\": \"https://en.wikipedia.org/wiki/Government\",\n", - " \"human brain\": \"https://en.wikipedia.org/wiki/Human_brain\",\n", - " \"information\": \"https://en.wikipedia.org/wiki/Philosophy_of_information\",\n", - " \"inheritance\": \"https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)\",\n", - " \"intractable\": \"https://en.wikipedia.org/wiki/Intractability_(complexity)\",\n", - " \"intractably\": \"https://en.wikipedia.org/wiki/Intractably\",\n", - " \"its history\": \"https://en.wikipedia.org/wiki/History_of_artificial_intelligence\",\n", - " \"linguistics\": \"https://en.wikipedia.org/wiki/Linguistics\",\n", - " \"malpractice\": \"https://en.wikipedia.org/wiki/Malpractice\",\n", - " \"mathematics\": \"https://en.wikipedia.org/wiki/Mathematical_optimization\",\n", - " \"observation\": \"https://en.wikipedia.org/wiki/Random_variate\",\n", - " \"probability\": \"https://en.wikipedia.org/wiki/Probability\",\n", - " \"quantifiers\": \"https://en.wikipedia.org/wiki/Quantifier_(logic)\",\n", - " \"recruitment\": \"https://en.wikipedia.org/wiki/Recruitment\",\n", - " \"risks of AI\": \"https://en.wikipedia.org/wiki/AI_risk\",\n", - " \"singularity\": \"https://en.wikipedia.org/wiki/Technological_singularity\",\n", - " \"stereotypes\": \"https://en.wikipedia.org/wiki/Stereotype\",\n", - " \"sui generis\": \"https://en.wikipedia.org/wiki/Sui_generis\",\n", - " \"topological\": \"https://en.wikipedia.org/wiki/Topology\",\n", - " \"transformer\": \"https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)\",\n", - " \"undecidable\": \"https://en.wikipedia.org/wiki/Undecidable_problem\",\n", - " \"unification\": \"https://en.wikipedia.org/wiki/Unification_(computer_science)\",\n", - " \"1.4 Learning\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Learning\",\n", - " \"1721.1/52357\": \"https://hdl.handle.net/1721.1%2F52357\",\n", - " \"2 Techniques\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Techniques\",\n", - " \"2305.20050v1\": \"https://arxiv.org/abs/2305.20050v1\",\n", - " \"3.5 Military\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Military\",\n", - " \"6 Philosophy\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Philosophy\",\n", - " \"8 In fiction\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#In_fiction\",\n", - " \"AI alignment\": \"https://en.wikipedia.org/wiki/AI_alignment\",\n", - " \"Agricultural\": \"https://en.wikipedia.org/wiki/Agricultural_robot\",\n", - " \"Allen Newell\": \"https://en.wikipedia.org/wiki/Allen_Newell\",\n", - " \"Anti-realism\": \"https://en.wikipedia.org/wiki/Anti-realism\",\n", - " \"Applications\": \"https://en.wikipedia.org/wiki/Applications_of_artificial_intelligence\",\n", - " \"Architecture\": \"https://en.wikipedia.org/wiki/Glossary_of_architecture\",\n", - " \"Augmentation\": \"https://en.wikipedia.org/wiki/Data_augmentation\",\n", - " \"Biosemiotics\": \"https://en.wikipedia.org/wiki/Biosemiotics\",\n", - " \"Cell biology\": \"https://en.wikipedia.org/wiki/Glossary_of_cell_biology\",\n", - " \"Chinese room\": \"https://en.wikipedia.org/wiki/Chinese_room\",\n", - " \"Cliff Joslyn\": \"https://en.wikipedia.org/wiki/Cliff_Joslyn\",\n", - " \"Competitions\": \"https://en.wikipedia.org/wiki/Robot_competition\",\n", - " \"Cryptography\": \"https://en.wikipedia.org/wiki/Cryptography\",\n", - " \"Cyberwarfare\": \"https://en.wikipedia.org/wiki/Cyberwarfare\",\n", - " \"Data science\": \"https://en.wikipedia.org/wiki/Category:Data_science\",\n", - " \"David Silver\": \"https://en.wikipedia.org/wiki/David_Silver_(computer_scientist)\",\n", - " \"Derek Parfit\": \"https://en.wikipedia.org/wiki/Derek_Parfit\",\n", - " \"Dyson (1998)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDyson1998\",\n", - " \"Economics\\u200e\": \"https://en.wikipedia.org/wiki/Philosophy_of_economics\",\n", - " \"Epistemology\": \"https://en.wikipedia.org/wiki/Epistemology\",\n", - " \"Eric Drexler\": \"https://en.wikipedia.org/wiki/K._Eric_Drexler\",\n", - " \"Eric Schmidt\": \"https://en.wikipedia.org/wiki/Eric_Schmidt\",\n", - " \"Evans, Woody\": \"https://en.wikipedia.org/wiki/Woody_Evans\",\n", - " \"Evolutionary\": \"https://en.wikipedia.org/wiki/Evolutionary_robotics\",\n", - " \"Evolutionism\": \"https://en.wikipedia.org/wiki/Evolutionism\",\n", - " \"Food service\": \"https://en.wikipedia.org/wiki/Automated_restaurant\",\n", - " \"Frankenstein\": \"https://en.wikipedia.org/wiki/Frankenstein\",\n", - " \"Fred Dretske\": \"https://en.wikipedia.org/wiki/Fred_Dretske\",\n", - " \"Game playing\": \"https://en.wikipedia.org/wiki/Game_AI\",\n", - " \"Geist (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGeist2015\",\n", - " \"George Dyson\": \"https://en.wikipedia.org/wiki/George_Dyson_(science_historian)\",\n", - " \"Gibbs (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGibbs2014\",\n", - " \"Gilbert Ryle\": \"https://en.wikipedia.org/wiki/Gilbert_Ryle\",\n", - " \"Gordon Moore\": \"https://en.wikipedia.org/wiki/Gordon_Moore\",\n", - " \"Gran Turismo\": \"https://en.wikipedia.org/wiki/Gran_Turismo_(series)\",\n", - " \"Gregory Mone\": \"https://en.wikipedia.org/w/index.php?title=Gregory_Mone&action=edit&redlink=1\",\n", - " \"Hall of Fame\": \"https://en.wikipedia.org/wiki/Robot_Hall_of_Fame\",\n", - " \"Hans Moravec\": \"https://en.wikipedia.org/wiki/Hans_Moravec\",\n", - " \"Horn clauses\": \"https://en.wikipedia.org/wiki/Horn_clause\",\n", - " \"Horst (2005)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHorst2005\",\n", - " \"Hugging Face\": \"https://en.wikipedia.org/wiki/Hugging_Face\",\n", - " \"Imre Lakatos\": \"https://en.wikipedia.org/wiki/Imre_Lakatos\",\n", - " \"Inductionism\": \"https://en.wikipedia.org/wiki/Inductionism\",\n", - " \"Intelligence\": \"https://en.wikipedia.org/wiki/Intelligence\",\n", - " \"Isaac Asimov\": \"https://en.wikipedia.org/wiki/Isaac_Asimov\",\n", - " \"Isaac Newton\": \"https://en.wikipedia.org/wiki/Isaac_Newton\",\n", - " \"J. L. Austin\": \"https://en.wikipedia.org/wiki/J._L._Austin\",\n", - " \"Jaan Tallinn\": \"https://en.wikipedia.org/wiki/Jaan_Tallinn\",\n", - " \"Jensen Huang\": \"https://en.wikipedia.org/wiki/Jensen_Huang\",\n", - " \"John Grisham\": \"https://en.wikipedia.org/wiki/John_Grisham\",\n", - " \"Julia Angwin\": \"https://en.wikipedia.org/wiki/Julia_Angwin\",\n", - " \"Kadazandusun\": \"https://dtp.wikipedia.org/wiki/Kabaalan_Tinanda\",\n", - " \"Kaoru Nakano\": \"https://en.wikipedia.org/w/index.php?title=Kaoru_Nakano&action=edit&redlink=1\",\n", - " \"Karel \\u010capek\": \"https://en.wikipedia.org/wiki/Karel_%C4%8Capek\",\n", - " \"Karl Pearson\": \"https://en.wikipedia.org/wiki/Karl_Pearson\",\n", - " \"Ken Jennings\": \"https://en.wikipedia.org/wiki/Ken_Jennings\",\n", - " \"Larry Laudan\": \"https://en.wikipedia.org/wiki/Larry_Laudan\",\n", - " \"Lepore, Jill\": \"https://en.wikipedia.org/wiki/Jill_Lepore\",\n", - " \"Lisp Machine\": \"https://en.wikipedia.org/wiki/Lisp_Machine\",\n", - " \"Local search\": \"https://en.wikipedia.org/wiki/Local_search_(optimization)\",\n", - " \"Maker (2006)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMaker2006\",\n", - " \"Marcus, Gary\": \"https://en.wikipedia.org/wiki/Marcus,_Gary\",\n", - " \"Marian Mazur\": \"https://en.wikipedia.org/wiki/Marian_Mazur\",\n", - " \"Mary Shelley\": \"https://en.wikipedia.org/wiki/Mary_Shelley\",\n", - " \"Mental event\": \"https://en.wikipedia.org/wiki/Mental_event\",\n", - " \"Mental image\": \"https://en.wikipedia.org/wiki/Mental_image\",\n", - " \"Minsky (1967\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMinsky1967\",\n", - " \"Minsky (1986\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMinsky1986\",\n", - " \"Mobile robot\": \"https://en.wikipedia.org/wiki/Mobile_robot\",\n", - " \"Nanorobotics\": \"https://en.wikipedia.org/wiki/Nanorobotics\",\n", - " \"Nedersaksies\": \"https://nds-nl.wikipedia.org/wiki/Keunstklookte\",\n", - " \"Nicas (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNicas2018\",\n", - " \"Nick Bostrom\": \"https://en.wikipedia.org/wiki/Nick_Bostrom\",\n", - " \"Nils Nilsson\": \"https://en.wikipedia.org/wiki/Nils_Nilsson_(researcher)\",\n", - " \"Noam Chomsky\": \"https://en.wikipedia.org/wiki/Noam_Chomsky\",\n", - " \"Old Faithful\": \"https://en.wikipedia.org/wiki/Old_Faithful\",\n", - " \"Otto Neurath\": \"https://en.wikipedia.org/wiki/Otto_Neurath\",\n", - " \"Philosophers\": \"https://en.wikipedia.org/wiki/Category:Philosophers_of_mind\",\n", - " \"Pierre Duhem\": \"https://en.wikipedia.org/wiki/Pierre_Duhem\",\n", - " \"Pinker (2007\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPinker2007\",\n", - " \"Poole, David\": \"https://en.wikipedia.org/w/index.php?title=David_Poole_(researcher)&action=edit&redlink=1\",\n", - " \"Protoscience\": \"https://en.wikipedia.org/wiki/Protoscience\",\n", - " \"Ray Kurzweil\": \"https://en.wikipedia.org/wiki/Ray_Kurzweil\",\n", - " \"Reductionism\": \"https://en.wikipedia.org/wiki/Reductionism\",\n", - " \"Rich, Elaine\": \"https://en.wikipedia.org/wiki/Elaine_Rich\",\n", - " \"Robot ethics\": \"https://en.wikipedia.org/wiki/Robot_ethics\",\n", - " \"Robot rights\": \"https://en.wikipedia.org/wiki/Robot_rights\",\n", - " \"Robotic fins\": \"https://en.wikipedia.org/wiki/Robotic_fin\",\n", - " \"Robotic fish\": \"https://en.wikipedia.org/wiki/Robotic_fish\",\n", - " \"Searle, John\": \"https://en.wikipedia.org/wiki/John_Searle\",\n", - " \"Semantic Web\": \"https://en.wikipedia.org/wiki/Semantic_Web\",\n", - " \"Simon, H. A.\": \"https://en.wikipedia.org/wiki/Herbert_A._Simon\",\n", - " \"Smith (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSmith2023\",\n", - " \"StarCraft II\": \"https://en.wikipedia.org/wiki/StarCraft_II\",\n", - " \"Talen Energy\": \"https://en.wikipedia.org/wiki/Talen_Energy\",\n", - " \"Telerobotics\": \"https://en.wikipedia.org/wiki/Telerobotics\",\n", - " \"Terms of Use\": \"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use\",\n", - " \"The Atlantic\": \"https://en.wikipedia.org/wiki/The_Atlantic\",\n", - " \"The Diplomat\": \"https://en.wikipedia.org/wiki/The_Diplomat_(magazine)\",\n", - " \"The Guardian\": \"https://en.wikipedia.org/wiki/The_Guardian\",\n", - " \"Thomas Nagel\": \"https://en.wikipedia.org/wiki/Thomas_Nagel\",\n", - " \"Toews (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFToews2023\",\n", - " \"Turing, Alan\": \"https://en.wikipedia.org/wiki/Alan_Turing\",\n", - " \"Verma (2021)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFVerma2021\",\n", - " \"Vernor Vinge\": \"https://en.wikipedia.org/wiki/Vernor_Vinge\",\n", - " \"View history\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&action=history\",\n", - " \"Vinge (1993)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFVinge1993\",\n", - " \"Walter Pitts\": \"https://en.wikipedia.org/wiki/Walter_Pitts\",\n", - " \"Wason, P. C.\": \"https://en.wikipedia.org/wiki/Peter_Cathcart_Wason\",\n", - " \"bioterrorism\": \"https://en.wikipedia.org/wiki/Bioterrorism\",\n", - " \"data centers\": \"https://en.wikipedia.org/wiki/Data_center\",\n", - " \"epistemology\": \"https://en.wikipedia.org/wiki/Epistemology\",\n", - " \"ethics of AI\": \"https://en.wikipedia.org/wiki/Ethics_of_AI\",\n", - " \"formal logic\": \"https://en.wikipedia.org/wiki/Formal_logic\",\n", - " \"game-playing\": \"https://en.wikipedia.org/wiki/Game_AI\",\n", - " \"human rights\": \"https://en.wikipedia.org/wiki/Human_rights\",\n", - " \"intelligence\": \"https://en.wikipedia.org/wiki/Intelligence\",\n", - " \"local search\": \"https://en.wikipedia.org/wiki/Local_search_(optimization)\",\n", - " \"micro-worlds\": \"https://en.wikipedia.org/wiki/Blocks_world\",\n", - " \"modal logics\": \"https://en.wikipedia.org/wiki/Modal_logic\",\n", - " \"neurobiology\": \"https://en.wikipedia.org/wiki/Neurobiology\",\n", - " \"neuroscience\": \"https://en.wikipedia.org/wiki/Neuroscience\",\n", - " \"optimization\": \"https://en.wikipedia.org/wiki/Optimization\",\n", - " \"productivity\": \"https://en.wikipedia.org/wiki/Productivity\",\n", - " \"rogue states\": \"https://en.wikipedia.org/wiki/Rogue_states\",\n", - " \"search space\": \"https://en.wikipedia.org/wiki/Search_algorithm\",\n", - " \"sub-symbolic\": \"https://en.wikipedia.org/wiki/Sub-symbolic\",\n", - " \"surveillance\": \"https://en.wikipedia.org/wiki/Surveillance\",\n", - " \"the original\": \"http://www-rohan.sdsu.edu/faculty/vinge/misc/singularity.html\",\n", - " \"transformers\": \"https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)\",\n", - " \"transparency\": \"https://en.wikipedia.org/wiki/Transparency_(behavior)\",\n", - " \"unemployment\": \"https://en.wikipedia.org/wiki/Unemployment\",\n", - " \"\\u0411\\u0443\\u0440\\u044f\\u0430\\u0434\": \"https://bxr.wikipedia.org/wiki/%D0%A5%D1%8D%D0%BC%D1%8D%D0%BB_%D0%BE%D1%8E%D1%83%D0%BD\",\n", - " \"\\u041c\\u043e\\u043d\\u0433\\u043e\\u043b\": \"https://mn.wikipedia.org/wiki/%D0%A5%D0%B8%D0%B9%D0%BC%D1%8D%D0%BB_%D0%BE%D1%8E%D1%83%D0%BD\",\n", - " \"\\u0422\\u043e\\u04b7\\u0438\\u043a\\u04e3\": \"https://tg.wikipedia.org/wiki/%D2%B2%D1%83%D1%88%D0%B8_%D0%BC%D0%B0%D1%81%D0%BD%D3%AF%D1%8A%D3%A3\",\n", - " \"\\u05d9\\u05d9\\u05b4\\u05d3\\u05d9\\u05e9\": \"https://yi.wikipedia.org/wiki/%D7%A7%D7%99%D7%A0%D7%A1%D7%98%D7%9C%D7%A2%D7%9B%D7%A2_%D7%90%D7%99%D7%A0%D7%98%D7%A2%D7%9C%D7%99%D7%92%D7%A2%D7%A0%D7%A5\",\n", - " \"\\u062a\\u06c6\\u0631\\u06a9\\u062c\\u0647\": \"https://azb.wikipedia.org/wiki/%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C_%D8%B0%DA%A9%D8%A7\",\n", - " \"\\u067e\\u0646\\u062c\\u0627\\u0628\\u06cc\": \"https://pnb.wikipedia.org/wiki/%D8%A8%D9%86%D8%A7%D8%A6%DB%8C_%DA%AF%D8%A6%DB%8C_%D8%B0%DB%81%D8%A7%D9%86%D8%AA\",\n", - " \"\\u12a0\\u121b\\u122d\\u129b\": \"https://am.wikipedia.org/wiki/%E1%88%B0%E1%8B%8D_%E1%88%A0%E1%88%AB%E1%88%BD_%E1%8B%A8%E1%88%9B%E1%88%B0%E1%89%A5_%E1%89%BD%E1%88%8E%E1%89%B3\",\n", - " \"0-13-790395-2\": \"https://en.wikipedia.org/wiki/Special:BookSources/0-13-790395-2\",\n", - " \"0-1982-5079-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/0-1982-5079-7\",\n", - " \"0-465-02997-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/0-465-02997-3\",\n", - " \"1-5688-1205-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/1-5688-1205-1\",\n", - " \"10.2196/42936\": \"https://doi.org/10.2196%2F42936\",\n", - " \"11 References\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#References\",\n", - " \"3.8 Sexuality\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Sexuality\",\n", - " \"Accessibility\": \"https://en.wikipedia.org/wiki/Computer_accessibility\",\n", - " \"Aldous Huxley\": \"https://en.wikipedia.org/wiki/Aldous_Huxley\",\n", - " \"Alex Pentland\": \"https://en.wikipedia.org/wiki/Alex_Pentland\",\n", - " \"AlphaGeometry\": \"https://en.wikipedia.org/wiki/AlphaGeometry\",\n", - " \"Alphabet Inc.\": \"https://en.wikipedia.org/wiki/Alphabet_Inc.\",\n", - " \"Angwin, Julia\": \"https://en.wikipedia.org/wiki/Julia_Angwin\",\n", - " \"Arthur Samuel\": \"https://en.wikipedia.org/wiki/Arthur_Samuel_(computer_scientist)\",\n", - " \"Auguste Comte\": \"https://en.wikipedia.org/wiki/Auguste_Comte\",\n", - " \"Az\\u0259rbaycanca\": \"https://az.wikipedia.org/wiki/S%C3%BCni_intellekt\",\n", - " \"BEAM robotics\": \"https://en.wikipedia.org/wiki/BEAM_robotics\",\n", - " \"Bahasa Melayu\": \"https://ms.wikipedia.org/wiki/Kecerdasan_buatan\",\n", - " \"Bikol Central\": \"https://bcl.wikipedia.org/wiki/Artipisyal_na_intelihensya\",\n", - " \"Bostrom, Nick\": \"https://en.wikipedia.org/wiki/Nick_Bostrom\",\n", - " \"Brooks (1990)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBrooks1990\",\n", - " \"Brooks (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBrooks2014\",\n", - " \"Buiten (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBuiten2019\",\n", - " \"Butler (1863)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFButler1863\",\n", - " \"Chinchilla AI\": \"https://en.wikipedia.org/wiki/Chinchilla_(language_model)\",\n", - " \"Chipless RFID\": \"https://en.wikipedia.org/wiki/Chipless_RFID\",\n", - " \"Clark (2015b)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFClark2015b\",\n", - " \"Connectionism\": \"https://en.wikipedia.org/wiki/Connectionism\",\n", - " \"Consciousness\": \"https://en.wikipedia.org/wiki/Consciousness\",\n", - " \"Contextualism\": \"https://en.wikipedia.org/wiki/Contextualism\",\n", - " \"Contributions\": \"https://en.wikipedia.org/wiki/Special:MyContributions\",\n", - " \"Crevier (1993\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCrevier1993\",\n", - " \"Cuckoo search\": \"https://en.wikipedia.org/wiki/Cuckoo_search\",\n", - " \"Cynthia Dwork\": \"https://en.wikipedia.org/wiki/Cynthia_Dwork\",\n", - " \"Dan Hendrycks\": \"https://en.wikipedia.org/wiki/Dan_Hendrycks\",\n", - " \"Dan McQuillan\": \"https://en.wikipedia.org/wiki/Dan_McQuillan\",\n", - " \"Daniel Bobrow\": \"https://en.wikipedia.org/wiki/Daniel_Bobrow\",\n", - " \"Deconvolution\": \"https://en.wikipedia.org/wiki/Deconvolution\",\n", - " \"Deep Learning\": \"https://web.archive.org/web/20160416111010/http://www.deeplearningbook.org\",\n", - " \"Deep learning\": \"https://en.wikipedia.org/wiki/Deep_learning\",\n", - " \"Dependability\": \"https://en.wikipedia.org/wiki/Dependability\",\n", - " \"Developmental\": \"https://en.wikipedia.org/wiki/Developmental_robotics\",\n", - " \"Discovery One\": \"https://en.wikipedia.org/wiki/Discovery_One\",\n", - " \"Dream Machine\": \"https://en.wikipedia.org/wiki/Dream_Machine_(text-to-video_model)\",\n", - " \"Dyson, George\": \"https://en.wikipedia.org/wiki/George_Dyson_(science_historian)\",\n", - " \"Entertainment\": \"https://en.wikipedia.org/wiki/Entertainment_robot\",\n", - " \"Foster-Miller\": \"https://en.wikipedia.org/wiki/Foster-Miller\",\n", - " \"Frame problem\": \"https://en.wikipedia.org/wiki/Frame_problem\",\n", - " \"Francis Bacon\": \"https://en.wikipedia.org/wiki/Francis_Bacon\",\n", - " \"Frank Wilczek\": \"https://en.wikipedia.org/wiki/Frank_Wilczek\",\n", - " \"Functionalism\": \"https://en.wikipedia.org/wiki/Functionalism_(philosophy_of_mind)\",\n", - " \"Galvan (1997)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGalvan1997\",\n", - " \"Generative AI\": \"https://en.wikipedia.org/wiki/Generative_artificial_intelligence\",\n", - " \"Gleick, James\": \"https://en.wikipedia.org/wiki/Gleick,_James\",\n", - " \"Goebel, Randy\": \"https://en.wikipedia.org/w/index.php?title=Randy_Goebel&action=edit&redlink=1\",\n", - " \"Goffrey (2008\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoffrey2008\",\n", - " \"Goldman Sachs\": \"https://en.wikipedia.org/wiki/Goldman_Sachs\",\n", - " \"Google Photos\": \"https://en.wikipedia.org/wiki/Google_Photos\",\n", - " \"Google Search\": \"https://en.wikipedia.org/wiki/Google_Search\",\n", - " \"Hallucination\": \"https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)\",\n", - " \"Harari (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHarari2018\",\n", - " \"Harari (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHarari2023\",\n", - " \"Henri Bergson\": \"https://en.wikipedia.org/wiki/Henri_Bergson\",\n", - " \"Herbert Simon\": \"https://en.wikipedia.org/wiki/Herbert_A._Simon\",\n", - " \"Hilary Putnam\": \"https://en.wikipedia.org/wiki/Hilary_Putnam\",\n", - " \"Holley (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHolley2015\",\n", - " \"Immanuel Kant\": \"https://en.wikipedia.org/wiki/Immanuel_Kant\",\n", - " \"Introspection\": \"https://en.wikipedia.org/wiki/Introspection\",\n", - " \"Jacque Fresco\": \"https://en.wikipedia.org/wiki/Jacque_Fresco\",\n", - " \"John Hopfield\": \"https://en.wikipedia.org/wiki/John_Hopfield\",\n", - " \"John McCarthy\": \"https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)\",\n", - " \"Jon Kleinberg\": \"https://en.wikipedia.org/wiki/Jon_Kleinberg\",\n", - " \"Jump up to: a\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-Kateman-2023_436-0\",\n", - " \"Kevin Warwick\": \"https://en.wikipedia.org/wiki/Kevin_Warwick\",\n", - " \"Kurzweil, Ray\": \"https://en.wikipedia.org/wiki/Ray_Kurzweil\",\n", - " \"Learn to edit\": \"https://en.wikipedia.org/wiki/Help:Introduction\",\n", - " \"Luger, George\": \"https://en.wikipedia.org/w/index.php?title=George_Luger&action=edit&redlink=1\",\n", - " \"Margaret Mead\": \"https://en.wikipedia.org/wiki/Margaret_Mead\",\n", - " \"Marvin Minsky\": \"https://en.wikipedia.org/wiki/Marvin_Minsky\",\n", - " \"Mental health\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_mental_health\",\n", - " \"Mind Children\": \"https://archive.org/details/mindchildrenfutu00mora\",\n", - " \"Minsky (1986)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMinsky1986\",\n", - " \"Moravec (1988\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMoravec1988\",\n", - " \"Moravec, Hans\": \"https://en.wikipedia.org/wiki/Hans_Moravec\",\n", - " \"Newell, Allen\": \"https://en.wikipedia.org/wiki/Allen_Newell\",\n", - " \"Nilsson (1983\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNilsson1983\",\n", - " \"Nilsson (1998\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNilsson1998\",\n", - " \"Nilsson, Nils\": \"https://en.wikipedia.org/wiki/Nils_Nilsson_(researcher)\",\n", - " \"Normalization\": \"https://en.wikipedia.org/wiki/Normalization_(machine_learning)\",\n", - " \"Norsk bokm\\u00e5l\": \"https://no.wikipedia.org/wiki/Kunstig_intelligens\",\n", - " \"Norsk nynorsk\": \"https://nn.wikipedia.org/wiki/Kunstig_intelligens\",\n", - " \"Norvig, Peter\": \"https://en.wikipedia.org/wiki/Peter_Norvig\",\n", - " \"Occasionalism\": \"https://en.wikipedia.org/wiki/Occasionalism\",\n", - " \"Open Syllabus\": \"https://explorer.opensyllabus.org/result/field?id=Computer+Science\",\n", - " \"Phenomenalism\": \"https://en.wikipedia.org/wiki/Phenomenalism\",\n", - " \"Phenomenology\": \"https://en.wikipedia.org/wiki/Phenomenology_(philosophy)\",\n", - " \"Pseudoscience\": \"https://en.wikipedia.org/wiki/Pseudoscience\",\n", - " \"Qaraqalpaqsha\": \"https://kaa.wikipedia.org/wiki/Jasalma_intellekt\",\n", - " \"Received view\": \"https://en.wikipedia.org/wiki/Received_view_of_theories\",\n", - " \"Richard Rorty\": \"https://en.wikipedia.org/wiki/Richard_Rorty\",\n", - " \"Robert Trappl\": \"https://en.wikipedia.org/wiki/Robert_Trappl\",\n", - " \"Robot control\": \"https://en.wikipedia.org/wiki/Robot_control\",\n", - " \"Rodney Brooks\": \"https://en.wikipedia.org/wiki/Rodney_Brooks\",\n", - " \"Rudolf Carnap\": \"https://en.wikipedia.org/wiki/Rudolf_Carnap\",\n", - " \"Sample (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSample2017\",\n", - " \"Samuel Butler\": \"https://en.wikipedia.org/wiki/Samuel_Butler_(novelist)\",\n", - " \"Searle (1980)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSearle1980\",\n", - " \"Searle (1999)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSearle1999\",\n", - " \"Sloven\\u0161\\u010dina\": \"https://sl.wikipedia.org/wiki/Umetna_inteligenca\",\n", - " \"Soft robotics\": \"https://en.wikipedia.org/wiki/Soft_robotics\",\n", - " \"Special pages\": \"https://en.wikipedia.org/wiki/Special:SpecialPages\",\n", - " \"Stephen Yablo\": \"https://en.wikipedia.org/wiki/Stephen_Yablo\",\n", - " \"Structuralism\": \"https://en.wikipedia.org/wiki/Structuralism_(philosophy_of_science)\",\n", - " \"The Economist\": \"https://en.wikipedia.org/wiki/The_Economist\",\n", - " \"The Precipice\": \"https://en.wikipedia.org/wiki/The_Precipice:_Existential_Risk_and_the_Future_of_Humanity\",\n", - " \"Transhumanism\": \"https://en.wikipedia.org/wiki/Transhumanism\",\n", - " \"Turing (1950)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFTuring1950\",\n", - " \"Tversky, Amos\": \"https://en.wikipedia.org/wiki/Amos_Tversky\",\n", - " \"UNESCO (2021)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFUNESCO2021\",\n", - " \"Ulla Mitzdorf\": \"https://en.wikipedia.org/wiki/Ulla_Mitzdorf\",\n", - " \"Understanding\": \"https://en.wikipedia.org/wiki/Understanding\",\n", - " \"United States\": \"https://id.loc.gov/authorities/sh85008180\",\n", - " \"Valentin Lapa\": \"https://en.wikipedia.org/w/index.php?title=Valentin_Lapa&action=edit&redlink=1\",\n", - " \"Vinge, Vernor\": \"https://en.wikipedia.org/wiki/Vernor_Vinge\",\n", - " \"Visualization\": \"https://en.wikipedia.org/wiki/Visualization_(graphics)\",\n", - " \"Wikidata item\": \"https://www.wikidata.org/wiki/Special:EntityPage/Q11660\",\n", - " \"William James\": \"https://en.wikipedia.org/wiki/William_James\",\n", - " \"Wolf Robotics\": \"https://en.wikipedia.org/wiki/Wolf_Robotics\",\n", - " \"Yoshua Bengio\": \"https://en.wikipedia.org/wiki/Yoshua_Bengio\",\n", - " \"civilizations\": \"https://en.wikipedia.org/wiki/Civilization\",\n", - " \"connectionism\": \"https://en.wikipedia.org/wiki/Connectionism\",\n", - " \"consciousness\": \"https://en.wikipedia.org/wiki/Consciousness\",\n", - " \"decision tree\": \"https://en.wikipedia.org/wiki/Decision_tree\",\n", - " \"deep learning\": \"https://en.wikipedia.org/wiki/Deep_learning\",\n", - " \"default logic\": \"https://en.wikipedia.org/wiki/Default_logic\",\n", - " \"find patterns\": \"https://en.wikipedia.org/wiki/Pattern_recognition\",\n", - " \"frame problem\": \"https://en.wikipedia.org/wiki/Frame_problem\",\n", - " \"generative AI\": \"https://en.wikipedia.org/wiki/Generative_AI\",\n", - " \"loss function\": \"https://en.wikipedia.org/wiki/Loss_function\",\n", - " \"mental states\": \"https://en.wikipedia.org/wiki/Philosophy_of_mind\",\n", - " \"redistributed\": \"https://en.wikipedia.org/wiki/Redistribution_of_income_and_wealth\",\n", - " \"robopocalypse\": \"https://en.wikipedia.org/wiki/Robopocalypse\",\n", - " \"teledildonics\": \"https://en.wikipedia.org/wiki/Teledildonics\",\n", - " \"text-to-image\": \"https://en.wikipedia.org/wiki/Text-to-image\",\n", - " \"text-to-video\": \"https://en.wikipedia.org/wiki/Text-to-video_model\",\n", - " \"training data\": \"https://en.wikipedia.org/wiki/Training_data\",\n", - " \"\\u017demait\\u0117\\u0161ka\": \"https://bat-smg.wikipedia.org/wiki/D%C4%97rbt%C4%97ns_intelekts\",\n", - " \"\\\"Black Box AI\\\"\": \"https://www.techopedia.com/definition/34940/black-box-ai\",\n", - " \"1.6 Perception\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Perception\",\n", - " \"10.1.1.395.416\": \"https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.395.416\",\n", - " \"10.1.1.83.7615\": \"https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.83.7615\",\n", - " \"10.1.1.85.8904\": \"https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.8904\",\n", - " \"10.3386/w31161\": \"https://doi.org/10.3386%2Fw31161\",\n", - " \"3 Applications\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Applications\",\n", - " \"4.4 Frameworks\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Frameworks\",\n", - " \"4.5 Regulation\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Regulation\",\n", - " \"AI is sentient\": \"https://en.wikipedia.org/wiki/Sentient_AI\",\n", - " \"Alexander Bain\": \"https://en.wikipedia.org/wiki/Alexander_Bain_(philosopher)\",\n", - " \"Anthony Wilden\": \"https://en.wikipedia.org/wiki/Anthony_Wilden\",\n", - " \"Autoregression\": \"https://en.wikipedia.org/wiki/Autoregressive_model\",\n", - " \"Baruch Spinoza\": \"https://en.wikipedia.org/wiki/Baruch_Spinoza\",\n", - " \"Bees algorithm\": \"https://en.wikipedia.org/wiki/Bees_algorithm\",\n", - " \"Bernard Widrow\": \"https://en.wikipedia.org/wiki/Bernard_Widrow\",\n", - " \"Bioinformatics\": \"https://en.wikipedia.org/wiki/Machine_learning_in_bioinformatics\",\n", - " \"Bletchley Park\": \"https://en.wikipedia.org/wiki/Bletchley_Park\",\n", - " \"Bostrom (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBostrom2014\",\n", - " \"Bostrom (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBostrom2015\",\n", - " \"Brockman, Greg\": \"https://en.wikipedia.org/wiki/Greg_Brockman\",\n", - " \"Brooks, Rodney\": \"https://en.wikipedia.org/wiki/Rodney_Brooks\",\n", - " \"Butler, Samuel\": \"https://en.wikipedia.org/wiki/Samuel_Butler_(novelist)\",\n", - " \"Cain's Jawbone\": \"https://en.wikipedia.org/wiki/Cain%27s_Jawbone\",\n", - " \"Cite this page\": \"https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Artificial_intelligence&id=1274941297&wpFormIdentifier=titleform\",\n", - " \"Claude Bernard\": \"https://en.wikipedia.org/wiki/Claude_Bernard\",\n", - " \"Claude Shannon\": \"https://en.wikipedia.org/wiki/Claude_Shannon\",\n", - " \"Cloud robotics\": \"https://en.wikipedia.org/wiki/Cloud_robotics\",\n", - " \"Control method\": \"https://en.wikipedia.org/wiki/Control_theory\",\n", - " \"Control theory\": \"https://en.wikipedia.org/wiki/Control_theory\",\n", - " \"Create account\": \"https://en.wikipedia.org/w/index.php?title=Special:CreateAccount&returnto=Artificial+intelligence\",\n", - " \"Crevier (1993)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCrevier1993\",\n", - " \"Current events\": \"https://en.wikipedia.org/wiki/Portal:Current_events\",\n", - " \"Cybenko (1988)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCybenko1988\",\n", - " \"Cyberneticians\": \"https://en.wikipedia.org/wiki/Cyberneticist\",\n", - " \"Cybersemiotics\": \"https://en.wikipedia.org/wiki/Cybersemiotics\",\n", - " \"Czech Republic\": \"https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph116536&CON_LNG=ENG\",\n", - " \"Daniel Dennett\": \"https://en.wikipedia.org/wiki/Daniel_Dennett\",\n", - " \"David Chalmers\": \"https://en.wikipedia.org/wiki/David_Chalmers\",\n", - " \"Decision trees\": \"https://en.wikipedia.org/wiki/Alternating_decision_tree\",\n", - " \"Demis Hassabis\": \"https://en.wikipedia.org/wiki/Demis_Hassabis\",\n", - " \"Dennett (1991)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDennett1991\",\n", - " \"Dickson (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDickson2022\",\n", - " \"Domingos (2015\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDomingos2015\",\n", - " \"Double descent\": \"https://en.wikipedia.org/wiki/Double_descent\",\n", - " \"Dreyfus (1972)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDreyfus1972\",\n", - " \"Earth sciences\": \"https://en.wikipedia.org/wiki/Machine_learning_in_earth_sciences\",\n", - " \"Edelson (1991)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFEdelson1991\",\n", - " \"Edmund Husserl\": \"https://en.wikipedia.org/wiki/Edmund_Husserl\",\n", - " \"Edward Fredkin\": \"https://en.wikipedia.org/wiki/Edward_Fredkin\",\n", - " \"Edwards (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFEdwards2023\",\n", - " \"Exact sciences\": \"https://en.wikipedia.org/wiki/Exact_sciences\",\n", - " \"Expert systems\": \"https://en.wikipedia.org/wiki/Expert_systems\",\n", - " \"Explainable AI\": \"https://en.wikipedia.org/wiki/Explainable_AI\",\n", - " \"Falsifiability\": \"https://en.wikipedia.org/wiki/Falsifiability\",\n", - " \"Formal methods\": \"https://en.wikipedia.org/wiki/Formal_methods\",\n", - " \"Franz Brentano\": \"https://en.wikipedia.org/wiki/Franz_Brentano\",\n", - " \"Garry Kasparov\": \"https://en.wikipedia.org/wiki/Garry_Kasparov\",\n", - " \"Genevieve Bell\": \"https://en.wikipedia.org/wiki/Genevieve_Bell\",\n", - " \"Goffrey (2008)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoffrey2008\",\n", - " \"Goldman (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoldman2022\",\n", - " \"Goswami (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoswami2023\",\n", - " \"Harmony search\": \"https://en.wikipedia.org/wiki/Harmony_search\",\n", - " \"Hubert Dreyfus\": \"https://en.wikipedia.org/wiki/Hubert_Dreyfus\",\n", - " \"Hyperparameter\": \"https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)\",\n", - " \"I. A. Richards\": \"https://en.wikipedia.org/wiki/I._A._Richards\",\n", - " \"Ian Goodfellow\": \"https://en.wikipedia.org/wiki/Ian_Goodfellow\",\n", - " \"Ilya Sutskever\": \"https://en.wikipedia.org/wiki/Ilya_Sutskever\",\n", - " \"Intentionality\": \"https://en.wikipedia.org/wiki/Intentionality\",\n", - " \"Interactionism\": \"https://en.wikipedia.org/wiki/Interactionism_(philosophy_of_mind)\",\n", - " \"Jen-Hsun Huang\": \"https://en.wikipedia.org/wiki/Jen-Hsun_Huang\",\n", - " \"Jennifer Wilby\": \"https://en.wikipedia.org/wiki/Jennifer_Wilby\",\n", - " \"Kalman filters\": \"https://en.wikipedia.org/wiki/Kalman_filter\",\n", - " \"Karl Steinbuch\": \"https://en.wikipedia.org/wiki/Karl_Steinbuch\",\n", - " \"Kernel methods\": \"https://en.wikipedia.org/wiki/Kernel_methods\",\n", - " \"Kurzweil (2005\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKurzweil2005\",\n", - " \"Langley (2011)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLangley2011\",\n", - " \"Language model\": \"https://en.wikipedia.org/wiki/Language_model\",\n", - " \"Lenat, Douglas\": \"https://en.wikipedia.org/wiki/Douglas_Lenat\",\n", - " \"Logic Theorist\": \"https://en.wikipedia.org/wiki/Logic_Theorist\",\n", - " \"Loss functions\": \"https://en.wikipedia.org/wiki/Loss_functions_for_classification\",\n", - " \"Lotfi A. Zadeh\": \"https://en.wikipedia.org/wiki/Lotfi_A._Zadeh\",\n", - " \"MIT AIL (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMIT_AIL2014\",\n", - " \"Machine ethics\": \"https://en.wikipedia.org/wiki/Machine_ethics\",\n", - " \"Machine vision\": \"https://en.wikipedia.org/wiki/Glossary_of_machine_vision\",\n", - " \"Mahdawi (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMahdawi2017\",\n", - " \"Manfred Clynes\": \"https://en.wikipedia.org/wiki/Manfred_Clynes\",\n", - " \"Margaret Boden\": \"https://en.wikipedia.org/wiki/Margaret_Boden\",\n", - " \"McCarthy, John\": \"https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)\",\n", - " \"McGarry (2005)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcGarry2005\",\n", - " \"Mental process\": \"https://en.wikipedia.org/wiki/Template:Mental_processes\",\n", - " \"Meta Platforms\": \"https://en.wikipedia.org/wiki/Meta_Platforms\",\n", - " \"Mill's Methods\": \"https://en.wikipedia.org/wiki/Mill%27s_Methods\",\n", - " \"Mind uploading\": \"https://en.wikipedia.org/wiki/Mind_uploading\",\n", - " \"Minsky, Marvin\": \"https://en.wikipedia.org/wiki/Marvin_Minsky\",\n", - " \"Moravec (1988)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMoravec1988\",\n", - " \"Multithreading\": \"https://en.wikipedia.org/wiki/Multithreading_(computer_architecture)\",\n", - " \"Nanotechnology\": \"https://en.wikipedia.org/wiki/Glossary_of_nanotechnology\",\n", - " \"Na\\u00efve realism\": \"https://en.wikipedia.org/wiki/Na%C3%AFve_realism\",\n", - " \"Neuroevolution\": \"https://en.wikipedia.org/wiki/Neuroevolution\",\n", - " \"Neutral monism\": \"https://en.wikipedia.org/wiki/Neutral_monism\",\n", - " \"Newquist (1994\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNewquist1994\",\n", - " \"Niklas Luhmann\": \"https://en.wikipedia.org/wiki/Niklas_Luhmann\",\n", - " \"Nilsson (1983)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNilsson1983\",\n", - " \"Nilsson (1995)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNilsson1995\",\n", - " \"Nilsson (1998)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNilsson1998\",\n", - " \"Norbert Wiener\": \"https://en.wikipedia.org/wiki/Norbert_Wiener\",\n", - " \"Oudeyer (2010)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFOudeyer2010\",\n", - " \"Permanent link\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&oldid=1274941297\",\n", - " \"Philip K. Dick\": \"https://en.wikipedia.org/wiki/Philip_K._Dick\",\n", - " \"Pinker, Steven\": \"https://en.wikipedia.org/wiki/Steven_Pinker\",\n", - " \"Plattd\\u00fc\\u00fctsch\": \"https://nds.wikipedia.org/wiki/K%C3%BCnstlike_Intelligenz\",\n", - " \"Privacy Policy\": \"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy\",\n", - " \"Privacy policy\": \"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy\",\n", - " \"Q\\u0131r\\u0131mtatarca\": \"https://crh.wikipedia.org/wiki/Suniy_zek%C3%A2\",\n", - " \"Random article\": \"https://en.wikipedia.org/wiki/Special:Random\",\n", - " \"Ray Solomonoff\": \"https://en.wikipedia.org/wiki/Ray_Solomonoff\",\n", - " \"Recent changes\": \"https://en.wikipedia.org/wiki/Special:RecentChanges\",\n", - " \"Regularization\": \"https://en.wikipedia.org/wiki/Regularization_(mathematics)\",\n", - " \"Reisner (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFReisner2023\",\n", - " \"Roberts (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRoberts2016\",\n", - " \"Rothman (2020)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRothman2020\",\n", - " \"Rudolf Steiner\": \"https://en.wikipedia.org/wiki/Rudolf_Steiner\",\n", - " \"Russell (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRussell2019\",\n", - " \"S-shaped curve\": \"https://en.wikipedia.org/wiki/S-shaped_curve\",\n", - " \"Sainato (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSainato2015\",\n", - " \"Science portal\": \"https://en.wikipedia.org/wiki/Portal:Science\",\n", - " \"Scientific law\": \"https://en.wikipedia.org/wiki/Scientific_law\",\n", - " \"Seymour Papert\": \"https://en.wikipedia.org/wiki/Seymour_Papert\",\n", - " \"Simple English\": \"https://simple.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"Social science\": \"https://en.wikipedia.org/wiki/Philosophy_of_social_science\",\n", - " \"Soft computing\": \"https://en.wikipedia.org/wiki/Soft_computing\",\n", - " \"Solid modeling\": \"https://en.wikipedia.org/wiki/Solid_modeling\",\n", - " \"Space and time\": \"https://en.wikipedia.org/wiki/Philosophy_of_space_and_time\",\n", - " \"Space fountain\": \"https://en.wikipedia.org/wiki/Space_fountain\",\n", - " \"Stuart Dreyfus\": \"https://en.wikipedia.org/wiki/Stuart_Dreyfus\",\n", - " \"Stuart Russell\": \"https://en.wikipedia.org/wiki/Stuart_J._Russell\",\n", - " \"Stuart Umpleby\": \"https://en.wikipedia.org/wiki/Stuart_Umpleby\",\n", - " \"Terrainability\": \"https://en.wikipedia.org/wiki/Terrainability\",\n", - " \"Terry Winograd\": \"https://en.wikipedia.org/wiki/Terry_Winograd\",\n", - " \"The New Yorker\": \"https://en.wikipedia.org/wiki/The_New_Yorker\",\n", - " \"The Terminator\": \"https://en.wikipedia.org/wiki/The_Terminator\",\n", - " \"Theory of mind\": \"https://en.wikipedia.org/wiki/Theory_of_mind\",\n", - " \"Thomas Aquinas\": \"https://en.wikipedia.org/wiki/Thomas_Aquinas\",\n", - " \"Ti\\u1ebfng Vi\\u1ec7t\": \"https://vi.wikipedia.org/wiki/Tr%C3%AD_tu%E1%BB%87_nh%C3%A2n_t%E1%BA%A1o\",\n", - " \"Uncanny valley\": \"https://en.wikipedia.org/wiki/Uncanny_valley\",\n", - " \"United Nations\": \"https://en.wikipedia.org/wiki/United_Nations\",\n", - " \"Valance (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFValance2023\",\n", - " \"Verity Harding\": \"https://en.wikipedia.org/wiki/Verity_Harding\",\n", - " \"Vincent (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFVincent2019\",\n", - " \"Vincent (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFVincent2022\",\n", - " \"Vincent (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFVincent2023\",\n", - " \"W. V. O. Quine\": \"https://en.wikipedia.org/wiki/Willard_Van_Orman_Quine\",\n", - " \"Waddell (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWaddell2018\",\n", - " \"Wallach (2010)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWallach2010\",\n", - " \"Word embedding\": \"https://en.wikipedia.org/wiki/Word_embedding\",\n", - " \"World Pensions\": \"https://en.wikipedia.org/wiki/World_Pensions_%26_Investments_Forum\",\n", - " \"World Wide Web\": \"https://en.wikipedia.org/wiki/World_Wide_Web\",\n", - " \"classification\": \"https://en.wikipedia.org/wiki/Statistical_classification\",\n", - " \"corpus of text\": \"https://en.wikipedia.org/wiki/Corpus_of_text\",\n", - " \"discrimination\": \"https://en.wikipedia.org/wiki/Discrimination\",\n", - " \"energy storage\": \"https://en.wikipedia.org/wiki/Energy_storage\",\n", - " \"event calculus\": \"https://en.wikipedia.org/wiki/Event_calculus\",\n", - " \"expert systems\": \"https://en.wikipedia.org/wiki/Expert_system\",\n", - " \"explainable AI\": \"https://en.wikipedia.org/wiki/Explainable_AI\",\n", - " \"filter bubbles\": \"https://en.wikipedia.org/wiki/Filter_bubbles\",\n", - " \"foreign policy\": \"https://en.wikipedia.org/wiki/Foreign_policy\",\n", - " \"hallucinations\": \"https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)\",\n", - " \"image labeling\": \"https://en.wikipedia.org/wiki/Image_labeling\",\n", - " \"knowledge base\": \"https://en.wikipedia.org/wiki/Knowledge_base\",\n", - " \"mental objects\": \"https://en.wikipedia.org/wiki/Mental_objects\",\n", - " \"misinformation\": \"https://en.wikipedia.org/wiki/Misinformation\",\n", - " \"necessary evil\": \"https://en.wikipedia.org/wiki/Necessary_evil\",\n", - " \"rational agent\": \"https://en.wikipedia.org/wiki/Rational_agent\",\n", - " \"search engines\": \"https://en.wikipedia.org/wiki/Search_engines\",\n", - " \"self-awareness\": \"https://en.wikipedia.org/wiki/Self-awareness\",\n", - " \"strategy games\": \"https://en.wikipedia.org/wiki/Strategy_game\",\n", - " \"tech companies\": \"https://en.wikipedia.org/wiki/Tech_company\",\n", - " \"word embedding\": \"https://en.wikipedia.org/wiki/Word_embedding\",\n", - " \"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\": \"https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u0427\\u04d1\\u0432\\u0430\\u0448\\u043b\\u0430\": \"https://cv.wikipedia.org/wiki/%D0%AE%D1%80%D0%B8%D0%BB%D0%BBe_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u049a\\u0430\\u0437\\u0430\\u049b\\u0448\\u0430\": \"https://kk.wikipedia.org/wiki/%D0%96%D0%B0%D1%81%D0%B0%D0%BD%D0%B4%D1%8B_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u0540\\u0561\\u0575\\u0565\\u0580\\u0565\\u0576\": \"https://hy.wikipedia.org/wiki/%D4%B1%D6%80%D5%B0%D5%A5%D5%BD%D5%BF%D5%A1%D5%AF%D5%A1%D5%B6_%D5%A2%D5%A1%D5%B6%D5%A1%D5%AF%D5%A1%D5%B6%D5%B8%D6%82%D5%A9%D5%B5%D5%B8%D6%82%D5%B6\",\n", - " \"\\u0627\\u0644\\u062f\\u0627\\u0631\\u062c\\u0629\": \"https://ary.wikipedia.org/wiki/%D8%AF%D9%83%D8%A7_%D8%B5%D8%B7%D9%8A%D9%86%D8%A7%D8%B9%D9%8A\",\n", - " \"\\u0627\\u0644\\u0639\\u0631\\u0628\\u064a\\u0629\": \"https://ar.wikipedia.org/wiki/%D8%B0%D9%83%D8%A7%D8%A1_%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A\",\n", - " \"\\\"Deep Learning\\\"\": \"https://www.researchgate.net/publication/230690795\",\n", - " \"\\\"Deep learning\\\"\": \"https://www.nature.com/articles/nature14539\",\n", - " \"\\\"Fox News Poll\\\"\": \"https://static.foxnews.com/foxnews.com/content/uploads/2023/05/Fox_April-21-24-2023_Complete_National_Topline_May-1-Release.pdf\",\n", - " \"10.1.1.103.8362\": \"https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.8362\",\n", - " \"10.1.1.588.7539\": \"https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.588.7539\",\n", - " \"10.1145/3479609\": \"https://doi.org/10.1145%2F3479609\",\n", - " \"10.1145/3631414\": \"https://doi.org/10.1145%2F3631414\",\n", - " \"3.3 Mathematics\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Mathematics\",\n", - " \"4.3 Open source\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Open_source\",\n", - " \"7.3 Decomputing\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Decomputing\",\n", - " \"AI Seoul Summit\": \"https://en.wikipedia.org/wiki/AI_Seoul_Summit\",\n", - " \"AI competitions\": \"https://en.wikipedia.org/wiki/Competitions_and_prizes_in_artificial_intelligence\",\n", - " \"About Wikipedia\": \"https://en.wikipedia.org/wiki/Wikipedia:About\",\n", - " \"Abstract object\": \"https://en.wikipedia.org/wiki/Abstract_and_concrete\",\n", - " \"Alex Krizhevsky\": \"https://en.wikipedia.org/wiki/Alex_Krizhevsky\",\n", - " \"Alexey Lyapunov\": \"https://en.wikipedia.org/wiki/Alexey_Lyapunov\",\n", - " \"Allenna Leonard\": \"https://en.wikipedia.org/wiki/Allenna_Leonard\",\n", - " \"Amazon Robotics\": \"https://en.wikipedia.org/wiki/Amazon_Robotics\",\n", - " \"Anderson (2008)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAnderson2008\",\n", - " \"Andrej Karpathy\": \"https://en.wikipedia.org/wiki/Andrej_Karpathy\",\n", - " \"Anthropomorphic\": \"https://en.wikipedia.org/wiki/Anthropomorphic\",\n", - " \"Arabic toponyms\": \"https://en.wikipedia.org/wiki/Glossary_of_Arabic_toponyms\",\n", - " \"Artificial life\": \"https://en.wikipedia.org/wiki/Artificial_life\",\n", - " \"Automata theory\": \"https://en.wikipedia.org/wiki/Automata_theory\",\n", - " \"Autor, David H.\": \"https://en.wikipedia.org/wiki/David_Autor\",\n", - " \"Backpropagation\": \"https://en.wikipedia.org/wiki/Backpropagation\",\n", - " \"Boston Dynamics\": \"https://en.wikipedia.org/wiki/Boston_Dynamics\",\n", - " \"Brian Christian\": \"https://en.wikipedia.org/wiki/Brian_Christian\",\n", - " \"Bushwick (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBushwick2023\",\n", - " \"Buttazzo (2001)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFButtazzo2001\",\n", - " \"Carnegie Mellon\": \"https://en.wikipedia.org/wiki/Carnegie_Mellon\",\n", - " \"Causal calculus\": \"https://en.wikipedia.org/wiki/Causality#Causal_calculus\",\n", - " \"Chalmers (1995)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFChalmers1995\",\n", - " \"Chalmers, David\": \"https://en.wikipedia.org/wiki/David_Chalmers\",\n", - " \"Chinmayi Sharma\": \"https://en.wikipedia.org/w/index.php?title=Chinmayi_Sharma&action=edit&redlink=1\",\n", - " \"Christian (2020\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFChristian2020\",\n", - " \"Circumscription\": \"https://en.wikipedia.org/wiki/Circumscription_(logic)\",\n", - " \"Code of Conduct\": \"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct\",\n", - " \"Computer vision\": \"https://en.wikipedia.org/wiki/Computer_vision\",\n", - " \"Continuum robot\": \"https://en.wikipedia.org/wiki/Continuum_robot\",\n", - " \"Control problem\": \"https://en.wikipedia.org/wiki/AI_control_problem\",\n", - " \"Conventionalism\": \"https://en.wikipedia.org/wiki/Conventionalism\",\n", - " \"Crevier, Daniel\": \"https://en.wikipedia.org/wiki/Daniel_Crevier\",\n", - " \"Cukier, Kenneth\": \"https://en.wikipedia.org/wiki/Kenneth_Cukier\",\n", - " \"Decision theory\": \"https://en.wikipedia.org/wiki/Decision_theory\",\n", - " \"Dennett, Daniel\": \"https://en.wikipedia.org/wiki/Daniel_Dennett\",\n", - " \"Digital library\": \"https://en.wikipedia.org/wiki/Digital_library\",\n", - " \"Dockrill (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDockrill2022\",\n", - " \"Domingos (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDomingos2015\",\n", - " \"Domingos, Pedro\": \"https://en.wikipedia.org/wiki/Pedro_Domingos\",\n", - " \"Donald Davidson\": \"https://en.wikipedia.org/wiki/Donald_Davidson_(philosopher)\",\n", - " \"Doosan Robotics\": \"https://en.wikipedia.org/wiki/Doosan_Robotics\",\n", - " \"Download as PDF\": \"https://en.wikipedia.org/w/index.php?title=Special:DownloadAsPdf&page=Artificial_intelligence&action=show-download-screen\",\n", - " \"Dreyfus, Hubert\": \"https://en.wikipedia.org/wiki/Hubert_Dreyfus\",\n", - " \"Embedded system\": \"https://en.wikipedia.org/wiki/Embedded_system\",\n", - " \"Erich von Holst\": \"https://en.wikipedia.org/wiki/Erich_von_Holst\",\n", - " \"Feminist method\": \"https://en.wikipedia.org/wiki/Feminist_method\",\n", - " \"Foreign Affairs\": \"https://en.wikipedia.org/wiki/Foreign_Affairs\",\n", - " \"Formal language\": \"https://en.wikipedia.org/wiki/Formal_language\",\n", - " \"Formal sciences\": \"https://en.wikipedia.org/wiki/Category:Formal_sciences\",\n", - " \"Foundationalism\": \"https://en.wikipedia.org/wiki/Foundationalism\",\n", - " \"Fox News (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFFox_News2023\",\n", - " \"Frederic Vester\": \"https://en.wikipedia.org/wiki/Frederic_Vester\",\n", - " \"Galileo Galilei\": \"https://en.wikipedia.org/wiki/Galileo_Galilei\",\n", - " \"Geoffrey Hinton\": \"https://en.wikipedia.org/wiki/Geoffrey_Hinton\",\n", - " \"George Berkeley\": \"https://en.wikipedia.org/wiki/George_Berkeley\",\n", - " \"Google DeepMind\": \"https://en.wikipedia.org/wiki/Google_DeepMind\",\n", - " \"Gordon S. Brown\": \"https://en.wikipedia.org/wiki/Gordon_S._Brown\",\n", - " \"Gregory Bateson\": \"https://en.wikipedia.org/wiki/Gregory_Bateson\",\n", - " \"Haugeland (1985\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHaugeland1985\",\n", - " \"Haugeland, John\": \"https://en.wikipedia.org/wiki/John_Haugeland\",\n", - " \"Hebrew toponyms\": \"https://en.wikipedia.org/wiki/Glossary_of_Hebrew_toponyms\",\n", - " \"Henri Poincar\\u00e9\": \"https://en.wikipedia.org/wiki/Henri_Poincar%C3%A9\",\n", - " \"Henry J. Kelley\": \"https://en.wikipedia.org/wiki/Henry_J._Kelley\",\n", - " \"Henry Kissinger\": \"https://en.wikipedia.org/wiki/Henry_Kissinger\",\n", - " \"Highway network\": \"https://en.wikipedia.org/wiki/Highway_network\",\n", - " \"Igor Aleksander\": \"https://en.wikipedia.org/wiki/Igor_Aleksander\",\n", - " \"Instrumentalism\": \"https://en.wikipedia.org/wiki/Instrumentalism\",\n", - " \"Jason Jixuan Hu\": \"https://en.wikipedia.org/wiki/Jason_Jixuan_Hu\",\n", - " \"Jump to content\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#bodyContent\",\n", - " \"Kahneman (2011)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKahneman2011\",\n", - " \"Kobielus (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKobielus2019\",\n", - " \"Krey\\u00f2l ayisyen\": \"https://ht.wikipedia.org/wiki/Ent%C3%A8lijans_atifisy%C3%A8l\",\n", - " \"Kurzweil (2005)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKurzweil2005\",\n", - " \"Lipartito (2011\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLipartito2011\",\n", - " \"L\\u00ebtzebuergesch\": \"https://lb.wikipedia.org/wiki/K%C3%ABnschtlech_Intelligenz\",\n", - " \"Mackworth, Alan\": \"https://en.wikipedia.org/wiki/Alan_Mackworth\",\n", - " \"Madrigal (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMadrigal2015\",\n", - " \"McCarthy (1999)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCarthy1999\",\n", - " \"McCarthy (2007)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCarthy2007\",\n", - " \"McCauley (2007)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCauley2007\",\n", - " \"McCorduck (2004\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCorduck2004\",\n", - " \"McKinsey (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcKinsey2018\",\n", - " \"Mental property\": \"https://en.wikipedia.org/wiki/Mental_state\",\n", - " \"Michael Polanyi\": \"https://en.wikipedia.org/wiki/Michael_Polanyi\",\n", - " \"Motion planning\": \"https://en.wikipedia.org/wiki/Motion_planning\",\n", - " \"Multiprocessing\": \"https://en.wikipedia.org/wiki/Multiprocessing\",\n", - " \"Network service\": \"https://en.wikipedia.org/wiki/Network_service\",\n", - " \"Neural networks\": \"https://en.wikipedia.org/wiki/Artificial_neural_network\",\n", - " \"Newquist (1994)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNewquist1994\",\n", - " \"Newquist, H. P.\": \"https://en.wikipedia.org/wiki/HP_Newquist\",\n", - " \"Non-parameteric\": \"https://en.wikipedia.org/wiki/Nonparametric_statistics\",\n", - " \"Paul Christiano\": \"https://en.wikipedia.org/wiki/Paul_Christiano_(researcher)\",\n", - " \"Paul Churchland\": \"https://en.wikipedia.org/wiki/Paul_Churchland\",\n", - " \"Paul Feyerabend\": \"https://en.wikipedia.org/wiki/Paul_Feyerabend\",\n", - " \"Policy gradient\": \"https://en.wikipedia.org/wiki/Policy_gradient_method\",\n", - " \"Project Debater\": \"https://en.wikipedia.org/wiki/Project_Debater\",\n", - " \"Related changes\": \"https://en.wikipedia.org/wiki/Special:RecentChangesLinked/Artificial_intelligence\",\n", - " \"Ren\\u00e9 Descartes\": \"https://en.wikipedia.org/wiki/Ren%C3%A9_Descartes\",\n", - " \"Robert Ettinger\": \"https://en.wikipedia.org/wiki/Robert_Ettinger\",\n", - " \"Russell, Stuart\": \"https://en.wikipedia.org/wiki/Stuart_J._Russell\",\n", - " \"Schmidhuber, J.\": \"https://en.wikipedia.org/wiki/J%C3%BCrgen_Schmidhuber\",\n", - " \"Science studies\": \"https://en.wikipedia.org/wiki/Science_studies\",\n", - " \"Scott Alexander\": \"https://en.wikipedia.org/wiki/Slate_Star_Codex\",\n", - " \"Security hacker\": \"https://en.wikipedia.org/wiki/Security_hacker\",\n", - " \"Shannon, Claude\": \"https://en.wikipedia.org/wiki/Claude_Shannon\",\n", - " \"Shun-Ichi Amari\": \"https://en.wikipedia.org/wiki/Shun-Ichi_Amari\",\n", - " \"Simonite (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSimonite2016\",\n", - " \"Software design\": \"https://en.wikipedia.org/wiki/Software_design\",\n", - " \"Solomonoff, Ray\": \"https://en.wikipedia.org/wiki/Ray_Solomonoff\",\n", - " \"Stephen Hawking\": \"https://en.wikipedia.org/wiki/Stephen_Hawking\",\n", - " \"Steve Omohundro\": \"https://en.wikipedia.org/wiki/Steve_Omohundro\",\n", - " \"Stuart Kauffman\": \"https://en.wikipedia.org/wiki/Stuart_Kauffman\",\n", - " \"Suffering risks\": \"https://en.wikipedia.org/wiki/Risk_of_astronomical_suffering\",\n", - " \"Sutskever, Ilya\": \"https://en.wikipedia.org/wiki/Ilya_Sutskever\",\n", - " \"Talcott Parsons\": \"https://en.wikipedia.org/wiki/Talcott_Parsons\",\n", - " \"Thompson (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFThompson2014\",\n", - " \"Turing complete\": \"https://en.wikipedia.org/wiki/Turing_complete\",\n", - " \"Valinsky (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFValinsky2019\",\n", - " \"Vaswani, Ashish\": \"https://en.wikipedia.org/wiki/Ashish_Vaswani\",\n", - " \"Verificationism\": \"https://en.wikipedia.org/wiki/Verificationism\",\n", - " \"Virtual machine\": \"https://en.wikipedia.org/wiki/Virtual_machine\",\n", - " \"Visual odometry\": \"https://en.wikipedia.org/wiki/Visual_odometry\",\n", - " \"Wayback Machine\": \"https://en.wikipedia.org/wiki/Wayback_Machine\",\n", - " \"Wendell Wallach\": \"https://en.wikipedia.org/wiki/Wendell_Wallach\",\n", - " \"What links here\": \"https://en.wikipedia.org/wiki/Special:WhatLinksHere/Artificial_intelligence\",\n", - " \"Wilfrid Sellars\": \"https://en.wikipedia.org/wiki/Wilfrid_Sellars\",\n", - " \"Williams (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWilliams2023\",\n", - " \"Word processing\": \"https://en.wikipedia.org/wiki/Word_processor\",\n", - " \"alpha-synuclein\": \"https://en.wikipedia.org/wiki/Alpha-synuclein\",\n", - " \"backpropagation\": \"https://en.wikipedia.org/wiki/Backpropagation\",\n", - " \"circumscription\": \"https://en.wikipedia.org/wiki/Circumscription_(logic)\",\n", - " \"citation needed\": \"https://en.wikipedia.org/wiki/Wikipedia:Citation_needed\",\n", - " \"cloud computing\": \"https://en.wikipedia.org/wiki/Cloud_computing\",\n", - " \"computer vision\": \"https://en.wikipedia.org/wiki/Computer_vision\",\n", - " \"decision theory\": \"https://en.wikipedia.org/wiki/Decision_theory\",\n", - " \"defeated Ke Jie\": \"https://en.wikipedia.org/wiki/AlphaGo_versus_Ke_Jie\",\n", - " \"digital warfare\": \"https://en.wikipedia.org/wiki/Digital_warfare\",\n", - " \"factory farming\": \"https://en.wikipedia.org/wiki/Factory_farming\",\n", - " \"fluent calculus\": \"https://en.wikipedia.org/wiki/Fluent_calculus\",\n", - " \"inference rules\": \"https://en.wikipedia.org/wiki/Inference_rule\",\n", - " \"neural networks\": \"https://en.wikipedia.org/wiki/Artificial_neural_network\",\n", - " \"object tracking\": \"https://en.wikipedia.org/wiki/Motion_capture\",\n", - " \"predicate logic\": \"https://en.wikipedia.org/wiki/Predicate_logic\",\n", - " \"reward function\": \"https://en.wikipedia.org/wiki/Reward_function\",\n", - " \"science fiction\": \"https://en.wikipedia.org/wiki/Science_fiction\",\n", - " \"sexual grooming\": \"https://en.wikipedia.org/wiki/Sexual_grooming\",\n", - " \"sister projects\": \"https://en.wikipedia.org/wiki/Wikipedia:Wikimedia_sister_projects\",\n", - " \"tactile sensors\": \"https://en.wikipedia.org/wiki/Tactile_sensor\",\n", - " \"\\u092e\\u0930\\u093e\\u0920\\u0940\": \"https://mr.wikipedia.org/wiki/%E0%A4%95%E0%A5%83%E0%A4%A4%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AE_%E0%A4%AC%E0%A5%81%E0%A4%A6%E0%A5%8D%E0%A4%A7%E0%A4%BF%E0%A4%AE%E0%A4%A4%E0%A5%8D%E0%A4%A4%E0%A4%BE\",\n", - " \"\\u09ac\\u09be\\u0982\\u09b2\\u09be\": \"https://bn.wikipedia.org/wiki/%E0%A6%95%E0%A7%83%E0%A6%A4%E0%A7%8D%E0%A6%B0%E0%A6%BF%E0%A6%AE_%E0%A6%AC%E0%A7%81%E0%A6%A6%E0%A7%8D%E0%A6%A7%E0%A6%BF%E0%A6%AE%E0%A6%A4%E0%A7%8D%E0%A6%A4%E0%A6%BE\",\n", - " \"\\u0b13\\u0b21\\u0b3c\\u0b3f\\u0b06\": \"https://or.wikipedia.org/wiki/%E0%AC%86%E0%AC%B0%E0%AD%8D%E0%AC%9F%E0%AC%BF%E0%AC%AB%E0%AC%BF%E0%AC%B8%E0%AC%BF%E0%AC%86%E0%AC%B2_%E0%AC%87%E0%AC%A3%E0%AD%8D%E0%AC%9F%E0%AD%87%E0%AC%B2%E0%AC%BF%E0%AC%9C%E0%AD%87%E0%AC%A8%E0%AD%8D%E0%AC%B8\",\n", - " \"\\u0ba4\\u0bae\\u0bbf\\u0bb4\\u0bcd\": \"https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AF%86%E0%AE%AF%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AF%88_%E0%AE%A8%E0%AF%81%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%B1%E0%AE%BF%E0%AE%B5%E0%AF%81\",\n", - " \"\\u0c95\\u0ca8\\u0ccd\\u0ca8\\u0ca1\": \"https://kn.wikipedia.org/wiki/%E0%B2%95%E0%B3%83%E0%B2%A4%E0%B2%95_%E0%B2%AC%E0%B3%81%E0%B2%A6%E0%B3%8D%E0%B2%A7%E0%B2%BF%E0%B2%AE%E0%B2%A4%E0%B3%8D%E0%B2%A4%E0%B3%86\",\n", - " \"\\u0dc3\\u0dd2\\u0d82\\u0dc4\\u0dbd\": \"https://si.wikipedia.org/wiki/%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%93%E0%B6%B8_%E0%B6%B6%E0%B7%94%E0%B6%AF%E0%B7%8A%E0%B6%B0%E0%B7%92%E0%B6%BA\",\n", - " \"\\\"Machine Ethics\\\"\": \"https://web.archive.org/web/20141129044821/http://www.aaai.org/Library/Symposia/Fall/fs05-06\",\n", - " \"10.1007/11573548\": \"https://doi.org/10.1007%2F11573548\",\n", - " \"10.1109/2.933500\": \"https://doi.org/10.1109%2F2.933500\",\n", - " \"AI Safety Summit\": \"https://en.wikipedia.org/wiki/AI_Safety_Summit\",\n", - " \"Action selection\": \"https://en.wikipedia.org/wiki/Action_selection\",\n", - " \"Alexander Lerner\": \"https://en.wikipedia.org/wiki/Alexander_Lerner\",\n", - " \"Algorithm design\": \"https://en.wikipedia.org/wiki/Algorithm_design\",\n", - " \"Algorithmic bias\": \"https://en.wikipedia.org/wiki/Algorithmic_bias\",\n", - " \"Arthur E. Bryson\": \"https://en.wikipedia.org/wiki/Arthur_E._Bryson\",\n", - " \"Bahasa Indonesia\": \"https://id.wikipedia.org/wiki/Akal_imitasi\",\n", - " \"Bas van Fraassen\": \"https://en.wikipedia.org/wiki/Bas_van_Fraassen\",\n", - " \"Bayesian network\": \"https://en.wikipedia.org/wiki/Bayesian_network\",\n", - " \"Berlinski, David\": \"https://en.wikipedia.org/wiki/David_Berlinski\",\n", - " \"Bertrand Russell\": \"https://en.wikipedia.org/wiki/Bertrand_Russell\",\n", - " \"Christian (2020)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFChristian2020\",\n", - " \"Christian, Brian\": \"https://en.wikipedia.org/wiki/Brian_Christian\",\n", - " \"Commensurability\": \"https://en.wikipedia.org/wiki/Commensurability_(philosophy_of_science)\",\n", - " \"Community portal\": \"https://en.wikipedia.org/wiki/Wikipedia:Community_portal\",\n", - " \"Computer science\": \"https://en.wikipedia.org/wiki/Glossary_of_computer_science\",\n", - " \"Consequentialism\": \"https://en.wikipedia.org/wiki/Consequentialism\",\n", - " \"Control variable\": \"https://en.wikipedia.org/wiki/Control_variable_(programming)\",\n", - " \"Cookie statement\": \"https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement\",\n", - " \"Critique of work\": \"https://en.wikipedia.org/wiki/Critique_of_work\",\n", - " \"Cross-validation\": \"https://en.wikipedia.org/wiki/Cross-validation_(statistics)\",\n", - " \"Cybermethodology\": \"https://en.wikipedia.org/wiki/Cybermethodology\",\n", - " \"Deng & Yu (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDengYu2014\",\n", - " \"Digital organism\": \"https://en.wikipedia.org/wiki/Digital_organism\",\n", - " \"Download QR code\": \"https://en.wikipedia.org/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FArtificial_intelligence\",\n", - " \"Ephemeralization\": \"https://en.wikipedia.org/wiki/Ephemeralization\",\n", - " \"Epiphenomenalism\": \"https://en.wikipedia.org/wiki/Epiphenomenalism\",\n", - " \"Existential risk\": \"https://en.wikipedia.org/wiki/Existential_risk_from_artificial_intelligence\",\n", - " \"Extended reality\": \"https://en.wikipedia.org/wiki/Extended_reality\",\n", - " \"Fictional robots\": \"https://en.wikipedia.org/wiki/List_of_fictional_robots_and_androids\",\n", - " \"Fitness function\": \"https://en.wikipedia.org/wiki/Fitness_function\",\n", - " \"Francisco Varela\": \"https://en.wikipedia.org/wiki/Francisco_Varela\",\n", - " \"Frank Rosenblatt\": \"https://en.wikipedia.org/wiki/Frank_Rosenblatt\",\n", - " \"Google Assistant\": \"https://en.wikipedia.org/wiki/Google_Assistant\",\n", - " \"Google Translate\": \"https://en.wikipedia.org/wiki/Google_Translate\",\n", - " \"Gradient descent\": \"https://en.wikipedia.org/wiki/Gradient_descent\",\n", - " \"Hans Reichenbach\": \"https://en.wikipedia.org/wiki/Hans_Reichenbach\",\n", - " \"Haugeland (1985)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHaugeland1985\",\n", - " \"Herbert A. Simon\": \"https://en.wikipedia.org/wiki/Herbert_A._Simon\",\n", - " \"Hippocratic Oath\": \"https://en.wikipedia.org/wiki/Hippocratic_Oath\",\n", - " \"Hippocratic oath\": \"https://en.wikipedia.org/wiki/Hippocratic_oath\",\n", - " \"Horizon scanning\": \"https://en.wikipedia.org/wiki/Horizon_scanning\",\n", - " \"Human Compatible\": \"https://en.wikipedia.org/wiki/Human_Compatible\",\n", - " \"John N. Warfield\": \"https://en.wikipedia.org/wiki/John_N._Warfield\",\n", - " \"John von Neumann\": \"https://en.wikipedia.org/wiki/John_von_Neumann\",\n", - " \"Jonathan Franzen\": \"https://en.wikipedia.org/wiki/Jonathan_Franzen\",\n", - " \"Kahneman, Daniel\": \"https://en.wikipedia.org/wiki/Daniel_Kahneman\",\n", - " \"Kissinger (2021)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKissinger2021\",\n", - " \"Kissinger, Henry\": \"https://en.wikipedia.org/wiki/Henry_Kissinger\",\n", - " \"Laskowski (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLaskowski2023\",\n", - " \"Lighthill (1973)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLighthill1973\",\n", - " \"Lighthill report\": \"https://en.wikipedia.org/wiki/Lighthill_report\",\n", - " \"Lighthill, James\": \"https://en.wikipedia.org/wiki/James_Lighthill\",\n", - " \"Machine Learning\": \"https://en.wikipedia.org/wiki/Machine_Learning_(journal)\",\n", - " \"Machine learning\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"Madhumita Murgia\": \"https://en.wikipedia.org/wiki/Madhumita_Murgia\",\n", - " \"Marmouyet (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMarmouyet2023\",\n", - " \"Martin Heidegger\": \"https://en.wikipedia.org/wiki/Martin_Heidegger\",\n", - " \"McCorduck (2004)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCorduck2004\",\n", - " \"McGaughey (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcGaughey2022\",\n", - " \"Music generation\": \"https://en.wikipedia.org/wiki/Music_and_artificial_intelligence\",\n", - " \"Network protocol\": \"https://en.wikipedia.org/wiki/Network_protocol\",\n", - " \"Network security\": \"https://en.wikipedia.org/wiki/Network_security\",\n", - " \"Neurocybernetics\": \"https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface\",\n", - " \"New mysterianism\": \"https://en.wikipedia.org/wiki/New_mysterianism\",\n", - " \"Oliver Selfridge\": \"https://en.wikipedia.org/wiki/Oliver_Selfridge\",\n", - " \"Omohundro (2008)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFOmohundro2008\",\n", - " \"Omohundro, Steve\": \"https://en.wikipedia.org/wiki/Steve_Omohundro\",\n", - " \"Operating system\": \"https://en.wikipedia.org/wiki/Operating_system\",\n", - " \"Page information\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&action=info\",\n", - " \"Programming team\": \"https://en.wikipedia.org/wiki/Programming_team\",\n", - " \"Property dualism\": \"https://en.wikipedia.org/wiki/Property_dualism\",\n", - " \"Pyotr Grigorenko\": \"https://en.wikipedia.org/wiki/Petro_Grigorenko\",\n", - " \"Racetrack memory\": \"https://en.wikipedia.org/wiki/Racetrack_memory\",\n", - " \"Rainbow Robotics\": \"https://en.wikipedia.org/wiki/Rainbow_Robotics\",\n", - " \"Rawlinson (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRawlinson2015\",\n", - " \"Representational\": \"https://en.wikipedia.org/wiki/Mental_representation\",\n", - " \"Robitzski (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRobitzski2018\",\n", - " \"Roman Yampolskiy\": \"https://en.wikipedia.org/wiki/Roman_Yampolskiy\",\n", - " \"Self-driving car\": \"https://en.wikipedia.org/wiki/Self-driving_car\",\n", - " \"Seppo Linnainmaa\": \"https://en.wikipedia.org/wiki/Seppo_Linnainmaa\",\n", - " \"Social computing\": \"https://en.wikipedia.org/wiki/Social_computing\",\n", - " \"Sociocybernetics\": \"https://en.wikipedia.org/wiki/Sociocybernetics\",\n", - " \"Software library\": \"https://en.wikipedia.org/wiki/Library_(computing)\",\n", - " \"Software quality\": \"https://en.wikipedia.org/wiki/Software_quality\",\n", - " \"Speech synthesis\": \"https://en.wikipedia.org/wiki/Deep_learning_speech_synthesis\",\n", - " \"Stable Diffusion\": \"https://en.wikipedia.org/wiki/Stable_Diffusion\",\n", - " \"TED (conference)\": \"https://en.wikipedia.org/wiki/TED_(conference)\",\n", - " \"Tao & Tan (2005)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFTaoTan2005\",\n", - " \"Type physicalism\": \"https://en.wikipedia.org/wiki/Type_physicalism\",\n", - " \"Unity of science\": \"https://en.wikipedia.org/wiki/Unity_of_science\",\n", - " \"Unmanned vehicle\": \"https://en.wikipedia.org/wiki/Unmanned_vehicle\",\n", - " \"Valentin Turchin\": \"https://en.wikipedia.org/wiki/Valentin_Turchin\",\n", - " \"Vincent van Gogh\": \"https://en.wikipedia.org/wiki/Vincent_van_Gogh\",\n", - " \"Warren McCulloch\": \"https://en.wikipedia.org/wiki/Warren_Sturgis_McCulloch\",\n", - " \"Wetware computer\": \"https://en.wikipedia.org/wiki/Wetware_computer\",\n", - " \"Winston, Patrick\": \"https://en.wikipedia.org/wiki/Patrick_Winston\",\n", - " \"Yudkowsky (2008)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFYudkowsky2008\",\n", - " \"advanced spyware\": \"https://en.wikipedia.org/wiki/Spyware\",\n", - " \"algorithmic bias\": \"https://en.wikipedia.org/wiki/Algorithmic_bias\",\n", - " \"anthropomorphise\": \"https://en.wikipedia.org/wiki/Anthropomorphise\",\n", - " \"campaign finance\": \"https://en.wikipedia.org/wiki/Campaign_finance\",\n", - " \"cluster analysis\": \"https://en.wikipedia.org/wiki/Cluster_analysis\",\n", - " \"computer science\": \"https://en.wikipedia.org/wiki/Computer_science\",\n", - " \"computer systems\": \"https://en.wikipedia.org/wiki/Computer\",\n", - " \"curated datasets\": \"https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research\",\n", - " \"data aggregation\": \"https://en.wikipedia.org/wiki/Data_aggregation\",\n", - " \"expected utility\": \"https://en.wikipedia.org/wiki/Expected_utility\",\n", - " \"faster computers\": \"https://en.wikipedia.org/wiki/Moore%27s_law\",\n", - " \"gradient descent\": \"https://en.wikipedia.org/wiki/Gradient_descent\",\n", - " \"image processing\": \"https://en.wikipedia.org/wiki/Image_processing\",\n", - " \"internet traffic\": \"https://en.wikipedia.org/wiki/Internet_traffic\",\n", - " \"latent variables\": \"https://en.wikipedia.org/wiki/Latent_variables\",\n", - " \"logical theorems\": \"https://en.wikipedia.org/wiki/Theorem\",\n", - " \"machine learning\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"mechanism design\": \"https://en.wikipedia.org/wiki/Mechanism_design\",\n", - " \"medical licenses\": \"https://en.wikipedia.org/wiki/Medical_license\",\n", - " \"medical research\": \"https://en.wikipedia.org/wiki/Medical_research\",\n", - " \"moral blind spot\": \"https://en.wikipedia.org/wiki/Moral_blindness\",\n", - " \"pattern matching\": \"https://en.wikipedia.org/wiki/Pattern_matching\",\n", - " \"right to privacy\": \"https://en.wikipedia.org/wiki/Right_to_privacy\",\n", - " \"speech synthesis\": \"https://en.wikipedia.org/wiki/Speech_synthesis\",\n", - " \"three principles\": \"https://en.wikipedia.org/wiki/Human_Compatible#Russell's_three_principles\",\n", - " \"transition model\": \"https://en.wikipedia.org/wiki/Finite-state_machine\",\n", - " \"\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\": \"https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%87%CE%BD%CE%B7%CF%84%CE%AE_%CE%BD%CE%BF%CE%B7%CE%BC%CE%BF%CF%83%CF%8D%CE%BD%CE%B7\",\n", - " \"\\u041a\\u044b\\u0440\\u0433\\u044b\\u0437\\u0447\\u0430\": \"https://ky.wikipedia.org/wiki/%D0%96%D0%B0%D1%81%D0%B0%D0%BB%D0%BC%D0%B0_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"10.1109/93.311653\": \"https://doi.org/10.1109%2F93.311653\",\n", - " \"11.1 AI textbooks\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#AI_textbooks\",\n", - " \"13 External links\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#External_links\",\n", - " \"2.6 Deep learning\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Deep_learning\",\n", - " \"3.6 Generative AI\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Generative_AI\",\n", - " \"7.2 Transhumanism\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Transhumanism\",\n", - " \"978-0-0290-8060-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-0290-8060-3\",\n", - " \"978-0-0601-1082-6\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-0601-1082-6\",\n", - " \"978-0-0613-3646-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-0613-3646-1\",\n", - " \"978-0-0700-8770-5\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-0700-8770-5\",\n", - " \"978-0-1282-4073-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-1282-4073-1\",\n", - " \"978-0-1346-1099-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-1346-1099-3\",\n", - " \"978-0-1560-1391-8\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-1560-1391-8\",\n", - " \"978-0-1951-0270-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-1951-0270-3\",\n", - " \"978-0-2015-1752-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-2015-1752-1\",\n", - " \"978-0-2620-8153-5\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-2620-8153-5\",\n", - " \"978-0-3742-5783-5\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-3742-5783-5\",\n", - " \"978-0-3938-6833-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-3938-6833-3\",\n", - " \"978-0-4650-4521-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-4650-4521-1\",\n", - " \"978-0-4650-6570-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-4650-6570-7\",\n", - " \"978-0-5212-8414-1\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-5212-8414-1\",\n", - " \"978-0-5218-7628-5\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-5218-7628-5\",\n", - " \"978-0-5255-5861-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-5255-5861-3\",\n", - " \"978-0-6700-3384-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-6700-3384-3\",\n", - " \"978-0-6723-0412-5\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-6723-0412-5\",\n", - " \"978-0-6745-7616-2\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-6745-7616-2\",\n", - " \"978-0-7139-9037-9\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-7139-9037-9\",\n", - " \"978-0-7382-0030-9\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-7382-0030-9\",\n", - " \"978-0-7910-0464-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-7910-0464-7\",\n", - " \"978-0-8021-1839-4\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-8021-1839-4\",\n", - " \"978-0-8053-4780-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-8053-4780-7\",\n", - " \"978-0-8160-2628-9\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-0-8160-2628-9\",\n", - " \"978-1-0092-5819-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-0092-5819-7\",\n", - " \"978-1-1071-9539-4\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-1071-9539-4\",\n", - " \"978-1-4299-6935-2\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-4299-6935-2\",\n", - " \"978-1-4356-4787-9\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-4356-4787-9\",\n", - " \"978-1-4614-6940-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-4614-6940-7\",\n", - " \"978-1-4673-1228-8\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-4673-1228-8\",\n", - " \"978-1-5586-0467-4\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-5586-0467-4\",\n", - " \"978-1-7864-3904-8\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-1-7864-3904-8\",\n", - " \"978-3-3195-8486-7\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-3-3195-8486-7\",\n", - " \"978-3-5402-3733-4\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-3-5402-3733-4\",\n", - " \"978-3-5402-9621-8\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-3-5402-9621-8\",\n", - " \"978-8-8947-8760-3\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-8-8947-8760-3\",\n", - " \"978-9-2310-0450-6\": \"https://en.wikipedia.org/wiki/Special:BookSources/978-9-2310-0450-6\",\n", - " \"AI & ML in Fusion\": \"https://suli.pppl.gov/2023/course/Rea-PPPL-SULI2023.pdf\",\n", - " \"Alexey Ivakhnenko\": \"https://en.wikipedia.org/wiki/Alexey_Ivakhnenko\",\n", - " \"Bayesian learning\": \"https://en.wikipedia.org/wiki/Bayesian_learning\",\n", - " \"Bayesian networks\": \"https://en.wikipedia.org/wiki/Bayesian_network\",\n", - " \"Charles Fran\\u00e7ois\": \"https://en.wikipedia.org/wiki/Charles_Fran%C3%A7ois_(systems_scientist)\",\n", - " \"Civil engineering\": \"https://en.wikipedia.org/wiki/Glossary_of_civil_engineering\",\n", - " \"Clinical research\": \"https://en.wikipedia.org/wiki/Glossary_of_clinical_research\",\n", - " \"Cognitive closure\": \"https://en.wikipedia.org/wiki/Cognitive_closure_(philosophy)\",\n", - " \"Computer hardware\": \"https://en.wikipedia.org/wiki/Glossary_of_computer_hardware_terms\",\n", - " \"Contact Wikipedia\": \"https://en.wikipedia.org/wiki/Wikipedia:Contact_us\",\n", - " \"Council of Europe\": \"https://en.wikipedia.org/wiki/Council_of_Europe\",\n", - " \"Dartmouth College\": \"https://en.wikipedia.org/wiki/Dartmouth_College\",\n", - " \"Default reasoning\": \"https://en.wikipedia.org/wiki/Default_reasoning\",\n", - " \"Digital marketing\": \"https://en.wikipedia.org/wiki/Digital_marketing\",\n", - " \"Electric unicycle\": \"https://en.wikipedia.org/wiki/Electric_unicycle\",\n", - " \"Electronic voting\": \"https://en.wikipedia.org/wiki/Electronic_voting\",\n", - " \"Eliezer Yudkowsky\": \"https://en.wikipedia.org/wiki/Eliezer_Yudkowsky\",\n", - " \"Explanatory power\": \"https://en.wikipedia.org/wiki/Explanatory_power\",\n", - " \"Firefly algorithm\": \"https://en.wikipedia.org/wiki/Firefly_algorithm\",\n", - " \"First-order logic\": \"https://en.wikipedia.org/wiki/First-order_logic\",\n", - " \"Fitness landscape\": \"https://en.wikipedia.org/wiki/Fitness_landscape\",\n", - " \"Francis Heylighen\": \"https://en.wikipedia.org/wiki/Francis_Heylighen\",\n", - " \"G. E. M. Anscombe\": \"https://en.wikipedia.org/wiki/G._E._M._Anscombe\",\n", - " \"Genetic algorithm\": \"https://en.wikipedia.org/wiki/Genetic_algorithm\",\n", - " \"Genetic operators\": \"https://en.wikipedia.org/wiki/Genetic_operators\",\n", - " \"Get shortened URL\": \"https://en.wikipedia.org/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FArtificial_intelligence\",\n", - " \"Hardware security\": \"https://en.wikipedia.org/wiki/Hardware_security\",\n", - " \"Honeybee Robotics\": \"https://en.wikipedia.org/wiki/Honeybee_Robotics\",\n", - " \"Humberto Maturana\": \"https://en.wikipedia.org/wiki/Humberto_Maturana\",\n", - " \"Image compression\": \"https://en.wikipedia.org/wiki/Image_compression\",\n", - " \"Immerwahr, Daniel\": \"https://en.wikipedia.org/wiki/Immerwahr,_Daniel\",\n", - " \"Intelligent agent\": \"https://en.wikipedia.org/wiki/Intelligent_agent\",\n", - " \"Joseph Weizenbaum\": \"https://en.wikipedia.org/wiki/Joseph_Weizenbaum\",\n", - " \"Kriy\\u00f2l gwiyannen\": \"https://gcr.wikipedia.org/wiki/Ent%C3%A9lijans_artifisy%C3%A8l\",\n", - " \"Logical inference\": \"https://en.wikipedia.org/wiki/Logical_inference\",\n", - " \"McCorduck, Pamela\": \"https://en.wikipedia.org/wiki/Pamela_McCorduck\",\n", - " \"Memetic algorithm\": \"https://en.wikipedia.org/wiki/Memetic_algorithm\",\n", - " \"Modeling language\": \"https://en.wikipedia.org/wiki/Modeling_language\",\n", - " \"Moravec's paradox\": \"https://en.wikipedia.org/wiki/Moravec%27s_paradox\",\n", - " \"Network scheduler\": \"https://en.wikipedia.org/wiki/Network_scheduler\",\n", - " \"Normative science\": \"https://en.wikipedia.org/wiki/Normative_science\",\n", - " \"Open-source model\": \"https://en.wikipedia.org/wiki/Open-source_software\",\n", - " \"Optical computing\": \"https://en.wikipedia.org/wiki/Optical_computing\",\n", - " \"Palisades Nuclear\": \"https://en.wikipedia.org/wiki/Palisades_Nuclear_Generating_Station\",\n", - " \"Philosophy portal\": \"https://en.wikipedia.org/wiki/Portal:Philosophy\",\n", - " \"Printable version\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&printable=yes\",\n", - " \"Program synthesis\": \"https://en.wikipedia.org/wiki/Program_synthesis\",\n", - " \"Quantum Computing\": \"https://en.wikipedia.org/wiki/Quantum_Computing\",\n", - " \"Quantum computing\": \"https://en.wikipedia.org/wiki/Glossary_of_quantum_computing\",\n", - " \"Ranulph Glanville\": \"https://en.wikipedia.org/wiki/Ranulph_Glanville\",\n", - " \"Robotic tech vest\": \"https://en.wikipedia.org/wiki/Robotic_tech_vest\",\n", - " \"Rochester, Nathan\": \"https://en.wikipedia.org/wiki/Nathan_Rochester\",\n", - " \"Scientific method\": \"https://en.wikipedia.org/wiki/Scientific_method\",\n", - " \"Scientific naming\": \"https://en.wikipedia.org/wiki/Glossary_of_scientific_naming\",\n", - " \"Search algorithms\": \"https://en.wikipedia.org/wiki/Search_algorithm\",\n", - " \"Security services\": \"https://en.wikipedia.org/wiki/Security_service_(telecommunication)\",\n", - " \"Semantic networks\": \"https://en.wikipedia.org/wiki/Semantic_network\",\n", - " \"Solomonoff (1956)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSolomonoff1956\",\n", - " \"Stanley Kubrick's\": \"https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey\",\n", - " \"Stephen Grossberg\": \"https://en.wikipedia.org/wiki/Stephen_Grossberg\",\n", - " \"Stuart J. Russell\": \"https://en.wikipedia.org/wiki/Stuart_J._Russell\",\n", - " \"Substance dualism\": \"https://en.wikipedia.org/wiki/Substance_dualism\",\n", - " \"Superintelligence\": \"https://en.wikipedia.org/wiki/Superintelligence\",\n", - " \"Three Mile Island\": \"https://en.wikipedia.org/wiki/Three_Mile_Island\",\n", - " \"Transfer learning\": \"https://en.wikipedia.org/wiki/Transfer_learning\",\n", - " \"Uniformitarianism\": \"https://en.wikipedia.org/wiki/Uniformitarianism\",\n", - " \"Wikimedia Commons\": \"https://commons.wikimedia.org/wiki/Category:Artificial_intelligence\",\n", - " \"Yuval Noah Harari\": \"https://en.wikipedia.org/wiki/Yuval_Noah_Harari\",\n", - " \"academic research\": \"https://en.wikipedia.org/wiki/Academic_research\",\n", - " \"alignment problem\": \"https://en.wikipedia.org/wiki/AI_alignment\",\n", - " \"ancient languages\": \"https://en.wikipedia.org/wiki/Ancient_language\",\n", - " \"de-identification\": \"https://en.wikipedia.org/wiki/De-identification\",\n", - " \"decision analysis\": \"https://en.wikipedia.org/wiki/Decision_analysis\",\n", - " \"decision networks\": \"https://en.wikipedia.org/wiki/Decision_network\",\n", - " \"default reasoning\": \"https://en.wikipedia.org/wiki/Default_reasoning\",\n", - " \"field of research\": \"https://en.wikipedia.org/wiki/Field_of_research\",\n", - " \"first-order logic\": \"https://en.wikipedia.org/wiki/First-order_logic\",\n", - " \"logic programming\": \"https://en.wikipedia.org/wiki/Logic_programming\",\n", - " \"mass surveillance\": \"https://en.wikipedia.org/wiki/Mass_surveillance\",\n", - " \"product liability\": \"https://en.wikipedia.org/wiki/Product_liability\",\n", - " \"remotely-operated\": \"https://en.wikipedia.org/wiki/Remotely_operated_underwater_vehicle\",\n", - " \"sample complexity\": \"https://en.wikipedia.org/wiki/Sample_complexity\",\n", - " \"self-driving cars\": \"https://en.wikipedia.org/wiki/Self-driving_cars\",\n", - " \"semantic networks\": \"https://en.wikipedia.org/wiki/Semantic_network\",\n", - " \"superintelligence\": \"https://en.wikipedia.org/wiki/Superintelligence\",\n", - " \"temporary workers\": \"https://en.wikipedia.org/wiki/Temporary_worker\",\n", - " \"voice recognition\": \"https://en.wikipedia.org/wiki/Speaker_recognition\",\n", - " \"\\u0421\\u0430\\u0445\\u0430 \\u0442\\u044b\\u043b\\u0430\": \"https://sah.wikipedia.org/wiki/%D0%9E%D2%A5%D0%BE%D2%BB%D1%83%D1%83_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"10.1017/err.2019.8\": \"https://doi.org/10.1017%2Ferr.2019.8\",\n", - " \"10.1561/2000000039\": \"https://doi.org/10.1561%2F2000000039\",\n", - " \"11.2 History of AI\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#History_of_AI\",\n", - " \"11.3 Other sources\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Other_sources\",\n", - " \"12 Further reading\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Further_reading\",\n", - " \"2.1.2 Local search\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Local_search\",\n", - " \"4.1 Risks and harm\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Risks_and_harm\",\n", - " \"Adversarial search\": \"https://en.wikipedia.org/wiki/Adversarial_search\",\n", - " \"Arthur C. Clarke's\": \"https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey_(novel)\",\n", - " \"Audio-Animatronics\": \"https://en.wikipedia.org/wiki/Audio-Animatronics\",\n", - " \"Automated planning\": \"https://en.wikipedia.org/wiki/Automated_planning\",\n", - " \"Barrett Technology\": \"https://en.wikipedia.org/wiki/Barrett_Technology\",\n", - " \"Bayesian inference\": \"https://en.wikipedia.org/wiki/Bayesian_inference\",\n", - " \"Buckminster Fuller\": \"https://en.wikipedia.org/wiki/Buckminster_Fuller\",\n", - " \"Carl Benedikt Frey\": \"https://en.wikipedia.org/wiki/Carl_Benedikt_Frey\",\n", - " \"Carl Gustav Hempel\": \"https://en.wikipedia.org/wiki/Carl_Gustav_Hempel\",\n", - " \"Catastrophe theory\": \"https://en.wikipedia.org/wiki/Catastrophe_theory\",\n", - " \"Classical planning\": \"https://en.wikipedia.org/wiki/Automated_planning_and_scheduling#classical_planning\",\n", - " \"Computing platform\": \"https://en.wikipedia.org/wiki/Computing_platform\",\n", - " \"Cornell University\": \"https://en.wikipedia.org/wiki/Cornell_University\",\n", - " \"Creative synthesis\": \"https://en.wikipedia.org/wiki/Creative_synthesis\",\n", - " \"Cultural algorithm\": \"https://en.wikipedia.org/wiki/Cultural_algorithm\",\n", - " \"Dartmouth workshop\": \"https://en.wikipedia.org/wiki/Dartmouth_workshop\",\n", - " \"Echo state network\": \"https://en.wikipedia.org/wiki/Echo_state_network\",\n", - " \"Emergent algorithm\": \"https://en.wikipedia.org/wiki/Emergent_algorithm\",\n", - " \"Empirical evidence\": \"https://en.wikipedia.org/wiki/Empirical_evidence\",\n", - " \"Evolution strategy\": \"https://en.wikipedia.org/wiki/Evolution_strategy\",\n", - " \"Facial recognition\": \"https://en.wikipedia.org/wiki/Facial_recognition_system\",\n", - " \"Garbage collection\": \"https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)\",\n", - " \"Harari, Yuval Noah\": \"https://en.wikipedia.org/wiki/Yuval_Noah_Harari\",\n", - " \"Harvest Automation\": \"https://en.wikipedia.org/wiki/Harvest_Automation\",\n", - " \"Heinz von Foerster\": \"https://en.wikipedia.org/wiki/Heinz_von_Foerster\",\n", - " \"IGM Chicago (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFIGM_Chicago2017\",\n", - " \"Information theory\": \"https://en.wikipedia.org/wiki/Information_theory\",\n", - " \"Integrated circuit\": \"https://en.wikipedia.org/wiki/Integrated_circuit\",\n", - " \"Interaction design\": \"https://en.wikipedia.org/wiki/Interaction_design\",\n", - " \"Internet of things\": \"https://en.wikipedia.org/wiki/Internet_of_things\",\n", - " \"Intuitive Surgical\": \"https://en.wikipedia.org/wiki/Intuitive_Surgical\",\n", - " \"Jakob von Uexk\\u00fcll\": \"https://en.wikipedia.org/wiki/Jakob_Johann_von_Uexk%C3%BCll\",\n", - " \"K-nearest neighbor\": \"https://en.wikipedia.org/wiki/K-nearest_neighbor\",\n", - " \"Kasperowicz (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKasperowicz2023\",\n", - " \"Lenat & Guha (1989\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLenatGuha1989\",\n", - " \"Machine perception\": \"https://en.wikipedia.org/wiki/Machine_perception\",\n", - " \"Maleyka Abbaszadeh\": \"https://en.wikipedia.org/wiki/Maleyka_Abbaszadeh\",\n", - " \"Margaret Masterman\": \"https://en.wikipedia.org/wiki/Margaret_Masterman\",\n", - " \"McCarthy Formalism\": \"https://en.wikipedia.org/wiki/McCarthy_Formalism\",\n", - " \"Mobile translation\": \"https://en.wikipedia.org/wiki/Mobile_translation\",\n", - " \"Morgenstern (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMorgenstern2015\",\n", - " \"Multitask learning\": \"https://en.wikipedia.org/wiki/Multitask_learning\",\n", - " \"Natalia Bekhtereva\": \"https://en.wikipedia.org/wiki/Natalia_Bekhtereva\",\n", - " \"Network components\": \"https://en.wikipedia.org/wiki/Networking_hardware\",\n", - " \"Neurophenomenology\": \"https://en.wikipedia.org/wiki/Neurophenomenology\",\n", - " \"Numerical analysis\": \"https://en.wikipedia.org/wiki/Numerical_analysis\",\n", - " \"Parallel computing\": \"https://en.wikipedia.org/wiki/Parallel_computing\",\n", - " \"Philosophy of mind\": \"https://en.wikipedia.org/wiki/Philosophy_of_mind\",\n", - " \"Prompt engineering\": \"https://en.wikipedia.org/wiki/Prompt_engineering\",\n", - " \"Questionable cause\": \"https://en.wikipedia.org/wiki/Questionable_cause\",\n", - " \"Robotic spacecraft\": \"https://en.wikipedia.org/wiki/Robotic_spacecraft\",\n", - " \"Roger David Joseph\": \"https://en.wikipedia.org/w/index.php?title=Roger_David_Joseph&action=edit&redlink=1\",\n", - " \"Russell, Stuart J.\": \"https://en.wikipedia.org/wiki/Stuart_J._Russell\",\n", - " \"Scassellati (2002)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFScassellati2002\",\n", - " \"Schmidhuber (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSchmidhuber2015\",\n", - " \"Schmidhuber (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSchmidhuber2022\",\n", - " \"Scientific realism\": \"https://en.wikipedia.org/wiki/Scientific_realism\",\n", - " \"Search methodology\": \"https://en.wikipedia.org/wiki/Mathematical_optimization\",\n", - " \"Situation calculus\": \"https://en.wikipedia.org/wiki/Situation_calculus\",\n", - " \"Software framework\": \"https://en.wikipedia.org/wiki/Software_framework\",\n", - " \"Software notations\": \"https://en.wikipedia.org/wiki/Programming_language_theory\",\n", - " \"Speech recognition\": \"https://en.wikipedia.org/wiki/Speech_recognition\",\n", - " \"State space search\": \"https://en.wikipedia.org/wiki/State_space_search\",\n", - " \"Swarm intelligence\": \"https://en.wikipedia.org/wiki/Swarm_intelligence\",\n", - " \"Technology roadmap\": \"https://en.wikipedia.org/wiki/Technology_roadmap\",\n", - " \"The Nervous System\": \"https://archive.org/details/nervoussystem0000edel\",\n", - " \"The New York Times\": \"https://en.wikipedia.org/wiki/The_New_York_Times\",\n", - " \"Underdetermination\": \"https://en.wikipedia.org/wiki/Underdetermination\",\n", - " \"Universal Robotics\": \"https://en.wikipedia.org/wiki/Universal_Robotics\",\n", - " \"Weng et al. (2001)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWengMcClellandPentlandSporns2001\",\n", - " \"Wilhelm Windelband\": \"https://en.wikipedia.org/wiki/Wilhelm_Windelband\",\n", - " \"William Ross Ashby\": \"https://en.wikipedia.org/wiki/W._Ross_Ashby\",\n", - " \"Willie L. Phillips\": \"https://en.wikipedia.org/wiki/Willie_L._Phillips\",\n", - " \"applications of AI\": \"https://en.wikipedia.org/wiki/Applications_of_AI\",\n", - " \"artificial neurons\": \"https://en.wikipedia.org/wiki/Artificial_neurons\",\n", - " \"automated planning\": \"https://en.wikipedia.org/wiki/Automated_planning\",\n", - " \"classical planning\": \"https://en.wikipedia.org/wiki/Automated_planning_and_scheduling#classical_planning\",\n", - " \"depth-first search\": \"https://en.wikipedia.org/wiki/Depth-first_search\",\n", - " \"description logics\": \"https://en.wikipedia.org/wiki/Description_logic\",\n", - " \"facial recognition\": \"https://en.wikipedia.org/wiki/Facial_recognition_system\",\n", - " \"generative grammar\": \"https://en.wikipedia.org/wiki/Generative_grammar\",\n", - " \"genetic algorithms\": \"https://en.wikipedia.org/wiki/Genetic_algorithms\",\n", - " \"human intelligence\": \"https://en.wikipedia.org/wiki/Human_intelligence\",\n", - " \"identify an \\\"edge\\\"\": \"https://en.wikipedia.org/wiki/Edge_detection\",\n", - " \"information theory\": \"https://en.wikipedia.org/wiki/Information_theory\",\n", - " \"object recognition\": \"https://en.wikipedia.org/wiki/Object_recognition\",\n", - " \"philosophy of mind\": \"https://en.wikipedia.org/wiki/Philosophy_of_mind\",\n", - " \"question answering\": \"https://en.wikipedia.org/wiki/Question_answering\",\n", - " \"robotic perception\": \"https://en.wikipedia.org/wiki/Robotic_perception\",\n", - " \"sentiment analysis\": \"https://en.wikipedia.org/wiki/Sentiment_analysis\",\n", - " \"speech recognition\": \"https://en.wikipedia.org/wiki/Speech_recognition\",\n", - " \"state space search\": \"https://en.wikipedia.org/wiki/State_space_search\",\n", - " \"swarm intelligence\": \"https://en.wikipedia.org/wiki/Swarm_intelligence\",\n", - " \"target acquisition\": \"https://en.wikipedia.org/wiki/Target_acquisition\",\n", - " \"tissue engineering\": \"https://en.wikipedia.org/wiki/Tissue_engineering\",\n", - " \"virtual assistants\": \"https://en.wikipedia.org/wiki/Virtual_assistant\",\n", - " \"web search engines\": \"https://en.wikipedia.org/wiki/Web_search_engine\",\n", - " \"\\u0411\\u0430\\u0448\\u04a1\\u043e\\u0440\\u0442\\u0441\\u0430\": \"https://ba.wikipedia.org/wiki/%D0%AF%D2%BB%D0%B0%D0%BB%D0%BC%D0%B0_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u0411\\u044a\\u043b\\u0433\\u0430\\u0440\\u0441\\u043a\\u0438\": \"https://bg.wikipedia.org/wiki/%D0%98%D0%B7%D0%BA%D1%83%D1%81%D1%82%D0%B2%D0%B5%D0%BD_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u0928\\u0947\\u092a\\u093e\\u0932\\u0940\": \"https://ne.wikipedia.org/wiki/%E0%A4%95%E0%A5%83%E0%A4%A4%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AE_%E0%A4%AC%E0%A5%8C%E0%A4%A6%E0%A5%8D%E0%A4%A7%E0%A4%BF%E0%A4%95%E0%A4%A4%E0%A4%BE\",\n", - " \"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\": \"https://hi.wikipedia.org/wiki/%E0%A4%95%E0%A5%83%E0%A4%A4%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AE_%E0%A4%AC%E0%A5%81%E0%A4%A6%E0%A5%8D%E0%A4%A7%E0%A4%BF\",\n", - " \"\\u0a2a\\u0a70\\u0a1c\\u0a3e\\u0a2c\\u0a40\": \"https://pa.wikipedia.org/wiki/%E0%A8%AC%E0%A8%A3%E0%A8%BE%E0%A8%B5%E0%A8%9F%E0%A9%80_%E0%A8%AC%E0%A9%81%E0%A9%B1%E0%A8%A7%E0%A9%80_(_AI)\",\n", - " \"\\u0c24\\u0c46\\u0c32\\u0c41\\u0c17\\u0c41\": \"https://te.wikipedia.org/wiki/%E0%B0%95%E0%B1%83%E0%B0%A4%E0%B1%8D%E0%B0%B0%E0%B0%BF%E0%B0%AE_%E0%B0%AE%E0%B1%87%E0%B0%A7%E0%B0%B8%E0%B1%8D%E0%B0%B8%E0%B1%81\",\n", - " \"\\u0d2e\\u0d32\\u0d2f\\u0d3e\\u0d33\\u0d02\": \"https://ml.wikipedia.org/wiki/%E0%B4%A8%E0%B4%BF%E2%80%8D%E0%B5%BC%E0%B4%AE%E0%B5%8D%E0%B4%AE%E0%B4%BF%E0%B4%A4_%E0%B4%AC%E0%B5%81%E0%B4%A6%E0%B5%8D%E0%B4%A7%E0%B4%BF\",\n", - " \"\\\"Generative models\\\"\": \"https://openai.com/research/generative-models\",\n", - " \"10.1038/nature14236\": \"https://doi.org/10.1038%2Fnature14236\",\n", - " \"10.1038/nature14539\": \"https://doi.org/10.1038%2Fnature14539\",\n", - " \"10.1038/nature16961\": \"https://doi.org/10.1038%2Fnature16961\",\n", - " \"10.1109/MIS.2009.75\": \"https://doi.org/10.1109%2FMIS.2009.75\",\n", - " \"10.1197/jamia.M2055\": \"https://doi.org/10.1197%2Fjamia.M2055\",\n", - " \"1974Sci...185.1124T\": \"https://ui.adsabs.harvard.edu/abs/1974Sci...185.1124T\",\n", - " \"1993vise.nasa...11V\": \"https://ui.adsabs.harvard.edu/abs/1993vise.nasa...11V\",\n", - " \"2008gcr..book..303Y\": \"https://ui.adsabs.harvard.edu/abs/2008gcr..book..303Y\",\n", - " \"2012ISPM...29...82H\": \"https://ui.adsabs.harvard.edu/abs/2012ISPM...29...82H\",\n", - " \"2015Natur.518..529M\": \"https://ui.adsabs.harvard.edu/abs/2015Natur.518..529M\",\n", - " \"2015Natur.521..436L\": \"https://ui.adsabs.harvard.edu/abs/2015Natur.521..436L\",\n", - " \"2015Sci...349..255J\": \"https://ui.adsabs.harvard.edu/abs/2015Sci...349..255J\",\n", - " \"2016Natur.529..484S\": \"https://ui.adsabs.harvard.edu/abs/2016Natur.529..484S\",\n", - " \"2019Sci...365..885B\": \"https://ui.adsabs.harvard.edu/abs/2019Sci...365..885B\",\n", - " \"2021IEEEA...9j2327A\": \"https://ui.adsabs.harvard.edu/abs/2021IEEEA...9j2327A\",\n", - " \"2021Natur.596..583J\": \"https://ui.adsabs.harvard.edu/abs/2021Natur.596..583J\",\n", - " \"2022Natur.602..223W\": \"https://ui.adsabs.harvard.edu/abs/2022Natur.602..223W\",\n", - " \"6.3.1 Consciousness\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Consciousness\",\n", - " \"ACM SIGPLAN Notices\": \"https://en.wikipedia.org/wiki/ACM_SIGPLAN_Notices\",\n", - " \"AI (disambiguation)\": \"https://en.wikipedia.org/wiki/AI_(disambiguation)\",\n", - " \"AI machine-learning\": \"https://en.wikipedia.org/wiki/Machine_learning\",\n", - " \"Accelerating change\": \"https://en.wikipedia.org/wiki/Accelerating_change\",\n", - " \"Affective computing\": \"https://en.wikipedia.org/wiki/Affective_computing\",\n", - " \"Asada et al. (2009)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAsadaHosodaKuniyoshiIshiguro2009\",\n", - " \"Asilomar Conference\": \"https://en.wikipedia.org/wiki/Asilomar_Conference_on_Beneficial_AI\",\n", - " \"Cellan-Jones (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCellan-Jones2014\",\n", - " \"Ciaramella, Alberto\": \"https://en.wikipedia.org/wiki/Alberto_Ciaramella\",\n", - " \"Confirmation holism\": \"https://en.wikipedia.org/wiki/Confirmation_holism\",\n", - " \"Conversation theory\": \"https://en.wikipedia.org/wiki/Conversation_theory\",\n", - " \"Daniel Huttenlocher\": \"https://en.wikipedia.org/wiki/Daniel_Huttenlocher\",\n", - " \"Deductive reasoning\": \"https://en.wikipedia.org/wiki/Deductive_reasoning\",\n", - " \"Demarcation problem\": \"https://en.wikipedia.org/wiki/Demarcation_problem\",\n", - " \"Descriptive science\": \"https://en.wikipedia.org/wiki/Descriptive_research\",\n", - " \"Digital immortality\": \"https://en.wikipedia.org/wiki/Digital_immortality\",\n", - " \"Document management\": \"https://en.wikipedia.org/wiki/Document_management_system\",\n", - " \"Enterprise software\": \"https://en.wikipedia.org/wiki/Enterprise_software\",\n", - " \"Gaussian adaptation\": \"https://en.wikipedia.org/wiki/Gaussian_adaptation\",\n", - " \"Genetic programming\": \"https://en.wikipedia.org/wiki/Genetic_programming\",\n", - " \"Grant & Hill (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGrantHill2023\",\n", - " \"HD Hyundai Robotics\": \"https://en.wikipedia.org/wiki/HD_Hyundai_Robotics\",\n", - " \"Hidden Markov model\": \"https://en.wikipedia.org/wiki/Hidden_Markov_model\",\n", - " \"In-context learning\": \"https://en.wikipedia.org/wiki/Prompt_engineering#In-context_learning\",\n", - " \"Inductive reasoning\": \"https://en.wikipedia.org/wiki/Inductive_reasoning\",\n", - " \"Information privacy\": \"https://en.wikipedia.org/wiki/Information_privacy\",\n", - " \"Information systems\": \"https://en.wikipedia.org/wiki/Information_system\",\n", - " \"J\\u00fcrgen Schmidhuber\": \"https://en.wikipedia.org/wiki/J%C3%BCrgen_Schmidhuber\",\n", - " \"Knowledge reasoning\": \"https://en.wikipedia.org/wiki/Knowledge_representation_and_reasoning\",\n", - " \"Language of thought\": \"https://en.wikipedia.org/wiki/Language_of_thought_hypothesis\",\n", - " \"Ludwig Wittgenstein\": \"https://en.wikipedia.org/wiki/Ludwig_Wittgenstein\",\n", - " \"Machine translation\": \"https://en.wikipedia.org/wiki/Machine_translation\",\n", - " \"Mansfield Amendment\": \"https://en.wikipedia.org/wiki/Mansfield_Amendment\",\n", - " \"McCarthy evaluation\": \"https://en.wikipedia.org/wiki/Short-circuit_evaluation\",\n", - " \"Medical cybernetics\": \"https://en.wikipedia.org/wiki/Medical_cybernetics\",\n", - " \"Mind\\u2013body problem\": \"https://en.wikipedia.org/wiki/Mind%E2%80%93body_problem\",\n", - " \"Multi-task learning\": \"https://en.wikipedia.org/wiki/Multi-task_learning\",\n", - " \"N. Katherine Hayles\": \"https://en.wikipedia.org/wiki/N._Katherine_Hayles\",\n", - " \"Nathaniel Rochester\": \"https://en.wikipedia.org/wiki/Nathaniel_Rochester_(computer_scientist)\",\n", - " \"Neats and scruffies\": \"https://en.wikipedia.org/wiki/Neats_and_scruffies\",\n", - " \"Neats vs. scruffies\": \"https://en.wikipedia.org/wiki/Neats_vs._scruffies\",\n", - " \"Operations research\": \"https://en.wikipedia.org/wiki/Operations_research\",\n", - " \"Our Final Invention\": \"https://en.wikipedia.org/wiki/Our_Final_Invention\",\n", - " \"Parkinson's disease\": \"https://en.wikipedia.org/wiki/Parkinson%27s_disease\",\n", - " \"Patricia Churchland\": \"https://en.wikipedia.org/wiki/Patricia_Churchland\",\n", - " \"Poria et al. (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPoriaCambriaBajpaiHussain2017\",\n", - " \"Powered exoskeleton\": \"https://en.wikipedia.org/wiki/Powered_exoskeleton\",\n", - " \"Propositional logic\": \"https://en.wikipedia.org/wiki/Propositional_logic\",\n", - " \"Quasi-Newton method\": \"https://en.wikipedia.org/wiki/Quasi-Newton_method\",\n", - " \"Real-time computing\": \"https://en.wikipedia.org/wiki/Real-time_computing\",\n", - " \"Rhetoric of science\": \"https://en.wikipedia.org/wiki/Rhetoric_of_science\",\n", - " \"Scientific American\": \"https://en.wikipedia.org/wiki/Scientific_American\",\n", - " \"Scientific evidence\": \"https://en.wikipedia.org/wiki/Scientific_evidence\",\n", - " \"Sergei P. Kurdyumov\": \"https://en.wikipedia.org/wiki/Sergei_P._Kurdyumov\",\n", - " \"Sir James Lighthill\": \"https://en.wikipedia.org/wiki/Sir_James_Lighthill\",\n", - " \"Software deployment\": \"https://en.wikipedia.org/wiki/Software_deployment\",\n", - " \"Software repository\": \"https://en.wikipedia.org/wiki/Software_repository\",\n", - " \"Supervised learning\": \"https://en.wikipedia.org/wiki/Supervised_learning\",\n", - " \"Systems integration\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_systems_integration\",\n", - " \"Technology scouting\": \"https://en.wikipedia.org/wiki/Technology_scouting\",\n", - " \"The Guardian Weekly\": \"https://en.wikipedia.org/wiki/The_Guardian_Weekly\",\n", - " \"The Society of Mind\": \"https://en.wikipedia.org/wiki/The_Society_of_Mind\",\n", - " \"Uninformed searches\": \"https://en.wikipedia.org/wiki/Uninformed_search\",\n", - " \"Warren S. McCulloch\": \"https://en.wikipedia.org/wiki/Warren_S._McCulloch\",\n", - " \"William Grey Walter\": \"https://en.wikipedia.org/wiki/William_Grey_Walter\",\n", - " \"autonomous vehicles\": \"https://en.wikipedia.org/wiki/Autonomous_vehicles\",\n", - " \"command and control\": \"https://en.wikipedia.org/wiki/Command_and_control\",\n", - " \"conspiracy theories\": \"https://en.wikipedia.org/wiki/Conspiracy_theories\",\n", - " \"dictionary learning\": \"https://en.wikipedia.org/wiki/Dictionary_learning\",\n", - " \"industrial robotics\": \"https://en.wikipedia.org/wiki/Industrial_robotics\",\n", - " \"integrated circuits\": \"https://en.wikipedia.org/wiki/Integrated_circuit\",\n", - " \"logical connectives\": \"https://en.wikipedia.org/wiki/Logical_connective\",\n", - " \"machine translation\": \"https://en.wikipedia.org/wiki/Machine_translation\",\n", - " \"means-ends analysis\": \"https://en.wikipedia.org/wiki/Means-ends_analysis\",\n", - " \"mind\\u2013body problem\": \"https://en.wikipedia.org/wiki/Mind%E2%80%93body_problem\",\n", - " \"negation as failure\": \"https://en.wikipedia.org/wiki/Negation_as_failure\",\n", - " \"operations research\": \"https://en.wikipedia.org/wiki/Operations_research\",\n", - " \"pattern recognition\": \"https://en.wikipedia.org/wiki/Pattern_recognition\",\n", - " \"propositional logic\": \"https://en.wikipedia.org/wiki/Propositional_logic\",\n", - " \"recommender systems\": \"https://en.wikipedia.org/wiki/Recommender_system\",\n", - " \"regulatory policies\": \"https://en.wikipedia.org/wiki/Regulation_of_artificial_intelligence\",\n", - " \"supervised learning\": \"https://en.wikipedia.org/wiki/Supervised_learning\",\n", - " \"the ability to feel\": \"https://en.wikipedia.org/wiki/Sentience\",\n", - " \"the joint statement\": \"https://en.wikipedia.org/wiki/Statement_on_AI_risk_of_extinction\",\n", - " \"\\\"Google books ngram\\\"\": \"https://books.google.com/ngrams/graph?content=electronic+brain&year_start=1930&year_end=2019&corpus=en-2019&smoothing=3\",\n", - " \"10 Explanatory notes\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Explanatory_notes\",\n", - " \"10.2139/ssrn.1736283\": \"https://doi.org/10.2139%2Fssrn.1736283\",\n", - " \"10.2139/ssrn.3044448\": \"https://doi.org/10.2139%2Fssrn.3044448\",\n", - " \"10.37016/mr-2020-127\": \"https://doi.org/10.37016%2Fmr-2020-127\",\n", - " \"4.1.4 Misinformation\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Misinformation\",\n", - " \"Ambient intelligence\": \"https://en.wikipedia.org/wiki/Ambient_intelligence\",\n", - " \"Application security\": \"https://en.wikipedia.org/wiki/Application_security\",\n", - " \"Case-based reasoning\": \"https://en.wikipedia.org/wiki/Case-based_reasoning\",\n", - " \"Center for AI Safety\": \"https://en.wikipedia.org/wiki/Center_for_AI_Safety\",\n", - " \"Challa et al. (2011)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFChallaMorelandMu%C5%A1ickiEvans2011\",\n", - " \"Collingridge dilemma\": \"https://en.wikipedia.org/wiki/Collingridge_dilemma\",\n", - " \"Computability theory\": \"https://en.wikipedia.org/wiki/Computability_theory\",\n", - " \"Concurrent computing\": \"https://en.wikipedia.org/wiki/Concurrent_computing\",\n", - " \"Constellation Energy\": \"https://en.wikipedia.org/wiki/Constellation_Energy\",\n", - " \"Constructive realism\": \"https://en.wikipedia.org/wiki/Constructive_realism\",\n", - " \"Criticism of science\": \"https://en.wikipedia.org/wiki/Criticism_of_science\",\n", - " \"Discrete mathematics\": \"https://en.wikipedia.org/wiki/Discrete_mathematics\",\n", - " \"Emergent materialism\": \"https://en.wikipedia.org/wiki/Emergent_materialism\",\n", - " \"Energid Technologies\": \"https://en.wikipedia.org/wiki/Energid_Technologies\",\n", - " \"Ford & Colvin (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFFordColvin2015\",\n", - " \"General game playing\": \"https://en.wikipedia.org/wiki/General_game_playing\",\n", - " \"General intelligence\": \"https://en.wikipedia.org/wiki/Artificial_general_intelligence\",\n", - " \"Hinton et al. (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHinton_et_al.2016\",\n", - " \"Information security\": \"https://en.wikipedia.org/wiki/Information_security\",\n", - " \"Intelligence by type\": \"https://en.wikipedia.org/wiki/Category:Intelligence_by_type\",\n", - " \"Jay Wright Forrester\": \"https://en.wikipedia.org/wiki/Jay_Wright_Forrester\",\n", - " \"John Joseph Hopfield\": \"https://en.wikipedia.org/wiki/John_Joseph_Hopfield\",\n", - " \"Large language model\": \"https://en.wikipedia.org/wiki/Large_language_model\",\n", - " \"McCarthy 91 function\": \"https://en.wikipedia.org/wiki/McCarthy_91_function\",\n", - " \"Microsoft Translator\": \"https://en.wikipedia.org/wiki/Microsoft_Translator\",\n", - " \"Model of computation\": \"https://en.wikipedia.org/wiki/Model_of_computation\",\n", - " \"Network architecture\": \"https://en.wikipedia.org/wiki/Network_architecture\",\n", - " \"Newell & Simon (1976\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNewellSimon1976\",\n", - " \"Non-monotonic logics\": \"https://en.wikipedia.org/wiki/Non-monotonic_logic\",\n", - " \"Problem of induction\": \"https://en.wikipedia.org/wiki/Problem_of_induction\",\n", - " \"Programming language\": \"https://en.wikipedia.org/wiki/Programming_language\",\n", - " \"Programming paradigm\": \"https://en.wikipedia.org/wiki/Programming_paradigm\",\n", - " \"Randomized algorithm\": \"https://en.wikipedia.org/wiki/Randomized_algorithm\",\n", - " \"Right to explanation\": \"https://en.wikipedia.org/wiki/Right_to_explanation\",\n", - " \"Schmidhuber, J\\u00fcrgen\": \"https://en.wikipedia.org/wiki/J%C3%BCrgen_Schmidhuber\",\n", - " \"Scientific formalism\": \"https://en.wikipedia.org/wiki/Scientific_formalism\",\n", - " \"Scientific pluralism\": \"https://en.wikipedia.org/wiki/Scientific_pluralism\",\n", - " \"Software development\": \"https://en.wikipedia.org/wiki/Software_development\",\n", - " \"Software engineering\": \"https://en.wikipedia.org/wiki/Software_engineering\",\n", - " \"Software maintenance\": \"https://en.wikipedia.org/wiki/Software_maintenance\",\n", - " \"Taylor & Hern (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFTaylorHern2023\",\n", - " \"Technological change\": \"https://en.wikipedia.org/wiki/Technological_change\",\n", - " \"Text-to-image models\": \"https://en.wikipedia.org/wiki/Text-to-image_model\",\n", - " \"Text-to-video models\": \"https://en.wikipedia.org/wiki/Text-to-video_model\",\n", - " \"The Economist (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFThe_Economist2016\",\n", - " \"Ubiquitous computing\": \"https://en.wikipedia.org/wiki/Ubiquitous_computing\",\n", - " \"Urbina et al. (2022)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFUrbinaLentzosInvernizziEkins2022\",\n", - " \"Valentin Braitenberg\": \"https://en.wikipedia.org/wiki/Valentino_Braitenberg\",\n", - " \"astronomical numbers\": \"https://en.wikipedia.org/wiki/Astronomically_large\",\n", - " \"breadth first search\": \"https://en.wikipedia.org/wiki/Breadth_first_search\",\n", - " \"cloud infrastructure\": \"https://en.wikipedia.org/wiki/Cloud_computing\",\n", - " \"deep neural networks\": \"https://en.wikipedia.org/wiki/Deep_neural_networks\",\n", - " \"deepfake pornography\": \"https://en.wikipedia.org/wiki/Deepfake_pornography\",\n", - " \"differential privacy\": \"https://en.wikipedia.org/wiki/Differential_privacy\",\n", - " \"game-playing systems\": \"https://en.wikipedia.org/wiki/Video_game_console\",\n", - " \"general intelligence\": \"https://en.wikipedia.org/wiki/Artificial_general_intelligence\",\n", - " \"hidden Markov models\": \"https://en.wikipedia.org/wiki/Hidden_Markov_model\",\n", - " \"image classification\": \"https://en.wikipedia.org/wiki/Image_classification\",\n", - " \"large language model\": \"https://en.wikipedia.org/wiki/Large_language_model\",\n", - " \"non-monotonic logics\": \"https://en.wikipedia.org/wiki/Non-monotonic_logic\",\n", - " \"predictive analytics\": \"https://en.wikipedia.org/wiki/Predictive_analytics\",\n", - " \"symbolic programming\": \"https://en.wikipedia.org/wiki/Symbolic_programming\",\n", - " \"targeted advertising\": \"https://en.wikipedia.org/wiki/Marketing_and_artificial_intelligence\",\n", - " \"\\u0411\\u0435\\u043b\\u0430\\u0440\\u0443\\u0441\\u043a\\u0430\\u044f\": \"https://be.wikipedia.org/wiki/%D0%A8%D1%82%D1%83%D1%87%D0%BD%D1%8B_%D1%96%D0%BD%D1%82%D1%8D%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u041c\\u0430\\u043a\\u0435\\u0434\\u043e\\u043d\\u0441\\u043a\\u0438\": \"https://mk.wikipedia.org/wiki/%D0%92%D0%B5%D1%88%D1%82%D0%B0%D1%87%D0%BA%D0%B0_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%B8%D0%B3%D0%B5%D0%BD%D1%86%D0%B8%D1%98%D0%B0\",\n", - " \"\\u0420\\u0443\\u0441\\u0438\\u043d\\u044c\\u0441\\u043a\\u044b\\u0439\": \"https://rue.wikipedia.org/wiki/%D0%A3%D0%BC%D0%B5%D0%BB%D0%B0_%D1%96%D0%BD%D1%82%D0%B5%D0%BB%D1%96%D2%91%D0%B5%D0%BD%D1%86%D1%96%D1%8F\",\n", - " \"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\": \"https://uk.wikipedia.org/wiki/%D0%A8%D1%82%D1%83%D1%87%D0%BD%D0%B8%D0%B9_%D1%96%D0%BD%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"10.1017/9781009258227\": \"https://doi.org/10.1017%2F9781009258227\",\n", - " \"10.1145/360018.360022\": \"https://doi.org/10.1145%2F360018.360022\",\n", - " \"10.1145/872734.806939\": \"https://doi.org/10.1145%2F872734.806939\",\n", - " \"2024 Indian elections\": \"https://en.wikipedia.org/wiki/2024_Indian_general_election\",\n", - " \"AI capability control\": \"https://en.wikipedia.org/wiki/AI_capability_control\",\n", - " \"Aerospace engineering\": \"https://en.wikipedia.org/wiki/Glossary_of_aerospace_engineering\",\n", - " \"Alan Turing Institute\": \"https://en.wikipedia.org/wiki/Alan_Turing_Institute\",\n", - " \"All accuracy disputes\": \"https://en.wikipedia.org/wiki/Category:All_accuracy_disputes\",\n", - " \"Alter & Harris (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAlterHarris2023\",\n", - " \"Anthony Stafford Beer\": \"https://en.wikipedia.org/wiki/Stafford_Beer\",\n", - " \"Beal & Winston (2009)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBealWinston2009\",\n", - " \"Berdahl et al. (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBerdahlBakerMannOsoba2023\",\n", - " \"Biological naturalism\": \"https://en.wikipedia.org/wiki/Biological_naturalism\",\n", - " \"Computational biology\": \"https://en.wikipedia.org/wiki/Computational_biology\",\n", - " \"Computational physics\": \"https://en.wikipedia.org/wiki/Computational_physics\",\n", - " \"Computer architecture\": \"https://en.wikipedia.org/wiki/Computer_architecture\",\n", - " \"Disruptive innovation\": \"https://en.wikipedia.org/wiki/Disruptive_innovation\",\n", - " \"Distributed computing\": \"https://en.wikipedia.org/wiki/Distributed_computing\",\n", - " \"Edit preview settings\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#\",\n", - " \"Electronic publishing\": \"https://en.wikipedia.org/wiki/Electronic_publishing\",\n", - " \"Emerging technologies\": \"https://en.wikipedia.org/wiki/Emerging_technologies\",\n", - " \"Environmental science\": \"https://en.wikipedia.org/wiki/Glossary_of_environmental_science\",\n", - " \"Ernst von Glasersfeld\": \"https://en.wikipedia.org/wiki/Ernst_von_Glasersfeld\",\n", - " \"Evolutionary robotics\": \"https://en.wikipedia.org/wiki/Evolutionary_robotics\",\n", - " \"Faith and rationality\": \"https://en.wikipedia.org/wiki/Faith_and_rationality\",\n", - " \"Fitness approximation\": \"https://en.wikipedia.org/wiki/Fitness_approximation\",\n", - " \"Frank Cameron Jackson\": \"https://en.wikipedia.org/wiki/Frank_Cameron_Jackson\",\n", - " \"Frey & Osborne (2017)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFFreyOsborne2017\",\n", - " \"Generative AI at Work\": \"https://www.nber.org/papers/w31161\",\n", - " \"Google Cloud Platform\": \"https://en.wikipedia.org/wiki/Google_Cloud_Platform\",\n", - " \"Hard and soft science\": \"https://en.wikipedia.org/wiki/Hard_and_soft_science\",\n", - " \"Hardware acceleration\": \"https://en.wikipedia.org/wiki/Hardware_acceleration\",\n", - " \"Human image synthesis\": \"https://en.wikipedia.org/wiki/Human_image_synthesis\",\n", - " \"Information retrieval\": \"https://en.wikipedia.org/wiki/Information_retrieval\",\n", - " \"MIT Technology Review\": \"https://en.wikipedia.org/wiki/MIT_Technology_Review\",\n", - " \"Mathematical analysis\": \"https://en.wikipedia.org/wiki/Mathematical_analysis\",\n", - " \"Mathematical software\": \"https://en.wikipedia.org/wiki/Mathematical_software\",\n", - " \"Maurice Merleau-Ponty\": \"https://en.wikipedia.org/wiki/Maurice_Merleau-Ponty\",\n", - " \"Mental representation\": \"https://en.wikipedia.org/wiki/Mental_representation\",\n", - " \"Metaheuristic methods\": \"https://en.wikipedia.org/wiki/Metaheuristic\",\n", - " \"Neural Turing machine\": \"https://en.wikipedia.org/wiki/Neural_Turing_machine\",\n", - " \"Organoid intelligence\": \"https://en.wikipedia.org/wiki/Organoid_intelligence\",\n", - " \"Philosophers category\": \"https://en.wikipedia.org/wiki/Category:Philosophers_of_mind\",\n", - " \"Philosophy of science\": \"https://en.wikipedia.org/wiki/Philosophy_of_science\",\n", - " \"Premature convergence\": \"https://en.wikipedia.org/wiki/Premature_convergence\",\n", - " \"Printed circuit board\": \"https://en.wikipedia.org/wiki/Printed_circuit_board\",\n", - " \"Requirements analysis\": \"https://en.wikipedia.org/wiki/Requirements_analysis\",\n", - " \"Russell & Norvig 2021\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRussellNorvig2021\",\n", - " \"Scientific Revolution\": \"https://en.wikipedia.org/wiki/Scientific_Revolution\",\n", - " \"Scientific skepticism\": \"https://en.wikipedia.org/wiki/Scientific_skepticism\",\n", - " \"Software construction\": \"https://en.wikipedia.org/wiki/Software_construction\",\n", - " \"Starship Technologies\": \"https://en.wikipedia.org/wiki/Starship_Technologies\",\n", - " \"Stubblefield, William\": \"https://en.wikipedia.org/wiki/William_Stubblefield\",\n", - " \"The Alignment Problem\": \"https://en.wikipedia.org/wiki/The_Alignment_Problem\",\n", - " \"The Language Instinct\": \"https://en.wikipedia.org/wiki/The_Language_Instinct\",\n", - " \"Theory of computation\": \"https://en.wikipedia.org/wiki/Theory_of_computation\",\n", - " \"University of Chicago\": \"https://en.wikipedia.org/wiki/University_of_Chicago\",\n", - " \"Unsupervised learning\": \"https://en.wikipedia.org/wiki/Unsupervised_learning\",\n", - " \"Weight initialization\": \"https://en.wikipedia.org/wiki/Weight_initialization\",\n", - " \"distributive fairness\": \"https://en.wikipedia.org/wiki/Distributive_justice\",\n", - " \"imperfect-information\": \"https://en.wikipedia.org/wiki/Imperfect_information\",\n", - " \"information retrieval\": \"https://en.wikipedia.org/wiki/Information_retrieval\",\n", - " \"its long-term effects\": \"https://en.wikipedia.org/wiki/AI_aftermath_scenarios\",\n", - " \"knowledge acquisition\": \"https://en.wikipedia.org/wiki/Knowledge_acquisition\",\n", - " \"knowledge engineering\": \"https://en.wikipedia.org/wiki/Knowledge_engineering\",\n", - " \"large amounts of data\": \"https://en.wikipedia.org/wiki/Big_data\",\n", - " \"large language models\": \"https://en.wikipedia.org/wiki/Large_language_model\",\n", - " \"large-scale suffering\": \"https://en.wikipedia.org/wiki/Suffering_risks\",\n", - " \"programming languages\": \"https://en.wikipedia.org/wiki/Programming_language\",\n", - " \"qualification problem\": \"https://en.wikipedia.org/wiki/Qualification_problem\",\n", - " \"subjective experience\": \"https://en.wikipedia.org/wiki/Subjective_experience\",\n", - " \"theory of computation\": \"https://en.wikipedia.org/wiki/Theory_of_computation\",\n", - " \"\\u0421\\u0440\\u043f\\u0441\\u043a\\u0438 / srpski\": \"https://sr.wikipedia.org/wiki/%D0%92%D0%B5%D1%88%D1%82%D0%B0%D1%87%D0%BA%D0%B0_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%B8%D0%B3%D0%B5%D0%BD%D1%86%D0%B8%D1%98%D0%B0\",\n", - " \"\\u092d\\u094b\\u091c\\u092a\\u0941\\u0930\\u0940\": \"https://bh.wikipedia.org/wiki/%E0%A4%86%E0%A4%B0%E0%A5%8D%E0%A4%9F%E0%A4%BF%E0%A4%AB%E0%A4%BF%E0%A4%B6%E0%A4%BF%E0%A4%AF%E0%A4%B2_%E0%A4%87%E0%A4%82%E0%A4%9F%E0%A5%87%E0%A4%B2%E0%A4%BF%E0%A4%9C%E0%A5%87%E0%A4%82%E0%A4%B8\",\n", - " \"\\u0985\\u09b8\\u09ae\\u09c0\\u09af\\u09bc\\u09be\": \"https://as.wikipedia.org/wiki/%E0%A6%95%E0%A7%83%E0%A6%A4%E0%A7%8D%E0%A7%B0%E0%A6%BF%E0%A6%AE_%E0%A6%AC%E0%A7%81%E0%A6%A6%E0%A7%8D%E0%A6%A7%E0%A6%BF%E0%A6%AE%E0%A6%A4%E0%A7%8D%E0%A6%A4%E0%A6%BE\",\n", - " \"\\u0f56\\u0f7c\\u0f51\\u0f0b\\u0f61\\u0f72\\u0f42\": \"https://bo.wikipedia.org/wiki/%E0%BD%98%E0%BD%B2%E0%BC%8B%E0%BD%96%E0%BD%9F%E0%BD%BC%E0%BD%A6%E0%BC%8B%E0%BD%A2%E0%BD%B2%E0%BD%82%E0%BC%8B%E0%BD%93%E0%BD%B4%E0%BD%A6%E0%BC%8D\",\n", - " \"\\u10e5\\u10d0\\u10e0\\u10d7\\u10e3\\u10da\\u10d8\": \"https://ka.wikipedia.org/wiki/%E1%83%AE%E1%83%94%E1%83%9A%E1%83%9D%E1%83%95%E1%83%9C%E1%83%A3%E1%83%A0%E1%83%98_%E1%83%98%E1%83%9C%E1%83%A2%E1%83%94%E1%83%9A%E1%83%94%E1%83%A5%E1%83%A2%E1%83%98\",\n", - " \"4.1.9 Existential risk\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Existential_risk\",\n", - " \"6.2.2 Neat vs. scruffy\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Neat_vs._scruffy\",\n", - " \"Alfred North Whitehead\": \"https://en.wikipedia.org/wiki/Alfred_North_Whitehead\",\n", - " \"Alfred Radcliffe-Brown\": \"https://en.wikipedia.org/wiki/Alfred_Radcliffe-Brown\",\n", - " \"Algorithmic efficiency\": \"https://en.wikipedia.org/wiki/Algorithmic_efficiency\",\n", - " \"Analysis of algorithms\": \"https://en.wikipedia.org/wiki/Analysis_of_algorithms\",\n", - " \"Articles with excerpts\": \"https://en.wikipedia.org/wiki/Category:Articles_with_excerpts\",\n", - " \"Artificial development\": \"https://en.wikipedia.org/wiki/Artificial_development\",\n", - " \"Biological cybernetics\": \"https://en.wikipedia.org/wiki/Biocybernetics\",\n", - " \"Biomedical cybernetics\": \"https://en.wikipedia.org/wiki/Biomedical_cybernetics\",\n", - " \"CS1: long volume value\": \"https://en.wikipedia.org/wiki/Category:CS1:_long_volume_value\",\n", - " \"Cambria & White (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCambriaWhite2014\",\n", - " \"Charles Sanders Peirce\": \"https://en.wikipedia.org/wiki/Charles_Sanders_Peirce\",\n", - " \"Computational geometry\": \"https://en.wikipedia.org/wiki/Computational_geometry\",\n", - " \"Developmental robotics\": \"https://en.wikipedia.org/wiki/Developmental_robotics\",\n", - " \"DiFeliciantonio (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDiFeliciantonio2023\",\n", - " \"Differential evolution\": \"https://en.wikipedia.org/wiki/Differential_evolution\",\n", - " \"Educational technology\": \"https://en.wikipedia.org/wiki/Educational_technology\",\n", - " \"Evolutionary algorithm\": \"https://en.wikipedia.org/wiki/Evolutionary_algorithm\",\n", - " \"Hypostatic abstraction\": \"https://en.wikipedia.org/wiki/Hypostatic_abstraction\",\n", - " \"Intelligence explosion\": \"https://en.wikipedia.org/wiki/Intelligence_explosion\",\n", - " \"Larson & Angwin (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLarsonAngwin2016\",\n", - " \"Latent diffusion model\": \"https://en.wikipedia.org/wiki/Latent_diffusion_model\",\n", - " \"London Review of Books\": \"https://en.wikipedia.org/wiki/London_Review_of_Books\",\n", - " \"Long short term memory\": \"https://en.wikipedia.org/wiki/Long_short_term_memory\",\n", - " \"Ludwig von Bertalanffy\": \"https://en.wikipedia.org/wiki/Ludwig_von_Bertalanffy\",\n", - " \"Management cybernetics\": \"https://en.wikipedia.org/wiki/Management_cybernetics\",\n", - " \"McCarthy et al. (1955)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMcCarthyMinskyRochesterShannon1955\",\n", - " \"Mechanical engineering\": \"https://en.wikipedia.org/wiki/Glossary_of_mechanical_engineering\",\n", - " \"Naive Bayes classifier\": \"https://en.wikipedia.org/wiki/Naive_Bayes_classifier\",\n", - " \"Proactionary principle\": \"https://en.wikipedia.org/wiki/Proactionary_principle\",\n", - " \"Problem of other minds\": \"https://en.wikipedia.org/wiki/Problem_of_other_minds\",\n", - " \"Process control system\": \"https://en.wikipedia.org/wiki/Process_control\",\n", - " \"Propositional attitude\": \"https://en.wikipedia.org/wiki/Propositional_attitude\",\n", - " \"Recommendation systems\": \"https://en.wikipedia.org/wiki/Recommendation_systems\",\n", - " \"Reinforcement learning\": \"https://en.wikipedia.org/wiki/Reinforcement_learning\",\n", - " \"Russell & Norvig (2021\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRussellNorvig2021\",\n", - " \"Smoliar & Zhang (1994)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFSmoliarZhang1994\",\n", - " \"Software-defined radio\": \"https://en.wikipedia.org/wiki/Software-defined_radio\",\n", - " \"Structural engineering\": \"https://en.wikipedia.org/wiki/Glossary_of_structural_engineering\",\n", - " \"Synthetic intelligence\": \"https://en.wikipedia.org/wiki/Synthetic_intelligence\",\n", - " \"Systems on Chip (SoCs)\": \"https://en.wikipedia.org/wiki/System_on_a_chip\",\n", - " \"Technological paradigm\": \"https://en.wikipedia.org/wiki/Technological_paradigm\",\n", - " \"Technology forecasting\": \"https://en.wikipedia.org/wiki/Technology_forecasting\",\n", - " \"Three Laws of Robotics\": \"https://en.wikipedia.org/wiki/Three_Laws_of_Robotics\",\n", - " \"UK AI Safety Institute\": \"https://en.wikipedia.org/wiki/AI_Safety_Institute_(United_Kingdom)\",\n", - " \"Walter Bradford Cannon\": \"https://en.wikipedia.org/wiki/Walter_Bradford_Cannon\",\n", - " \"Wason & Shapiro (1966)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWasonShapiro1966\",\n", - " \"Western and South Asia\": \"https://en.wikipedia.org/wiki/Oikonyms_in_Western_and_South_Asia\",\n", - " \"information extraction\": \"https://en.wikipedia.org/wiki/Information_extraction\",\n", - " \"information processing\": \"https://en.wikipedia.org/wiki/Information_processing_(psychology)\",\n", - " \"intelligence explosion\": \"https://en.wikipedia.org/wiki/Intelligence_explosion\",\n", - " \"naive Bayes classifier\": \"https://en.wikipedia.org/wiki/Naive_Bayes_classifier\",\n", - " \"not labeled AI anymore\": \"https://en.wikipedia.org/wiki/AI_effect\",\n", - " \"recommendation systems\": \"https://en.wikipedia.org/wiki/Recommendation_systems\",\n", - " \"reinforcement learning\": \"https://en.wikipedia.org/wiki/Reinforcement_learning\",\n", - " \"structure of a protein\": \"https://en.wikipedia.org/wiki/Protein_structure\",\n", - " \"support vector machine\": \"https://en.wikipedia.org/wiki/Support_vector_machine\",\n", - " \"1.7 Social intelligence\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Social_intelligence\",\n", - " \"10.1023/A:1013298507114\": \"https://doi.org/10.1023%2FA%3A1013298507114\",\n", - " \"10.1126/science.aaa8415\": \"https://doi.org/10.1126%2Fscience.aaa8415\",\n", - " \"10.1126/science.aay2400\": \"https://doi.org/10.1126%2Fscience.aay2400\",\n", - " \"10.1145/2639475.2639478\": \"https://doi.org/10.1145%2F2639475.2639478\",\n", - " \"3.1 Health and medicine\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Health_and_medicine\",\n", - " \"3D optical data storage\": \"https://en.wikipedia.org/wiki/3D_optical_data_storage\",\n", - " \"Ant colony optimization\": \"https://en.wikipedia.org/wiki/Ant_colony_optimization\",\n", - " \"Artificial intelligence\": \"https://en.wikipedia.org/wiki/Category:Artificial_intelligence\",\n", - " \"Artificial moral agents\": \"https://en.wikipedia.org/wiki/Artificial_moral_agents\",\n", - " \"Berryhill et al. (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBerryhillHeangClogherMcBride2019\",\n", - " \"Computational chemistry\": \"https://en.wikipedia.org/wiki/Computational_chemistry\",\n", - " \"Consciousness Explained\": \"https://en.wikipedia.org/wiki/Consciousness_Explained\",\n", - " \"Constructive empiricism\": \"https://en.wikipedia.org/wiki/Constructive_empiricism\",\n", - " \"Decision support system\": \"https://en.wikipedia.org/wiki/Decision_support_system\",\n", - " \"Dreyfus' critique of AI\": \"https://en.wikipedia.org/wiki/Dreyfus%27_critique_of_AI\",\n", - " \"Eliminative materialism\": \"https://en.wikipedia.org/wiki/Eliminative_materialism\",\n", - " \"Engineering cybernetics\": \"https://en.wikipedia.org/wiki/Engineering_cybernetics\",\n", - " \"Evidence-based practice\": \"https://en.wikipedia.org/wiki/Evidence-based_practice\",\n", - " \"Evolutionary algorithms\": \"https://en.wikipedia.org/wiki/Evolutionary_algorithm\",\n", - " \"Exploratory engineering\": \"https://en.wikipedia.org/wiki/Exploratory_engineering\",\n", - " \"Goodman & Flaxman (2017\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoodmanFlaxman2017\",\n", - " \"Inflation Reduction Act\": \"https://en.wikipedia.org/wiki/Inflation_Reduction_Act\",\n", - " \"Markov decision process\": \"https://en.wikipedia.org/wiki/Markov_decision_process\",\n", - " \"Model-dependent realism\": \"https://en.wikipedia.org/wiki/Model-dependent_realism\",\n", - " \"Monte Carlo tree search\": \"https://en.wikipedia.org/wiki/Monte_Carlo_tree_search\",\n", - " \"Philosophers of science\": \"https://en.wikipedia.org/wiki/List_of_philosophers_of_science\",\n", - " \"Photograph manipulation\": \"https://en.wikipedia.org/wiki/Photograph_manipulation\",\n", - " \"Poole & Mackworth (2017\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPooleMackworth2017\",\n", - " \"Russell & Norvig (2003)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRussellNorvig2003\",\n", - " \"Russell & Norvig (2021)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFRussellNorvig2021\",\n", - " \"Scientific essentialism\": \"https://en.wikipedia.org/wiki/Scientific_essentialism\",\n", - " \"Technological evolution\": \"https://en.wikipedia.org/wiki/Technological_evolution\",\n", - " \"The Singularity is Near\": \"https://en.wikipedia.org/wiki/The_Singularity_is_Near\",\n", - " \"The Wall Street Journal\": \"https://en.wikipedia.org/wiki/The_Wall_Street_Journal\",\n", - " \"Thinking, Fast and Slow\": \"https://books.google.com/books?id=ZuKTvERuPG8C\",\n", - " \"What Computers Can't Do\": \"https://en.wikipedia.org/wiki/What_Computers_Can%27t_Do\",\n", - " \"ant colony optimization\": \"https://en.wikipedia.org/wiki/Ant_colony_optimization\",\n", - " \"central processing unit\": \"https://en.wikipedia.org/wiki/Central_processing_unit\",\n", - " \"closed world assumption\": \"https://en.wikipedia.org/wiki/Closed_world_assumption\",\n", - " \"combinatorial explosion\": \"https://en.wikipedia.org/wiki/Combinatorial_explosion\",\n", - " \"constraint satisfaction\": \"https://en.wikipedia.org/wiki/Constraint_satisfaction\",\n", - " \"kill an innocent person\": \"https://en.wikipedia.org/wiki/Murder\",\n", - " \"phase out nuclear power\": \"https://en.wikipedia.org/wiki/Nuclear_power_phase-out\",\n", - " \"support vector machines\": \"https://en.wikipedia.org/wiki/Support_vector_machines\",\n", - " \"\\\"Automation and anxiety\\\"\": \"https://www.economist.com/news/special-report/21700758-will-smarter-machines-cause-mass-unemployment-automation-and-anxiety\",\n", - " \"\\\"What is generative AI?\\\"\": \"https://www.ibm.com/topics/generative-ai\",\n", - " \"1.8 General intelligence\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#General_intelligence\",\n", - " \"10.1017/CBO9780511975837\": \"https://doi.org/10.1017%2FCBO9780511975837\",\n", - " \"10.1093/mind/LIX.236.433\": \"https://doi.org/10.1093%2Fmind%2FLIX.236.433\",\n", - " \"10.1109/MCI.2014.2307227\": \"https://doi.org/10.1109%2FMCI.2014.2307227\",\n", - " \"10.1109/msp.2012.2205597\": \"https://doi.org/10.1109%2Fmsp.2012.2205597\",\n", - " \"10.1609/aimag.v38i3.2741\": \"https://doi.org/10.1609%2Faimag.v38i3.2741\",\n", - " \"2.1.1 State space search\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#State_space_search\",\n", - " \"Aeronautical engineering\": \"https://en.wikipedia.org/wiki/Aeronautics\",\n", - " \"Algorithmic transparency\": \"https://en.wikipedia.org/wiki/Algorithmic_transparency\",\n", - " \"Artificial consciousness\": \"https://en.wikipedia.org/wiki/Artificial_consciousness\",\n", - " \"Bayesian decision theory\": \"https://en.wikipedia.org/wiki/Bayesian_decision_theory\",\n", - " \"Bias\\u2013variance tradeoff\": \"https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff\",\n", - " \"Charles Geoffrey Vickers\": \"https://en.wikipedia.org/wiki/Geoffrey_Vickers\",\n", - " \"Chief automation officer\": \"https://en.wikipedia.org/wiki/Chief_automation_officer\",\n", - " \"Computational complexity\": \"https://en.wikipedia.org/wiki/Computational_complexity\",\n", - " \"Computational healthcare\": \"https://en.wikipedia.org/wiki/Health_informatics\",\n", - " \"Differentiable computing\": \"https://en.wikipedia.org/wiki/Template:Differentiable_computing\",\n", - " \"Domain-specific language\": \"https://en.wikipedia.org/wiki/Domain-specific_language\",\n", - " \"Dreyfus & Dreyfus (1986)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFDreyfusDreyfus1986\",\n", - " \"Edit interlanguage links\": \"https://www.wikidata.org/wiki/Special:EntityPage/Q11660#sitelinks-wikipedia\",\n", - " \"Evolutionary computation\": \"https://en.wikipedia.org/wiki/Evolutionary_computation\",\n", - " \"Evolutionary data mining\": \"https://en.wikipedia.org/wiki/Evolutionary_data_mining\",\n", - " \"Evolutionary programming\": \"https://en.wikipedia.org/wiki/Evolutionary_programming\",\n", - " \"Fifth Generation Project\": \"https://en.wikipedia.org/wiki/Fifth_Generation_Project\",\n", - " \"Functional contextualism\": \"https://en.wikipedia.org/wiki/Functional_contextualism\",\n", - " \"Future of Life Institute\": \"https://en.wikipedia.org/wiki/Future_of_Life_Institute\",\n", - " \"Graphics processing unit\": \"https://en.wikipedia.org/wiki/Graphics_processing_unit\",\n", - " \"Holographic data storage\": \"https://en.wikipedia.org/wiki/Holographic_data_storage\",\n", - " \"Ignoramus et ignorabimus\": \"https://en.wikipedia.org/wiki/Ignoramus_et_ignorabimus\",\n", - " \"Information value theory\": \"https://en.wikipedia.org/wiki/Information_value_theory\",\n", - " \"Instrumental convergence\": \"https://en.wikipedia.org/wiki/Instrumental_convergence\",\n", - " \"Intertheoretic reduction\": \"https://en.wikipedia.org/wiki/Intertheoretic_reduction\",\n", - " \"Jordan & Mitchell (2015)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFJordanMitchell2015\",\n", - " \"Knowledge representation\": \"https://en.wikipedia.org/wiki/Knowledge_representation\",\n", - " \"Lethal autonomous weapon\": \"https://en.wikipedia.org/wiki/Lethal_autonomous_weapon\",\n", - " \"Lungarella et al. (2003)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLungarellaMettaPfeiferSandini2003\",\n", - " \"M\\u00fcller & Bostrom (2014)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFM%C3%BCllerBostrom2014\",\n", - " \"Neumann & M\\u00f6ller (2008)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNeumannM%C3%B6ller2008\",\n", - " \"Regulation of algorithms\": \"https://en.wikipedia.org/wiki/Regulation_of_algorithms\",\n", - " \"Second-order cybernetics\": \"https://en.wikipedia.org/wiki/Second-order_cybernetics\",\n", - " \"Self-supervised learning\": \"https://en.wikipedia.org/wiki/Self-supervised_learning\",\n", - " \"Vision transformer (ViT)\": \"https://en.wikipedia.org/wiki/Vision_transformer\",\n", - " \"Warren Sturgis McCulloch\": \"https://en.wikipedia.org/wiki/Warren_Sturgis_McCulloch\",\n", - " \"anti-discrimination laws\": \"https://en.wikipedia.org/wiki/Anti-discrimination_law\",\n", - " \"computational complexity\": \"https://en.wikipedia.org/wiki/Computational_complexity\",\n", - " \"evolutionary computation\": \"https://en.wikipedia.org/wiki/Evolutionary_computation\",\n", - " \"information value theory\": \"https://en.wikipedia.org/wiki/Information_value_theory\",\n", - " \"knowledge representation\": \"https://en.wikipedia.org/wiki/Knowledge_representation\",\n", - " \"transformer architecture\": \"https://en.wikipedia.org/wiki/Transformer_architecture\",\n", - " \"\\\"Artificial Intelligence\\\"\": \"http://www.iep.utm.edu/art-inte\",\n", - " \"\\\"Executive Order N-12-23\\\"\": \"https://www.gov.ca.gov/wp-content/uploads/2023/09/AI-EO-No.12-_-GGN-Signed.pdf\",\n", - " \"\\\"a gift to the far right\\\"\": \"https://www.computerweekly.com/opinion/Labours-AI-Action-Plan-a-gift-to-the-far-right\",\n", - " \"10.1007/s00146-007-0094-5\": \"https://doi.org/10.1007%2Fs00146-007-0094-5\",\n", - " \"10.1007/s10676-007-9138-2\": \"https://doi.org/10.1007%2Fs10676-007-9138-2\",\n", - " \"10.1007/s10994-011-5242-y\": \"https://doi.org/10.1007%2Fs10994-011-5242-y\",\n", - " \"10.1007/s13218-012-0198-z\": \"https://doi.org/10.1007%2Fs13218-012-0198-z\",\n", - " \"10.1016/j.joi.2011.06.002\": \"https://doi.org/10.1016%2Fj.joi.2011.06.002\",\n", - " \"10.1017/S0140525X00005756\": \"https://doi.org/10.1017%2FS0140525X00005756\",\n", - " \"10.1017/S0269888905000408\": \"https://doi.org/10.1017%2FS0269888905000408\",\n", - " \"10.1109/cvpr.2012.6248110\": \"https://doi.org/10.1109%2Fcvpr.2012.6248110\",\n", - " \"10.1109/tamd.2009.2021702\": \"https://doi.org/10.1109%2Ftamd.2009.2021702\",\n", - " \"10.1109/tamd.2009.2039057\": \"https://doi.org/10.1109%2Ftamd.2009.2039057\",\n", - " \"10.1162/99608f92.8cd550d1\": \"https://doi.org/10.1162%2F99608f92.8cd550d1\",\n", - " \"10.1177/15248380221143772\": \"https://doi.org/10.1177%2F15248380221143772\",\n", - " \"10.1177/23780231241259627\": \"https://doi.org/10.1177%2F23780231241259627\",\n", - " \"10.7861/futurehosp.6-2-94\": \"https://doi.org/10.7861%2Ffuturehosp.6-2-94\",\n", - " \"2.8 Hardware and software\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Hardware_and_software\",\n", - " \"A priori and a posteriori\": \"https://en.wikipedia.org/wiki/A_priori_and_a_posteriori\",\n", - " \"Alignment Research Center\": \"https://en.wikipedia.org/wiki/Alignment_Research_Center\",\n", - " \"Artificial neural network\": \"https://en.wikipedia.org/wiki/Neural_network_(machine_learning)\",\n", - " \"Attention is all you need\": \"https://en.wikipedia.org/wiki/Attention_is_all_you_need\",\n", - " \"Automated decision making\": \"https://en.wikipedia.org/wiki/Automated_decision_making\",\n", - " \"Barfield & Pagallo (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBarfieldPagallo2018\",\n", - " \"Computational engineering\": \"https://en.wikipedia.org/wiki/Computational_engineering\",\n", - " \"Computational mathematics\": \"https://en.wikipedia.org/wiki/Computational_mathematics\",\n", - " \"Conjugate gradient method\": \"https://en.wikipedia.org/wiki/Conjugate_gradient_method\",\n", - " \"Darwin among the Machines\": \"https://archive.org/details/darwinamongmachi00dyso\",\n", - " \"David Lewis (philosopher)\": \"https://en.wikipedia.org/wiki/David_Lewis_(philosopher)\",\n", - " \"Dynamic Bayesian networks\": \"https://en.wikipedia.org/wiki/Dynamic_Bayesian_network\",\n", - " \"Effective accelerationism\": \"https://en.wikipedia.org/wiki/Effective_accelerationism\",\n", - " \"Epistemological anarchism\": \"https://en.wikipedia.org/wiki/Epistemological_anarchism\",\n", - " \"Gottfried Wilhelm Leibniz\": \"https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz\",\n", - " \"Human\\u2013robot interaction\": \"https://en.wikipedia.org/wiki/Human%E2%80%93robot_interaction\",\n", - " \"Iphofen & Kritikos (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFIphofenKritikos2019\",\n", - " \"Markov decision processes\": \"https://en.wikipedia.org/wiki/Markov_decision_process\",\n", - " \"Recurrent neural networks\": \"https://en.wikipedia.org/wiki/Recurrent_neural_network\",\n", - " \"Semantic view of theories\": \"https://en.wikipedia.org/wiki/Semantic_view_of_theories\",\n", - " \"Technological convergence\": \"https://en.wikipedia.org/wiki/Technological_convergence\",\n", - " \"Technological singularity\": \"https://en.wikipedia.org/wiki/Technological_singularity\",\n", - " \"Topological deep learning\": \"https://en.wikipedia.org/wiki/Topological_deep_learning\",\n", - " \"Workplace robotics safety\": \"https://en.wikipedia.org/wiki/Workplace_robotics_safety\",\n", - " \"authoritarian governments\": \"https://en.wikipedia.org/wiki/Authoritarian\",\n", - " \"automated decision-making\": \"https://en.wikipedia.org/wiki/Automated_decision-making\",\n", - " \"automatic differentiation\": \"https://en.wikipedia.org/wiki/Automatic_differentiation\",\n", - " \"conditionally independent\": \"https://en.wikipedia.org/wiki/Conditionally_independent\",\n", - " \"dependent and independent\": \"https://en.wikipedia.org/wiki/Dependent_and_independent_variables\",\n", - " \"dynamic Bayesian networks\": \"https://en.wikipedia.org/wiki/Dynamic_Bayesian_network\",\n", - " \"fifth generation computer\": \"https://en.wikipedia.org/wiki/Fifth_generation_computer\",\n", - " \"graphics processing units\": \"https://en.wikipedia.org/wiki/Graphics_processing_unit\",\n", - " \"mathematical optimization\": \"https://en.wikipedia.org/wiki/Mathematical_optimization\",\n", - " \"paperclip factory manager\": \"https://en.wikipedia.org/wiki/Instrumental_convergence#Paperclip_maximizer\",\n", - " \"question answering system\": \"https://en.wikipedia.org/wiki/Question_answering_system\",\n", - " \"technological singularity\": \"https://en.wikipedia.org/wiki/Technological_singularity\",\n", - " \"word-sense disambiguation\": \"https://en.wikipedia.org/wiki/Word-sense_disambiguation\",\n", - " \"\\u0422\\u0430\\u0442\\u0430\\u0440\\u0447\\u0430 / tatar\\u00e7a\": \"https://tt.wikipedia.org/wiki/%D0%AF%D1%81%D0%B0%D0%BB%D0%BC%D0%B0_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\u95a9\\u5357\\u8a9e / B\\u00e2n-l\\u00e2m-g\\u00fa\": \"https://zh-min-nan.wikipedia.org/wiki/J%C3%AEn-kang_t%C3%AC-l%C3%AAng\",\n", - " \"\\\"Explained: Generative AI\\\"\": \"https://news.mit.edu/2023/explained-generative-ai-1109\",\n", - " \"\\\"The Future of AI Is GOMA\\\"\": \"https://www.theatlantic.com/technology/archive/2023/10/big-ai-silicon-valley-dominance/675752\",\n", - " \"10.1007/s10694-021-01157-3\": \"https://doi.org/10.1007%2Fs10694-021-01157-3\",\n", - " \"10.1007/s11019-020-09948-1\": \"https://doi.org/10.1007%2Fs11019-020-09948-1\",\n", - " \"10.1007/s11930-024-00392-3\": \"https://doi.org/10.1007%2Fs11930-024-00392-3\",\n", - " \"10.1038/s41586-021-03819-2\": \"https://doi.org/10.1038%2Fs41586-021-03819-2\",\n", - " \"10.1038/s41586-021-04357-7\": \"https://doi.org/10.1038%2Fs41586-021-04357-7\",\n", - " \"10.1038/s41589-024-01580-x\": \"https://doi.org/10.1038%2Fs41589-024-01580-x\",\n", - " \"10.1038/s42256-022-00465-9\": \"https://doi.org/10.1038%2Fs42256-022-00465-9\",\n", - " \"10.1108/IJOES-05-2023-0107\": \"https://doi.org/10.1108%2FIJOES-05-2023-0107\",\n", - " \"10.3389/fsens.2023.1294721\": \"https://doi.org/10.3389%2Ffsens.2023.1294721\",\n", - " \"4.1.6 Lack of transparency\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Lack_of_transparency\",\n", - " \"Anderson & Anderson (2011)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAndersonAnderson2011\",\n", - " \"Artificial neural networks\": \"https://en.wikipedia.org/wiki/Category:Artificial_neural_networks\",\n", - " \"Computational intelligence\": \"https://en.wikipedia.org/wiki/Computational_intelligence\",\n", - " \"Computational neuroscience\": \"https://en.wikipedia.org/wiki/Category:Computational_neuroscience\",\n", - " \"Database management system\": \"https://en.wikipedia.org/wiki/Database\",\n", - " \"Expectation\\u2013maximization\": \"https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm\",\n", - " \"Fukushima nuclear accident\": \"https://en.wikipedia.org/wiki/Fukushima_nuclear_accident\",\n", - " \"Gated recurrent unit (GRU)\": \"https://en.wikipedia.org/wiki/Gated_recurrent_unit\",\n", - " \"Graph neural network (GNN)\": \"https://en.wikipedia.org/wiki/Graph_neural_network\",\n", - " \"Hybrid intelligent systems\": \"https://en.wikipedia.org/wiki/Hybrid_intelligent_system\",\n", - " \"Intelligence amplification\": \"https://en.wikipedia.org/wiki/Intelligence_amplification\",\n", - " \"Intrusion detection system\": \"https://en.wikipedia.org/wiki/Intrusion_detection_system\",\n", - " \"Learning classifier system\": \"https://en.wikipedia.org/wiki/Learning_classifier_system\",\n", - " \"Luger & Stubblefield (2004\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLugerStubblefield2004\",\n", - " \"Merkle & Middendorf (2013)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFMerkleMiddendorf2013\",\n", - " \"Mind, language and society\": \"https://archive.org/details/mindlanguagesoci00sear\",\n", - " \"Natural evolution strategy\": \"https://en.wikipedia.org/wiki/Natural_evolution_strategy\",\n", - " \"Probability and statistics\": \"https://en.wikipedia.org/wiki/Glossary_of_probability_and_statistics\",\n", - " \"Recursive self-improvement\": \"https://en.wikipedia.org/wiki/Recursive_self-improvement\",\n", - " \"Robotic process automation\": \"https://en.wikipedia.org/wiki/Robotic_process_automation\",\n", - " \"Scientific American (1999)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFScientific_American1999\",\n", - " \"Simple exhaustive searches\": \"https://en.wikipedia.org/wiki/Brute_force_search\",\n", - " \"Social information systems\": \"https://en.wikipedia.org/wiki/Social_software\",\n", - " \"Stanford University (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFStanford_University2023\",\n", - " \"Technological unemployment\": \"https://en.wikipedia.org/wiki/Technological_unemployment\",\n", - " \"Technology readiness level\": \"https://en.wikipedia.org/wiki/Technology_readiness_level\",\n", - " \"Wikimedia Foundation, Inc.\": \"https://wikimediafoundation.org/\",\n", - " \"artificial neural networks\": \"https://en.wikipedia.org/wiki/Artificial_neural_networks\",\n", - " \"facial recognition systems\": \"https://en.wikipedia.org/wiki/Facial_recognition_system\",\n", - " \"feeling, emotion, and mood\": \"https://en.wikipedia.org/wiki/Affect_(psychology)\",\n", - " \"perceive their environment\": \"https://en.wikipedia.org/wiki/Machine_perception\",\n", - " \"\\\"Darwin among the Machines\\\"\": \"https://nzetc.victoria.ac.nz/tm/scholarly/tei-ButFir-t1-g1-t1-g1-t4-body.html\",\n", - " \"10.1007/978-3-540-68677-4_1\": \"https://doi.org/10.1007%2F978-3-540-68677-4_1\",\n", - " \"10.1109/ACCESS.2021.3097559\": \"https://doi.org/10.1109%2FACCESS.2021.3097559\",\n", - " \"10.13140/RG.2.2.30247.50087\": \"https://doi.org/10.13140%2FRG.2.2.30247.50087\",\n", - " \"2.1 Search and optimization\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Search_and_optimization\",\n", - " \"4.1.1 Privacy and copyright\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Privacy_and_copyright\",\n", - " \"6.2.4 Narrow vs. general AI\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Narrow_vs._general_AI\",\n", - " \"6.3.3 AI welfare and rights\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#AI_welfare_and_rights\",\n", - " \"Artificial Intelligence Act\": \"https://en.wikipedia.org/wiki/Artificial_Intelligence_Act\",\n", - " \"Authority control databases\": \"https://en.wikipedia.org/wiki/Help:Authority_control\",\n", - " \"Business process automation\": \"https://en.wikipedia.org/wiki/Business_process_automation\",\n", - " \"Constructivist epistemology\": \"https://en.wikipedia.org/wiki/Constructivist_epistemology\",\n", - " \"Deductive-nomological model\": \"https://en.wikipedia.org/wiki/Deductive-nomological_model\",\n", - " \"Do You Trust This Computer?\": \"https://en.wikipedia.org/wiki/Do_You_Trust_This_Computer%3F\",\n", - " \"Fairness (machine learning)\": \"https://en.wikipedia.org/wiki/Fairness_(machine_learning)\",\n", - " \"Feedforward neural networks\": \"https://en.wikipedia.org/wiki/Feedforward_neural_network\",\n", - " \"Gene expression programming\": \"https://en.wikipedia.org/wiki/Gene_expression_programming\",\n", - " \"Hypothetico-deductive model\": \"https://en.wikipedia.org/wiki/Hypothetico-deductive_model\",\n", - " \"Information storage systems\": \"https://en.wikipedia.org/wiki/Computer_data_storage\",\n", - " \"International Energy Agency\": \"https://en.wikipedia.org/wiki/International_Energy_Agency\",\n", - " \"Luger & Stubblefield (2004)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLugerStubblefield2004\",\n", - " \"Multilayer perceptron (MLP)\": \"https://en.wikipedia.org/wiki/Multilayer_perceptron\",\n", - " \"Natural language processing\": \"https://en.wikipedia.org/wiki/Natural_language_processing\",\n", - " \"O\\u02bbzbekcha / \\u045e\\u0437\\u0431\\u0435\\u043a\\u0447\\u0430\": \"https://uz.wikipedia.org/wiki/Sun%CA%BCiy_intellekt\",\n", - " \"Particle swarm optimization\": \"https://en.wikipedia.org/wiki/Particle_swarm_optimization\",\n", - " \"Pennachin & Goertzel (2007)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPennachinGoertzel2007\",\n", - " \"Software studies: a lexicon\": \"https://archive.org/details/softwarestudiesl00full_007\",\n", - " \"The Advent of the Algorithm\": \"https://archive.org/details/adventofalgorith0000berl\",\n", - " \"Vision-guided robot systems\": \"https://en.wikipedia.org/wiki/Vision-guided_robot_systems\",\n", - " \"centralized decision making\": \"https://en.wikipedia.org/wiki/Technocracy\",\n", - " \"feedforward neural networks\": \"https://en.wikipedia.org/wiki/Feedforward_neural_network\",\n", - " \"natural language processing\": \"https://en.wikipedia.org/wiki/Natural_language_processing\",\n", - " \"natural-language processing\": \"https://en.wikipedia.org/wiki/Natural-language_processing\",\n", - " \"particle swarm optimization\": \"https://en.wikipedia.org/wiki/Particle_swarm_optimization\",\n", - " \"weapons of mass destruction\": \"https://en.wikipedia.org/wiki/Weapons_of_mass_destruction\",\n", - " \"\\u10db\\u10d0\\u10e0\\u10d2\\u10d0\\u10da\\u10e3\\u10e0\\u10d8\": \"https://xmf.wikipedia.org/wiki/%E1%83%AE%E1%83%94%E1%83%9A%E1%83%A3%E1%83%90%E1%83%9C%E1%83%A3%E1%83%A0%E1%83%98_%E1%83%98%E1%83%9C%E1%83%A2%E1%83%94%E1%83%9A%E1%83%94%E1%83%A5%E1%83%A2%E1%83%98\",\n", - " \"\\u1797\\u17b6\\u179f\\u17b6\\u1781\\u17d2\\u1798\\u17c2\\u179a\": \"https://km.wikipedia.org/wiki/%E1%9E%94%E1%9E%89%E1%9F%92%E1%9E%89%E1%9E%B6%E1%9E%9F%E1%9E%B7%E1%9E%94%E1%9F%92%E1%9E%94%E1%9E%93%E1%9E%B7%E1%9E%98%E1%9F%92%E1%9E%98%E1%9E%B7%E1%9E%8F\",\n", - " \"\\\"Elephants Don't Play Chess\\\"\": \"http://people.csail.mit.edu/brooks/papers/elephants.pdf\",\n", - " \"\\\"Minds, Brains and Programs\\\"\": \"http://cogprints.org/7150/1/10.1.1.83.5248.pdf\",\n", - " \"1.2 Knowledge representation\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Knowledge_representation\",\n", - " \"10.1016/j.autcon.2020.103140\": \"https://doi.org/10.1016%2Fj.autcon.2020.103140\",\n", - " \"10.1016/j.bushor.2018.08.004\": \"https://doi.org/10.1016%2Fj.bushor.2018.08.004\",\n", - " \"10.1016/j.imavis.2007.08.013\": \"https://doi.org/10.1016%2Fj.imavis.2007.08.013\",\n", - " \"10.1016/j.inffus.2017.02.003\": \"https://doi.org/10.1016%2Fj.inffus.2017.02.003\",\n", - " \"10.1016/j.neunet.2014.09.003\": \"https://doi.org/10.1016%2Fj.neunet.2014.09.003\",\n", - " \"10.1080/09540090310001655110\": \"https://doi.org/10.1080%2F09540090310001655110\",\n", - " \"10.1126/science.291.5504.599\": \"https://doi.org/10.1126%2Fscience.291.5504.599\",\n", - " \"A.I. Artificial Intelligence\": \"https://en.wikipedia.org/wiki/A.I._Artificial_Intelligence\",\n", - " \"Behavior selection algorithm\": \"https://en.wikipedia.org/wiki/Behavior_selection_algorithm\",\n", - " \"Computational social science\": \"https://en.wikipedia.org/wiki/Computational_social_science\",\n", - " \"Computational theory of mind\": \"https://en.wikipedia.org/wiki/Computational_theory_of_mind\",\n", - " \"Electronic design automation\": \"https://en.wikipedia.org/wiki/Electronic_design_automation\",\n", - " \"Future of Humanity Institute\": \"https://en.wikipedia.org/wiki/Future_of_Humanity_Institute\",\n", - " \"Game artificial intelligence\": \"https://en.wikipedia.org/wiki/Game_artificial_intelligence\",\n", - " \"Human\\u2013computer interaction\": \"https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction\",\n", - " \"Software development process\": \"https://en.wikipedia.org/wiki/Software_development_process\",\n", - " \"The New York Review of Books\": \"https://en.wikipedia.org/wiki/The_New_York_Review_of_Books\",\n", - " \"Theoretical computer science\": \"https://en.wikipedia.org/wiki/Theoretical_computer_science\",\n", - " \"Use dmy dates from July 2023\": \"https://en.wikipedia.org/wiki/Category:Use_dmy_dates_from_July_2023\",\n", - " \"Very Large Scale Integration\": \"https://en.wikipedia.org/wiki/Very_Large_Scale_Integration\",\n", - " \"Weak artificial intelligence\": \"https://en.wikipedia.org/wiki/Weak_artificial_intelligence\",\n", - " \"human\\u2013computer interaction\": \"https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction\",\n", - " \"online gender-based violence\": \"https://en.wikipedia.org/wiki/Online_gender-based_violence\",\n", - " \"reprogram and improve itself\": \"https://en.wikipedia.org/wiki/Recursive_self-improvement\",\n", - " \"\\u0531\\u0580\\u0565\\u0582\\u0574\\u057f\\u0561\\u0570\\u0561\\u0575\\u0565\\u0580\\u0567\\u0576\": \"https://hyw.wikipedia.org/wiki/%D4%B1%D6%80%D5%B0%D5%A5%D5%BD%D5%BF%D5%A1%D5%AF%D5%A1%D5%B6_%D4%B2%D5%A1%D5%B6%D5%A1%D5%AF%D5%A1%D5%B6%D5%B8%D6%82%D5%A9%D5%AB%D6%82%D5%B6\",\n", - " \"\\u0626\\u06c7\\u064a\\u063a\\u06c7\\u0631\\u0686\\u06d5 / Uyghurche\": \"https://ug.wikipedia.org/wiki/%D8%B3%DB%88%D9%86%D8%A6%D9%89_%D8%A6%D9%89%D8%AF%D9%89%D8%B1%D8%A7%D9%83\",\n", - " \"\\u0915\\u0949\\u0936\\u0941\\u0930 / \\u06a9\\u0672\\u0634\\u064f\\u0631\": \"https://ks.wikipedia.org/wiki/%D9%86%D9%82%D9%84%DB%8C_%D8%B9%D9%82%D9%84_AI\",\n", - " \"\\u0928\\u0947\\u092a\\u093e\\u0932 \\u092d\\u093e\\u0937\\u093e\": \"https://new.wikipedia.org/wiki/%E0%A4%86%E0%A4%B0%E0%A5%8D%E0%A4%9F%E0%A4%BF%E0%A4%AB%E0%A4%BF%E0%A4%B8%E0%A4%BF%E0%A4%AF%E0%A4%B2_%E0%A4%87%E0%A4%A8%E0%A5%8D%E0%A4%9F%E0%A5%87%E0%A4%B2%E0%A4%BF%E0%A4%9C%E0%A5%87%E0%A4%A8%E0%A5%8D%E0%A4%B8\",\n", - " \"\\\"ChatGPT Is Already Obsolete\\\"\": \"https://www.theatlantic.com/technology/archive/2023/05/ai-advancements-multimodal-models/674113/\",\n", - " \"\\\"The Talk of the Town \\u2013 It\\\"\": \"https://www.newyorker.com/magazine/1952/08/02/it\",\n", - " \"10.1016/S0921-8890(05)80025-9\": \"https://doi.org/10.1016%2FS0921-8890%2805%2980025-9\",\n", - " \"10.1080/00224499.2024.2396457\": \"https://doi.org/10.1080%2F00224499.2024.2396457\",\n", - " \"10.1080/01900692.2018.1498103\": \"https://doi.org/10.1080%2F01900692.2018.1498103\",\n", - " \"10.1080/19361610.2024.2331885\": \"https://doi.org/10.1080%2F19361610.2024.2331885\",\n", - " \"10.1080/21582041.2018.1563803\": \"https://doi.org/10.1080%2F21582041.2018.1563803\",\n", - " \"10.1126/science.185.4157.1124\": \"https://doi.org/10.1126%2Fscience.185.4157.1124\",\n", - " \"6.2.3 Soft vs. hard computing\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Soft_vs._hard_computing\",\n", - " \"Bacterial Colony Optimization\": \"https://en.wikipedia.org/wiki/Bacterial_Colony_Optimization\",\n", - " \"Computational fields of study\": \"https://en.wikipedia.org/wiki/Category:Computational_fields_of_study\",\n", - " \"Computational learning theory\": \"https://en.wikipedia.org/wiki/Computational_learning_theory\",\n", - " \"Convolutional neural networks\": \"https://en.wikipedia.org/wiki/Convolutional_neural_networks\",\n", - " \"Enterprise information system\": \"https://en.wikipedia.org/wiki/Enterprise_information_system\",\n", - " \"Geographic information system\": \"https://en.wikipedia.org/wiki/Geographic_information_system\",\n", - " \"Hard problem of consciousness\": \"https://en.wikipedia.org/wiki/Hard_problem_of_consciousness\",\n", - " \"Information andcommunications\": \"https://en.wikipedia.org/wiki/Information_and_communications_technology\",\n", - " \"Intractability and efficiency\": \"https://en.wikipedia.org/wiki/Intractably\",\n", - " \"Long short-term memory (LSTM)\": \"https://en.wikipedia.org/wiki/Long_short-term_memory\",\n", - " \"Multimedia information system\": \"https://en.wikipedia.org/wiki/Multimedia_database\",\n", - " \"Nuclear Regulatory Commission\": \"https://en.wikipedia.org/wiki/Nuclear_Regulatory_Commission\",\n", - " \"Residual neural network (RNN)\": \"https://en.wikipedia.org/wiki/Residual_neural_network\",\n", - " \"Technology in science fiction\": \"https://en.wikipedia.org/wiki/Technology_in_science_fiction\",\n", - " \"The Day the Earth Stood Still\": \"https://en.wikipedia.org/wiki/The_Day_the_Earth_Stood_Still\",\n", - " \"Variational autoencoder (VAE)\": \"https://en.wikipedia.org/wiki/Variational_autoencoder\",\n", - " \"Wirtz, Weyerer & Geyer (2018)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFWirtzWeyererGeyer2018\",\n", - " \"convolutional neural networks\": \"https://en.wikipedia.org/wiki/Convolutional_neural_networks\",\n", - " \"fund more productive projects\": \"https://en.wikipedia.org/wiki/Mansfield_Amendment\",\n", - " \"multimodal sentiment analysis\": \"https://en.wikipedia.org/wiki/Multimodal_sentiment_analysis\",\n", - " \"\\\"Copyright Services: Fair Use\\\"\": \"https://guides.library.cornell.edu/copyright/fair-use\",\n", - " \"\\\"What the New GPT-4 AI Can Do\\\"\": \"https://www.scientificamerican.com/article/what-the-new-gpt-4-ai-can-do/\",\n", - " \"10.1016/j.techfore.2016.08.019\": \"https://doi.org/10.1016%2Fj.techfore.2016.08.019\",\n", - " \"2.5 Artificial neural networks\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Artificial_neural_networks\",\n", - " \"4.1.2 Dominance by tech giants\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Dominance_by_tech_giants\",\n", - " \"An Inductive Inference Machine\": \"http://world.std.com/~rjs/indinf56.pdf\",\n", - " \"Arntz, Gregory & Zierahn (2016\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFArntzGregoryZierahn2016\",\n", - " \"Center for Applied Rationality\": \"https://en.wikipedia.org/wiki/Center_for_Applied_Rationality\",\n", - " \"Differentiable neural computer\": \"https://en.wikipedia.org/wiki/Differentiable_neural_computer\",\n", - " \"Inverse reinforcement learning\": \"https://en.wikipedia.org/wiki/Inverse_reinforcement_learning\",\n", - " \"Network performance evaluation\": \"https://en.wikipedia.org/wiki/Network_performance\",\n", - " \"Recurrent neural network (RNN)\": \"https://en.wikipedia.org/wiki/Recurrent_neural_network\",\n", - " \"Strategic Computing Initiative\": \"https://en.wikipedia.org/wiki/Strategic_Computing_Initiative\",\n", - " \"automatic language translation\": \"https://en.wikipedia.org/wiki/Automatic_language_translation\",\n", - " \"conditional probability tables\": \"https://en.wikipedia.org/wiki/Conditional_probability_table\",\n", - " \"inverse reinforcement learning\": \"https://en.wikipedia.org/wiki/Inverse_reinforcement_learning\",\n", - " \"\\u1019\\u103c\\u1014\\u103a\\u1019\\u102c\\u1018\\u102c\\u101e\\u102c\": \"https://my.wikipedia.org/wiki/%E1%80%89%E1%80%AC%E1%80%8F%E1%80%BA%E1%80%9B%E1%80%8A%E1%80%BA%E1%80%90%E1%80%AF\",\n", - " \"\\\"AI and the future of humanity\\\"\": \"https://www.youtube.com/watch?v=LWiM-LuRe6w\",\n", - " \"\\\"Electricity 2024 \\u2013 Analysis\\\"\": \"https://www.iea.org/reports/electricity-2024\",\n", - " \"\\\"Trust and Distrust in America\\\"\": \"https://www.pewresearch.org/politics/2019/07/22/trust-and-distrust-in-america\",\n", - " \"\\\"Why Technology Favors Tyranny\\\"\": \"https://www.theatlantic.com/magazine/archive/2018/10/yuval-noah-harari-technology-tyranny/568330\",\n", - " \"\\\"Why don't robots have rights?\\\"\": \"https://bigthink.com/thinking/why-dont-robots-have-rights\",\n", - " \"1.5 Natural language processing\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Natural_language_processing\",\n", - " \"6.2 Evaluating approaches to AI\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Evaluating_approaches_to_AI\",\n", - " \"AI@50: AI Past, Present, Future\": \"https://web.archive.org/web/20081008120238/http://www.engagingexperience.com/2006/07/ai50_ai_past_pr.html\",\n", - " \"Arntz, Gregory & Zierahn (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFArntzGregoryZierahn2016\",\n", - " \"Articles with short description\": \"https://en.wikipedia.org/wiki/Category:Articles_with_short_description\",\n", - " \"Artificial general intelligence\": \"https://en.wikipedia.org/wiki/Artificial_general_intelligence\",\n", - " \"Cellular evolutionary algorithm\": \"https://en.wikipedia.org/wiki/Cellular_evolutionary_algorithm\",\n", - " \"Computational complexity theory\": \"https://en.wikipedia.org/wiki/Computational_complexity_theory\",\n", - " \"Cybernetics in the Soviet Union\": \"https://en.wikipedia.org/wiki/Cybernetics_in_the_Soviet_Union\",\n", - " \"Fourth-generation optical discs\": \"https://en.wikipedia.org/wiki/Optical_disc#Fourth-generation\",\n", - " \"Poole, Mackworth & Goebel (1998\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPooleMackworthGoebel1998\",\n", - " \"Universal approximation theorem\": \"https://en.wikipedia.org/wiki/Universal_approximation_theorem\",\n", - " \"artificial general intelligence\": \"https://en.wikipedia.org/wiki/Artificial_general_intelligence\",\n", - " \"spell the end of the human race\": \"https://en.wikipedia.org/wiki/Global_catastrophic_risk\",\n", - " \"targeting online advertisements\": \"https://en.wikipedia.org/wiki/Targeted_advertising\",\n", - " \"\\\"Here's where the A.I. jobs are\\\"\": \"https://www.cnbc.com/2023/04/05/ai-jobs-see-the-state-by-state-data-from-a-stanford-study.html\",\n", - " \"1.3 Planning and decision-making\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Planning_and_decision-making\",\n", - " \"10.1016/j.compbiomed.2024.108742\": \"https://doi.org/10.1016%2Fj.compbiomed.2024.108742\",\n", - " \"10.5209/rev_TK.2015.v12.n2.49072\": \"https://doi.org/10.5209%2Frev_TK.2015.v12.n2.49072\",\n", - " \"4.1.8 Technological unemployment\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Technological_unemployment\",\n", - " \"6.2.1 Symbolic AI and its limits\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Symbolic_AI_and_its_limits\",\n", - " \"AI & ML in Fusion, video lecture\": \"https://drive.google.com/file/d/1npCTrJ8XJn20ZGDA_DfMpANuQZFMzKPh/view?usp=drive_link\",\n", - " \"Analytic\\u2013synthetic distinction\": \"https://en.wikipedia.org/wiki/Analytic%E2%80%93synthetic_distinction\",\n", - " \"CS1 German-language sources (de)\": \"https://en.wikipedia.org/wiki/Category:CS1_German-language_sources_(de)\",\n", - " \"Friendly artificial intelligence\": \"https://en.wikipedia.org/wiki/Friendly_artificial_intelligence\",\n", - " \"Government Accountability Office\": \"https://en.wikipedia.org/wiki/Government_Accountability_Office\",\n", - " \"Journal of Consciousness Studies\": \"https://en.wikipedia.org/wiki/Journal_of_Consciousness_Studies\",\n", - " \"Poole, Mackworth & Goebel (1998)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFPooleMackworthGoebel1998\",\n", - " \"\\\"Governance of Superintelligence\\\"\": \"https://openai.com/blog/governance-of-superintelligence\",\n", - " \"\\\"What Jobs Will the Robots Take?\\\"\": \"https://www.theatlantic.com/business/archive/2014/01/what-jobs-will-the-robots-take/283239\",\n", - " \"1.1 Reasoning and problem-solving\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Reasoning_and_problem-solving\",\n", - " \"3.9 Other industry-specific tasks\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Other_industry-specific_tasks\",\n", - " \"Artificial intelligence arms race\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_arms_race\",\n", - " \"Automated planning and scheduling\": \"https://en.wikipedia.org/wiki/Automated_planning_and_scheduling\",\n", - " \"Ethics of artificial intelligence\": \"https://en.wikipedia.org/wiki/Ethics_of_artificial_intelligence\",\n", - " \"Genetics and evolutionary biology\": \"https://en.wikipedia.org/wiki/Glossary_of_genetics_and_evolutionary_biology\",\n", - " \"History and philosophy of science\": \"https://en.wikipedia.org/wiki/History_and_philosophy_of_science\",\n", - " \"Kahneman, Slovic & Tversky (1982)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKahnemanSlovicTversky1982\",\n", - " \"Sociology of scientific ignorance\": \"https://en.wikipedia.org/wiki/Sociology_of_scientific_ignorance\",\n", - " \"Sociology of scientific knowledge\": \"https://en.wikipedia.org/wiki/Sociology_of_scientific_knowledge\",\n", - " \"Software configuration management\": \"https://en.wikipedia.org/wiki/Software_configuration_management\",\n", - " \"Webarchive template wayback links\": \"https://en.wikipedia.org/wiki/Category:Webarchive_template_wayback_links\",\n", - " \"\\\"AI Should Be Terrified of Humans\\\"\": \"https://time.com/6296234/ai-should-be-terrified-of-humans\",\n", - " \"\\\"Robots could demand legal rights\\\"\": \"http://news.bbc.co.uk/2/hi/technology/6200005.stm\",\n", - " \"\\\"The Computational Theory of Mind\\\"\": \"http://plato.stanford.edu/entries/computational-mind\",\n", - " \"\\\"The race of the AI labs heats up\\\"\": \"https://www.economist.com/business/2023/01/30/the-race-of-the-ai-labs-heats-up\",\n", - " \"4.1.7 Bad actors and weaponized AI\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Bad_actors_and_weaponized_AI\",\n", - " \"4.2 Ethical machines and alignment\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Ethical_machines_and_alignment\",\n", - " \"AI set to exceed human brain power\": \"http://www.cnn.com/2006/TECH/science/07/24/ai.bostrom/\",\n", - " \"Artificial intelligence in fiction\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_fiction\",\n", - " \"CS1 Japanese-language sources (ja)\": \"https://en.wikipedia.org/wiki/Category:CS1_Japanese-language_sources_(ja)\",\n", - " \"Convolutional neural network (CNN)\": \"https://en.wikipedia.org/wiki/Convolutional_neural_network\",\n", - " \"Evolutionary Computation (journal)\": \"https://en.wikipedia.org/wiki/Evolutionary_Computation_(journal)\",\n", - " \"Functionalism (philosophy of mind)\": \"https://en.wikipedia.org/wiki/Functionalism_(philosophy_of_mind)\",\n", - " \"General Data Protection Regulation\": \"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\",\n", - " \"Generative artificial intelligence\": \"https://en.wikipedia.org/wiki/Generative_artificial_intelligence\",\n", - " \"History of artificial intelligence\": \"https://en.wikipedia.org/wiki/History_of_artificial_intelligence\",\n", - " \"Hornik, Stinchcombe & White (1989)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFHornikStinchcombeWhite1989\",\n", - " \"Integrated development environment\": \"https://en.wikipedia.org/wiki/Integrated_development_environment\",\n", - " \"Kuperman, Reichley & Bailey (2006)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFKupermanReichleyBailey2006\",\n", - " \"Statement on AI risk of extinction\": \"https://en.wikipedia.org/wiki/Statement_on_AI_risk_of_extinction\",\n", - " \"artificial intelligence in fiction\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_fiction\",\n", - " \"generative pre-trained transformer\": \"https://en.wikipedia.org/wiki/Generative_pre-trained_transformer\",\n", - " \"physical symbol systems hypothesis\": \"https://en.wikipedia.org/wiki/Physical_symbol_systems_hypothesis\",\n", - " \"the mass replacement of human jobs\": \"https://en.wikipedia.org/wiki/Technological_unemployment\",\n", - " \"4.1.5 Algorithmic bias and fairness\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Algorithmic_bias_and_fairness\",\n", - " \"ACM Computing Classification System\": \"https://en.wikipedia.org/wiki/ACM_Computing_Classification_System\",\n", - " \"Altman, Brockman & Sutskever (2023)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFAltmanBrockmanSutskever2023\",\n", - " \"Association for Computing Machinery\": \"https://en.wikipedia.org/wiki/Association_for_Computing_Machinery\",\n", - " \"Bertini, Del Bimbo & Torniai (2006)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFBertiniDel_BimboTorniai2006\",\n", - " \"Ciresan, Meier & Schmidhuber (2012)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFCiresanMeierSchmidhuber2012\",\n", - " \"Distributed artificial intelligence\": \"https://en.wikipedia.org/wiki/Distributed_artificial_intelligence\",\n", - " \"Female gendering of AI technologies\": \"https://en.wikipedia.org/wiki/Female_gendering_of_AI_technologies\",\n", - " \"Future-oriented technology analysis\": \"https://en.wikipedia.org/wiki/Future-oriented_technology_analysis\",\n", - " \"Generative pre-trained transformers\": \"https://en.wikipedia.org/wiki/Generative_pre-trained_transformer\",\n", - " \"Glossary of artificial intelligence\": \"https://en.wikipedia.org/wiki/Glossary_of_artificial_intelligence\",\n", - " \"Internet Encyclopedia of Philosophy\": \"https://en.wikipedia.org/wiki/Internet_Encyclopedia_of_Philosophy\",\n", - " \"Progress in artificial intelligence\": \"https://en.wikipedia.org/wiki/Progress_in_artificial_intelligence\",\n", - " \"Timeline of artificial intelligence\": \"https://en.wikipedia.org/wiki/Timeline_of_artificial_intelligence\",\n", - " \"generative pre-trained transformers\": \"https://en.wikipedia.org/wiki/Generative_pre-trained_transformer\",\n", - " \"\\\"Robots and Artificial Intelligence\\\"\": \"http://www.igmchicago.org/surveys/robots-and-artificial-intelligence\",\n", - " \"6.1 Defining artificial intelligence\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Defining_artificial_intelligence\",\n", - " \"Computing Machinery and Intelligence\": \"https://en.wikipedia.org/wiki/Computing_Machinery_and_Intelligence\",\n", - " \"Computing machinery and intelligence\": \"https://en.wikipedia.org/wiki/Computing_machinery_and_intelligence\",\n", - " \"Do Androids Dream of Electric Sheep?\": \"https://en.wikipedia.org/wiki/Do_Androids_Dream_of_Electric_Sheep%3F\",\n", - " \"Energy consumption (Green computing)\": \"https://en.wikipedia.org/wiki/Green_computing\",\n", - " \"Evolutionary multimodal optimization\": \"https://en.wikipedia.org/wiki/Evolutionary_multimodal_optimization\",\n", - " \"Federal Energy Regulatory Commission\": \"https://en.wikipedia.org/wiki/Federal_Energy_Regulatory_Commission\",\n", - " \"Generative adversarial network (GAN)\": \"https://en.wikipedia.org/wiki/Generative_adversarial_network\",\n", - " \"Hardware for artificial intelligence\": \"https://en.wikipedia.org/wiki/Hardware_for_artificial_intelligence\",\n", - " \"Human-based evolutionary computation\": \"https://en.wikipedia.org/wiki/Human-based_evolutionary_computation\",\n", - " \"Interactive evolutionary computation\": \"https://en.wikipedia.org/wiki/Interactive_evolutionary_computation\",\n", - " \"Three-dimensional integrated circuit\": \"https://en.wikipedia.org/wiki/Three-dimensional_integrated_circuit\",\n", - " \"expectation\\u2013maximization algorithm\": \"https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm\",\n", - " \"\\\"Superhuman AI for multiplayer poker\\\"\": \"https://www.science.org/doi/10.1126/science.aay2400\",\n", - " \"Artificial intelligence and copyright\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_and_copyright\",\n", - " \"Artificial intelligence and elections\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_and_elections\",\n", - " \"Artificial intelligence in healthcare\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_in_healthcare\",\n", - " \"Goodfellow, Bengio & Courville (2016)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFGoodfellowBengioCourville2016\",\n", - " \"Philosophy of artificial intelligence\": \"https://en.wikipedia.org/wiki/Philosophy_of_artificial_intelligence\",\n", - " \"Regulation of artificial intelligence\": \"https://en.wikipedia.org/wiki/Regulation_of_artificial_intelligence\",\n", - " \"Simultaneous localization and mapping\": \"https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping\",\n", - " \"general-purpose programming languages\": \"https://en.wikipedia.org/wiki/General-purpose_programming_language\",\n", - " \"safety and benefits of the technology\": \"https://en.wikipedia.org/wiki/AI_safety\",\n", - " \"\\\"AI Ethics and Governance in Practice\\\"\": \"https://www.turing.ac.uk/sites/default/files/2023-12/aieg-ati-ai-ethics-an-intro_1.pdf\",\n", - " \"\\\"Computing Machinery and Intelligence\\\"\": \"https://academic.oup.com/mind/article/LIX/236/433/986238\",\n", - " \"51(3) Industrial Law Journal 511\\u2013559\": \"https://academic.oup.com/ilj/article/51/3/511/6321008\",\n", - " \"All articles with unsourced statements\": \"https://en.wikipedia.org/wiki/Category:All_articles_with_unsourced_statements\",\n", - " \"Developmental and reproductive biology\": \"https://en.wikipedia.org/wiki/Glossary_of_developmental_biology\",\n", - " \"Differential technological development\": \"https://en.wikipedia.org/wiki/Differential_technological_development\",\n", - " \"Electrical and electronics engineering\": \"https://en.wikipedia.org/wiki/Glossary_of_electrical_and_electronics_engineering\",\n", - " \"Knowledge representation and reasoning\": \"https://en.wikipedia.org/wiki/Knowledge_representation_and_reasoning\",\n", - " \"neuro-symbolic artificial intelligence\": \"https://en.wikipedia.org/wiki/Neuro-symbolic_AI\",\n", - " \"\\\"AI Writing and Content Creation Tools\\\"\": \"https://mitsloanedtech.mit.edu/ai/tools/writing\",\n", - " \"\\\"From not working to neural networking\\\"\": \"https://www.economist.com/news/special-report/21700756-artificial-intelligence-boom-based-old-idea-modern-twist-not\",\n", - " \"\\\"What Is Artificial Intelligence (AI)?\\\"\": \"https://cloud.google.com/learn/what-is-artificial-intelligence\",\n", - " \"Applications of artificial intelligence\": \"https://en.wikipedia.org/wiki/Applications_of_artificial_intelligence\",\n", - " \"Carbon nanotube field-effect transistor\": \"https://en.wikipedia.org/wiki/Carbon_nanotube_field-effect_transistor\",\n", - " \"Machine Intelligence Research Institute\": \"https://en.wikipedia.org/wiki/Machine_Intelligence_Research_Institute\",\n", - " \"\\\"Philosophy is crucial in the age of AI\\\"\": \"https://theconversation.com/philosophy-is-crucial-in-the-age-of-ai-235907\",\n", - " \"6.3.2 Computationalism and functionalism\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Computationalism_and_functionalism\",\n", - " \"Artificial Intelligence: A New Synthesis\": \"https://archive.org/details/artificialintell0000nils\",\n", - " \"Artificial intelligence (disambiguation)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_(disambiguation)\",\n", - " \"Centre for the Study of Existential Risk\": \"https://en.wikipedia.org/wiki/Centre_for_the_Study_of_Existential_Risk\",\n", - " \"No free lunch in search and optimization\": \"https://en.wikipedia.org/wiki/No_free_lunch_in_search_and_optimization\",\n", - " \"artificial intelligence image generation\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_art\",\n", - " \"\\\"8 Best AI for Math Tools (January 2025)\\\"\": \"https://www.unite.ai/best-ai-for-math-tools/\",\n", - " \"\\\"Deep Learning: Methods and Applications\\\"\": \"http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7-SIG-039.pdf\",\n", - " \"7.1 Superintelligence and the singularity\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Superintelligence_and_the_singularity\",\n", - " \"Artificial intelligence content detection\": \"https://en.wikipedia.org/wiki/Artificial_intelligence_content_detection\",\n", - " \"Relationship between religion and science\": \"https://en.wikipedia.org/wiki/Relationship_between_religion_and_science\",\n", - " \"The Line: AI and the Future of Personhood\": \"https://direct.mit.edu/books/book/5859/The-LineAI-and-the-Future-of-Personhood\",\n", - " \"\\\"Big tech and the pursuit of AI dominance\\\"\": \"https://www.economist.com/business/2023/03/26/big-tech-and-the-pursuit-of-ai-dominance\",\n", - " \"\\\"Chatbots Have Entered the Uncanny Valley\\\"\": \"https://www.theatlantic.com/technology/archive/2017/04/uncanny-valley-digital-assistants/523806\",\n", - " \"\\\"The changing science of machine learning\\\"\": \"https://doi.org/10.1007%2Fs10994-011-5242-y\",\n", - " \"Artificial Intelligence: A Modern Approach\": \"http://aima.cs.berkeley.edu/\",\n", - " \"Carnegie Endowment for International Peace\": \"https://en.wikipedia.org/wiki/Carnegie_Endowment_for_International_Peace\",\n", - " \"Convention on Certain Conventional Weapons\": \"https://en.wikipedia.org/wiki/Convention_on_Certain_Conventional_Weapons\",\n", - " \"reinforcement learning from human feedback\": \"https://en.wikipedia.org/wiki/Reinforcement_learning_from_human_feedback\",\n", - " \"\\\"Artificial Intelligence Prepares for 2001\\\"\": \"https://ai.stanford.edu/~nilsson/OnlinePubs-Nils/General%20Essays/AIMag04-04-002.pdf\",\n", - " \"\\\"Facing up to the problem of consciousness\\\"\": \"http://www.imprint.co.uk/chalmers.html\",\n", - " \"\\\"New AI systems collide with copyright law\\\"\": \"https://www.bbc.co.uk/news/business-66231268\",\n", - " \"4.1.3 Power needs and environmental impacts\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Power_needs_and_environmental_impacts\",\n", - " \"Wikipedia indefinitely semi-protected pages\": \"https://en.wikipedia.org/wiki/Category:Wikipedia_indefinitely_semi-protected_pages\",\n", - " \"Workplace impact of artificial intelligence\": \"https://en.wikipedia.org/wiki/Workplace_impact_of_artificial_intelligence\",\n", - " \"YouTube \\u00a7 Moderation and offensive content\": \"https://en.wikipedia.org/wiki/YouTube#Moderation_and_offensive_content\",\n", - " \"\\\"AI is entering an era of corporate control\\\"\": \"https://www.theverge.com/23667752/ai-progress-2023-report-stanford-corporate-control\",\n", - " \"\\\"Optimization Algorithms in Neural Networks\\\"\": \"https://www.kdnuggets.com/optimization-algorithms-in-neural-networks\",\n", - " \"\\\"Where the battle to dominate AI may be won\\\"\": \"https://www.cnn.com/2023/12/19/tech/cloud-competition-and-ai/index.html\",\n", - " \"Max Planck Institute for Intelligent Systems\": \"https://en.wikipedia.org/wiki/Max_Planck_Institute_for_Intelligent_Systems\",\n", - " \"Short description is different from Wikidata\": \"https://en.wikipedia.org/wiki/Category:Short_description_is_different_from_Wikidata\",\n", - " \"\\\"7 AI Programming Languages You Need to Know\\\"\": \"https://aibusiness.com/verticals/7-ai-programming-languages-you-need-to-know\",\n", - " \"\\\"Nearly 1 in 4 new startups is an AI company\\\"\": \"https://pitchbook.com/news/articles/nearly-1-in-4-new-startups-is-an-ai-company\",\n", - " \"\\\"What is ChatGPT, DALL-E, and generative AI?\\\"\": \"https://www.mckinsey.com/featured-insights/mckinsey-explainers/what-is-generative-ai\",\n", - " \"Artificial Intelligence and National Security\": \"https://fas.org/sgp/crs/natsec/R45178.pdf\",\n", - " \"Existential risk from artificial intelligence\": \"https://en.wikipedia.org/wiki/Existential_risk_from_artificial_intelligence\",\n", - " \"Global Partnership on Artificial Intelligence\": \"https://en.wikipedia.org/wiki/Global_Partnership_on_Artificial_Intelligence\",\n", - " \"NRC (United States National Research Council)\": \"https://en.wikipedia.org/wiki/United_States_National_Research_Council\",\n", - " \"Open letter on artificial intelligence (2015)\": \"https://en.wikipedia.org/wiki/Open_letter_on_artificial_intelligence_(2015)\",\n", - " \"Srpskohrvatski / \\u0441\\u0440\\u043f\\u0441\\u043a\\u043e\\u0445\\u0440\\u0432\\u0430\\u0442\\u0441\\u043a\\u0438\": \"https://sh.wikipedia.org/wiki/Vje%C5%A1ta%C4%8Dka_inteligencija\",\n", - " \"Superintelligence: Paths, Dangers, Strategies\": \"https://en.wikipedia.org/wiki/Superintelligence:_Paths,_Dangers,_Strategies\",\n", - " \"\\u0411\\u0435\\u043b\\u0430\\u0440\\u0443\\u0441\\u043a\\u0430\\u044f (\\u0442\\u0430\\u0440\\u0430\\u0448\\u043a\\u0435\\u0432\\u0456\\u0446\\u0430)\": \"https://be-tarask.wikipedia.org/wiki/%D0%A8%D1%82%D1%83%D1%87%D0%BD%D1%8B_%D1%96%D0%BD%D1%82%D1%8D%D0%BB%D0%B5%D0%BA%D1%82\",\n", - " \"\\\"What leaders need to know about robot rights\\\"\": \"https://www.fastcompany.com/90920769/what-leaders-need-to-know-about-robot-rights\",\n", - " \"6.3 Machine consciousness, sentience, and mind\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Machine_consciousness,_sentience,_and_mind\",\n", - " \"Computational Intelligence: A Logical Approach\": \"https://archive.org/details/computationalint00pool\",\n", - " \"Institute for Ethics and Emerging Technologies\": \"https://en.wikipedia.org/wiki/Institute_for_Ethics_and_Emerging_Technologies\",\n", - " \"\\\"Experts Don't Think Robots Should Have Rights\\\"\": \"https://www.newsweek.com/robots-human-rights-electronic-persons-humans-versus-machines-886075\",\n", - " \"\\\"Microsoft's Bill Gates insists AI is a threat\\\"\": \"https://www.bbc.co.uk/news/31047780\",\n", - " \"\\\"The Challenge of Being Human in the Age of AI\\\"\": \"https://www.wsj.com/articles/being-human-artifical-intelligence-ai-chess-antibiotic-philosophy-ethics-bill-of-rights-11635795271\",\n", - " \"\\\"The Philosophy of AI and the AI of Philosophy\\\"\": \"https://web.archive.org/web/20181023181725/http://jmc.stanford.edu/articles/aiphil2.html\",\n", - " \"\\\"Ethics of Artificial Intelligence and Robotics\\\"\": \"https://plato.stanford.edu/archives/fall2023/entries/ethics-ai/\",\n", - " \"\\\"Generative AI: Unlocking the future of fashion\\\"\": \"https://www.mckinsey.com/industries/retail/our-insights/generative-ai-unlocking-the-future-of-fashion\",\n", - " \"\\\"How Generative AI Can Augment Human Creativity\\\"\": \"https://hbr.org/2023/07/how-generative-ai-can-augment-human-creativity\",\n", - " \"\\\"How Not to Be Stupid About AI, With Yann LeCun\\\"\": \"https://www.wired.com/story/artificial-intelligence-meta-yann-lecun-interview\",\n", - " \"\\\"Llemma: An Open Language Model For Mathematics\\\"\": \"https://blog.eleuther.ai/llemma/\",\n", - " \"2.4 Classifiers and statistical learning methods\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Classifiers_and_statistical_learning_methods\",\n", - " \"Articles with disputed statements from July 2024\": \"https://en.wikipedia.org/wiki/Category:Articles_with_disputed_statements_from_July_2024\",\n", - " \"Environmental impacts of artificial intelligence\": \"https://en.wikipedia.org/wiki/Environmental_impacts_of_artificial_intelligence\",\n", - " \"Leverhulme Centre for the Future of Intelligence\": \"https://en.wikipedia.org/wiki/Leverhulme_Centre_for_the_Future_of_Intelligence\",\n", - " \"Military applications of artificial intelligence\": \"https://en.wikipedia.org/wiki/Military_applications_of_artificial_intelligence\",\n", - " \"Robotics: The Marriage of Computers and Machines\": \"https://archive.org/details/isbn_9780816026289\",\n", - " \"\\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\"\": \"https://www.nytimes.com/2011/02/17/science/17jeopardy-watson.html\",\n", - " \"\\\"How We Analyzed the COMPAS Recidivism Algorithm\\\"\": \"https://www.propublica.org/article/how-we-analyzed-the-compas-recidivism-algorithm\",\n", - " \"\\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\"\": \"https://www.nytimes.com/2023/03/14/technology/openai-gpt4-chatgpt.html\",\n", - " \"\\\"OpenAI Releases GPT-3, The Largest Model So Far\\\"\": \"https://analyticsindiamag.com/open-ai-gpt-3-language-model\",\n", - " \"\\\"Reshaping Business With Artificial Intelligence\\\"\": \"https://sloanreview.mit.edu/projects/reshaping-business-with-artificial-intelligence\",\n", - " \"\\\"Will robots create more jobs than they destroy?\\\"\": \"https://www.theguardian.com/technology/2015/sep/06/will-robots-create-destroy-jobs\",\n", - " \"\\\"artificial intelligence is a tool, not a threat\\\"\": \"https://web.archive.org/web/20141112130954/http://www.rethinkrobotics.com/artificial-intelligence-tool-threat\",\n", - " \"2.3 Probabilistic methods for uncertain reasoning\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#Probabilistic_methods_for_uncertain_reasoning\",\n", - " \"Articles with unsourced statements from June 2024\": \"https://en.wikipedia.org/wiki/Category:Articles_with_unsourced_statements_from_June_2024\",\n", - " \"Programming languages for artificial intelligence\": \"https://en.wikipedia.org/wiki/Programming_languages_for_artificial_intelligence\",\n", - " \"\\u2d5c\\u2d30\\u2d4e\\u2d30\\u2d63\\u2d49\\u2d56\\u2d5c \\u2d5c\\u2d30\\u2d4f\\u2d30\\u2d61\\u2d30\\u2d62\\u2d5c\": \"https://zgh.wikipedia.org/wiki/%E2%B5%9C%E2%B5%89%E2%B5%96%E2%B5%89%E2%B5%99%E2%B5%9C_%E2%B5%9C%E2%B4%B0%E2%B5%99%E2%B5%8E%E2%B4%B3%E2%B5%93%E2%B5%94%E2%B5%9C\",\n", - " \"\\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\"\": \"https://news.bloomberglaw.com/tech-and-telecom-law/a-cheat-sheet-to-ai-buzzwords-and-their-meanings-quicktake\",\n", - " \"\\\"Annotated History of Modern AI and Deep Learning\\\"\": \"https://people.idsia.ch/~juergen/\",\n", - " \"\\\"AI speeds up drug design for Parkinson's ten-fold\\\"\": \"https://www.cam.ac.uk/research/news/ai-speeds-up-drug-design-for-parkinsons-ten-fold\",\n", - " \"\\\"Don't fear an AI-induced jobs apocalypse just yet\\\"\": \"https://www.economist.com/business/2023/03/06/dont-fear-an-ai-induced-jobs-apocalypse-just-yet\",\n", - " \"\\\"How Google Plans to Solve Artificial Intelligence\\\"\": \"https://www.technologyreview.com/2016/03/31/161234/how-google-plans-to-solve-artificial-intelligence\",\n", - " \"\\\"How to Stop Your Data From Being Used to Train AI\\\"\": \"https://www.wired.com/story/how-to-stop-your-data-from-being-used-to-train-ai\",\n", - " \"\\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\"\": \"https://doi.org/10.5209%2Frev_TK.2015.v12.n2.49072\",\n", - " \"\\\"Why agents are the next frontier of generative AI\\\"\": \"https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/why-agents-are-the-next-frontier-of-generative-ai\",\n", - " \"Center for Human-Compatible Artificial Intelligence\": \"https://en.wikipedia.org/wiki/Center_for_Human-Compatible_Artificial_Intelligence\",\n", - " \"Creative Commons Attribution-ShareAlike 4.0 License\": \"https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License\",\n", - " \"\\\"Robot rights violate human rights, experts warn EU\\\"\": \"https://www.euronews.com/2018/04/13/robot-rights-violate-human-rights-experts-warn-eu\",\n", - " \"\\\"Why it's so damn hard to make AI fair and unbiased\\\"\": \"https://www.vox.com/future-perfect/22916602/ai-bias-fairness-tradeoffs-artificial-intelligence\",\n", - " \"Consumer Data: Increasing Use Poses Risks to Privacy\": \"https://www.gao.gov/products/gao-22-106096\",\n", - " \"Microelectronics and Computer Technology Corporation\": \"https://en.wikipedia.org/wiki/Microelectronics_and_Computer_Technology_Corporation\",\n", - " \"we can not determine these things about other people\": \"https://en.wikipedia.org/wiki/Problem_of_other_minds\",\n", - " \"\\\"Autonomous mental development by robots and animals\\\"\": \"http://www.cse.msu.edu/dl/SciencePaper.pdf\",\n", - " \"\\\"Human rights for robots? We're getting carried away\\\"\": \"http://www.thetimes.co.uk/tto/technology/article1966391.ece\",\n", - " \"\\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\"\": \"https://www.wsj.com/business/energy-oil/tech-industry-wants-to-lock-up-nuclear-power-for-ai-6cb75316?mod=djem10point\",\n", - " \"Pages using Sister project links with hidden wikidata\": \"https://en.wikipedia.org/wiki/Category:Pages_using_Sister_project_links_with_hidden_wikidata\",\n", - " \"\\\"AI Data Centers and the Coming YS Power Demand Surge\\\"\": \"https://web.archive.org/web/20240726080428/https://www.goldmansachs.com/intelligence/pages/gs-research/generational-growth-ai-data-centers-and-the-coming-us-power-surge/report.pdf\",\n", - " \"\\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\"\": \"https://web.archive.org/web/20240523201611/https://www.gov.uk/government/publications/frontier-ai-safety-commitments-ai-seoul-summit-2024/frontier-ai-safety-commitments-ai-seoul-summit-2024\",\n", - " \"\\\"Give robots 'personhood' status, EU committee argues\\\"\": \"https://www.theguardian.com/technology/2017/jan/12/give-robots-personhood-status-eu-committee-argues\",\n", - " \"Photograph your local culture, help Wikipedia and win!\": \"https://commons.wikimedia.org/wiki/Special:MyLanguage/Commons:Wiki_Loves_Folklore_2025\",\n", - " \"\\\"Five experts share what scares them the most about AI\\\"\": \"https://futurism.com/artificial-intelligence-experts-fear/amp\",\n", - " \"\\\"UN Announces Advisory Body on Artificial Intelligence\\\"\": \"https://www.voanews.com/a/un-announces-advisory-body-on-artificial-intelligence-/7328732.html\",\n", - " \"Articles with Internet Encyclopedia of Philosophy links\": \"https://en.wikipedia.org/wiki/Category:Articles_with_Internet_Encyclopedia_of_Philosophy_links\",\n", - " \"\\\"Big Tech is spending more than VC firms on AI startups\\\"\": \"https://arstechnica.com/ai/2023/12/big-tech-is-spending-more-than-vc-firms-on-ai-startups\",\n", - " \"\\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\"\": \"https://gizmodo.com/new-anthropic-research-sheds-light-on-ais-black-box-1851491333\",\n", - " \"Conference on Fairness, Accountability, and Transparency\": \"https://en.wikipedia.org/wiki/ACM_Conference_on_Fairness,_Accountability,_and_Transparency\",\n", - " \"Covariance Matrix Adaptation Evolution Strategy (CMA-ES)\": \"https://en.wikipedia.org/wiki/CMA-ES\",\n", - " \"\\\"AI has already changed the world. This report shows how\\\"\": \"https://www.sfchronicle.com/tech/article/ai-artificial-intelligence-report-stanford-17869558.php\",\n", - " \"\\\"Commentary: Bad news. Artificial intelligence is biased\\\"\": \"https://www.channelnewsasia.com/news/commentary/artificial-intelligence-big-data-bias-hiring-loans-key-challenge-11097374\",\n", - " \"\\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\"\": \"https://www.wsj.com/business/energy-oil/ai-data-centers-energy-savings-d602296e\",\n", - " \"\\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\"\": \"https://www.nytimes.com/2023/09/20/books/authors-openai-lawsuit-chatgpt-copyright.html?campaign_id=2&emc=edit_th_20230921&instance_id=103259&nl=todaysheadlines®i_id=62816440&segment_id=145288&user_id=ad24f3545dae0ec44284a38bb4a88f1d\",\n", - " \"\\\"How enterprises are using open source LLMs: 16 examples\\\"\": \"https://venturebeat.com/ai/how-enterprises-are-using-open-source-llms-16-examples\",\n", - " \"\\\"Human-level control through deep reinforcement learning\\\"\": \"https://www.nature.com/articles/nature14236\",\n", - " \"\\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\"\": \"https://www.nytimes.com/2023/07/05/business/artificial-intelligence-power-data-centers.html\",\n", - " \"\\\"Machine learning: What is the transformer architecture?\\\"\": \"https://bdtechtalks.com/2022/05/02/what-is-the-transformer\",\n", - " \"\\\"The potential for artificial intelligence in healthcare\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6616181\",\n", - " \"\\\"Transformers Revolutionized AI. What Will Replace Them?\\\"\": \"https://www.forbes.com/sites/robtoews/2023/09/03/transformers-revolutionized-ai-what-will-replace-them\",\n", - " \"\\\"Understanding artificial intelligence ethics and safety\\\"\": \"https://www.turing.ac.uk/sites/default/files/2019-06/understanding_artificial_intelligence_ethics_and_safety.pdf\",\n", - " \"\\\"A Unified Framework of Five Principles for AI in Society\\\"\": \"https://hdsr.mitpress.mit.edu/pub/l0jsh9d1\",\n", - " \"\\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\"\": \"https://www.theatlantic.com/technology/archive/2012/11/noam-chomsky-on-where-artificial-intelligence-went-wrong/261637/?single_page=true\",\n", - " \"\\\"What happens when our computers get smarter than we are?\\\"\": \"https://www.ted.com/talks/nick_bostrom_what_happens_when_our_computers_get_smarter_than_we_are/transcript\",\n", - " \"Association for the Advancement of Artificial Intelligence\": \"https://en.wikipedia.org/wiki/Association_for_the_Advancement_of_Artificial_Intelligence\",\n", - " \"Speculations Concerning the First Ultraintelligent Machine\": \"https://exhibits.stanford.edu/feigenbaum/catalog/gz727rg3869\",\n", - " \"\\\"ChatGPT reaches 100 million users two months after launch\\\"\": \"https://www.theguardian.com/technology/2023/feb/02/chatgpt-100-million-users-open-ai-fastest-growing-app\",\n", - " \"\\\"Computer Science as Empirical Inquiry: Symbols and Search\\\"\": \"https://doi.org/10.1145%2F360018.360022\",\n", - " \"\\\"Exploring LIME Explanations and the Mathematics Behind It\\\"\": \"https://www.codemotion.com/magazine/ai-ml/lime-explainable-ai\",\n", - " \"\\\"Google open sources tools to support AI model development\\\"\": \"https://techcrunch.com/2024/04/09/google-open-sources-tools-to-support-ai-model-development\",\n", - " \"\\\"Improving mathematical reasoning with process supervision\\\"\": \"https://openai.com/index/improving-mathematical-reasoning-with-process-supervision/\",\n", - " \"\\\"Thinking Machines: The Search for Artificial Intelligence\\\"\": \"https://web.archive.org/web/20180819152455/https://www.sciencehistory.org/distillations/magazine/thinking-machines-the-search-for-artificial-intelligence\",\n", - " \"\\\"Towards Intelligent Regulation of Artificial Intelligence\\\"\": \"https://doi.org/10.1017%2Ferr.2019.8\",\n", - " \"Multilayer Feedforward Networks are Universal Approximators\": \"http://cognitivemedium.com/magic_paper/assets/Hornik.pdf\",\n", - " \"\\\"Ask the AI experts: What's driving today's progress in AI?\\\"\": \"https://www.mckinsey.com/business-functions/mckinsey-analytics/our-insights/ask-the-ai-experts-whats-driving-todays-progress-in-ai\",\n", - " \"\\\"Dual use of artificial-intelligence-powered drug discovery\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9544280\",\n", - " \"\\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\"\": \"https://www.nytimes.com/2019/05/22/world/asia/china-surveillance-xinjiang.html\",\n", - " \"\\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\"\": \"https://deepmind.google/discover/blog/muzero-mastering-go-chess-shogi-and-atari-without-rules\",\n", - " \"Artificial Intelligence, Foundations of Computational Agents\": \"https://doi.org/10.1017/9781009258227\",\n", - " \"Artificial Intelligence: Foundations of Computational Agents\": \"http://artint.info/index.html\",\n", - " \"\\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\"\": \"https://www.theguardian.com/technology/2019/oct/30/ai-becomes-grandmaster-in-fiendishly-complex-starcraft-ii\",\n", - " \"\\\"AI is already taking video game illustrators' jobs in China\\\"\": \"https://restofworld.org/2023/ai-image-china-video-game-layoffs\",\n", - " \"\\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\"\": \"https://www.informationweek.com/ai-or-machine-learning/gpus-continue-to-dominate-the-ai-accelerator-market-for-now\",\n", - " \"\\\"Highly accurate protein structure prediction with AlphaFold\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605\",\n", - " \"\\\"How YouTube Drives People to the Internet's Darkest Corners\\\"\": \"https://www.wsj.com/articles/how-youtube-drives-viewers-to-the-internets-darkest-corners-1518020478\",\n", - " \"\\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\"\": \"https://www.bloomberg.com/news/articles/2024-11-04/nuclear-hungry-ai-campuses-need-new-strategy-to-find-power-fast\",\n", - " \"\\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\"\": \"https://www.bloomberg.com/news/articles/2015-12-08/why-2015-was-a-breakthrough-year-in-artificial-intelligence\",\n", - " \"AI winter \\u00a7 Machine translation and the ALPAC report of 1966\": \"https://en.wikipedia.org/wiki/AI_winter#Machine_translation_and_the_ALPAC_report_of_1966\",\n", - " \"\\\"In Hollywood writers' battle against AI, humans win (for now)\\\"\": \"https://apnews.com/article/hollywood-ai-strike-wga-artificial-intelligence-39ab72582c3a15f77510c9c30a45ffc8\",\n", - " \"\\\"Mojo Rising: The resurgence of AI-first programming languages\\\"\": \"https://venturebeat.com/ai/mojo-rising-the-resurgence-of-ai-first-programming-languages\",\n", - " \"Darwin Among the Machines: The Evolution of Global Intelligence\": \"https://en.wikipedia.org/wiki/Darwin_Among_the_Machines#Evolution_of_Global_Intelligence\",\n", - " \"\\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\"\": \"https://www.foxnews.com/tech/father-ai-jurgen-schmidhuber-says-tech-fears-misplaced-cannot-stop\",\n", - " \"\\\"Artificial Intelligence at Edinburgh University: a Perspective\\\"\": \"http://www.inf.ed.ac.uk/about/AIhistory.html\",\n", - " \"\\\"Artificial intelligence could lead to extinction, experts warn\\\"\": \"https://www.bbc.com/news/uk-65746524\",\n", - " \"\\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\"\": \"https://aibusiness.com/nlp/mistral-ai-s-new-language-model-aims-for-open-source-supremacy\",\n", - " \"\\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\"\": \"https://www.spectator.co.uk/article/nick-bostrom-how-can-we-be-certain-a-machine-isnt-conscious\",\n", - " \"\\\"Should we make our most powerful AI models open source to all?\\\"\": \"https://www.vox.com/future-perfect/2024/2/2/24058484/open-source-artificial-intelligence-ai-risk-meta-llama-2-chatgpt-openai-deepfake\",\n", - " \"\\\"AI Safety Institute releases new AI safety evaluations platform\\\"\": \"https://www.gov.uk/government/news/ai-safety-institute-releases-new-ai-safety-evaluations-platform\",\n", - " \"\\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\"\": \"https://www.nytimes.com/2024/02/15/technology/openai-sora-videos.html\",\n", - " \"\\\"Security lapse exposed a Chinese smart city surveillance system\\\"\": \"https://techcrunch.com/2019/05/03/china-smart-city-exposed\",\n", - " \"\\\"Stephen Hawking warns artificial intelligence could end mankind\\\"\": \"https://www.bbc.com/news/technology-30290540\",\n", - " \"\\\"A Framework for Intelligent Fire Detection and Evacuation System\\\"\": \"https://doi.org/10.1007/s10694-021-01157-3\",\n", - " \"\\\"China's game art industry reportedly decimated by growing AI use\\\"\": \"https://www.gamedeveloper.com/art/china-s-game-art-industry-reportedly-decimated-ai-art-use\",\n", - " \"\\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\"\": \"http://www.plugandpray-film.de/en/content.html\",\n", - " \"\\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\"\": \"http://www.sophia.de/pdf/2014_PT-AI_polls.pdf\",\n", - " \"\\\"Google AI learns to play open-world video games by watching them\\\"\": \"https://www.newscientist.com/article/2422101-google-ai-learns-to-play-open-world-video-games-by-watching-them\",\n", - " \"\\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\"\": \"https://theconversation.com/googles-gemini-is-the-new-ai-model-really-better-than-chatgpt-219526\",\n", - " \"\\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\"\": \"https://www.bloomberg.com/news/articles/2024-09-27/nvidia-s-huang-says-nuclear-power-an-option-to-feed-data-centers\",\n", - " \"\\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\"\": \"https://www.techtarget.com/searchenterpriseai/definition/AI-Artificial-Intelligence\",\n", - " \"\\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\"\": \"https://www.bnnbloomberg.ca/50-50-chance-that-ai-outsmarts-humanity-geoffrey-hinton-says-1.2085394\",\n", - " \"\\\"Second global AI summit secures safety commitments from companies\\\"\": \"https://www.reuters.com/technology/global-ai-summit-seoul-aims-forge-new-regulatory-agreements-2024-05-21\",\n", - " \"\\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\"\": \"https://www.theguardian.com/world/2023/dec/01/the-gospel-how-israel-uses-ai-to-select-bombing-targets\",\n", - " \"\\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\"\": \"https://www.nytimes.com/2022/10/21/technology/generative-ai.html\",\n", - " \"\\\"Mastering the game of Go with deep neural networks and tree search\\\"\": \"https://www.nature.com/articles/nature16961\",\n", - " \"Human Compatible: Artificial Intelligence and the Problem of Control\": \"https://en.wikipedia.org/wiki/Human_Compatible\",\n", - " \"UNESCO Science Report: the Race Against Time for Smarter Development\": \"https://unesdoc.unesco.org/ark:/48223/pf0000377433/PDF/377433eng.pdf.multi\",\n", - " \"\\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\"\": \"https://www.972mag.com/lavender-ai-israeli-army-gaza/\",\n", - " \"\\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\"\": \"https://www.nytimes.com/2023/01/27/technology/anthropic-ai-funding.html\",\n", - " \"\\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\"\": \"https://www.wipo.int/edocs/pubdocs/en/wipo-pub-2003-en-getting-the-innovation-ecosystem-ready-for-ai.pdf\",\n", - " \"\\\"Humans may be more likely to believe disinformation generated by AI\\\"\": \"https://www.technologyreview.com/2023/06/28/1075683/humans-may-be-more-likely-to-believe-disinformation-generated-by-ai/\",\n", - " \"\\\"Poll: AI poses risk to humanity, according to majority of Americans\\\"\": \"https://arstechnica.com/information-technology/2023/05/poll-61-of-americans-say-ai-threatens-humanitys-future\",\n", - " \"\\\"Council of Europe opens first ever global treaty on AI for signature\\\"\": \"https://www.coe.int/en/web/portal/-/council-of-europe-opens-first-ever-global-treaty-on-ai-for-signature\",\n", - " \"\\\"Elon Musk: artificial intelligence is our biggest existential threat\\\"\": \"https://www.theguardian.com/technology/2014/oct/27/elon-musk-artificial-intelligence-ai-biggest-existential-threat\",\n", - " \"\\\"Is artificial intelligence really an existential threat to humanity?\\\"\": \"http://thebulletin.org/artificial-intelligence-really-existential-threat-humanity8577\",\n", - " \"\\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\"\": \"https://www.theatlantic.com/technology/archive/2023/08/books3-ai-meta-llama-pirated-books/675063/\",\n", - " \"\\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\"\": \"https://www.nytimes.com/2017/01/12/technology/robots-will-take-jobs-but-not-as-fast-as-some-fear-new-report-says.html\",\n", - " \"\\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\"\": \"https://techpolicy.press/transcript-senate-judiciary-subcommittee-hearing-on-oversight-of-ai/\",\n", - " \"Hello, World: Artificial Intelligence and its Use in the Public Sector\": \"https://oecd-opsi.org/wp-content/uploads/2019/11/AI-Report-Online.pdf\",\n", - " \"\\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\"\": \"https://www.sciencedirect.com/science/article/pii/B9780128240731000149\",\n", - " \"\\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\"\": \"https://www.newscientist.com/article/2409706-ai-discovers-new-class-of-antibiotics-to-kill-drug-resistant-bacteria/\",\n", - " \"\\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\"\": \"https://www.nytimes.com/2023/05/22/technology/ai-photo-labels-google-apple.html\",\n", - " \"\\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\"\": \"https://www.wsj.com/articles/huangs-law-is-the-new-moores-law-and-explains-why-nvidia-wants-arm-11600488001\",\n", - " \"\\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\"\": \"https://arstechnica.com/information-technology/2024/02/stability-announces-stable-diffusion-3-a-next-gen-ai-image-generator\",\n", - " \"\\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\"\": \"https://www.forbes.com/sites/craigsmith/2023/03/15/gpt-4-creator-ilya-sutskever-on-ai-hallucinations-and-ai-democracy\",\n", - " \"Law Library of Congress (U.S.). Global Legal Research Directorate (2019)\": \"https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFLaw_Library_of_Congress_(U.S.)._Global_Legal_Research_Directorate2019\",\n", - " \"\\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\"\": \"https://www.washingtonpost.com/business/2024/09/20/microsoft-three-mile-island-nuclear-constellation\",\n", - " \"\\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\"\": \"http://intelligence.org/files/AIPosNegFactor.pdf\",\n", - " \"\\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\"\": \"https://carnegieendowment.org/posts/2022/10/one-of-the-biggest-problems-in-regulating-ai-is-agreeing-on-a-definition?lang=en\",\n", - " \"\\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\"\": \"https://www.researchsquare.com/article/rs-795954/latest.pdf\",\n", - " \"\\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\"\": \"https://web.archive.org/web/20220627225827/https://www.sciencealert.com/robots-with-flawed-ai-make-sexist-racist-and-toxic-decisions-experiment-shows\",\n", - " \"\\\"Taiwan to stop large data centers in the North, cites insufficient power\\\"\": \"https://www.datacenterdynamics.com/en/news/taiwan-to-stop-large-data-centers-in-the-north-cites-insufficient-power/\",\n", - " \"\\\"The scary truth about AI copyright is nobody knows what will happen next\\\"\": \"https://www.theverge.com/23444685/generative-ai-copyright-infringement-legal-fair-use-training-data\",\n", - " \"\\\"Will AI ever become conscious? It depends on how you think about biology\\\"\": \"https://www.vox.com/future-perfect/351893/consciousness-ai-machines-neuroscience-mind\",\n", - " \"\\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\"\": \"https://builtin.com/artificial-intelligence\",\n", - " \"\\\"AI already uses as much energy as a small country. It's only the beginning\\\"\": \"https://www.vox.com/climate/2024/3/28/24111721/ai-uses-a-lot-of-energy-experts-expect-it-to-double-in-just-a-few-years\",\n", - " \"\\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\"\": \"https://www.washingtonpost.com/business/2024/06/21/artificial-intelligence-nuclear-fusion-climate/?utm_campaign=wp_post_most&utm_medium=email&utm_source=newsletter&wpisrc=nl_most&carta-url=https%3A%2F%2Fs2.washingtonpost.com%2Fcar-ln-tr%2F3e0d678%2F6675a2d2c2c05472dd9ec0f4%2F596c09009bbc0f20865036e7%2F12%2F52%2F6675a2d2c2c05472dd9ec0f4\",\n", - " \"\\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\"\": \"https://www.theverge.com/2017/5/27/15704088/alphago-ke-jie-game-3-result-retires-future\",\n", - " \"\\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\"\": \"https://aiindex.stanford.edu/wp-content/uploads/2023/04/HAI_AI-Index-Report-2023_CHAPTER_6-1.pdf\",\n", - " \"\\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\"\": \"https://web.archive.org/web/20070101133646/http://www-rohan.sdsu.edu/faculty/vinge/misc/singularity.html\",\n", - " \"\\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\"\": \"https://www.cbsnews.com/video/godfather-of-artificial-intelligence-talks-impact-and-potential-of-new-ai\",\n", - " \"\\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\"\": \"https://www.nytimes.com/article/ai-artificial-intelligence-glossary.html\",\n", - " \"\\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\"\": \"https://venturebeat.com/ai/why-jensen-huang-and-marc-benioff-see-gigantic-opportunity-for-agentic-ai/\",\n", - " \"\\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\"\": \"https://analyticsindiamag.com/a-complete-guide-to-shap-shapley-additive-explanations-for-practitioners\",\n", - " \"\\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\"\": \"http://researchrepository.napier.ac.uk/Output/1792429\",\n", - " \"\\\"Google Cloud brings generative AI to developers, businesses, and governments\\\"\": \"https://cloud.google.com/blog/products/ai-machine-learning/generative-ai-for-businesses-and-governments\",\n", - " \"\\\"What jobs will still be around in 20 years? Read this to prepare your future\\\"\": \"https://www.theguardian.com/us-news/2017/jun/26/jobs-future-automation-robots-skills-creative-health\",\n", - " \"Artificial Intelligence: Structures and Strategies for Complex Problem Solving\": \"https://archive.org/details/artificialintell0000luge\",\n", - " \"\\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\"\": \"https://www.thedrum.com/opinion/2023/03/30/ai-or-bs-how-tell-if-marketing-tool-really-uses-artificial-intelligence\",\n", - " \"\\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\"\": \"https://zenodo.org/record/3569435\",\n", - " \"\\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\"\": \"https://theconversation.com/chatgpt-turns-1-ai-chatbots-success-says-as-much-about-humans-as-technology-218704\",\n", - " \"\\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\"\": \"https://www.theguardian.com/science/2017/nov/05/computer-says-no-why-making-ais-fair-accountable-and-transparent-is-crucial\",\n", - " \"\\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\"\": \"https://observer.com/2015/08/stephen-hawking-elon-musk-and-bill-gates-warn-about-artificial-intelligence\",\n", - " \"\\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\"\": \"https://www.theverge.com/2019/11/7/20953040/openai-text-generation-ai-gpt-2-full-model-release-1-5b-parameters\",\n", - " \"\\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\"\": \"https://www.wsj.com/business/energy-oil/three-mile-islands-nuclear-plant-to-reopen-help-power-microsofts-ai-centers-aebfb3c8?mod=Searchresults_pos1&page=1\",\n", - " \"\\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\"\": \"https://www.vox.com/2014/8/22/6043635/5-reasons-we-shouldnt-worry-about-super-intelligent-computers-taking\",\n", - " \"\\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\"\": \"https://web.archive.org/web/20070826230310/http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html\",\n", - " \"\\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\"\": \"https://www.technologyreview.com/2023/05/12/1072950/open-source-ai-google-openai-eleuther-meta\",\n", - " \"Pages displaying short descriptions of redirect targets via Module:Annotated link\": \"https://en.wikipedia.org/wiki/Category:Pages_displaying_short_descriptions_of_redirect_targets_via_Module:Annotated_link\",\n", - " \"\\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\"\": \"https://www.ft.com/content/2dc07f9e-d2a9-4d98-b746-b051f9352be3\",\n", - " \"\\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\"\": \"https://www.sciencedirect.com/science/article/pii/S0926580519313184\",\n", - " \"\\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\"\": \"https://thediplomat.com/2023/09/us-leadership-in-artificial-intelligence-can-shape-the-21st-century-global-order\",\n", - " \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&oldid=1274941297\": \"https://en.wikipedia.org/w/index.php?title=Artificial_intelligence&oldid=1274941297\",\n", - " \"\\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\"\": \"https://www.cnn.com/2019/04/11/tech/amazon-alexa-listening/index.html\",\n", - " \"\\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\"\": \"https://doi.org/10.1108/IJOES-05-2023-0107\",\n", - " \"\\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\"\": \"https://www.foxnews.com/politics/regulate-ai-gop-much-more-skeptical-than-dems-that-the-government-can-do-it-right-poll\",\n", - " \"White Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust\": \"https://ec.europa.eu/info/sites/info/files/commission-white-paper-artificial-intelligence-feb2020_en.pdf\",\n", - " \"\\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\"\": \"https://www.nytimes.com/2024/07/25/science/ai-math-alphaproof-deepmind.html\",\n", - " \"\\\"The case against killer robots, from a guy actually working on artificial intelligence\\\"\": \"https://www.hrw.org/report/2012/11/19/losing-humanity/case-against-killer-robots\",\n", - " \"Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer\": \"https://archive.org/details/mindovermachinep00drey\",\n", - " \"\\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\"\": \"https://www.theguardian.com/technology/2023/may/02/geoffrey-hinton-godfather-of-ai-quits-google-warns-dangers-of-machine-learning\",\n", - " \"Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy\": \"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3044448\",\n", - " \"\\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\"\": \"https://venturebeat.com/ai/10-years-on-ai-pioneers-hinton-lecun-li-say-deep-learning-revolution-will-continue\",\n", - " \"\\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\"\": \"https://web.archive.org/web/20231101123904/https://www.gov.uk/government/publications/ai-safety-summit-2023-the-bletchley-declaration/the-bletchley-declaration-by-countries-attending-the-ai-safety-summit-1-2-november-2023\",\n", - " \"\\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\"\": \"https://www.cbc.ca/news/business/ai-doom-column-don-pittis-1.6829302\",\n", - " \"\\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\"\": \"https://www.theguardian.com/technology/2023/may/07/rise-of-artificial-intelligence-is-inevitable-but-should-not-be-feared-father-of-ai-says\",\n", - " \"\\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\"\": \"https://doi.org/10.1007/s11019-020-09948-1\",\n", - " \"\\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11041459\",\n", - " \"\\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\"\": \"https://www.pbs.org/newshour/world/indias-latest-election-embraced-ai-technology-here-are-some-ways-it-was-used-constructively\",\n", - " \"\\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\"\": \"https://theconversation.com/twenty-years-on-from-deep-blue-vs-kasparov-how-a-chess-match-started-the-big-data-revolution-76882\",\n", - " \"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\": \"https://en.wikipedia.org/wiki/Framework_Convention_on_Artificial_Intelligence_and_Human_Rights,_Democracy_and_the_Rule_of_Law\",\n", - " \"The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today\": \"https://mpra.ub.uni-muenchen.de/28142/1/MPRA_paper_28142.pdf\",\n", - " \"\\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\"\": \"https://theconversation.com/ai-is-closer-than-ever-to-passing-the-turing-test-for-intelligence-what-happens-when-it-does-214721\",\n", - " \"\\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\"\": \"https://www.forbes.com/sites/hessiejones/2023/05/23/juergen-schmidhuber-renowned-father-of-modern-ai-says-his-lifes-work-wont-lead-to-dystopia\",\n", - " \"\\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\"\": \"https://misinforeview.hks.harvard.edu/article/misinformation-reloaded-fears-about-the-impact-of-generative-ai-on-misinformation-are-overblown/\",\n", - " \"\\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\"\": \"https://www.bloomberg.co.jp/news/articles/2024-10-18/SLHGKKT0AFB400\",\n", - " \"\\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11062903\",\n", - " \"\\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\"\": \"https://doi.org/10.1007%2Fs11930-024-00392-3\",\n", - " \"\\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\"\": \"https://www.gov.uk/government/news/countries-agree-to-safe-and-responsible-development-of-frontier-ai-in-landmark-bletchley-declaration\",\n", - " \"\\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\"\": \"https://dl.acm.org/doi/10.1145/3631414\",\n", - " \"\\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\"\": \"https://www.washingtonpost.com/news/the-switch/wp/2015/01/28/bill-gates-on-dangers-of-artificial-intelligence-dont-understand-why-some-people-are-not-concerned\",\n", - " \"\\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8545201\",\n", - " \"\\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\"\": \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1513681\",\n", - " \"\\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\"\": \"https://venturebeat.com/ai/microsofts-new-rstar-math-technique-upgrades-small-models-to-outperform-openais-o1-preview-at-math-problems/\",\n", - " \"\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\"\": \"https://www.scientificamerican.com/article/what-is-fuzzy-logic-are-t\",\n", - " \"\\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\"\": \"https://dl.acm.org/doi/10.1145/3479609\",\n", - " \"\\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\"\": \"https://www.businessinsider.com/hugging-face-open-source-ai-approach-2023-12\",\n", - " \"\\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\"\": \"https://www.tandfonline.com/doi/full/10.1080/19361610.2024.2331885\",\n", - " \"\\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\"\": \"https://journals.sagepub.com/doi/abs/10.1177/15248380221143772?journalCode=tvaa\",\n", - " \"\\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\"\": \"http://www.pyoudeyer.com/IEEETAMDOudeyer10.pdf\",\n", - " \"\\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\"\": \"https://doi.org/10.3389%2Ffsens.2023.1294721\",\n", - " \"\\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\"\": \"http://www.aserenko.com/papers/JOI_AI_Journal_Ranking_Serenko.pdf\",\n", - " \"\\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\"\": \"https://linkinghub.elsevier.com/retrieve/pii/S0010482524008278\",\n", - " \"\\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\"\": \"https://www.nzz.ch/international/die-ukraine-setzt-auf-drohnen-die-autonom-navigieren-und-toeten-koennen-ld.1838731\",\n", - " \"https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/\": \"https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/\",\n", - " \"\\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\"\": \"https://doi.org/10.1177%2F23780231241259627\",\n", - " \"\\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\"\": \"https://www.tandfonline.com/doi/full/10.1080/00224499.2024.2396457\"\n", - " },\n", - " \"title\": \"Artificial intelligence\",\n", - " \"usage\": {\n", - " \"tokens\": 48740\n", - " },\n", - " \"images\": {},\n", - " \"content\": \"Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\\\"AI\\\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \\\"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore.\\\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence\\u2014the ability to complete any task performed by a human on an at least equal level\\u2014is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \\\"combinatorial explosion\\\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \\\"interesting\\\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \\\"facts\\\" or \\\"statements\\\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \\\"agent\\\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences\\u2014there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \\\"utility\\\") that measures how much the agent prefers it. For each possible action, it can calculate the \\\"expected utility\\\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \\\"unknown\\\" or \\\"unobservable\\\") and it may not know for certain what will happen after each possible action (it is not \\\"deterministic\\\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \\\"good\\\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \\\"micro-worlds\\\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \\\"GPT\\\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human\\u2013computer interaction.\\n\\nHowever, this tends to give na\\u00efve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \\\"Heuristics\\\" or \\\"rules of thumb\\\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \\\"mutating\\\" and \\\"recombining\\\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \\\"and\\\", \\\"or\\\", \\\"not\\\" and \\\"implies\\\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \\\"Every X is a Y\\\" and \\\"There are some Xs that are Ys\\\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \\\"degree of truth\\\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation\\u2013maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation\\u2013maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \\\"if shiny then diamond\\\"), on one hand, and controllers (e.g., \\\"if diamond then pick up\\\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \\\"observation\\\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \\\"most widely used learner\\\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \\\"close\\\" to each other\\u2014this is especially important in image processing, where a local set of neurons must identify an \\\"edge\\\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012\\u20132015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \\\"hallucinations\\\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months\\u2014a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \\\"robot advisers\\\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \\\"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\\\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \\\"AI\\\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \\\"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\\\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \\\"solve intelligence, and then use that to solve everything else\\\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \\\"from the question of 'what they know' to the question of 'what they're doing with it'.\\\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \\\"fair use\\\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \\\"the purpose and character of the use of the copyrighted work\\\" and \\\"the effect upon the potential market for the copyrighted work\\\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \\\"robots.txt\\\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources \\u2013 from nuclear energy to geothermal to fusion. The tech firms argue that \\u2013 in the long view \\u2013 AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \\\"intelligent\\\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \\\"US power demand (is) likely to experience growth not seen in a generation....\\\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power \\u2013 enough for 800,000 homes \\u2013 of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube \\u00a7\\u00a0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \\\"authoritarian leaders to manipulate their electorates\\\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \\\"gorillas\\\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \\\"sample size disparity\\\".[242] Google \\\"fixed\\\" this problem by preventing the system from labelling anything as a \\\"gorilla\\\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different\\u2014the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \\\"race\\\" or \\\"gender\\\"). The feature will correlate with other features (like \\\"address\\\", \\\"shopping history\\\" or \\\"first name\\\"), and the program will make the same decisions based on these features as it would on \\\"race\\\" or \\\"gender\\\".[247] Moritz Hardt said \\\"the most robust fact in this research area is that fairness through blindness doesn't work.\\\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \\\"predictions\\\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \\\"recommendations\\\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious \\u2013 discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \\\"cancerous\\\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \\\"low risk\\\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\\\"Explainable Artificial Intelligence\\\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier\\u2014AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \\\"we're in uncharted territory\\\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \\\"high risk\\\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \\\"high risk\\\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \\\"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\\\" is \\\"worth taking seriously\\\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \\\"spell the end of the human race\\\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \\\"self-awareness\\\" (or \\\"sentience\\\" or \\\"consciousness\\\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \\\"you can't fetch the coffee if you're dead.\\\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \\\"fundamentally on our side\\\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \\\"freely speak out about the risks of AI\\\" without \\\"considering how this impacts Google\\\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \\\"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\\\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer J\\u00fcrgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \\\"human lives longer and healthier and easier.\\\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \\\"they can also be used against the bad actors.\\\"[295][296] Andrew Ng also argued that \\\"it's a mistake to fall for the doomsday hype on AI\\u2014and that regulators who do will only benefit vested interests.\\\"[297] Yann LeCun \\\"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\\\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach's \\\"artificial moral agents\\\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \\\"weights\\\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values\\u2014developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \\\"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\\\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \\\"products and services using AI have more benefits than drawbacks\\\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \\\"very important\\\", and an additional 41% thought it \\\"somewhat important\\\", for the federal government to regulate AI, versus 13% responding \\\"not very important\\\" and 8% responding \\\"not at all important\\\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \\\"formal\\\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \\\"0\\\" and \\\"1\\\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \\\"electronic brain\\\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \\\"artificial neurons\\\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \\\"machine intelligence\\\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \\\"astonishing\\\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \\\"machines will be capable, within twenty years, of doing any work a man can do\\\".[345] In 1967 Marvin Minsky agreed, writing that \\\"within a generation\\u00a0... the problem of creating 'artificial intelligence' will substantially be solved\\\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \\\"AI winter\\\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \\\"sub-symbolic\\\" approaches.[353] Rodney Brooks rejected \\\"representation\\\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \\\"connectionism\\\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \\\"narrow\\\" and \\\"formal\\\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \\\"artificial intelligence\\\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \\\"AGI\\\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015\\u20132019.[323]\\n\\nThe number of Google searches for the term \\\"AI\\\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \\\"AI\\\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \\\"AI\\\".[370] About 800,000 \\\"AI\\\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \\\"I propose to consider the question 'can machines think'?\\\"[376] He advised changing the question from whether a machine \\\"thinks\\\", to \\\"whether or not it is possible for machinery to show intelligent behaviour\\\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \\\"actually\\\" thinking or literally has a \\\"mind\\\". Turing notes that we can not determine these things about other people but \\\"it is usual to have a polite convention that everyone thinks.\\\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \\\"Aeronautical engineering texts\\\", they wrote, \\\"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\\\"[379] AI founder John McCarthy agreed, writing that \\\"Artificial intelligence is not, by definition, simulation of human intelligence\\\".[380]\\n\\nMcCarthy defines intelligence as \\\"the computational part of the ability to achieve goals in the world\\\".[381] Another AI founder, Marvin Minsky, similarly describes it as \\\"the ability to solve hard problems\\\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \\\"intelligence\\\" of the machine\\u2014and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \\\"not actually use AI in a material way\\\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \\\"artificial intelligence\\\" to mean \\\"machine learning with neural networks\\\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \\\"GOFAI\\\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \\\"intelligent\\\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \\\"A physical symbol system has the necessary and sufficient means of general intelligent action.\\\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \\\"intelligent\\\" tasks were easy for AI, but low level \\\"instinctive\\\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \\\"feel\\\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\\\"Neats\\\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \\\"Scruffies\\\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \\\"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\\\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \\\"hard\\\" and \\\"easy\\\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind\\u2013body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \\\"strong AI\\\": \\\"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\\\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \\\"electronic personhood\\\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \\\"intelligence explosion\\\" and Vernor Vinge called a \\\"singularity\\\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \\\"artificial intelligence is the next step in evolution\\\", an idea first proposed by Samuel Butler's \\\"Darwin among the Machines\\\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \\\"robot\\\" itself was coined by Karel \\u010capek in his 1921 play R.U.R., the title standing for \\\"Rossum's Universal Robots\\\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \\\"Multivac\\\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel \\u010capek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\u00a0\\u2013 Use and impact of AI on political elections\\nArtificial intelligence content detection\\u00a0\\u2013 Software to detect AI-generated content\\nBehavior selection algorithm\\u00a0\\u2013 Algorithm that selects actions for intelligent agents\\nBusiness process automation\\u00a0\\u2013 Automation of business processes\\nCase-based reasoning\\u00a0\\u2013 Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\u00a0\\u2013 Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\u00a0\\u2013 Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\u00a0\\u2013 Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\u00a0\\u2013 Gender biases in digital technology\\nGlossary of artificial intelligence\\u00a0\\u2013 List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\u00a0\\u2013 Use of information technology to augment human intelligence\\nIntelligent agent\\u00a0\\u2013 Software agent which acts autonomously\\nMind uploading\\u00a0\\u2013 Hypothetical process of digitally emulating a brain\\nOrganoid intelligence \\u2013 Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\u00a0\\u2013 Form of business process automation technology\\nWetware computer\\u00a0\\u2013 Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \\\"Rational agent\\\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \\\"Computing Machinery and Intelligence\\\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \\\"An Inductive Inference Machine\\\".[43]\\n^ See AI winter \\u00a7\\u00a0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\u00a0million edges to learn which ads to serve.[93]\\n^ Expectation\\u2013maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \\\"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\\\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \\\"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world.\\\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \\\"robopocalypse\\\"[283]\\n^ \\\"Electronic brain\\\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \\\"the conference is generally recognized as the official birthdate of the new science.\\\"[341] Russell and Norvig called the conference \\\"the inception of artificial intelligence.\\\"[115]\\n^ Russell and Norvig wrote \\\"for the next 20 years the field would be dominated by these people and their students.\\\"[342]\\n^ Russell and Norvig wrote, \\\"it was astonishing whenever a computer did anything kind of smartish\\\".[343]\\n^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\\n^ Russell and Norvig write: \\\"in almost all cases, these early systems failed on more difficult problems\\\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \\\"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \\\"deep learning\\\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\\\"[363]\\n^ Jack Clark wrote in Bloomberg: \\\"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\\\", and noted that the number of software projects that use machine learning at Google increased from a \\\"sporadic usage\\\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \\\"Simply put, there is wide disagreement in the field about what AI is all about.\\\"[386]\\n^ Daniel Crevier wrote that \\\"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\\\"[391]\\n^ Searle presented this definition of \\\"Strong AI\\\" in 1999.[401] Searle's original formulation was \\\"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\\\"[402] Strong AI is defined similarly by Russell and Norvig: \\\"Stong AI \\u2013 the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\\\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\u00a01\\u20134.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \\\"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\\\". Business Horizons. 62: 15\\u201325. doi:10.1016/j.bushor.2018.08.004. ISSN\\u00a00007-6813. S2CID\\u00a0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\u00a032\\u201333, 1020\\u20131021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, \\u00a71.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\u00a018), McCorduck (2004, pp.\\u00a0111\\u2013136), NRC (1999, pp.\\u00a0200\\u2013201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\u00a0243\\u2013252), Crevier (1993, pp.\\u00a052\\u2013107), Moravec (1988, p.\\u00a09), Russell & Norvig (2021, pp.\\u00a019\\u201321)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\u00a0426\\u2013441), Crevier (1993, pp.\\u00a0161\\u2013162, 197\\u2013203, 211, 240), Russell & Norvig (2021, p.\\u00a023), NRC (1999, pp.\\u00a0210\\u2013211), Newquist (1994, pp.\\u00a0235\\u2013248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\u00a0115\\u2013117), Russell & Norvig (2021, pp.\\u00a021\\u201322), NRC (1999, pp.\\u00a0212\\u2013213), Howe (1994), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\u00a024), McCorduck (2004, pp.\\u00a0430\\u2013435), Crevier (1993, pp.\\u00a0209\\u2013210), NRC (1999, pp.\\u00a0214\\u2013216), Newquist (1994, pp.\\u00a0301\\u2013318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\u00a026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3\\u20135), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7\\u201312)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0333\\u2013381), Nilsson (1998, chpt. 7\\u201312)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\u00a021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\u00a023\\u201346, 69\\u201381, 169\\u2013233, 235\\u2013277, 281\\u2013298, 319\\u2013345), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013243), Nilsson (1998, chpt. 17.1\\u201317.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & M\\u00f6ller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\u00a0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, \\u00a710.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0174\\u2013177), Luger & Stubblefield (2004, pp.\\u00a0248\\u2013258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, \\u00a710.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0281\\u2013298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\u00a0335\\u2013337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, \\u00a710.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0275\\u2013277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, \\u00a710.6), Poole, Mackworth & Goebel (1998, pp.\\u00a0248\\u2013256, 323\\u2013335), Luger & Stubblefield (2004, pp.\\u00a0335\\u2013363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \\\"default reasoning\\\". Luger et al. places this under \\\"uncertain reasoning\\\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\u00a0113\\u2013114), Moravec (1988, p.\\u00a013), Russell & Norvig (2021, pp.\\u00a0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\u00a0296.\\n^ Crevier (1993), pp.\\u00a0204\\u2013208.\\n^ Russell & Norvig (2021), p.\\u00a0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16\\u201318).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \\\"conformant\\\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19\\u201322), Poole, Mackworth & Goebel (1998, pp.\\u00a0397\\u2013438), Luger & Stubblefield (2004, pp.\\u00a0385\\u2013542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\u00a0653) (definition), Russell & Norvig (2021, pp.\\u00a0738\\u2013740) (cluster analysis), Russell & Norvig (2021, pp.\\u00a0846\\u2013860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, \\u00a719.2) (Definition), Russell & Norvig (2021, Chpt. 19\\u201320) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\u00a0442\\u2013449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\u00a0281), The Economist (2016)\\n^ \\\"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\\\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\u00a0672\\u2013674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23\\u201324), Poole, Mackworth & Goebel (1998, pp.\\u00a091\\u2013104), Luger & Stubblefield (2004, pp.\\u00a0591\\u2013632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\u00a0849\\u2013850)\\n^ Russell & Norvig (2021), pp.\\u00a0856\\u2013858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\u00a0875\\u2013878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\u00a0849\\u2013850.\\n^ Russell & Norvig (2021), pp.\\u00a0895\\u2013899.\\n^ Russell & Norvig (2021), pp.\\u00a0899\\u2013901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\u00a0931\\u2013938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3\\u20135), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013163), Luger & Stubblefield (2004, pp.\\u00a079\\u2013164, 193\\u2013219), Nilsson (1998, chpts. 7\\u201312)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0113\\u2013132), Luger & Stubblefield (2004, pp.\\u00a079\\u2013121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0132\\u2013147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\u00a0133\\u2013150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \\\"optimization\\\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \\\"Optimization Algorithms in Neural Networks\\\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6\\u20139), Luger & Stubblefield (2004, pp.\\u00a035\\u201377), Nilsson (1998, chpt. 13\\u201316)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\u00a045\\u201350), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\u00a0268\\u2013275), Luger & Stubblefield (2004, pp.\\u00a050\\u201362), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\u00a0~46\\u201352), Luger & Stubblefield (2004, pp.\\u00a062\\u201373), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \\\"Prolog-the language and its implementation compared with Lisp\\\". ACM SIGPLAN Notices. 12 (8): 109\\u2013115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\u00a0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12\\u201318, 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0345\\u2013395), Luger & Stubblefield (2004, pp.\\u00a0165\\u2013191, 333\\u2013381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16\\u201318), Poole, Mackworth & Goebel (1998, pp.\\u00a0381\\u2013394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5\\u201312.6, 13.4\\u201313.5, 14.3\\u201314.5, 16.5, 20.2\\u201320.3), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~182\\u2013190, \\u2248363\\u2013379), Nilsson (1998, chpt. 19.3\\u201319.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3\\u201313.5), Poole, Mackworth & Goebel (1998, pp.\\u00a0361\\u2013381), Luger & Stubblefield (2004, pp.\\u00a0~363\\u2013379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\u00a0210.\\n^ Bayesian learning and the expectation\\u2013maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\u00a0424\\u2013433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\u00a0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\u00a088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\u00a0187) (k-nearest neighbor)\\nDomingos (2015, p.\\u00a088) (kernel methods)\\n^ Domingos (2015), p.\\u00a0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\u00a0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\u00a0467\\u2013474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\u00a0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\u00a021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\u00a0199\\u2013200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\u00a0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\u00a017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\u00a0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\u00a022)\\n^ Smith (2023).\\n^ \\\"Explained: Generative AI\\\". 9 November 2023.\\n^ \\\"AI Writing and Content Creation Tools\\\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \\\"Mojo Rising: The resurgence of AI-first programming languages\\\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \\\"7 AI Programming Languages You Need to Know\\\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \\\"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \\\"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\\\". Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \\\"The potential for artificial intelligence in healthcare\\\". Future Healthc J. 6 (2): 94\\u201398. doi:10.7861/futurehosp.6-2-94. PMC\\u00a06616181. PMID\\u00a031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \\\"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\\\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\u00a038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \\\"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\\\". IEEE Access. 9: 102327\\u2013102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\u00a02169-3536. PMC\\u00a08545201. PMID\\u00a034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \\\"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\\\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\u00a02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844.\\n^ \\\"AI discovers new class of antibiotics to kill drug-resistant bacteria\\\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \\\"AI speeds up drug design for Parkinson's ten-fold\\\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \\\"Discovery of potent inhibitors of \\u03b1-synuclein aggregation using structure-based iterative learning\\\". Nature Chemical Biology. 20 (5). Nature: 634\\u2013645. doi:10.1038/s41589-024-01580-x. PMC\\u00a011062903. PMID\\u00a038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \\\"The Talk of the Town \\u2013 It\\\". The New Yorker. ISSN\\u00a00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \\\"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\\\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \\\"Computer Wins on 'Jeopardy!': Trivial, It's Not\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \\\"AlphaGo retires from competitive Go after defeating world number one 3\\u20130\\\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \\\"Superhuman AI for multiplayer poker\\\". Science. 365 (6456): 885\\u2013890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\u00a00036-8075. PMID\\u00a031296650.\\n^ \\\"MuZero: Mastering Go, chess, shogi and Atari without rules\\\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \\\"AI becomes grandmaster in 'fiendishly complex' StarCraft II\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \\\"Outracing champion Gran Turismo drivers with deep reinforcement learning\\\" (PDF). Nature. 602 (7896): 223\\u2013228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\u00a035140384.\\n^ Wilkins, Alex (13 March 2024). \\\"Google AI learns to play open-world video games by watching them\\\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \\\"Improving mathematical reasoning with process supervision\\\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \\\"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\\\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \\\"Let's Verify Step by Step\\\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \\\"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\\\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \\\"AI achieves silver-medal standard solving International Mathematical Olympiad problems\\\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \\\"Llemma: An Open Language Model For Mathematics\\\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \\\"Julius AI\\\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \\\"8 Best AI for Math Tools (January 2025)\\\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \\\"What is Artificial Intelligence (AI) in Finance?\\\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \\\"Artificial Intelligence: Ask the Industry\\\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \\\"'Lavender': The AI machine directing Israel's bombing spree in Gaza\\\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \\\"'The Gospel': how Israel uses AI to select bombing targets in Gaza\\\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \\\"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf St\\u00f6rsender \\u2013 deshalb sollen sie jetzt autonom operieren\\\". Neue Z\\u00fcrcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \\\"Executive Order N-12-23\\\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \\\"Generative AI for Medical Imaging: extending the MONAI Framework\\\". arXiv:2307.15208 [eess.IV].\\n^ \\\"What is ChatGPT, DALL-E, and generative AI?\\\". McKinsey. Retrieved 14 December 2024.\\n^ \\\"What is generative AI?\\\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \\\"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \\\"Generative models\\\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \\\"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\\\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \\\"A Cheat Sheet to AI Buzzwords and Their Meanings\\\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \\\"OpenAI Plans to Up the Ante in Tech's A.I. Race\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \\\"LaMDA: Language Models for Dialog Applications\\\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \\\"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\\\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \\\"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\\\". The New York Times. ISSN\\u00a00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \\\"The race of the AI labs heats up\\\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \\\"Google Cloud brings generative AI to developers, businesses, and governments\\\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \\\"Don't fear an AI-induced jobs apocalypse just yet\\\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \\\"In Hollywood writers' battle against AI, humans win (for now)\\\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \\\"Generative AI: Unlocking the future of fashion\\\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \\\"How Generative AI Can Augment Human Creativity\\\". Harvard Business Review. 16 June 2023. ISSN\\u00a00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \\\"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\\\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \\\"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\\\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\u00a0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \\\"New AI systems collide with copyright law\\\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\u00a0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\u00a0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Pearson. ISBN\\u00a0978-0-1346-1099-3.\\n^ \\\"Why agents are the next frontier of generative AI\\\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \\\"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\\\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1\\u2013154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \\\"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\\\". Current Sexual Health Reports. 16 (3): 199\\u2013215. doi:10.1007/s11930-024-00392-3. ISSN\\u00a01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \\\"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \\\"My AI\\\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\\\". The Journal of Sex Research: 1\\u201315. doi:10.1080/00224499.2024.2396457. ISSN\\u00a00022-4499. PMID\\u00a039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \\\"\\\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\\\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\\\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\u00a02378-0231.\\n^ Mania, Karolina (1 January 2024). \\\"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\\\". Trauma, Violence, & Abuse. 25 (1): 117\\u2013129. doi:10.1177/15248380221143772. ISSN\\u00a01524-8380. PMID\\u00a036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \\\"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\\\". Journal of Applied Security Research. 19 (4): 586\\u2013627. doi:10.1080/19361610.2024.2331885. ISSN\\u00a01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \\\"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\\\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1\\u201338. doi:10.1145/3479609. ISSN\\u00a02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \\\"Reshaping Business With Artificial Intelligence\\\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \\\"8 \\u2013 AI for large-scale evacuation modeling: promises and challenges\\\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\u00a0185\\u2013204, ISBN\\u00a0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; B\\u00e9nichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \\\"A Framework for Intelligent Fire Detection and Evacuation System\\\". Fire Technology. 57 (6): 3179\\u20133185. doi:10.1007/s10694-021-01157-3. ISSN\\u00a01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \\\"Modelling and interpreting pre-evacuation decision-making using machine learning\\\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\u00a00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \\\"India's latest election embraced AI technology. Here are some ways it was used constructively\\\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ M\\u00fcller, Vincent C. (30 April 2020). \\\"Ethics of Artificial Intelligence and Robotics\\\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\u00a0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\u00a0991.\\n^ Russell & Norvig (2021), pp.\\u00a0991\\u2013992.\\n^ Christian (2020), p.\\u00a063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \\\"Copyright Services: Fair Use\\\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \\\"How to Stop Your Data From Being Used to Train AI\\\". Wired. ISSN\\u00a01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \\\"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\\\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \\\"Big Tech is spending more than VC firms on AI startups\\\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \\\"The Future of AI Is GOMA\\\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \\\"Big tech and the pursuit of AI dominance\\\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \\\"Where the battle to dominate AI may be won\\\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \\\"In the Age of A.I., Tech's Little Guys Need Big Friends\\\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \\\"Electricity 2024 \\u2013 Analysis\\\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \\\"AI already uses as much energy as a small country. It's only the beginning\\\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \\\"AI is exhausting the power grid. Tech firms are seeking a miracle solution\\\". Washington Post.\\n^ Davenport, Carly. \\\"AI Data Centers and the Coming YS Power Demand Surge\\\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \\\"Energy-Guzzling AI Is Also the Future of Energy Savings\\\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \\\"Tech Industry Wants to Lock Up Nuclear Power for AI\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \\\"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\\\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \\\"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\\\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \\\"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\\\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \\\"Taiwan to stop large data centers in the North, cites insufficient power\\\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \\\"\\u30a8\\u30cc\\u30d3\\u30c7\\u30a3\\u30a2\\u51fa\\u8cc7\\u306e\\u65e5\\u672c\\u4f01\\u696d\\u3001\\u539f\\u767a\\u8fd1\\u304f\\u3067\\uff21\\uff29\\u30c7\\u30fc\\u30bf\\u30bb\\u30f3\\u30bf\\u30fc\\u65b0\\u8a2d\\u691c\\u8a0e\\\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \\\"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\\\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \\\"Trust and Distrust in America\\\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \\\"Why it's so damn hard to make AI fair and unbiased\\\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\u00a017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\u00a017); Rose (2023); Russell & Norvig (2021, p.\\u00a0995)\\n^ Christian (2020), p.\\u00a025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\u00a0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\u00a067\\u201370.\\n^ Christian (2020, pp.\\u00a067\\u201370); Russell & Norvig (2021, pp.\\u00a0993\\u2013994)\\n^ Russell & Norvig (2021, p.\\u00a0995); Lipartito (2011, p.\\u00a036); Goodman & Flaxman (2017, p.\\u00a06); Christian (2020, pp.\\u00a039\\u201340, 65)\\n^ Quoted in Christian (2020, p.\\u00a065).\\n^ Russell & Norvig (2021, p.\\u00a0994); Christian (2020, pp.\\u00a040, 80\\u201381)\\n^ Quoted in Christian (2020, p.\\u00a080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \\\"Black Box AI\\\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\u00a0110.\\n^ Christian (2020), pp.\\u00a088\\u201391.\\n^ Christian (2020, p.\\u00a083); Russell & Norvig (2021, p.\\u00a0997)\\n^ Christian (2020), p.\\u00a091.\\n^ Christian (2020), p.\\u00a083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\u00a0105\\u2013108.\\n^ Christian (2020), pp.\\u00a0108\\u2013112.\\n^ Ropek, Lucas (21 May 2024). \\\"New Anthropic Research Sheds Light on AI's 'Black Box'\\\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\u00a0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\u00a0987\\u2013990.\\n^ Russell & Norvig (2021), p.\\u00a0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \\\"How China Uses High-Tech Surveillance to Subdue Minorities\\\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \\\"Security lapse exposed a Chinese smart city surveillance system\\\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511\\u2013559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\u00a033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\u00a033)\\n^ Zhou, Viola (11 April 2023). \\\"AI is already taking video game illustrators' jobs in China\\\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \\\"China's game art industry reportedly decimated by growing AI use\\\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \\\"Lessons from Eliza\\\". The Guardian Weekly. pp.\\u00a034\\u201339.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\u00a01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); M\\u00fcller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ M\\u00fcller & Bostrom (2014).\\n^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \\\"\\\"Godfather of artificial intelligence\\\" talks impact and potential of new AI\\\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \\\"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\\\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \\\"'50\\u201350 chance' that AI outsmarts humanity, Geoffrey Hinton says\\\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \\\"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\\\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \\\"'Father of AI' says tech fears misplaced: 'You cannot stop it'\\\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \\\"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\\\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \\\"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\\\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \\\"How Not to Be Stupid About AI, With Yann LeCun\\\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\u00a067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\u00a0173.\\n^ Stewart, Ashley; Melton, Monica. \\\"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\\\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \\\"Google open sources tools to support AI model development\\\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \\\"The open-source AI boom is built on Big Tech's handouts. How long will it last?\\\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \\\"Mistral AI's New Language Model Aims for Open Source Supremacy\\\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \\\"Stability announces Stable Diffusion 3, a next-gen AI image generator\\\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \\\"How enterprises are using open source LLMs: 16 examples\\\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \\\"Should we make our most powerful AI models open source to all?\\\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \\\"Understanding artificial intelligence ethics and safety\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \\\"AI Ethics and Governance in Practice\\\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \\\"A Unified Framework of Five Principles for AI in Society\\\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\u00a0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \\\"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\\\". Medicine, Health Care and Philosophy. 23 (3): 387\\u2013399. doi:10.1007/s11019-020-09948-1. ISSN\\u00a01572-8633. PMID\\u00a032236794. S2CID\\u00a0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \\\"Ethical issues in the development of artificial intelligence: recognizing the risks\\\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\u00a02514-9369. S2CID\\u00a0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\\"AI Safety Institute releases new AI safety evaluations platform\\\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \\\"UN Announces Advisory Body on Artificial Intelligence\\\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \\\"Council of Europe opens first ever global treaty on AI for signature\\\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \\\"Hope or Horror? The great AI debate dividing its pioneers\\\". The Guardian Weekly. pp.\\u00a010\\u201312.\\n^ \\\"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1\\u20132 November 2023\\\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \\\"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\\\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \\\"Second global AI summit secures safety commitments from companies\\\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \\\"Frontier AI Safety Commitments, AI Seoul Summit 2024\\\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\u00a09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\u00a00-1982-5079-7.\\n^ \\\"Google books ngram\\\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI's immediate precursors: McCorduck (2004, pp.\\u00a051\\u2013107), Crevier (1993, pp.\\u00a027\\u201332), Russell & Norvig (2021, pp.\\u00a08\\u201317), Moravec (1988, p.\\u00a03)\\n^ \\nJump up to:\\na b Turing's original publication of the Turing test in \\\"Computing machinery and intelligence\\\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\u00a06\\u20139), Crevier (1993, p.\\u00a024), McCorduck (2004, pp.\\u00a070\\u201371), Russell & Norvig (2021, pp.\\u00a02, 984)\\n^ Crevier (1993), pp.\\u00a047\\u201349.\\n^ Russell & Norvig (2003), p.\\u00a017.\\n^ Russell & Norvig (2003), p.\\u00a018.\\n^ Newquist (1994), pp.\\u00a086\\u201386.\\n^ Simon (1965, p.\\u00a096) quoted in Crevier (1993, p.\\u00a0109)\\n^ Minsky (1967, p.\\u00a02) quoted in Crevier (1993, p.\\u00a0109)\\n^ Russell & Norvig (2021), p.\\u00a021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\u00a0212\\u2013213.\\n^ Russell & Norvig (2021), p.\\u00a022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\u00a023, 292), Luger & Stubblefield (2004, pp.\\u00a0227\\u2013331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\u00a0327\\u2013335, 434\\u2013435), Crevier (1993, pp.\\u00a0145\\u2013162, 197\\u2013203), Newquist (1994, pp.\\u00a0155\\u2013183)\\n^ Russell & Norvig (2021), p.\\u00a024.\\n^ Nilsson (1998), p.\\u00a07.\\n^ McCorduck (2004), pp.\\u00a0454\\u2013462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\u00a025.\\n^ Crevier (1993, pp.\\u00a0214\\u2013215), Russell & Norvig (2021, pp.\\u00a024, 26)\\n^ Russell & Norvig (2021), p.\\u00a026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\u00a024\\u201326), McCorduck (2004, pp.\\u00a0486\\u2013487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\u00a0265), NRC (1999, pp.\\u00a0216\\u2013222), Newquist (1994, pp.\\u00a0189\\u2013201)\\n^ Wong (2023).\\n^ Moore's Law and AI: Russell & Norvig (2021, pp.\\u00a014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\u00a026)\\n^ Sagar, Ram (3 June 2020). \\\"OpenAI Releases GPT-3, The Largest Model So Far\\\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \\\"ChatGPT reaches 100 million users two months after launch\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \\\"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\\\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \\\"Nearly 1 in 4 new startups is an AI company\\\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \\\"Philosophy is crucial in the age of AI\\\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \\\"Will AI ever become conscious? It depends on how you think about biology\\\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \\\"The Philosophy of AI and the AI of Philosophy\\\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\u00a01.\\n^ Turing (1950), Under \\\"The Argument from Consciousness\\\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \\\"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\\\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\u00a03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \\\"What Is Artificial Intelligence (AI)?\\\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \\\"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\\\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \\\"AI or BS? How to tell if a marketing tool really uses artificial intelligence\\\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\u00a010.\\n^ Haugeland (1985), pp.\\u00a0112\\u2013117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\u00a0116) Historical significance: McCorduck (2004, p.\\u00a0153), Russell & Norvig (2021, p.\\u00a019)\\n^ Moravec's paradox: Moravec (1988, pp.\\u00a015\\u201316), Minsky (1986, p.\\u00a029), Pinker (2007, pp.\\u00a0190\\u2013191)\\n^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\u00a0120\\u2013132), McCorduck (2004, pp.\\u00a0211\\u2013239), Russell & Norvig (2021, pp.\\u00a0981\\u2013982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\u00a0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\u00a0421\\u2013424, 486\\u2013489), Crevier (1993, p.\\u00a0168), Nilsson (1983, pp.\\u00a010\\u201311), Russell & Norvig (2021, p.\\u00a024) A classic example of the \\\"scruffy\\\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\u00a0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\u00a01.\\n^ Russell & Norvig (2021), p.\\u00a09817.\\n^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\u00a0985), McCorduck (2004, pp.\\u00a0443\\u2013445), Crevier (1993, pp.\\u00a0269\\u2013271)\\n^ Leith, Sam (7 July 2022). \\\"Nick Bostrom: How can we be certain a machine isn't conscious?\\\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \\\"Why don't robots have rights?\\\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \\\"AI Should Be Terrified of Humans\\\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \\\"What leaders need to know about robot rights\\\". Fast Company.\\n^ Hern, Alex (12 January 2017). \\\"Give robots 'personhood' status, EU committee argues\\\". The Guardian. ISSN\\u00a00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \\\"Experts Don't Think Robots Should Have Rights\\\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \\\"Robot rights violate human rights, experts warn EU\\\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\u00a01004\\u20131005), Omohundro (2008), Kurzweil (2005) I. J. Good's \\\"intelligence explosion\\\": Good (1965) Vernor Vinge's \\\"singularity\\\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\u00a01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\u00a01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\u00a0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \\\"a gift to the far right\\\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\u00a04\\u20135)\\n^ McCorduck (2004), pp.\\u00a0340\\u2013400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\u00a0ed.). Hoboken: Pearson. ISBN\\u00a0978-0-1346-1099-3. LCCN\\u00a020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\u00a0ed.). New Delhi: Tata McGraw Hill India. ISBN\\u00a0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\u00a0ed.). Benjamin/Cummings. ISBN\\u00a0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\u00a0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\u00a0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\u00a00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\u00a0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\u00a0ed.). Cambridge University Press. ISBN\\u00a0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\u00a0ed.). Springer. ISBN\\u00a0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\u00a0ed.). Intellisemantic Editions. ISBN\\u00a0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\u00a00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\u00a0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\u00a01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\u00a0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\u00a00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \\\"Franzen, Grisham and Other Prominent Authors Sue OpenAI\\\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \\\"Governance of Superintelligence\\\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \\\"Asimov's \\\"three laws of robotics\\\" and machine metaethics\\\". AI & Society. 22 (4): 477\\u2013493. doi:10.1007/s00146-007-0094-5. S2CID\\u00a01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \\\"The risk of automation for jobs in OECD countries: A comparative analysis\\\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \\\"Cognitive developmental robotics: a survey\\\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12\\u201334. doi:10.1109/tamd.2009.2021702. S2CID\\u00a010168773.\\n\\\"Ask the AI experts: What's driving today's progress in AI?\\\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\u00a0978-1-7864-3904-8. OCLC\\u00a01039480085.\\nBeal, J.; Winston, Patrick (2009), \\\"The New Frontier of Human-Level Artificial Intelligence\\\", IEEE Intelligent Systems, vol.\\u00a024, pp.\\u00a021\\u201324, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\u00a032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \\\"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\\\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\u00a02817-1705. PMC\\u00a011041459. PMID\\u00a038875587. S2CID\\u00a0256681439.\\nBerryhill, Jamie; Heang, K\\u00e9vin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \\\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\\\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\u00a0679\\u2013682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \\\"What happens when our computers get smarter than we are?\\\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \\\"artificial intelligence is a tool, not a threat\\\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \\\"Elephants Don't Play Chess\\\" (PDF). Robotics and Autonomous Systems. 6 (1\\u20132): 3\\u201315. CiteSeerX\\u00a010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \\\"Towards Intelligent Regulation of Artificial Intelligence\\\". European Journal of Risk Regulation. 10 (1): 41\\u201359. doi:10.1017/err.2019.8. ISSN\\u00a01867-299X.\\nBushwick, Sophie (16 March 2023), \\\"What the New GPT-4 AI Can Do\\\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \\\"Darwin among the Machines\\\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 \\u2013 via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \\\"Artificial consciousness: Utopia or real possibility?\\\". Computer. 34 (7): 24\\u201330. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \\\"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\\\". IEEE Computational Intelligence Magazine. 9 (2): 48\\u201357. doi:10.1109/MCI.2014.2307227. S2CID\\u00a0206451986.\\nCellan-Jones, Rory (2 December 2014). \\\"Stephen Hawking warns artificial intelligence could end mankind\\\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \\\"Facing up to the problem of consciousness\\\". Journal of Consciousness Studies. 2 (3): 200\\u2013219. CiteSeerX\\u00a010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mu\\u0161icki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\u00a0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\u00a0978-0-3938-6833-3. OCLC\\u00a01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \\\"Multi-column deep neural networks for image classification\\\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\u00a03642\\u20133649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\u00a0978-1-4673-1228-8. S2CID\\u00a02161592.\\nClark, Jack (2015b). \\\"Why 2015 Was a Breakthrough Year in Artificial Intelligence\\\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \\\"Commentary: Bad news. Artificial intelligence is biased\\\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \\\"Deep Learning: Methods and Applications\\\" (PDF). Foundations and Trends in Signal Processing. 7 (3\\u20134): 197\\u2013387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\u00a0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \\\"AI has already changed the world. This report shows how\\\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \\\"Machine learning: What is the transformer architecture?\\\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \\\"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\\\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\u00a0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN\\u00a0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\u00a0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\u00a0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\u00a0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \\\"Poll: AI poses risk to humanity, according to majority of Americans\\\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN\\u00a0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \\\"Will robots create more jobs than they destroy?\\\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \\\"Fox News Poll\\\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \\\"The future of employment: How susceptible are jobs to computerisation?\\\". Technological Forecasting and Social Change. 114: 254\\u2013280. CiteSeerX\\u00a010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\u00a00040-1625.\\n\\\"From not working to neural networking\\\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \\\"Entering the Posthuman Collective in Philip K. Dick's \\\"Do Androids Dream of Electric Sheep?\\\"\\\". Science Fiction Studies. 24 (3): 413\\u2013429. JSTOR\\u00a04240644.\\nGeist, Edward Moore (9 August 2015). \\\"Is artificial intelligence really an existential threat to humanity?\\\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \\\"Elon Musk: artificial intelligence is our biggest existential threat\\\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \\\"Algorithm\\\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\u00a015\\u201320. ISBN\\u00a0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \\\"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\\\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \\\"EU regulations on algorithmic decision-making and a 'right to explanation'\\\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\u00a07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \\\"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\\\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \\\"Here's where the A.I. jobs are\\\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \\\"Why Technology Favors Tyranny\\\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \\\"AI and the future of humanity\\\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\u00a0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \\\"Deep Neural Networks for Acoustic Modeling in Speech Recognition \\u2013 The shared views of four research groups\\\". IEEE Signal Processing Magazine. 29 (6): 82\\u201397. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\u00a0206485943.\\nHolley, Peter (28 January 2015). \\\"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\\\". The Washington Post. ISSN\\u00a00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\u00a02. Pergamon Press. pp.\\u00a0359\\u2013366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \\\"The Computational Theory of Mind\\\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \\\"Artificial Intelligence at Edinburgh University: a Perspective\\\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \\\"Robots and Artificial Intelligence\\\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \\\"Regulating artificial intelligence and robotics: ethics by design in a digital society\\\". Contemporary Social Science. 16 (2): 170\\u2013184. doi:10.1080/21582041.2018.1563803. ISSN\\u00a02158-2041. S2CID\\u00a059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \\\"Machine learning: Trends, perspectives, and prospects\\\". Science. 349 (6245): 255\\u2013260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\u00a026185243. S2CID\\u00a0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\u00a0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \\\"Judgment under uncertainty: Heuristics and biases\\\". Science. 185 (4157). New York: Cambridge University Press: 1124\\u20131131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\u00a0978-0-5212-8414-1. PMID\\u00a017835457. S2CID\\u00a0143452957.\\nKasperowicz, Peter (1 May 2023). \\\"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\\\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \\\"Noam Chomsky on Where Artificial Intelligence Went Wrong\\\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\\\"Kismet\\\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \\\"The Challenge of Being Human in the Age of AI\\\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \\\"GPUs Continue to Dominate the AI Accelerator Market for Now\\\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \\\"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\\\". Journal of the American Medical Informatics Association. 13 (4): 369\\u2013371. doi:10.1197/jamia.M2055. PMC\\u00a01513681. PMID\\u00a016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\u00a0978-0-6700-3384-3.\\nLangley, Pat (2011). \\\"The changing science of machine learning\\\". Machine Learning. 82 (3): 275\\u2013279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \\\"How We Analyzed the COMPAS Recidivism Algorithm\\\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \\\"What is Artificial Intelligence and How Does AI Work? TechTarget\\\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\u00a02019668143. OCLC\\u00a01110727808.\\nLee, Timothy B. (22 August 2014). \\\"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\\\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\u00a0978-0-2015-1752-1.\\nLighthill, James (1973). \\\"Artificial Intelligence: A General Survey\\\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\u00a0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \\\"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\\\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \\\"Developmental robotics: a survey\\\". Connection Science. 15 (4): 151\\u2013190. CiteSeerX\\u00a010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\u00a01452734.\\n\\\"Machine Ethics\\\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \\\"The case against killer robots, from a guy actually working on artificial intelligence\\\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \\\"What jobs will still be around in 20 years? Read this to prepare your future\\\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Fran\\u00e7oise (15 December 2023). \\\"Google's Gemini: is the new AI model really better than ChatGPT?\\\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \\\"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\\\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \\\"From Here to Human-Level AI\\\", Artificial Intelligence, p.\\u00a0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \\\"AI armageddon and the three laws of robotics\\\". Ethics and Information Technology. 9 (2): 153\\u2013164. CiteSeerX\\u00a010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\u00a037272949.\\nMcGarry, Ken (1 December 2005). \\\"A survey of interestingness measures for knowledge discovery\\\". The Knowledge Engineering Review. 20 (1): 39\\u201361. doi:10.1017/S0269888905000408. S2CID\\u00a014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\u00a051(3) Industrial Law Journal 511\\u2013559, doi:10.2139/ssrn.3044448, S2CID\\u00a0219336439, SSRN\\u00a03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \\\"Swarm Intelligence\\\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\u00a0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\u00a0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \\\"Automation and anxiety\\\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nM\\u00fcller, Vincent C.; Bostrom, Nick (2014). \\\"Future Progress in Artificial Intelligence: A Poll Among Experts\\\" (PDF). AI Matters. 1 (1): 9\\u201311. doi:10.1145/2639475.2639478. S2CID\\u00a08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; M\\u00f6ller, Ralf (January 2008). \\\"On scene interpretation with description logics\\\". Image and Vision Computing. 26 (1): 82\\u2013101. doi:10.1016/j.imavis.2007.08.013. S2CID\\u00a010767011.\\nNilsson, Nils (1995), \\\"Eyes on the Prize\\\", AI Magazine, vol.\\u00a016, pp.\\u00a09\\u201317\\nNewell, Allen; Simon, H. A. (1976). \\\"Computer Science as Empirical Inquiry: Symbols and Search\\\". Communications of the ACM. 19 (3): 113\\u2013126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \\\"How YouTube Drives People to the Internet's Darkest Corners\\\". The Wall Street Journal. ISSN\\u00a00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \\\"Artificial Intelligence Prepares for 2001\\\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \\\"Developments in Artificial Intelligence\\\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \\\"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\\\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2\\u201316. doi:10.1109/tamd.2009.2039057. S2CID\\u00a06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \\\"Contemporary Approaches to Artificial General Intelligence\\\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\u00a01\\u201330. doi:10.1007/978-3-540-68677-4_1. ISBN\\u00a0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\u00a0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \\\"A review of affective computing: From unimodal analysis to multimodal fusion\\\". Information Fusion. 37: 98\\u2013125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\u00a0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \\\"Microsoft's Bill Gates insists AI is a threat\\\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \\\"Revealed: The Authors Whose Pirated Books are Powering Generative AI\\\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \\\"Thinking Machines: The Search for Artificial Intelligence\\\". Distillations. Vol.\\u00a02, no.\\u00a02. pp.\\u00a014\\u201323. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \\\"Five experts share what scares them the most about AI\\\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \\\"AI Utopia or dystopia?\\\". The Guardian Weekly. pp.\\u00a042\\u201343.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\u00a0978-0-5255-5861-3. OCLC\\u00a01083694322.\\nSainato, Michael (19 August 2015). \\\"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\\\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \\\"Computer says no: why making AIs fair, accountable and transparent is crucial\\\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \\\"Exploring LIME Explanations and the Mathematics Behind It\\\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \\\"Theory of mind for a humanoid robot\\\". Autonomous Robots. 12 (1): 13\\u201324. doi:10.1023/A:1013298507114. S2CID\\u00a01979315.\\nSchmidhuber, J. (2015). \\\"Deep Learning in Neural Networks: An Overview\\\". Neural Networks. 61: 85\\u2013117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\u00a025462637. S2CID\\u00a011715509.\\nSchmidhuber, J\\u00fcrgen (2022). \\\"Annotated History of Modern AI and Deep Learning\\\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \\\"Minds, Brains and Programs\\\" (PDF). Behavioral and Brain Sciences. 3 (3): 417\\u2013457. doi:10.1017/S0140525X00005756. S2CID\\u00a055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\u00a0978-0-4650-4521-1. OCLC\\u00a0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \\\"How Google Plans to Solve Artificial Intelligence\\\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \\\"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\\\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \\\"Content based video indexing and retrieval\\\". IEEE MultiMedia. 1 (2): 62\\u201372. doi:10.1109/93.311653. S2CID\\u00a032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 \\u2013 via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \\\"An Inductive Inference Machine\\\". IRE Convention Record. Vol.\\u00a0Section on Information Theory, part 2. pp.\\u00a056\\u201362.\\nStanford University (2023). \\\"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\\\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\u00a03784. Springer. pp.\\u00a0981\\u2013995. doi:10.1007/11573548. ISBN\\u00a0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \\\"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\\\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \\\"What Jobs Will the Robots Take?\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\u00a0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \\\"Transformers Revolutionized AI. What Will Replace Them?\\\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \\\"Computing Machinery and Intelligence\\\". Mind. 59 (236): 433\\u2013460. doi:10.1093/mind/LIX.236.433. ISSN\\u00a01460-2113. JSTOR\\u00a02251299. S2CID\\u00a014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\u00a0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, C\\u00e9dric; Ekins, Sean (7 March 2022). \\\"Dual use of artificial-intelligence-powered drug discovery\\\". Nature Machine Intelligence. 4 (3): 189\\u2013191. doi:10.1038/s42256-022-00465-9. PMC\\u00a09544280. PMID\\u00a036211133. S2CID\\u00a0247302391.\\nValance, Christ (30 May 2023). \\\"Artificial intelligence could lead to extinction, experts warn\\\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \\\"Amazon reportedly employs thousands of people to listen to your Alexa conversations\\\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \\\"A Complete Guide to SHAP \\u2013 SHAPley Additive exPlanations for Practitioners\\\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \\\"OpenAI has published the text-generating AI it said was too dangerous to share\\\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \\\"The scary truth about AI copyright is nobody knows what will happen next\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \\\"AI is entering an era of corporate control\\\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \\\"The Coming Technological Singularity: How to Survive in the Post-Human Era\\\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \\\"Chatbots Have Entered the Uncanny Valley\\\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \\\"Reasoning\\\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \\\"Autonomous mental development by robots and animals\\\" (PDF). Science. 291 (5504): 599\\u2013600. doi:10.1126/science.291.5504.599. PMID\\u00a011229402. S2CID\\u00a054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 \\u2013 via msu.edu.\\n\\\"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\\\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \\\"Humans may be more likely to believe disinformation generated by AI\\\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \\\"Artificial Intelligence and the Public Sector \\u2013 Applications and Challenges\\\". International Journal of Public Administration. 42 (7): 596\\u2013615. doi:10.1080/01900692.2018.1498103. ISSN\\u00a00190-0692. S2CID\\u00a0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \\\"ChatGPT Is Already Obsolete\\\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \\\"Artificial Intelligence as a Positive and Negative Factor in Global Risk\\\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \\\"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\\\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\u00a0978-0-1560-1391-8. OCLC\\u00a046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \\\"Ready for Robots? How to Think about the Future of AI\\\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\u00a0192\\u2013198. George Dyson, historian of computing, writes (in what might be called \\\"Dyson's Law\\\") that \\\"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\\\" (p.\\u00a0197.) Computer scientist Alex Pentland writes: \\\"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\\\" (p.\\u00a0198.)\\nEvans, Woody (2015). \\\"Posthuman Rights: Dimensions of Transhuman Worlds\\\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\u00a0147612763.\\nFrank, Michael (22 September 2023). \\\"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\\\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs \\u2013 and their affiliates in allied countries \\u2013 appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \\\"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right \\u2014 without destroying itself in the process?\\\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \\\"The Fate of Free Will\\\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27\\u201328, 30. \\\"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences \\u2013 disembodied, strangers to blood, sweat, and tears \\u2013 have no occasion for that.\\\" (p. 30.)\\nHalpern, Sue, \\\"The Coming Tech Autocracy\\\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44\\u201346. \\\"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\\\" (p. 46.)\\nHenderson, Mark (24 April 2007). \\\"Human rights for robots? We're getting carried away\\\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \\\"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\\\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\u00a081\\u201382. \\\"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\\\" (p.\\u00a082.)\\nImmerwahr, Daniel, \\\"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\\\", The New Yorker, 20 November 2023, pp.\\u00a054\\u201359. \\\"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\\\" (p.\\u00a059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\u00a0al. (26 August 2021). \\\"Highly accurate protein structure prediction with AlphaFold\\\". Nature. 596 (7873): 583\\u2013589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\u00a08371605. PMID\\u00a034265844. S2CID\\u00a0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \\\"Deep learning\\\". Nature. 521 (7553): 436\\u2013444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\u00a026017442. S2CID\\u00a03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \\\"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\\\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80\\u201381.\\nLepore, Jill, \\\"The Chit-Chatbot: Is talking with a machine a conversation?\\\", The New Yorker, 7 October 2024, pp. 12\\u201316.\\nMaschafilm (2010). \\\"Content: Plug & Pray Film \\u2013 Artificial Intelligence \\u2013 Robots\\\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \\\"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\\\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\u00a042\\u201345.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\u00a0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\u00a0al. (26 February 2015). \\\"Human-level control through deep reinforcement learning\\\". Nature. 518 (7540): 529\\u2013533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\u00a025719670. S2CID\\u00a0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \\\"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\\\", The New Yorker, 20 November 2023, pp.\\u00a020\\u201326.\\n\\\"Robots could demand legal rights\\\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \\\"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\\\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\u00a07. \\\"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\\\"\\nScharre, Paul, \\\"Killer Apps: The Real Dangers of an AI Arms Race\\\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\u00a0135\\u2013144. \\\"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\\\" (p.\\u00a0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \\\"Deep Learning\\\". KI \\u2013 K\\u00fcnstliche Intelligenz. 26 (4): 357\\u2013363. doi:10.1007/s13218-012-0198-z. ISSN\\u00a01610-1987. S2CID\\u00a0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \\\"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\\\" (PDF). Journal of Informetrics. 5 (4): 629\\u2013649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\u00a0al. (28 January 2016). \\\"Mastering the game of Go with deep neural networks and tree search\\\". Nature. 529 (7587): 484\\u2013489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\u00a026819042. S2CID\\u00a0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \\\"Attention is all you need.\\\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \\\"Horny Robot Baby Voice: James Vincent on AI chatbots\\\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29\\u201332. \\\"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\\\" (p. 29.)\\nWhite Paper: On Artificial Intelligence \\u2013 A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia's sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\\\"Artificial Intelligence\\\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\u00a0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia\\u00ae is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view\",\n", - " \"description\": \"\",\n", - " \"publishedTime\": \"2001-10-08T16:55:49Z\"\n", - " },\n", - " \"status\": 20000\n", - " },\n", - " \"content\": \"eyJjb2RlIjoyMDAsInN0YXR1cyI6MjAwMDAsImRhdGEiOnsiaW1hZ2VzIjp7fSwibGlua3MiOnsiMSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0xIiwiMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0yIiwiMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0zIiwiNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00IiwiMTUiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvc29mdHdhcmVzdHVkaWVzbDAwZnVsbF8wMDcvcGFnZS9uMjkiLCI1MTU5MjUiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjUxNTkyNSIsIjY3NzIxOCI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6Njc3MjE4IiwiMTQ1MjczNCI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTQ1MjczNCIsIjE1MTM2ODEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxNTEzNjgxIiwiMTgwOTQ1OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTgwOTQ1OSIsIjE5NzkzMTUiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE5NzkzMTUiLCIyMTYxNTkyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMTYxNTkyIiwiMjI1MTI5OSI6Imh0dHBzOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMjI1MTI5OSIsIjMwNDQ0NDgiOiJodHRwczovL3BhcGVycy5zc3JuLmNvbS9zb2wzL3BhcGVycy5jZm0/YWJzdHJhY3RfaWQ9MzA0NDQ0OCIsIjMwNzQwOTYiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjMwNzQwOTYiLCI0MjQwNjQ0IjoiaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS80MjQwNjQ0IiwiNjM2MjIxNyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6NjM2MjIxNyIsIjY2MTYxODEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM2NjE2MTgxIiwiNzM3Mzk1OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6NzM3Mzk1OSIsIjgzNzE2MDUiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM4MzcxNjA1IiwiODUxMDAxNiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6ODUxMDAxNiIsIjg1NDUyMDEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM4NTQ1MjAxIiwiOTU0NDI4MCI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzk1NDQyODAiLCIxMDE2ODc3MyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTAxNjg3NzMiLCIxMDc2NzAxMSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTA3NjcwMTEiLCIxMTA0MTQ1OSI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzExMDQxNDU5IiwiMTEwNjI5MDMiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxMTA2MjkwMyIsIjExMjI5NDAyIjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xMTIyOTQwMiIsIjExNzE1NTA5IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxMTcxNTUwOSIsIjE0NjM2NzgzIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDYzNjc4MyIsIjE0OTg3NjU2IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDk4NzY1NiIsIjE2NjIyMTYwIjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xNjYyMjE2MCIsIjE3ODM1NDU3IjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xNzgzNTQ1NyIsIjIwMTkwNDc0IjoiaHR0cHM6Ly9sY2NuLmxvYy5nb3YvMjAxOTA0NzQiLCIyNTQ2MjYzNyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjU0NjI2MzciLCIyNTcxOTY3MCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjU3MTk2NzAiLCIyNjAxNzQ0MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjYwMTc0NDIiLCIyNjE4NTI0MyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjYxODUyNDMiLCIyNjgxOTA0MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjY4MTkwNDIiLCIzMTI5NjY1MCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzEyOTY2NTAiLCIzMTM2MzUxMyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzEzNjM1MTMiLCIzMjIzNjc5NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzIyMzY3OTQiLCIzMjQzNzcxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzI0Mzc3MTMiLCIzMjcxMDkxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzI3MTA5MTMiLCIzNDI2NTg0NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzQyNjU4NDQiLCIzNDc4NjMxNyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzQ3ODYzMTciLCIzNTE0MDM4NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzUxNDAzODQiLCIzNjIxMTEzMyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzYyMTExMzMiLCIzNjU2NTI2NyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzY1NjUyNjciLCIzNzI3Mjk0OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzcyNzI5NDkiLCIzODYzMjQ5MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg2MzI0OTIiLCIzODg3NTU4NyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg4NzU1ODciLCIzODg3NTkwOCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg4NzU5MDgiLCIzOTI1NDYyOCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzkyNTQ2MjgiLCI0Njg5MDY4MiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzQ2ODkwNjgyIiwiNTQxMzE3OTciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU0MTMxNzk3IiwiNTUzMDM3MjEiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU1MzAzNzIxIiwiNTkyOTg1MDIiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU5Mjk4NTAyIiwiMTQzNDUyOTU3IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDM0NTI5NTciLCIxNDc2MTI3NjMiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE0NzYxMjc2MyIsIjE1ODQzMzczNiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTU4NDMzNzM2IiwiMTU4ODI5NjAyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNTg4Mjk2MDIiLCIxNjY3NDI5MjciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE2Njc0MjkyNyIsIjE5ODc3NTcxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTk4Nzc1NzEzIiwiMjA1MjQyNzQwIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMDUyNDI3NDAiLCIyMDU0MzMwNDEiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIwNTQzMzA0MSIsIjIwNjQ1MTk4NiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjA2NDUxOTg2IiwiMjA2NDg1OTQzIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMDY0ODU5NDMiLCIyMTQ3NjY4MDAiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIxNDc2NjgwMCIsIjIxOTMzNjQzOSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjE5MzM2NDM5IiwiMjIwNTIzNTYyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMjA1MjM1NjIiLCIyMzE4Njc2NjUiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvb2NsYy8yMzE4Njc2NjUiLCIyMzU5NTk4NjciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIzNTk1OTg2NyIsIjI0NzMwMjM5MSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjQ3MzAyMzkxIiwiMjU2NjgxNDM5IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyNTY2ODE0MzkiLCIyNTk2MTQxMjQiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjI1OTYxNDEyNCIsIjI2NDExMzg4MyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjY0MTEzODgzIiwiMTAzOTQ4MDA4NSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzEwMzk0ODAwODUiLCIxMDgzNjk0MzIyIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL29jbGMvMTA4MzY5NDMyMiIsIjExMTA3Mjc4MDgiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvb2NsYy8xMTEwNzI3ODA4IiwiMTIzMzI2Njc1MyI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzEyMzMyNjY3NTMiLCIyMDE5NjY4MTQzIjoiaHR0cHM6Ly9sY2NuLmxvYy5nb3YvMjAxOTY2ODE0MyIsIkp1bXAgdG8gY29udGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2JvZHlDb250ZW50IiwiTWFpbiBwYWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFpbl9QYWdlIiwiQ29udGVudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6Q29udGVudHMiLCJDdXJyZW50IGV2ZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvcnRhbDpDdXJyZW50X2V2ZW50cyIsIlJhbmRvbSBhcnRpY2xlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpSYW5kb20iLCJBYm91dCBXaWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6QWJvdXQiLCJDb250YWN0IHVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkNvbnRhY3RfdXMiLCJIZWxwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVscDpDb250ZW50cyIsIkxlYXJuIHRvIGVkaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWxwOkludHJvZHVjdGlvbiIsIkNvbW11bml0eSBwb3J0YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6Q29tbXVuaXR5X3BvcnRhbCIsIlJlY2VudCBjaGFuZ2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpSZWNlbnRDaGFuZ2VzIiwiVXBsb2FkIGZpbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6RmlsZV9VcGxvYWRfV2l6YXJkIiwiIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2U/YWN0aW9uPWVkaXQiLCJTZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOlNlYXJjaCIsIkRvbmF0ZSI6Imh0dHBzOi8vZG9uYXRlLndpa2ltZWRpYS5vcmcvP3dtZl9zb3VyY2U9ZG9uYXRlJndtZl9tZWRpdW09c2lkZWJhciZ3bWZfY2FtcGFpZ249ZW4ud2lraXBlZGlhLm9yZyZ1c2VsYW5nPWVuIiwiQ3JlYXRlIGFjY291bnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpDcmVhdGVBY2NvdW50JnJldHVybnRvPUFydGlmaWNpYWwraW50ZWxsaWdlbmNlIiwiTG9nIGluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPVNwZWNpYWw6VXNlckxvZ2luJnJldHVybnRvPUFydGlmaWNpYWwraW50ZWxsaWdlbmNlIiwibGVhcm4gbW9yZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlbHA6SW50cm9kdWN0aW9uIiwiQ29udHJpYnV0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlDb250cmlidXRpb25zIiwiVGFsayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhbGs6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJQaG90b2dyYXBoIHlvdXIgbG9jYWwgY3VsdHVyZSwgaGVscCBXaWtpcGVkaWEgYW5kIHdpbiEiOiJodHRwczovL2NvbW1vbnMud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Db21tb25zOldpa2lfTG92ZXNfRm9sa2xvcmVfMjAyNSIsIihUb3ApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjIiwiMSBHb2FscyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dvYWxzIiwiMS4xIFJlYXNvbmluZyBhbmQgcHJvYmxlbS1zb2x2aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUmVhc29uaW5nX2FuZF9wcm9ibGVtLXNvbHZpbmciLCIxLjIgS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjS25vd2xlZGdlX3JlcHJlc2VudGF0aW9uIiwiMS4zIFBsYW5uaW5nIGFuZCBkZWNpc2lvbi1tYWtpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQbGFubmluZ19hbmRfZGVjaXNpb24tbWFraW5nIiwiMS40IExlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTGVhcm5pbmciLCIxLjUgTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiMS42IFBlcmNlcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQZXJjZXB0aW9uIiwiMS43IFNvY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTb2NpYWxfaW50ZWxsaWdlbmNlIiwiMS44IEdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCIyIFRlY2huaXF1ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNUZWNobmlxdWVzIiwiMi4xIFNlYXJjaCBhbmQgb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2VhcmNoX2FuZF9vcHRpbWl6YXRpb24iLCIyLjEuMSBTdGF0ZSBzcGFjZSBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTdGF0ZV9zcGFjZV9zZWFyY2giLCIyLjEuMiBMb2NhbCBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNMb2NhbF9zZWFyY2giLCIyLjIgTG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNMb2dpYyIsIjIuMyBQcm9iYWJpbGlzdGljIG1ldGhvZHMgZm9yIHVuY2VydGFpbiByZWFzb25pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQcm9iYWJpbGlzdGljX21ldGhvZHNfZm9yX3VuY2VydGFpbl9yZWFzb25pbmciLCIyLjQgQ2xhc3NpZmllcnMgYW5kIHN0YXRpc3RpY2FsIGxlYXJuaW5nIG1ldGhvZHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDbGFzc2lmaWVyc19hbmRfc3RhdGlzdGljYWxfbGVhcm5pbmdfbWV0aG9kcyIsIjIuNSBBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmtzIiwiMi42IERlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNEZWVwX2xlYXJuaW5nIiwiMi43IEdQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dQVCIsIjIuOCBIYXJkd2FyZSBhbmQgc29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNIYXJkd2FyZV9hbmRfc29mdHdhcmUiLCIzIEFwcGxpY2F0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FwcGxpY2F0aW9ucyIsIjMuMSBIZWFsdGggYW5kIG1lZGljaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjSGVhbHRoX2FuZF9tZWRpY2luZSIsIjMuMiBHYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dhbWVzIiwiMy4zIE1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTWF0aGVtYXRpY3MiLCIzLjQgRmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0ZpbmFuY2UiLCIzLjUgTWlsaXRhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNNaWxpdGFyeSIsIjMuNiBHZW5lcmF0aXZlIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR2VuZXJhdGl2ZV9BSSIsIjMuNyBBZ2VudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNBZ2VudHMiLCIzLjggU2V4dWFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2V4dWFsaXR5IiwiMy45IE90aGVyIGluZHVzdHJ5LXNwZWNpZmljIHRhc2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjT3RoZXJfaW5kdXN0cnktc3BlY2lmaWNfdGFza3MiLCI0IEV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0V0aGljcyIsIjQuMSBSaXNrcyBhbmQgaGFybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1Jpc2tzX2FuZF9oYXJtIiwiNC4xLjEgUHJpdmFjeSBhbmQgY29weXJpZ2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUHJpdmFjeV9hbmRfY29weXJpZ2h0IiwiNC4xLjIgRG9taW5hbmNlIGJ5IHRlY2ggZ2lhbnRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRG9taW5hbmNlX2J5X3RlY2hfZ2lhbnRzIiwiNC4xLjMgUG93ZXIgbmVlZHMgYW5kIGVudmlyb25tZW50YWwgaW1wYWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1Bvd2VyX25lZWRzX2FuZF9lbnZpcm9ubWVudGFsX2ltcGFjdHMiLCI0LjEuNCBNaXNpbmZvcm1hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI01pc2luZm9ybWF0aW9uIiwiNC4xLjUgQWxnb3JpdGhtaWMgYmlhcyBhbmQgZmFpcm5lc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNBbGdvcml0aG1pY19iaWFzX2FuZF9mYWlybmVzcyIsIjQuMS42IExhY2sgb2YgdHJhbnNwYXJlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTGFja19vZl90cmFuc3BhcmVuY3kiLCI0LjEuNyBCYWQgYWN0b3JzIGFuZCB3ZWFwb25pemVkIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQmFkX2FjdG9yc19hbmRfd2VhcG9uaXplZF9BSSIsIjQuMS44IFRlY2hub2xvZ2ljYWwgdW5lbXBsb3ltZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjVGVjaG5vbG9naWNhbF91bmVtcGxveW1lbnQiLCI0LjEuOSBFeGlzdGVudGlhbCByaXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRXhpc3RlbnRpYWxfcmlzayIsIjQuMiBFdGhpY2FsIG1hY2hpbmVzIGFuZCBhbGlnbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNFdGhpY2FsX21hY2hpbmVzX2FuZF9hbGlnbm1lbnQiLCI0LjMgT3BlbiBzb3VyY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNPcGVuX3NvdXJjZSIsIjQuNCBGcmFtZXdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRnJhbWV3b3JrcyIsIjQuNSBSZWd1bGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUmVndWxhdGlvbiIsIjUgSGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0hpc3RvcnkiLCI2IFBoaWxvc29waHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQaGlsb3NvcGh5IiwiNi4xIERlZmluaW5nIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRGVmaW5pbmdfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCI2LjIgRXZhbHVhdGluZyBhcHByb2FjaGVzIHRvIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRXZhbHVhdGluZ19hcHByb2FjaGVzX3RvX0FJIiwiNi4yLjEgU3ltYm9saWMgQUkgYW5kIGl0cyBsaW1pdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTeW1ib2xpY19BSV9hbmRfaXRzX2xpbWl0cyIsIjYuMi4yIE5lYXQgdnMuIHNjcnVmZnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNOZWF0X3ZzLl9zY3J1ZmZ5IiwiNi4yLjMgU29mdCB2cy4gaGFyZCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTb2Z0X3ZzLl9oYXJkX2NvbXB1dGluZyIsIjYuMi40IE5hcnJvdyB2cy4gZ2VuZXJhbCBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI05hcnJvd192cy5fZ2VuZXJhbF9BSSIsIjYuMyBNYWNoaW5lIGNvbnNjaW91c25lc3MsIHNlbnRpZW5jZSwgYW5kIG1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNNYWNoaW5lX2NvbnNjaW91c25lc3MsX3NlbnRpZW5jZSxfYW5kX21pbmQiLCI2LjMuMSBDb25zY2lvdXNuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ29uc2Npb3VzbmVzcyIsIjYuMy4yIENvbXB1dGF0aW9uYWxpc20gYW5kIGZ1bmN0aW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDb21wdXRhdGlvbmFsaXNtX2FuZF9mdW5jdGlvbmFsaXNtIiwiNi4zLjMgQUkgd2VsZmFyZSBhbmQgcmlnaHRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQUlfd2VsZmFyZV9hbmRfcmlnaHRzIiwiNyBGdXR1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNGdXR1cmUiLCI3LjEgU3VwZXJpbnRlbGxpZ2VuY2UgYW5kIHRoZSBzaW5ndWxhcml0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1N1cGVyaW50ZWxsaWdlbmNlX2FuZF90aGVfc2luZ3VsYXJpdHkiLCI3LjIgVHJhbnNodW1hbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1RyYW5zaHVtYW5pc20iLCI3LjMgRGVjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNEZWNvbXB1dGluZyIsIjggSW4gZmljdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0luX2ZpY3Rpb24iLCI5IFNlZSBhbHNvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2VlX2Fsc28iLCIxMCBFeHBsYW5hdG9yeSBub3RlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0V4cGxhbmF0b3J5X25vdGVzIiwiMTEgUmVmZXJlbmNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1JlZmVyZW5jZXMiLCIxMS4xIEFJIHRleHRib29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FJX3RleHRib29rcyIsIjExLjIgSGlzdG9yeSBvZiBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0hpc3Rvcnlfb2ZfQUkiLCIxMS4zIE90aGVyIHNvdXJjZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNPdGhlcl9zb3VyY2VzIiwiMTIgRnVydGhlciByZWFkaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRnVydGhlcl9yZWFkaW5nIiwiMTMgRXh0ZXJuYWwgbGlua3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNFeHRlcm5hbF9saW5rcyIsIkFmcmlrYWFucyI6Imh0dHBzOi8vYWYud2lraXBlZGlhLm9yZy93aWtpL0t1bnNtYXRpZ2VfaW50ZWxsaWdlbnNpZSIsIkFsZW1hbm5pc2NoIjoiaHR0cHM6Ly9hbHMud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWNoZV9JbnRlbGxpZ2VueiIsIuGKoOGIm+GIreGKmyI6Imh0dHBzOi8vYW0ud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4OCVCMCVFMSU4QiU4RF8lRTElODglQTAlRTElODglQUIlRTElODglQkRfJUUxJThCJUE4JUUxJTg4JTlCJUUxJTg4JUIwJUUxJTg5JUE1XyVFMSU4OSVCRCVFMSU4OCU4RSVFMSU4OSVCMyIsItin2YTYudix2KjZitipIjoiaHR0cHM6Ly9hci53aWtpcGVkaWEub3JnL3dpa2kvJUQ4JUIwJUQ5JTgzJUQ4JUE3JUQ4JUExXyVEOCVBNyVEOCVCNSVEOCVCNyVEOSU4NiVEOCVBNyVEOCVCOSVEOSU4QSIsIkFyYWdvbsOpcyI6Imh0dHBzOi8vYW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWNoZW5jaWFfYXJ0aWZpY2lhbCIsItSx1oDVpdaC1bTVv9Wh1bDVodW11aXWgNWn1bYiOiJodHRwczovL2h5dy53aWtpcGVkaWEub3JnL3dpa2kvJUQ0JUIxJUQ2JTgwJUQ1JUIwJUQ1JUE1JUQ1JUJEJUQ1JUJGJUQ1JUExJUQ1JUFGJUQ1JUExJUQ1JUI2XyVENCVCMiVENSVBMSVENSVCNiVENSVBMSVENSVBRiVENSVBMSVENSVCNiVENSVCOCVENiU4MiVENSVBOSVENSVBQiVENiU4MiVENSVCNiIsIuCmheCmuOCmruCngOCmr+CmvOCmviI6Imh0dHBzOi8vYXMud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNiU5NSVFMCVBNyU4MyVFMCVBNiVBNCVFMCVBNyU4RCVFMCVBNyVCMCVFMCVBNiVCRiVFMCVBNiVBRV8lRTAlQTYlQUMlRTAlQTclODElRTAlQTYlQTYlRTAlQTclOEQlRTAlQTYlQTclRTAlQTYlQkYlRTAlQTYlQUUlRTAlQTYlQTQlRTAlQTclOEQlRTAlQTYlQTQlRTAlQTYlQkUiLCJBc3R1cmlhbnUiOiJodHRwczovL2FzdC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpeGVuY2lhX2FydGlmaWNpYWwiLCJBdmHDsWUn4bq9IjoiaHR0cHM6Ly9nbi53aWtpcGVkaWEub3JnL3dpa2kvQXZhX2phcG9weXJlX2FyYW5kdSIsIkF6yZlyYmF5Y2FuY2EiOiJodHRwczovL2F6Lndpa2lwZWRpYS5vcmcvd2lraS9TJUMzJUJDbmlfaW50ZWxsZWt0Iiwi2Krbhtix2qnYrNmHIjoiaHR0cHM6Ly9hemIud2lraXBlZGlhLm9yZy93aWtpLyVEOSU4NSVEOCVCNSVEOSU4NiVEOSU4OCVEOCVCOSVEQiU4Q18lRDglQjAlREElQTklRDglQTciLCLgpqzgpr7gpoLgprLgpr4iOiJodHRwczovL2JuLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTYlOTUlRTAlQTclODMlRTAlQTYlQTQlRTAlQTclOEQlRTAlQTYlQjAlRTAlQTYlQkYlRTAlQTYlQUVfJUUwJUE2JUFDJUUwJUE3JTgxJUUwJUE2JUE2JUUwJUE3JThEJUUwJUE2JUE3JUUwJUE2JUJGJUUwJUE2JUFFJUUwJUE2JUE0JUUwJUE3JThEJUUwJUE2JUE0JUUwJUE2JUJFIiwi6Zap5Y2X6KqeIC8gQsOibi1sw6JtLWfDuiI6Imh0dHBzOi8vemgtbWluLW5hbi53aWtpcGVkaWEub3JnL3dpa2kvSiVDMyVBRW4ta2FuZ190JUMzJUFDLWwlQzMlQUFuZyIsItCR0LDRiNKh0L7RgNGC0YHQsCI6Imh0dHBzOi8vYmEud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBRiVEMiVCQiVEMCVCMCVEMCVCQiVEMCVCQyVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLQkdC10LvQsNGA0YPRgdC60LDRjyI6Imh0dHBzOi8vYmUud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBOCVEMSU4MiVEMSU4MyVEMSU4NyVEMCVCRCVEMSU4Ql8lRDElOTYlRDAlQkQlRDElODIlRDElOEQlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLQkdC10LvQsNGA0YPRgdC60LDRjyAo0YLQsNGA0LDRiNC60LXQstGW0YbQsCkiOiJodHRwczovL2JlLXRhcmFzay53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUE4JUQxJTgyJUQxJTgzJUQxJTg3JUQwJUJEJUQxJThCXyVEMSU5NiVEMCVCRCVEMSU4MiVEMSU4RCVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIuCkreCli+CknOCkquClgeCksOClgCI6Imh0dHBzOi8vYmgud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU4NiVFMCVBNCVCMCVFMCVBNSU4RCVFMCVBNCU5RiVFMCVBNCVCRiVFMCVBNCVBQiVFMCVBNCVCRiVFMCVBNCVCNiVFMCVBNCVCRiVFMCVBNCVBRiVFMCVBNCVCMl8lRTAlQTQlODclRTAlQTQlODIlRTAlQTQlOUYlRTAlQTUlODclRTAlQTQlQjIlRTAlQTQlQkYlRTAlQTQlOUMlRTAlQTUlODclRTAlQTQlODIlRTAlQTQlQjgiLCJCaWtvbCBDZW50cmFsIjoiaHR0cHM6Ly9iY2wud2lraXBlZGlhLm9yZy93aWtpL0FydGlwaXN5YWxfbmFfaW50ZWxpaGVuc3lhIiwi0JHRitC70LPQsNGA0YHQutC4IjoiaHR0cHM6Ly9iZy53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk4JUQwJUI3JUQwJUJBJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI1JUQwJUJEXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIkJvYXJpc2NoIjoiaHR0cHM6Ly9iYXIud2lraXBlZGlhLm9yZy93aWtpL0tpbnNjaHRsaWNoYV9JbnRlbGxpZ2VueiIsIuC9luC9vOC9keC8i+C9oeC9suC9giI6Imh0dHBzOi8vYm8ud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCRCU5OCVFMCVCRCVCMiVFMCVCQyU4QiVFMCVCRCU5NiVFMCVCRCU5RiVFMCVCRCVCQyVFMCVCRCVBNiVFMCVCQyU4QiVFMCVCRCVBMiVFMCVCRCVCMiVFMCVCRCU4MiVFMCVCQyU4QiVFMCVCRCU5MyVFMCVCRCVCNCVFMCVCRCVBNiVFMCVCQyU4RCIsIkJvc2Fuc2tpIjoiaHR0cHM6Ly9icy53aWtpcGVkaWEub3JnL3dpa2kvVW1qZXRuYV9pbnRlbGlnZW5jaWphIiwiQnJlemhvbmVnIjoiaHR0cHM6Ly9ici53aWtpcGVkaWEub3JnL3dpa2kvTmFvdWVnZXpoX2FydGlmaXNpZWwiLCLQkdGD0YDRj9Cw0LQiOiJodHRwczovL2J4ci53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUE1JUQxJThEJUQwJUJDJUQxJThEJUQwJUJCXyVEMCVCRSVEMSU4RSVEMSU4MyVEMCVCRCIsIkNhdGFsw6AiOiJodHRwczovL2NhLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbCVDMiVCN2xpZyVDMyVBOG5jaWFfYXJ0aWZpY2lhbCIsItCn05HQstCw0YjQu9CwIjoiaHR0cHM6Ly9jdi53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUFFJUQxJTgwJUQwJUI4JUQwJUJCJUQwJUJCZV8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCJDZWJ1YW5vIjoiaHR0cHM6Ly9jZWIud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWhlbnNpeWFfYXJ0aXBpc3lhbCIsIsSMZcWhdGluYSI6Imh0dHBzOi8vY3Mud2lraXBlZGlhLm9yZy93aWtpL1VtJUM0JTlCbCVDMyVBMV9pbnRlbGlnZW5jZSIsIkN5bXJhZWciOiJodHRwczovL2N5Lndpa2lwZWRpYS5vcmcvd2lraS9EZWFsbHVzcnd5ZGRfYXJ0aWZmaXNpYWwiLCJEYW5zayI6Imh0dHBzOi8vZGEud2lraXBlZGlhLm9yZy93aWtpL0t1bnN0aWdfaW50ZWxsaWdlbnMiLCLYp9mE2K/Yp9ix2KzYqSI6Imh0dHBzOi8vYXJ5Lndpa2lwZWRpYS5vcmcvd2lraS8lRDglQUYlRDklODMlRDglQTdfJUQ4JUI1JUQ4JUI3JUQ5JThBJUQ5JTg2JUQ4JUE3JUQ4JUI5JUQ5JThBIiwiRGV1dHNjaCI6Imh0dHBzOi8vZGUud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWNoZV9JbnRlbGxpZ2VueiIsIkVlc3RpIjoiaHR0cHM6Ly9ldC53aWtpcGVkaWEub3JnL3dpa2kvVGVoaXNpbnRlbGxla3QiLCLOlc67zrvOt869zrnOus6sIjoiaHR0cHM6Ly9lbC53aWtpcGVkaWEub3JnL3dpa2kvJUNFJUE0JUNFJUI1JUNGJTg3JUNFJUJEJUNFJUI3JUNGJTg0JUNFJUFFXyVDRSVCRCVDRSVCRiVDRSVCNyVDRSVCQyVDRSVCRiVDRiU4MyVDRiU4RCVDRSVCRCVDRSVCNyIsIkVzcGHDsW9sIjoiaHR0cHM6Ly9lcy53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2VuY2lhX2FydGlmaWNpYWwiLCJFc3BlcmFudG8iOiJodHRwczovL2VvLndpa2lwZWRpYS5vcmcvd2lraS9BcnRlZmFyaXRhX2ludGVsZWt0byIsIkVzdHJlbWXDsXUiOiJodHRwczovL2V4dC53aWtpcGVkaWEub3JnL3dpa2kvRW50ZWxpZ2VuY2lhX2FydGlmaWNpYWwiLCJFdXNrYXJhIjoiaHR0cHM6Ly9ldS53aWtpcGVkaWEub3JnL3dpa2kvQWRpbWVuX2FydGlmaXppYWwiLCLZgdin2LHYs9uMIjoiaHR0cHM6Ly9mYS53aWtpcGVkaWEub3JnL3dpa2kvJUQ5JTg3JUQ5JTg4JUQ4JUI0XyVEOSU4NSVEOCVCNSVEOSU4NiVEOSU4OCVEOCVCOSVEQiU4QyIsIkZpamkgSGluZGkiOiJodHRwczovL2hpZi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJGcmFuw6dhaXMiOiJodHRwczovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VuY2VfYXJ0aWZpY2llbGxlIiwiRnVybGFuIjoiaHR0cHM6Ly9mdXIud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWdqZW5jZV9hcnRpZmljaSVDMyVBMmwiLCJHYWVpbGdlIjoiaHR0cHM6Ly9nYS53aWtpcGVkaWEub3JnL3dpa2kvSW50bGVhY2h0X3NoYW9yZ2EiLCJHYWVsZyI6Imh0dHBzOi8vZ3Yud2lraXBlZGlhLm9yZy93aWtpL0Zhci1pbiVDMyVBN2h5bmFnaHQiLCJHw6BpZGhsaWciOiJodHRwczovL2dkLndpa2lwZWRpYS5vcmcvd2lraS9UdWlnc2VfaW5udGVhbHRhIiwiR2FsZWdvIjoiaHR0cHM6Ly9nbC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpeGVuY2lhX2FydGlmaWNpYWwiLCLotJvoqp4iOiJodHRwczovL2dhbi53aWtpcGVkaWEub3JnL3dpa2kvJUU0JUJBJUJBJUU1JUI3JUE1JUU2JTk5JUJBJUU4JTgzJUJEIiwiR8Spa8WpecWpIjoiaHR0cHM6Ly9raS53aWtpcGVkaWEub3JnL3dpa2kvJUM1JUE4JUM1JUE5ZyVDNCVBOV93YV9LYW55b25kZSIsIu2VnOq1reyWtCI6Imh0dHBzOi8va28ud2lraXBlZGlhLm9yZy93aWtpLyVFQyU5RCVCOCVFQSVCMyVCNSVFQyVBNyU4MCVFQiU4QSVBNSIsIkhhdXNhIjoiaHR0cHM6Ly9oYS53aWtpcGVkaWEub3JnL3dpa2kvS2lya2lyYXJfQmFzaXJhIiwi1YDVodW11aXWgNWl1bYiOiJodHRwczovL2h5Lndpa2lwZWRpYS5vcmcvd2lraS8lRDQlQjElRDYlODAlRDUlQjAlRDUlQTUlRDUlQkQlRDUlQkYlRDUlQTElRDUlQUYlRDUlQTElRDUlQjZfJUQ1JUEyJUQ1JUExJUQ1JUI2JUQ1JUExJUQ1JUFGJUQ1JUExJUQ1JUI2JUQ1JUI4JUQ2JTgyJUQ1JUE5JUQ1JUI1JUQ1JUI4JUQ2JTgyJUQ1JUI2Iiwi4KS54KS/4KSo4KWN4KSm4KWAIjoiaHR0cHM6Ly9oaS53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUE0JTk1JUUwJUE1JTgzJUUwJUE0JUE0JUUwJUE1JThEJUUwJUE0JUIwJUUwJUE0JUJGJUUwJUE0JUFFXyVFMCVBNCVBQyVFMCVBNSU4MSVFMCVBNCVBNiVFMCVBNSU4RCVFMCVBNCVBNyVFMCVBNCVCRiIsIkhydmF0c2tpIjoiaHR0cHM6Ly9oci53aWtpcGVkaWEub3JnL3dpa2kvVW1qZXRuYV9pbnRlbGlnZW5jaWphIiwiSWRvIjoiaHR0cHM6Ly9pby53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2FsX2ludGVsaWdlbnRlc28iLCJJZ2JvIjoiaHR0cHM6Ly9pZy53aWtpcGVkaWEub3JnL3dpa2kvJUUxJUJCJThDZyVFMSVCQiVBNWclRTElQkIlQTVfaXNpIiwiSWxva2FubyI6Imh0dHBzOi8vaWxvLndpa2lwZWRpYS5vcmcvd2lraS9QYXJib19hX3NhcmlyaXQiLCJCYWhhc2EgSW5kb25lc2lhIjoiaHR0cHM6Ly9pZC53aWtpcGVkaWEub3JnL3dpa2kvQWthbF9pbWl0YXNpIiwiSW50ZXJsaW5ndWEiOiJodHRwczovL2lhLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VudGlhX2FydGlmaWNpYWwiLCJJbnRlcmxpbmd1ZSI6Imh0dHBzOi8vaWUud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWdlbnRpZV9hcnRpZmljaWFsIiwiSXNpWnVsdSI6Imh0dHBzOi8venUud2lraXBlZGlhLm9yZy93aWtpL1VIbGFrYWhsaXNvbWJ1bHUiLCLDjXNsZW5za2EiOiJodHRwczovL2lzLndpa2lwZWRpYS5vcmcvd2lraS9HZXJ2aWdyZWluZCIsIkl0YWxpYW5vIjoiaHR0cHM6Ly9pdC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnphX2FydGlmaWNpYWxlIiwi16LXkdeo15nXqiI6Imh0dHBzOi8vaGUud2lraXBlZGlhLm9yZy93aWtpLyVENyU5MSVENyU5OSVENyVBMCVENyU5NF8lRDclOUUlRDclOUMlRDclOTAlRDclOUIlRDclOTUlRDclQUElRDclOTklRDclQUEiLCJKYXdhIjoiaHR0cHM6Ly9qdi53aWtpcGVkaWEub3JnL3dpa2kvS2FjZXJkaGFzYW5fZ2F3JUMzJUE5eWFuIiwi4LKV4LKo4LON4LKo4LKhIjoiaHR0cHM6Ly9rbi53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUIyJTk1JUUwJUIzJTgzJUUwJUIyJUE0JUUwJUIyJTk1XyVFMCVCMiVBQyVFMCVCMyU4MSVFMCVCMiVBNiVFMCVCMyU4RCVFMCVCMiVBNyVFMCVCMiVCRiVFMCVCMiVBRSVFMCVCMiVBNCVFMCVCMyU4RCVFMCVCMiVBNCVFMCVCMyU4NiIsIuGDpeGDkOGDoOGDl+GDo+GDmuGDmCI6Imh0dHBzOi8va2Eud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4MyVBRSVFMSU4MyU5NCVFMSU4MyU5QSVFMSU4MyU5RCVFMSU4MyU5NSVFMSU4MyU5QyVFMSU4MyVBMyVFMSU4MyVBMCVFMSU4MyU5OF8lRTElODMlOTglRTElODMlOUMlRTElODMlQTIlRTElODMlOTQlRTElODMlOUElRTElODMlOTQlRTElODMlQTUlRTElODMlQTIlRTElODMlOTgiLCLgpJXgpYngpLbgpYHgpLAgLyDaqdmy2LTZj9ixIjoiaHR0cHM6Ly9rcy53aWtpcGVkaWEub3JnL3dpa2kvJUQ5JTg2JUQ5JTgyJUQ5JTg0JURCJThDXyVEOCVCOSVEOSU4MiVEOSU4NF9BSSIsItKa0LDQt9Cw0pvRiNCwIjoiaHR0cHM6Ly9ray53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk2JUQwJUIwJUQxJTgxJUQwJUIwJUQwJUJEJUQwJUI0JUQxJThCXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIktpc3dhaGlsaSI6Imh0dHBzOi8vc3cud2lraXBlZGlhLm9yZy93aWtpL0FraWxpX21uZW1iYSIsIktyZXnDsmwgYXlpc3llbiI6Imh0dHBzOi8vaHQud2lraXBlZGlhLm9yZy93aWtpL0VudCVDMyVBOGxpamFuc19hdGlmaXN5JUMzJUE4bCIsIktyaXnDsmwgZ3dpeWFubmVuIjoiaHR0cHM6Ly9nY3Iud2lraXBlZGlhLm9yZy93aWtpL0VudCVDMyVBOWxpamFuc19hcnRpZmlzeSVDMyVBOGwiLCLQmtGL0YDQs9GL0LfRh9CwIjoiaHR0cHM6Ly9reS53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk2JUQwJUIwJUQxJTgxJUQwJUIwJUQwJUJCJUQwJUJDJUQwJUIwXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIuC6peC6suC6pyI6Imh0dHBzOi8vbG8ud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCQSU5QiVFMCVCQSVCMSVFMCVCQSU5OSVFMCVCQSU4RCVFMCVCQSVCMiVFMCVCQSU5QiVFMCVCQSVCMCVFMCVCQSU5NCVFMCVCQSVCNCVFMCVCQSU5NCIsIkxhdGluYSI6Imh0dHBzOi8vbGEud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGVnZW50aWFfYXJ0aWZpY2lhbGlzIiwiTGF0dmllxaF1IjoiaHR0cHM6Ly9sdi53aWtpcGVkaWEub3JnL3dpa2kvTSVDNCU4MWtzbCVDNCVBQmdhaXNfaW50ZWxla3RzIiwiTMOrdHplYnVlcmdlc2NoIjoiaHR0cHM6Ly9sYi53aWtpcGVkaWEub3JnL3dpa2kvSyVDMyVBQm5zY2h0bGVjaF9JbnRlbGxpZ2VueiIsIkxpZXR1dmnFsyI6Imh0dHBzOi8vbHQud2lraXBlZGlhLm9yZy93aWtpL0RpcmJ0aW5pc19pbnRlbGVrdGFzIiwiTGlndXJlIjoiaHR0cHM6Ly9saWoud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5zYV9hcnRpZmklQzMlQTdpYWxlIiwiTGltYnVyZ3MiOiJodHRwczovL2xpLndpa2lwZWRpYS5vcmcvd2lraS9LJUMzJUIzbnNtYWVzaWdlX2ludGVsbGlnZW50aWUiLCJMYSAubG9qYmFuLiI6Imh0dHBzOi8vamJvLndpa2lwZWRpYS5vcmcvd2lraS9ydXRuaV9tZW5saSIsIkxvbWJhcmQiOiJodHRwczovL2xtby53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnphX2FydGlmaWNpYWxhIiwiTWFneWFyIjoiaHR0cHM6Ly9odS53aWtpcGVkaWEub3JnL3dpa2kvTWVzdGVycyVDMyVBOWdlc19pbnRlbGxpZ2VuY2lhIiwiTWFkaHVyw6IiOiJodHRwczovL21hZC53aWtpcGVkaWEub3JnL3dpa2kvS2VjZXJkYXNhbl9idWF0YW4iLCLQnNCw0LrQtdC00L7QvdGB0LrQuCI6Imh0dHBzOi8vbWsud2lraXBlZGlhLm9yZy93aWtpLyVEMCU5MiVEMCVCNSVEMSU4OCVEMSU4MiVEMCVCMCVEMSU4NyVEMCVCQSVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQjglRDAlQjMlRDAlQjUlRDAlQkQlRDElODYlRDAlQjglRDElOTglRDAlQjAiLCJNYWxhZ2FzeSI6Imh0dHBzOi8vbWcud2lraXBlZGlhLm9yZy93aWtpL0hhcmFuaXRhbi10c2FpbmFfdm9hdHIlMjdfb2xvbWJlbG9uYSIsIuC0ruC0suC0r+C0vuC0s+C0giI6Imh0dHBzOi8vbWwud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCNCVBOCVFMCVCNCVCRiVFMiU4MCU4RCVFMCVCNSVCQyVFMCVCNCVBRSVFMCVCNSU4RCVFMCVCNCVBRSVFMCVCNCVCRiVFMCVCNCVBNF8lRTAlQjQlQUMlRTAlQjUlODElRTAlQjQlQTYlRTAlQjUlOEQlRTAlQjQlQTclRTAlQjQlQkYiLCJNYWx0aSI6Imh0dHBzOi8vbXQud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGklQzQlQTFlbnphX2FydGlmaSVDNCU4QmphbGkiLCLgpK7gpLDgpL7gpKDgpYAiOiJodHRwczovL21yLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTQlOTUlRTAlQTUlODMlRTAlQTQlQTQlRTAlQTUlOEQlRTAlQTQlQjAlRTAlQTQlQkYlRTAlQTQlQUVfJUUwJUE0JUFDJUUwJUE1JTgxJUUwJUE0JUE2JUUwJUE1JThEJUUwJUE0JUE3JUUwJUE0JUJGJUUwJUE0JUFFJUUwJUE0JUE0JUUwJUE1JThEJUUwJUE0JUE0JUUwJUE0JUJFIiwi4YOb4YOQ4YOg4YOS4YOQ4YOa4YOj4YOg4YOYIjoiaHR0cHM6Ly94bWYud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4MyVBRSVFMSU4MyU5NCVFMSU4MyU5QSVFMSU4MyVBMyVFMSU4MyU5MCVFMSU4MyU5QyVFMSU4MyVBMyVFMSU4MyVBMCVFMSU4MyU5OF8lRTElODMlOTglRTElODMlOUMlRTElODMlQTIlRTElODMlOTQlRTElODMlOUElRTElODMlOTQlRTElODMlQTUlRTElODMlQTIlRTElODMlOTgiLCLZhdi12LHZiSI6Imh0dHBzOi8vYXJ6Lndpa2lwZWRpYS5vcmcvd2lraS8lRDglQjAlRDklODMlRDglQTclRDglQTFfJUQ4JUI1JUQ5JTg2JUQ4JUE3JUQ4JUI5JUQ5JTg5IiwiQmFoYXNhIE1lbGF5dSI6Imh0dHBzOi8vbXMud2lraXBlZGlhLm9yZy93aWtpL0tlY2VyZGFzYW5fYnVhdGFuIiwiTWluYW5na2FiYXUiOiJodHRwczovL21pbi53aWtpcGVkaWEub3JnL3dpa2kvS2VjZXJkYXNhbl9idWF0YW4iLCLQnNC+0L3Qs9C+0LsiOiJodHRwczovL21uLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTUlRDAlQjglRDAlQjklRDAlQkMlRDElOEQlRDAlQkJfJUQwJUJFJUQxJThFJUQxJTgzJUQwJUJEIiwi4YCZ4YC84YCU4YC64YCZ4YCs4YCY4YCs4YCe4YCsIjoiaHR0cHM6Ly9teS53aWtpcGVkaWEub3JnL3dpa2kvJUUxJTgwJTg5JUUxJTgwJUFDJUUxJTgwJThGJUUxJTgwJUJBJUUxJTgwJTlCJUUxJTgwJThBJUUxJTgwJUJBJUUxJTgwJTkwJUUxJTgwJUFGIiwiTmVkZXJsYW5kcyI6Imh0dHBzOi8vbmwud2lraXBlZGlhLm9yZy93aWtpL0t1bnN0bWF0aWdlX2ludGVsbGlnZW50aWUiLCJOZWRlcnNha3NpZXMiOiJodHRwczovL25kcy1ubC53aWtpcGVkaWEub3JnL3dpa2kvS2V1bnN0a2xvb2t0ZSIsIuCkqOClh+CkquCkvuCksuClgCI6Imh0dHBzOi8vbmUud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU5NSVFMCVBNSU4MyVFMCVBNCVBNCVFMCVBNSU4RCVFMCVBNCVCMCVFMCVBNCVCRiVFMCVBNCVBRV8lRTAlQTQlQUMlRTAlQTUlOEMlRTAlQTQlQTYlRTAlQTUlOEQlRTAlQTQlQTclRTAlQTQlQkYlRTAlQTQlOTUlRTAlQTQlQTQlRTAlQTQlQkUiLCLgpKjgpYfgpKrgpL7gpLIg4KSt4KS+4KS34KS+IjoiaHR0cHM6Ly9uZXcud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU4NiVFMCVBNCVCMCVFMCVBNSU4RCVFMCVBNCU5RiVFMCVBNCVCRiVFMCVBNCVBQiVFMCVBNCVCRiVFMCVBNCVCOCVFMCVBNCVCRiVFMCVBNCVBRiVFMCVBNCVCMl8lRTAlQTQlODclRTAlQTQlQTglRTAlQTUlOEQlRTAlQTQlOUYlRTAlQTUlODclRTAlQTQlQjIlRTAlQTQlQkYlRTAlQTQlOUMlRTAlQTUlODclRTAlQTQlQTglRTAlQTUlOEQlRTAlQTQlQjgiLCLml6XmnKzoqp4iOiJodHRwczovL2phLndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTclOUYlQTUlRTglODMlQkQiLCJOb3JkZnJpaXNrIjoiaHR0cHM6Ly9mcnIud2lraXBlZGlhLm9yZy93aWtpL0tvbnN0ZWxrX0ludGVsaWdlbnMiLCJOb3JzayBib2ttw6VsIjoiaHR0cHM6Ly9uby53aWtpcGVkaWEub3JnL3dpa2kvS3Vuc3RpZ19pbnRlbGxpZ2VucyIsIk5vcnNrIG55bm9yc2siOiJodHRwczovL25uLndpa2lwZWRpYS5vcmcvd2lraS9LdW5zdGlnX2ludGVsbGlnZW5zIiwiT2NjaXRhbiI6Imh0dHBzOi8vb2Mud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnJUMzJUE5bmNpYV9hcnRpZmljaWFsYSIsIuCsk+CsoeCsvOCsv+CshiI6Imh0dHBzOi8vb3Iud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBQyU4NiVFMCVBQyVCMCVFMCVBRCU4RCVFMCVBQyU5RiVFMCVBQyVCRiVFMCVBQyVBQiVFMCVBQyVCRiVFMCVBQyVCOCVFMCVBQyVCRiVFMCVBQyU4NiVFMCVBQyVCMl8lRTAlQUMlODclRTAlQUMlQTMlRTAlQUQlOEQlRTAlQUMlOUYlRTAlQUQlODclRTAlQUMlQjIlRTAlQUMlQkYlRTAlQUMlOUMlRTAlQUQlODclRTAlQUMlQTglRTAlQUQlOEQlRTAlQUMlQjgiLCJPyrt6YmVrY2hhIC8g0Z7Qt9Cx0LXQutGH0LAiOiJodHRwczovL3V6Lndpa2lwZWRpYS5vcmcvd2lraS9TdW4lQ0ElQkNpeV9pbnRlbGxla3QiLCLgqKrgqbDgqJzgqL7gqKzgqYAiOiJodHRwczovL3BhLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTglQUMlRTAlQTglQTMlRTAlQTglQkUlRTAlQTglQjUlRTAlQTglOUYlRTAlQTklODBfJUUwJUE4JUFDJUUwJUE5JTgxJUUwJUE5JUIxJUUwJUE4JUE3JUUwJUE5JTgwXyhfQUkpIiwi2b7Zhtis2KfYqNuMIjoiaHR0cHM6Ly9wbmIud2lraXBlZGlhLm9yZy93aWtpLyVEOCVBOCVEOSU4NiVEOCVBNyVEOCVBNiVEQiU4Q18lREElQUYlRDglQTYlREIlOENfJUQ4JUIwJURCJTgxJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwi2b7amtiq2YgiOiJodHRwczovL3BzLndpa2lwZWRpYS5vcmcvd2lraS8lRDklODUlRDglQjUlRDklODYlRDklODglRDglQjklRDklOEFfJURBJTgxJUQ5JThBJUQ4JUIxJURBJUE5JUQ4JUFBJURCJThDJUQ4JUE3IiwiUGF0b2lzIjoiaHR0cHM6Ly9qYW0ud2lraXBlZGlhLm9yZy93aWtpL0FhdGlmaXNoYWxfaW50ZWxpamVucyIsIuGel+GetuGen+GetuGegeGfkuGemOGfguGemiI6Imh0dHBzOi8va20ud2lraXBlZGlhLm9yZy93aWtpLyVFMSU5RSU5NCVFMSU5RSU4OSVFMSU5RiU5MiVFMSU5RSU4OSVFMSU5RSVCNiVFMSU5RSU5RiVFMSU5RSVCNyVFMSU5RSU5NCVFMSU5RiU5MiVFMSU5RSU5NCVFMSU5RSU5MyVFMSU5RSVCNyVFMSU5RSU5OCVFMSU5RiU5MiVFMSU5RSU5OCVFMSU5RSVCNyVFMSU5RSU4RiIsIlBpY2FyZCI6Imh0dHBzOi8vcGNkLndpa2lwZWRpYS5vcmcvd2lraS9JbnQlQzMlQTlybGlnaW5jZV9hcnRpZmljaWVsbGUiLCJQaWVtb250w6hpcyI6Imh0dHBzOi8vcG1zLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGlnZW5zYV9BcnRpZmlzc2lhbCIsIlBsYXR0ZMO8w7x0c2NoIjoiaHR0cHM6Ly9uZHMud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWtlX0ludGVsbGlnZW56IiwiUG9sc2tpIjoiaHR0cHM6Ly9wbC53aWtpcGVkaWEub3JnL3dpa2kvU3p0dWN6bmFfaW50ZWxpZ2VuY2phIiwiUG9ydHVndcOqcyI6Imh0dHBzOi8vcHQud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWclQzMlQUFuY2lhX2FydGlmaWNpYWwiLCJRYXJhcWFscGFxc2hhIjoiaHR0cHM6Ly9rYWEud2lraXBlZGlhLm9yZy93aWtpL0phc2FsbWFfaW50ZWxsZWt0IiwiUcSxcsSxbXRhdGFyY2EiOiJodHRwczovL2NyaC53aWtpcGVkaWEub3JnL3dpa2kvU3VuaXlfemVrJUMzJUEyIiwiUmVvIHRhaGl0aSI6Imh0dHBzOi8vdHkud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9hcnRpZmljaWVsIiwiUmlwb2FyaXNjaCI6Imh0dHBzOi8va3NoLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIlJvbcOibsSDIjoiaHR0cHM6Ly9yby53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2VuJUM4JTlCJUM0JTgzX2FydGlmaWNpYWwlQzQlODMiLCJSdW5hIFNpbWkiOiJodHRwczovL3F1Lndpa2lwZWRpYS5vcmcvd2lraS9XYWxscGFzcWFfeXV5YXkiLCLQoNGD0YHQuNC90YzRgdC60YvQuSI6Imh0dHBzOi8vcnVlLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTMlRDAlQkMlRDAlQjUlRDAlQkIlRDAlQjBfJUQxJTk2JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQxJTk2JUQyJTkxJUQwJUI1JUQwJUJEJUQxJTg2JUQxJTk2JUQxJThGIiwi0KDRg9GB0YHQutC40LkiOiJodHRwczovL3J1Lndpa2lwZWRpYS5vcmcvd2lraS8lRDAlOTglRDElODElRDAlQkElRDElODMlRDElODElRDElODElRDElODIlRDAlQjIlRDAlQjUlRDAlQkQlRDAlQkQlRDElOEIlRDAlQjlfJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQwJUJCJUQwJUI1JUQwJUJBJUQxJTgyIiwi0KHQsNGF0LAg0YLRi9C70LAiOiJodHRwczovL3NhaC53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTlFJUQyJUE1JUQwJUJFJUQyJUJCJUQxJTgzJUQxJTgzXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIlNjb3RzIjoiaHR0cHM6Ly9zY28ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmZWVjaWFsX2ludGVsbGlnZW5jZSIsIlNocWlwIjoiaHR0cHM6Ly9zcS53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2plbmNhX2FydGlmaWNpYWxlIiwi4LeD4LeS4LaC4LeE4La9IjoiaHR0cHM6Ly9zaS53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUI2JTlBJUUwJUI3JTk4JUUwJUI2JUFEJUUwJUI3JThBJUUyJTgwJThEJUUwJUI2JUJCJUUwJUI3JTkzJUUwJUI2JUI4XyVFMCVCNiVCNiVFMCVCNyU5NCVFMCVCNiVBRiVFMCVCNyU4QSVFMCVCNiVCMCVFMCVCNyU5MiVFMCVCNiVCQSIsIlNpbXBsZSBFbmdsaXNoIjoiaHR0cHM6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwi2LPZhtqM2YoiOiJodHRwczovL3NkLndpa2lwZWRpYS5vcmcvd2lraS8lREElQkUlRDklQkYlRDglQjElRDglQTclRDglQUYlRDklODhfJUQ4JUIwJURBJUJFJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwiU2xvdmVuxI1pbmEiOiJodHRwczovL3NrLndpa2lwZWRpYS5vcmcvd2lraS9VbWVsJUMzJUExX2ludGVsaWdlbmNpYSIsIlNsb3ZlbsWhxI1pbmEiOiJodHRwczovL3NsLndpa2lwZWRpYS5vcmcvd2lraS9VbWV0bmFfaW50ZWxpZ2VuY2EiLCLFmmzFr25za2kiOiJodHRwczovL3N6bC53aWtpcGVkaWEub3JnL3dpa2kvS2F0ZWdvcnlqbzpTenR1Y3pub19pbnRlbGlnZW5jeWpvIiwi2qnZiNix2K/bjCI6Imh0dHBzOi8vY2tiLndpa2lwZWRpYS5vcmcvd2lraS8lREElOTglREIlOEMlRDglQjElREIlOEMlREIlOENfJUQ4JUFGJURCJTk1JUQ4JUIzJUQ4JUFBJURBJUE5JUQ4JUIxJUQ4JUFGIiwi0KHRgNC/0YHQutC4IC8gc3Jwc2tpIjoiaHR0cHM6Ly9zci53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTkyJUQwJUI1JUQxJTg4JUQxJTgyJUQwJUIwJUQxJTg3JUQwJUJBJUQwJUIwXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCOCVEMCVCMyVEMCVCNSVEMCVCRCVEMSU4NiVEMCVCOCVEMSU5OCVEMCVCMCIsIlNycHNrb2hydmF0c2tpIC8g0YHRgNC/0YHQutC+0YXRgNCy0LDRgtGB0LrQuCI6Imh0dHBzOi8vc2gud2lraXBlZGlhLm9yZy93aWtpL1ZqZSVDNSVBMXRhJUM0JThEa2FfaW50ZWxpZ2VuY2lqYSIsIlN1b21pIjoiaHR0cHM6Ly9maS53aWtpcGVkaWEub3JnL3dpa2kvVGVrbyVDMyVBNGx5IiwiU3ZlbnNrYSI6Imh0dHBzOi8vc3Yud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpZWxsX2ludGVsbGlnZW5zIiwiVGFnYWxvZyI6Imh0dHBzOi8vdGwud2lraXBlZGlhLm9yZy93aWtpL0FydGlwaXN5YWxfbmFfa2F0YWxpbnVoYW4iLCLgrqTgrq7grr/grrTgr40iOiJodHRwczovL3RhLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQUUlOUElRTAlQUYlODYlRTAlQUUlQUYlRTAlQUUlQjElRTAlQUYlOEQlRTAlQUUlOTUlRTAlQUYlODhfJUUwJUFFJUE4JUUwJUFGJTgxJUUwJUFFJUEzJUUwJUFGJThEJUUwJUFFJUEzJUUwJUFFJUIxJUUwJUFFJUJGJUUwJUFFJUI1JUUwJUFGJTgxIiwi0KLQsNGC0LDRgNGH0LAgLyB0YXRhcsOnYSI6Imh0dHBzOi8vdHQud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBRiVEMSU4MSVEMCVCMCVEMCVCQiVEMCVCQyVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLgsKTgsYbgsLLgsYHgsJfgsYEiOiJodHRwczovL3RlLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQjAlOTUlRTAlQjElODMlRTAlQjAlQTQlRTAlQjElOEQlRTAlQjAlQjAlRTAlQjAlQkYlRTAlQjAlQUVfJUUwJUIwJUFFJUUwJUIxJTg3JUUwJUIwJUE3JUUwJUIwJUI4JUUwJUIxJThEJUUwJUIwJUI4JUUwJUIxJTgxIiwi4LmE4LiX4LiiIjoiaHR0cHM6Ly90aC53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUI4JTlCJUUwJUI4JUIxJUUwJUI4JThEJUUwJUI4JThEJUUwJUI4JUIyJUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI4JTk0JUUwJUI4JUI0JUUwJUI4JUE5JUUwJUI4JTkwJUUwJUI5JThDIiwi0KLQvtK30LjQutOjIjoiaHR0cHM6Ly90Zy53aWtpcGVkaWEub3JnL3dpa2kvJUQyJUIyJUQxJTgzJUQxJTg4JUQwJUI4XyVEMCVCQyVEMCVCMCVEMSU4MSVEMCVCRCVEMyVBRiVEMSU4QSVEMyVBMyIsIlTDvHJrw6dlIjoiaHR0cHM6Ly90ci53aWtpcGVkaWEub3JnL3dpa2kvWWFwYXlfemVrJUMzJUEyIiwiVMO8cmttZW7Dp2UiOiJodHRwczovL3RrLndpa2lwZWRpYS5vcmcvd2lraS8lQzMlOURhc2FtYV9ha3lsIiwi0KPQutGA0LDRl9C90YHRjNC60LAiOiJodHRwczovL3VrLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTglRDElODIlRDElODMlRDElODclRDAlQkQlRDAlQjglRDAlQjlfJUQxJTk2JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQwJUI1JUQwJUJBJUQxJTgyIiwi2KfYsdiv2YgiOiJodHRwczovL3VyLndpa2lwZWRpYS5vcmcvd2lraS8lRDklODUlRDglQjUlRDklODYlRDklODglRDglQjklREIlOENfJUQ4JUIwJURCJTgxJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwi2Kbbh9mK2Lrbh9ix2obblSAvIFV5Z2h1cmNoZSI6Imh0dHBzOi8vdWcud2lraXBlZGlhLm9yZy93aWtpLyVEOCVCMyVEQiU4OCVEOSU4NiVEOCVBNiVEOSU4OV8lRDglQTYlRDklODklRDglQUYlRDklODklRDglQjElRDglQTclRDklODMiLCJWw6huZXRvIjoiaHR0cHM6Ly92ZWMud2lraXBlZGlhLm9yZy93aWtpL0ludGUlQzUlODJpamVuc2FfYXJ0aWZpc2ElQzUlODJlIiwiVGnhur9uZyBWaeG7h3QiOiJodHRwczovL3ZpLndpa2lwZWRpYS5vcmcvd2lraS9UciVDMyVBRF90dSVFMSVCQiU4N19uaCVDMyVBMm5fdCVFMSVCQSVBMW8iLCJWw7VybyI6Imh0dHBzOi8vZml1LXZyby53aWtpcGVkaWEub3JnL3dpa2kvS3Vuc3RtJUMzJUI1aXN0dXMiLCJXYWxvbiI6Imh0dHBzOi8vd2Eud2lraXBlZGlhLm9yZy93aWtpL1MlQzMlQkJ0aXN0JUMzJUE5XyVDMyVBOW5kam9saWtlIiwiV2luYXJheSI6Imh0dHBzOi8vd2FyLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGloZW5zeWFfYXJ0aXBpc3lhbCIsIuWQtOivrSI6Imh0dHBzOi8vd3V1Lndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTYlOTklQkElRTglODMlQkQiLCLXmdeZ1rTXk9eZ16kiOiJodHRwczovL3lpLndpa2lwZWRpYS5vcmcvd2lraS8lRDclQTclRDclOTklRDclQTAlRDclQTElRDclOTglRDclOUMlRDclQTIlRDclOUIlRDclQTJfJUQ3JTkwJUQ3JTk5JUQ3JUEwJUQ3JTk4JUQ3JUEyJUQ3JTlDJUQ3JTk5JUQ3JTkyJUQ3JUEyJUQ3JUEwJUQ3JUE1Iiwi57K16KqeIjoiaHR0cHM6Ly96aC15dWUud2lraXBlZGlhLm9yZy93aWtpLyVFNCVCQSVCQSVFNSVCNyVBNSVFNiU5OSVCQSVFOCU4MyVCRCIsIlphemFraSI6Imh0dHBzOi8vZGlxLndpa2lwZWRpYS5vcmcvd2lraS9WaXJvX3YlQzQlQjFyYSVDNSU5RnQlQzQlQjFrJUMzJUFBbiIsIsW9ZW1haXTEl8Wha2EiOiJodHRwczovL2JhdC1zbWcud2lraXBlZGlhLm9yZy93aWtpL0QlQzQlOTdyYnQlQzQlOTduc19pbnRlbGVrdHMiLCLkuK3mlociOiJodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTYlOTklQkElRTglODMlQkQiLCJCZXRhd2kiOiJodHRwczovL2Jldy53aWtpcGVkaWEub3JnL3dpa2kvQ2FsYWthbl9iaWtpbmFuIiwiS2FkYXphbmR1c3VuIjoiaHR0cHM6Ly9kdHAud2lraXBlZGlhLm9yZy93aWtpL0thYmFhbGFuX1RpbmFuZGEiLCJGyZTMgG5nYsOoIjoiaHR0cHM6Ly9mb24ud2lraXBlZGlhLm9yZy93aWtpL04lQzclOTRueXclQzklOUJfZ2IlQzklOUJ0JUM5JTk0XyVDOSU5NiVDOSU5NGh1bl90JUM5JTk0biIsIuK1nOK0sOK1juK0sOK1o+K1ieK1luK1nCDitZzitLDitY/itLDitaHitLDitaLitZwiOiJodHRwczovL3pnaC53aWtpcGVkaWEub3JnL3dpa2kvJUUyJUI1JTlDJUUyJUI1JTg5JUUyJUI1JTk2JUUyJUI1JTg5JUUyJUI1JTk5JUUyJUI1JTlDXyVFMiVCNSU5QyVFMiVCNCVCMCVFMiVCNSU5OSVFMiVCNSU4RSVFMiVCNCVCMyVFMiVCNSU5MyVFMiVCNSU5NCVFMiVCNSU5QyIsIkVkaXQgbGlua3MiOiJodHRwczovL3d3dy53aWtpZGF0YS5vcmcvd2lraS9TcGVjaWFsOkVudGl0eVBhZ2UvUTExNjYwI3NpdGVsaW5rcy13aWtpcGVkaWEiLCJBcnRpY2xlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJSZWFkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJWaWV3IHNvdXJjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249ZWRpdCIsIlZpZXcgaGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249aGlzdG9yeSIsIldoYXQgbGlua3MgaGVyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6V2hhdExpbmtzSGVyZS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlJlbGF0ZWQgY2hhbmdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6UmVjZW50Q2hhbmdlc0xpbmtlZC9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlNwZWNpYWwgcGFnZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOlNwZWNpYWxQYWdlcyIsIlBlcm1hbmVudCBsaW5rIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm9sZGlkPTEyNzQ5NDEyOTciLCJQYWdlIGluZm9ybWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJmFjdGlvbj1pbmZvIiwiQ2l0ZSB0aGlzIHBhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpDaXRlVGhpc1BhZ2UmcGFnZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZpZD0xMjc0OTQxMjk3JndwRm9ybUlkZW50aWZpZXI9dGl0bGVmb3JtIiwiR2V0IHNob3J0ZW5lZCBVUkwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpVcmxTaG9ydGVuZXImdXJsPWh0dHBzJTNBJTJGJTJGZW4ud2lraXBlZGlhLm9yZyUyRndpa2klMkZBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkRvd25sb2FkIFFSIGNvZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpRckNvZGUmdXJsPWh0dHBzJTNBJTJGJTJGZW4ud2lraXBlZGlhLm9yZyUyRndpa2klMkZBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkVkaXQgaW50ZXJsYW5ndWFnZSBsaW5rcyI6Imh0dHBzOi8vd3d3Lndpa2lkYXRhLm9yZy93aWtpL1NwZWNpYWw6RW50aXR5UGFnZS9RMTE2NjAjc2l0ZWxpbmtzLXdpa2lwZWRpYSIsIkV4cGFuZCBhbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMiLCJEb3dubG9hZCBhcyBQREYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpEb3dubG9hZEFzUGRmJnBhZ2U9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UmYWN0aW9uPXNob3ctZG93bmxvYWQtc2NyZWVuIiwiUHJpbnRhYmxlIHZlcnNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UmcHJpbnRhYmxlPXllcyIsIldpa2ltZWRpYSBDb21tb25zIjoiaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIk1ldGEtV2lraSI6Imh0dHBzOi8vbWV0YS53aWtpbWVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJXaWtpYm9va3MiOiJodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIldpa2luZXdzIjoiaHR0cHM6Ly9lbi53aWtpbmV3cy5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIldpa2lxdW90ZSI6Imh0dHBzOi8vZW4ud2lraXF1b3RlLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiV2lraXZlcnNpdHkiOiJodHRwczovL2VuLndpa2l2ZXJzaXR5Lm9yZy93aWtpL1BvcnRhbDpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIldpa2lkYXRhIGl0ZW0iOiJodHRwczovL3d3dy53aWtpZGF0YS5vcmcvd2lraS9TcGVjaWFsOkVudGl0eVBhZ2UvUTExNjYwIiwiQUkgKGRpc2FtYmlndWF0aW9uKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJXyhkaXNhbWJpZ3VhdGlvbikiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSAoZGlzYW1iaWd1YXRpb24pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfKGRpc2FtYmlndWF0aW9uKSIsIk1ham9yIGdvYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR29hbHMiLCJBcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIkludGVsbGlnZW50IGFnZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnRfYWdlbnQiLCJSZWN1cnNpdmUgc2VsZi1pbXByb3ZlbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY3Vyc2l2ZV9zZWxmLWltcHJvdmVtZW50IiwiUGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmdfYW5kX3NjaGVkdWxpbmciLCJDb21wdXRlciB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl92aXNpb24iLCJHZW5lcmFsIGdhbWUgcGxheWluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWxfZ2FtZV9wbGF5aW5nIiwiS25vd2xlZGdlIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbl9hbmRfcmVhc29uaW5nIiwiTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9yb2JvdGljcyIsIkFJIHNhZmV0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX3NhZmV0eSIsIk1hY2hpbmUgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiU3ltYm9saWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1ib2xpY19hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkRlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwiQmF5ZXNpYW4gbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9uZXR3b3JrIiwiRXZvbHV0aW9uYXJ5IGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfYWxnb3JpdGhtIiwiSHlicmlkIGludGVsbGlnZW50IHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeWJyaWRfaW50ZWxsaWdlbnRfc3lzdGVtIiwiU3lzdGVtcyBpbnRlZ3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX3N5c3RlbXNfaW50ZWdyYXRpb24iLCJBcHBsaWNhdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJCaW9pbmZvcm1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfbGVhcm5pbmdfaW5fYmlvaW5mb3JtYXRpY3MiLCJEZWVwZmFrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBmYWtlIiwiRWFydGggc2NpZW5jZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nX2luX2VhcnRoX3NjaWVuY2VzIiwiRmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uc19vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSNGaW5hbmNlIiwiR2VuZXJhdGl2ZSBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBcnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hcnQiLCJBdWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfYXVkaW8iLCJNdXNpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011c2ljX2FuZF9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkdvdmVybm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9pbl9nb3Zlcm5tZW50IiwiSGVhbHRoY2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2luX2hlYWx0aGNhcmUiLCJNZW50YWwgaGVhbHRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5fbWVudGFsX2hlYWx0aCIsIkluZHVzdHJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5faW5kdXN0cnkiLCJUcmFuc2xhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfdHJhbnNsYXRpb24iLCJNaWxpdGFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbGl0YXJ5X3JvYm90IiwiUGh5c2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3BoeXNpY3MiLCJQcm9qZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfcHJvamVjdHMiLCJQaGlsb3NvcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkFydGlmaWNpYWwgY29uc2Npb3VzbmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfY29uc2Npb3VzbmVzcyIsIkNoaW5lc2Ugcm9vbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoaW5lc2Vfcm9vbSIsIkZyaWVuZGx5IEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJpZW5kbHlfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJDb250cm9sIHByb2JsZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9jb250cm9sX3Byb2JsZW0iLCJUYWtlb3ZlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX3Rha2VvdmVyIiwiRXRoaWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfZXRoaWNzIiwiRXhpc3RlbnRpYWwgcmlzayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4aXN0ZW50aWFsX3Jpc2tfZnJvbV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlR1cmluZyB0ZXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHVyaW5nX3Rlc3QiLCJVbmNhbm55IHZhbGxleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuY2FubnlfdmFsbGV5IiwiSGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2Zfcm9ib3RzIiwiVGltZWxpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaW1lbGluZV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlByb2dyZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3Jlc3NfaW5fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBSSB3aW50ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV93aW50ZXIiLCJBSSBib29tIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfYm9vbSIsIkdsb3NzYXJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2Zfcm9ib3RpY3MiLCJ2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6R2xvc3Nhcmllc19vZl9zY2llbmNlX2FuZF9lbmdpbmVlcmluZyIsInQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wbGF0ZV90YWxrOkdsb3NzYXJpZXNfb2Zfc2NpZW5jZV9hbmRfZW5naW5lZXJpbmciLCJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpFZGl0UGFnZS9UZW1wbGF0ZTpHbG9zc2FyaWVzX29mX3NjaWVuY2VfYW5kX2VuZ2luZWVyaW5nIiwiaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbmNlIiwibWFjaGluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lIiwiY29tcHV0ZXIgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyIiwiZmllbGQgb2YgcmVzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWVsZF9vZl9yZXNlYXJjaCIsImNvbXB1dGVyIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl9zY2llbmNlIiwic29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZSIsInBlcmNlaXZlIHRoZWlyIGVudmlyb25tZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9wZXJjZXB0aW9uIiwibGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiWzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExJUUyJTgwJTkzNC0xIiwiYXBwbGljYXRpb25zIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25zX29mX0FJIiwid2ViIHNlYXJjaCBlbmdpbmVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2ViX3NlYXJjaF9lbmdpbmUiLCJHb29nbGUgU2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX1NlYXJjaCIsInJlY29tbWVuZGF0aW9uIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWNvbW1lbmRhdGlvbl9zeXN0ZW1zIiwiWW91VHViZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvdVR1YmUiLCJBbWF6b24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbWF6b25fKGNvbXBhbnkpIiwiTmV0ZmxpeCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldGZsaXgiLCJ2aXJ0dWFsIGFzc2lzdGFudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXJ0dWFsX2Fzc2lzdGFudCIsIkdvb2dsZSBBc3Npc3RhbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfQXNzaXN0YW50IiwiU2lyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpcmkiLCJBbGV4YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FtYXpvbl9BbGV4YSIsImF1dG9ub21vdXMgdmVoaWNsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbm9tb3VzX3ZlaGljbGVzIiwiV2F5bW8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXltbyIsImdlbmVyYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX0FJIiwiY3JlYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2NyZWF0aXZpdHkiLCJDaGF0R1BUIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhdEdQVCIsIkFJIGFydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX2FydCIsInN1cGVyaHVtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZSIsInN0cmF0ZWd5IGdhbWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RyYXRlZ3lfZ2FtZSIsImNoZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hlc3MiLCJHbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvXyhnYW1lKSIsIm5vdCBsYWJlbGVkIEFJIGFueW1vcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9lZmZlY3QiLCJbMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMiIsIlszXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zIiwicmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3JlYXNvbmluZyIsImtub3dsZWRnZSByZXByZXNlbnRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbiIsInBsYW5uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nX2FuZF9zY2hlZHVsaW5nIiwibmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwicm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljcyIsIlthXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1Qcm9ibGVtc19vZl9BSS00IiwiR2VuZXJhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2dlbmVyYWxfaW50ZWxsaWdlbmNlIiwiWzRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUFydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UtNSIsInNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0YXRlX3NwYWNlX3NlYXJjaCIsIm1hdGhlbWF0aWNhbCBvcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXRoZW1hdGljYWxfb3B0aW1pemF0aW9uIiwiZm9ybWFsIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9ybWFsX2xvZ2ljIiwiYXJ0aWZpY2lhbCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX25ldXJhbF9uZXR3b3JrcyIsInN0YXRpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0aXN0aWNzIiwib3BlcmF0aW9ucyByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZXJhdGlvbnNfcmVzZWFyY2giLCJlY29ub21pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FY29ub21pY3MiLCJbYl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtVG9vbHNfb2ZfQUktNiIsInBzeWNob2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc3ljaG9sb2d5IiwibGluZ3Vpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5ndWlzdGljcyIsInBoaWxvc29waHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5IiwibmV1cm9zY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cm9zY2llbmNlIiwiWzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTciLCJbNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGFydG1vdXRoX3dvcmtzaG9wLTgiLCJpdHMgaGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU3VjYzEtOSIsIls4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GdW5kMDEtMTAiLCJBSSB3aW50ZXJzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfd2ludGVyIiwiWzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZpcnN0X0FJX1dpbnRlci0xMSIsIlsxMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU2Vjb25kX0FJX1dpbnRlci0xMiIsImRlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwiWzExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1EZWVwX2xlYXJuaW5nX3Jldm9sdXRpb24tMTMiLCJ0cmFuc2Zvcm1lciBhcmNoaXRlY3R1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl9hcmNoaXRlY3R1cmUiLCJbMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVG9ld3MyMDIzLTE0IiwicHJvZ3Jlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmVzc19pbl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsInJpc2tzIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfcmlzayIsIml0cyBsb25nLXRlcm0gZWZmZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX2FmdGVybWF0aF9zY2VuYXJpb3MiLCJyZWd1bGF0b3J5IHBvbGljaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhdGlvbl9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsInNhZmV0eSBhbmQgYmVuZWZpdHMgb2YgdGhlIHRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9zYWZldHkiLCJkZWR1Y3Rpb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVkdWN0aXZlX3JlYXNvbmluZyIsIlsxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTUiLCJ1bmNlcnRhaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmNlcnRhaW50eSIsInByb2JhYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmFiaWxpdHkiLCJbMTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2IiwiWzE1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1JbnRyYWN0YWJpbGl0eV9hbmRfZWZmaWNpZW5jeV9hbmRfdGhlX2NvbWJpbmF0b3JpYWxfZXhwbG9zaW9uLTE3IiwiWzE2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1Qc3ljaG9sb2dpY2FsX2V2aWRlbmNlX29mX3RoZV9wcmV2YWxlbmNlX29mX3N1Yi0xOCIsIktub3dsZWRnZSByZXByZXNlbnRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbiIsImtub3dsZWRnZSBlbmdpbmVlcmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9lbmdpbmVlcmluZyIsIlsxN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkiLCJbMThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU21vbGlhclpoYW5nMTk5NC0yMCIsIlsxOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOZXVtYW5uTSVDMyVCNmxsZXIyMDA4LTIxIiwiWzIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUt1cGVybWFuUmVpY2hsZXlCYWlsZXkyMDA2LTIyIiwiZGF0YWJhc2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YWJhc2UiLCJbMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWNHYXJyeTIwMDUtMjMiLCJbMjJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQmVydGluaURlbF9CaW1ib1Rvcm5pYWkyMDA2LTI0Iiwia25vd2xlZGdlIGJhc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Lbm93bGVkZ2VfYmFzZSIsIm9udG9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT250b2xvZ3lfKGluZm9ybWF0aW9uX3NjaWVuY2UpIiwiWzIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjcyLTI1IiwiWzI0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNiIsIlsyNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjciLCJbMjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4IiwiWzI3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yOSIsImRlZmF1bHQgcmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmYXVsdF9yZWFzb25pbmciLCJbMjhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLURlZmF1bHRfcmVhc29uaW5nLTMwIiwiWzI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1CcmVhZHRoX29mX2NvbW1vbnNlbnNlX2tub3dsZWRnZS0zMSIsImtub3dsZWRnZSBhY3F1aXNpdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9hY3F1aXNpdGlvbiIsIltjXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNCIsInJhdGlvbmFsIGFnZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmF0aW9uYWxfYWdlbnQiLCJbZF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUiLCJbMzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE1MjgtMzYiLCJhdXRvbWF0ZWQgcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmciLCJbMzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM3IiwiYXV0b21hdGVkIGRlY2lzaW9uLW1ha2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9kZWNpc2lvbi1tYWtpbmciLCJ1dGlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVXRpbGl0eSIsImV4cGVjdGVkIHV0aWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBlY3RlZF91dGlsaXR5IiwiWzM0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zOCIsImNsYXNzaWNhbCBwbGFubmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9wbGFubmluZ19hbmRfc2NoZWR1bGluZyNjbGFzc2ljYWxfcGxhbm5pbmciLCJbMzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5IiwiWzM2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MCIsImludmVyc2UgcmVpbmZvcmNlbWVudCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludmVyc2VfcmVpbmZvcmNlbWVudF9sZWFybmluZyIsIlszN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDEiLCJJbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl92YWx1ZV90aGVvcnkiLCJbMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQyIiwiaW50cmFjdGFibHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyYWN0YWJseSIsIk1hcmtvdiBkZWNpc2lvbiBwcm9jZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFya292X2RlY2lzaW9uX3Byb2Nlc3MiLCJ0cmFuc2l0aW9uIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluaXRlLXN0YXRlX21hY2hpbmUiLCJyZXdhcmQgZnVuY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXdhcmRfZnVuY3Rpb24iLCJwb2xpY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nI1BvbGljeSIsIml0ZXJhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGljeV9pdGVyYXRpb24iLCJoZXVyaXN0aWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZXVyaXN0aWMiLCJbMzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQzIiwiR2FtZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX3RoZW9yeSIsIls0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDQiLCJbNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ1IiwiW2VdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ4IiwiVW5zdXBlcnZpc2VkIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5zdXBlcnZpc2VkX2xlYXJuaW5nIiwiWzQ0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00OSIsIlN1cGVydmlzZWQgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcnZpc2VkX2xlYXJuaW5nIiwiY2xhc3NpZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0aXN0aWNhbF9jbGFzc2lmaWNhdGlvbiIsInJlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWdyZXNzaW9uX2FuYWx5c2lzIiwiWzQ1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TdXBlcnZpc2VkX2xlYXJuaW5nLTUwIiwicmVpbmZvcmNlbWVudCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlaW5mb3JjZW1lbnRfbGVhcm5pbmciLCJbNDZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTUxIiwiVHJhbnNmZXIgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zlcl9sZWFybmluZyIsIls0N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNTIiLCJbNDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTUzIiwiQ29tcHV0YXRpb25hbCBsZWFybmluZyB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2xlYXJuaW5nX3RoZW9yeSIsImNvbXB1dGF0aW9uYWwgY29tcGxleGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfY29tcGxleGl0eSIsInNhbXBsZSBjb21wbGV4aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtcGxlX2NvbXBsZXhpdHkiLCJvcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcHRpbWl6YXRpb24iLCJbNDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTU0IiwiWzUwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS01NSIsIkVuZ2xpc2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmdsaXNoXyhsYW5ndWFnZSkiLCJzcGVlY2ggcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVlY2hfcmVjb2duaXRpb24iLCJzcGVlY2ggc3ludGhlc2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlZWNoX3N5bnRoZXNpcyIsIm1hY2hpbmUgdHJhbnNsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3RyYW5zbGF0aW9uIiwiaW5mb3JtYXRpb24gZXh0cmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX2V4dHJhY3Rpb24iLCJpbmZvcm1hdGlvbiByZXRyaWV2YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9yZXRyaWV2YWwiLCJxdWVzdGlvbiBhbnN3ZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWVzdGlvbl9hbnN3ZXJpbmciLCJbNTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTU2IiwiTm9hbSBDaG9tc2t5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9hbV9DaG9tc2t5IiwiZ2VuZXJhdGl2ZSBncmFtbWFyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9ncmFtbWFyIiwic2VtYW50aWMgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW1hbnRpY19uZXR3b3JrIiwid29yZC1zZW5zZSBkaXNhbWJpZ3VhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmQtc2Vuc2VfZGlzYW1iaWd1YXRpb24iLCJbZl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNTciLCJtaWNyby13b3JsZHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CbG9ja3Nfd29ybGQiLCJNYXJnYXJldCBNYXN0ZXJtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJnYXJldF9NYXN0ZXJtYW4iLCJ0aGVzYXVyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZXNhdXJpIiwid29yZCBlbWJlZGRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JkX2VtYmVkZGluZyIsInZlY3RvcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZWN0b3Jfc3BhY2UiLCJbNTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE4NTYlRTIlODAlOTM4NTgtNTgiLCJ0cmFuc2Zvcm1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl8obWFjaGluZV9sZWFybmluZ19tb2RlbCkiLCJhdHRlbnRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25fKG1hY2hpbmVfbGVhcm5pbmcpIiwiWzUzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URURpY2tzb24yMDIyLTU5IiwiWzU0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS02MCIsImdlbmVyYXRpdmUgcHJlLXRyYWluZWQgdHJhbnNmb3JtZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX3ByZS10cmFpbmVkX3RyYW5zZm9ybWVyIiwiWzU1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVZpbmNlbnQyMDE5LTYxIiwiWzU2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxODc1JUUyJTgwJTkzODc4LTYyIiwiYmFyIGV4YW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXJfZXhhbSIsIlNBVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NBVCIsIkdSRSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dSRSIsIls1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVCdXNod2ljazIwMjMtNjMiLCJNYWNoaW5lIHBlcmNlcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3BlcmNlcHRpb24iLCJsaWRhciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpZGFyIiwidGFjdGlsZSBzZW5zb3JzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFjdGlsZV9zZW5zb3IiLCJbNThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTY0IiwiWzU5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxODQ5JUUyJTgwJTkzODUwLTY1IiwiaW1hZ2UgY2xhc3NpZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9jbGFzc2lmaWNhdGlvbiIsIls2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTg5NSVFMiU4MCU5Mzg5OS02NiIsImZhY2lhbCByZWNvZ25pdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhY2lhbF9yZWNvZ25pdGlvbl9zeXN0ZW0iLCJvYmplY3QgcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PYmplY3RfcmVjb2duaXRpb24iLCJbNjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE4OTklRTIlODAlOTM5MDEtNjciLCJvYmplY3QgdHJhY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3Rpb25fY2FwdHVyZSIsIls2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaGFsbGFNb3JlbGFuZE11JUM1JUExaWNraUV2YW5zMjAxMS02OCIsInJvYm90aWMgcGVyY2VwdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfcGVyY2VwdGlvbiIsIls2M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTkzMSVFMiU4MCU5MzkzOC02OSIsIktpc21ldCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tpc21ldF8ocm9ib3QpIiwiWzY0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1JVF9BSUwyMDE0LTcwIiwiQWZmZWN0aXZlIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FmZmVjdGl2ZV9jb21wdXRpbmciLCJmZWVsaW5nLCBlbW90aW9uLCBhbmQgbW9vZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FmZmVjdF8ocHN5Y2hvbG9neSkiLCJbNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTcxIiwiaHVtYW7igJNjb21wdXRlciBpbnRlcmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuJUUyJTgwJTkzY29tcHV0ZXJfaW50ZXJhY3Rpb24iLCJbNjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFV2FkZGVsbDIwMTgtNzIiLCJzZW50aW1lbnQgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW50aW1lbnRfYW5hbHlzaXMiLCJtdWx0aW1vZGFsIHNlbnRpbWVudCBhbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpbW9kYWxfc2VudGltZW50X2FuYWx5c2lzIiwiWzY3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVBvcmlhQ2FtYnJpYUJhanBhaUh1c3NhaW4yMDE3LTczIiwiYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCJodW1hbiBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9pbnRlbGxpZ2VuY2UiLCJbNjhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc0Iiwic3RhdGUgc3BhY2Ugc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVfc3BhY2Vfc2VhcmNoIiwibG9jYWwgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9jYWxfc2VhcmNoXyhvcHRpbWl6YXRpb24pIiwiU3RhdGUgc3BhY2Ugc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVfc3BhY2Vfc2VhcmNoIiwiWzY5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS03NSIsIm1lYW5zLWVuZHMgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZWFucy1lbmRzX2FuYWx5c2lzIiwiWzcwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxc2VjdC5fMTEuMi03NiIsIlNpbXBsZSBleGhhdXN0aXZlIHNlYXJjaGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJ1dGVfZm9yY2Vfc2VhcmNoIiwiWzcxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS03NyIsInNlYXJjaCBzcGFjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9hbGdvcml0aG0iLCJhc3Ryb25vbWljYWwgbnVtYmVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FzdHJvbm9taWNhbGx5X2xhcmdlIiwidG9vIHNsb3ciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbl90aW1lIiwiSGV1cmlzdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hldXJpc3RpY3MiLCJbNzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc4IiwiQWR2ZXJzYXJpYWwgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWR2ZXJzYXJpYWxfc2VhcmNoIiwiZ2FtZS1wbGF5aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FtZV9BSSIsInRyZWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX3RyZWUiLCJbNzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc5IiwiZ3JhZGllbnQgZGVzY2VudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYWRpZW50X2Rlc2NlbnQiLCJsb3NzIGZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9zc19mdW5jdGlvbiIsIkxvY2FsIHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvY2FsX3NlYXJjaF8ob3B0aW1pemF0aW9uKSIsIls3NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtODAiLCJHcmFkaWVudCBkZXNjZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JhZGllbnRfZGVzY2VudCIsIm5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmsiLCJbNzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTgxIiwiYmFja3Byb3BhZ2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFja3Byb3BhZ2F0aW9uIiwiZXZvbHV0aW9uYXJ5IGNvbXB1dGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZvbHV0aW9uYXJ5X2NvbXB1dGF0aW9uIiwic2VsZWN0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9zZWxlY3Rpb24iLCJbNzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTgyIiwic3dhcm0gaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3dhcm1faW50ZWxsaWdlbmNlIiwicGFydGljbGUgc3dhcm0gb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGljbGVfc3dhcm1fb3B0aW1pemF0aW9uIiwiZmxvY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GbG9ja2luZyIsImFudCBjb2xvbnkgb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50X2NvbG9ueV9vcHRpbWl6YXRpb24iLCJhbnQgdHJhaWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50X3RyYWlsIiwiWzc3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1lcmtsZU1pZGRlbmRvcmYyMDEzLTgzIiwibG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpYyIsIls3OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtODQiLCJwcm9wb3NpdGlvbmFsIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvcG9zaXRpb25hbF9sb2dpYyIsImxvZ2ljYWwgY29ubmVjdGl2ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY2FsX2Nvbm5lY3RpdmUiLCJbNzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTg1IiwicHJlZGljYXRlIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJlZGljYXRlX2xvZ2ljIiwicXVhbnRpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWFudGlmaWVyXyhsb2dpYykiLCJbODBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTg2IiwiRGVkdWN0aXZlIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZHVjdGl2ZV9yZWFzb25pbmciLCJwcm92aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNhbF9wcm9vZiIsImNvbmNsdXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY2FsX2NvbnNlcXVlbmNlIiwicHJlbWlzZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmVtaXNlIiwiWzgxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04NyIsInRyZWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJlZV9zdHJ1Y3R1cmUiLCJpbmZlcmVuY2UgcnVsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZlcmVuY2VfcnVsZSIsImxlYWYgbm9kZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZWFmX25vZGVzIiwiYXhpb21zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXhpb20iLCJIb3JuIGNsYXVzZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ib3JuX2NsYXVzZSIsImZvcndhcmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9yd2FyZF9jaGFpbmluZyIsImJhY2t3YXJkcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhY2t3YXJkX2NoYWluaW5nIiwiWzgyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04OCIsImZpcnN0LW9yZGVyIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlyc3Qtb3JkZXJfbG9naWMiLCJyZXNvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzb2x1dGlvbl8obG9naWMpIiwiWzgzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04OSIsInVuZGVjaWRhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5kZWNpZGFibGVfcHJvYmxlbSIsImludHJhY3RhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cmFjdGFiaWxpdHlfKGNvbXBsZXhpdHkpIiwibG9naWMgcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY19wcm9ncmFtbWluZyIsIlByb2xvZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2xvZyIsIlR1cmluZyBjb21wbGV0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1R1cmluZ19jb21wbGV0ZSIsInN5bWJvbGljIHByb2dyYW1taW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltYm9saWNfcHJvZ3JhbW1pbmciLCJbODRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTkwIiwiRnV6enkgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdXp6eV9sb2dpYyIsIls4NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtOTEiLCJOb24tbW9ub3RvbmljIGxvZ2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05vbi1tb25vdG9uaWNfbG9naWMiLCJuZWdhdGlvbiBhcyBmYWlsdXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVnYXRpb25fYXNfZmFpbHVyZSIsIkJheWVzaWFuIG5ldHdvcmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9uZXR3b3JrIiwiY29uZGl0aW9uYWwgcHJvYmFiaWxpdHkgdGFibGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uZGl0aW9uYWxfcHJvYmFiaWxpdHlfdGFibGUiLCJbODZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVN0b2NoLTkyIiwiZGVjaXNpb24gdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVjaXNpb25fdGhlb3J5IiwiZGVjaXNpb24gYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWNpc2lvbl9hbmFseXNpcyIsIls4N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtOTMiLCJpbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl92YWx1ZV90aGVvcnkiLCJbODhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTk0IiwiTWFya292IGRlY2lzaW9uIHByb2Nlc3NlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmtvdl9kZWNpc2lvbl9wcm9jZXNzIiwiWzg5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS05NSIsImRlY2lzaW9uIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVjaXNpb25fbmV0d29yayIsIls5MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU3RvY2hhc3RpY190ZW1wb3JhbF9tb2RlbHMtOTYiLCJnYW1lIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhbWVfdGhlb3J5IiwibWVjaGFuaXNtIGRlc2lnbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lY2hhbmlzbV9kZXNpZ24iLCJbOTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTk3IiwiWzkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS05OCIsIkJheWVzaWFuIGluZmVyZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JheWVzaWFuX2luZmVyZW5jZSIsIltnXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDAiLCJbOTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwMSIsImV4cGVjdGF0aW9u4oCTbWF4aW1pemF0aW9uIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVjdGF0aW9uJUUyJTgwJTkzbWF4aW1pemF0aW9uX2FsZ29yaXRobSIsIltoXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDMiLCJbOTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwNCIsIls5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTA1IiwicGVyY2VwdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfcGVyY2VwdGlvbiIsImR5bmFtaWMgQmF5ZXNpYW4gbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EeW5hbWljX0JheWVzaWFuX25ldHdvcmsiLCJoaWRkZW4gTWFya292IG1vZGVscyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZGRlbl9NYXJrb3ZfbW9kZWwiLCJLYWxtYW4gZmlsdGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0thbG1hbl9maWx0ZXIiLCJFeHBlY3RhdGlvbuKAk21heGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVjdGF0aW9uJUUyJTgwJTkzbWF4aW1pemF0aW9uX2FsZ29yaXRobSIsImNsdXN0ZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbHVzdGVyX2FuYWx5c2lzIiwiT2xkIEZhaXRoZnVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2xkX0ZhaXRoZnVsIiwiQ2xhc3NpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGFzc2lmaWVyXyhtYXRoZW1hdGljcykiLCJbOThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwNiIsInBhdHRlcm4gbWF0Y2hpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXR0ZXJuX21hdGNoaW5nIiwic3VwZXJ2aXNlZCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1cGVydmlzZWRfbGVhcm5pbmciLCJvYnNlcnZhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhbmRvbV92YXJpYXRlIiwiZGF0YSBzZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRhX3NldCIsIls5OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTA3IiwiZGVjaXNpb24gdHJlZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY2lzaW9uX3RyZWUiLCJbMTAwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDgiLCJLLW5lYXJlc3QgbmVpZ2hib3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LLW5lYXJlc3RfbmVpZ2hib3IiLCJLZXJuZWwgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tlcm5lbF9tZXRob2RzIiwic3VwcG9ydCB2ZWN0b3IgbWFjaGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1cHBvcnRfdmVjdG9yX21hY2hpbmUiLCJbMTAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDkiLCJuYWl2ZSBCYXllcyBjbGFzc2lmaWVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmFpdmVfQmF5ZXNfY2xhc3NpZmllciIsIlsxMDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9taW5nb3MyMDE1MTUyLTExMCIsIlsxMDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExMSIsIk5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmsiLCJbMTA0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1OZXVyYWxfbmV0d29ya3MtMTEyIiwibmV1cm9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldXJvbnMiLCJodW1hbiBicmFpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX2JyYWluIiwiYXJ0aWZpY2lhbCBuZXVyb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9uZXVyb25zIiwid2VpZ2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VpZ2h0aW5nIiwiWzEwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTEzIiwiZmluZCBwYXR0ZXJucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdHRlcm5fcmVjb2duaXRpb24iLCJbMTA2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMTQiLCJmZWVkZm9yd2FyZCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GZWVkZm9yd2FyZF9uZXVyYWxfbmV0d29yayIsIlsxMDddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNSIsIlJlY3VycmVudCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbnRfbmV1cmFsX25ldHdvcmsiLCJMb25nIHNob3J0IHRlcm0gbWVtb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9uZ19zaG9ydF90ZXJtX21lbW9yeSIsIlsxMDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNiIsIlBlcmNlcHRyb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGVyY2VwdHJvbiIsIlsxMDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNyIsIlsxMTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLURlZXBfbGVhcm5pbmctMTE4IiwiQ29udm9sdXRpb25hbCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbmFsX25ldXJhbF9uZXR3b3JrcyIsImltYWdlIHByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9wcm9jZXNzaW5nIiwiaWRlbnRpZnkgYW4gXCJlZGdlXCIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZGdlX2RldGVjdGlvbiIsIlsxMTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExOSIsIlsxMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRGVuZ1l1MjAxNDE5OSVFMiU4MCU5MzIwMC0xMjAiLCJjb21wdXRlciB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl92aXNpb24iLCJbMTEzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNpcmVzYW5NZWllclNjaG1pZGh1YmVyMjAxMi0xMjEiLCJbMTE0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxNzUxLTEyMiIsIltpXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMjkiLCJHUFVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BVcyIsImN1cmF0ZWQgZGF0YXNldHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX2RhdGFzZXRzX2Zvcl9tYWNoaW5lLWxlYXJuaW5nX3Jlc2VhcmNoIiwiSW1hZ2VOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZU5ldCIsIltqXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzEiLCJHZW5lcmF0aXZlIHByZS10cmFpbmVkIHRyYW5zZm9ybWVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfcHJlLXRyYWluZWRfdHJhbnNmb3JtZXIiLCJsYXJnZSBsYW5ndWFnZSBtb2RlbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXJnZV9sYW5ndWFnZV9tb2RlbCIsImNvcnB1cyBvZiB0ZXh0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ycHVzX29mX3RleHQiLCJ0b2tlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xleGljYWxfYW5hbHlzaXMiLCJyZWluZm9yY2VtZW50IGxlYXJuaW5nIGZyb20gaHVtYW4gZmVlZGJhY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nX2Zyb21faHVtYW5fZmVlZGJhY2siLCJoYWxsdWNpbmF0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGx1Y2luYXRpb25fKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlKSIsImNoYXRib3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhdGJvdHMiLCJbMTIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNtaXRoMjAyMy0xMzIiLCJbMTIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzMiLCJHZW1pbmkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW1pbmlfKGxhbmd1YWdlX21vZGVsKSIsIkdyb2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hcm9rXyhjaGF0Ym90KSIsIkNsYXVkZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXVkZV8obGFuZ3VhZ2VfbW9kZWwpIiwiQ29waWxvdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9Db3BpbG90IiwiTExhTUEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MTGFNQSIsIlsxMjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEzNCIsIk11bHRpbW9kYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aW1vZGFsX2xlYXJuaW5nIiwibW9kYWxpdGllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vZGFsaXR5XyhodW1hbiVFMiU4MCU5M2NvbXB1dGVyX2ludGVyYWN0aW9uKSIsIlsxMjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWFybW91eWV0MjAyMy0xMzUiLCJQcm9ncmFtbWluZyBsYW5ndWFnZXMgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3JhbW1pbmdfbGFuZ3VhZ2VzX2Zvcl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkhhcmR3YXJlIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhcmR3YXJlX2Zvcl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsImdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaGljc19wcm9jZXNzaW5nX3VuaXQiLCJUZW5zb3JGbG93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVuc29yRmxvdyIsImNlbnRyYWwgcHJvY2Vzc2luZyB1bml0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJhbF9wcm9jZXNzaW5nX3VuaXQiLCJtYWNoaW5lIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9sZWFybmluZyIsIlsxMjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFS29iaWVsdXMyMDE5LTEzNiIsInByb2dyYW1taW5nIGxhbmd1YWdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX2xhbmd1YWdlIiwiWzEyN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTM3IiwiZ2VuZXJhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWwtcHVycG9zZV9wcm9ncmFtbWluZ19sYW5ndWFnZSIsIlB5dGhvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpIiwiWzEyOF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTM4IiwiaW50ZWdyYXRlZCBjaXJjdWl0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVncmF0ZWRfY2lyY3VpdCIsIk1vb3JlJ3MgbGF3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9vcmUlMjdzX2xhdyIsIkludGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWwiLCJHb3Jkb24gTW9vcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb3Jkb25fTW9vcmUiLCJbMTI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzkiLCJIdWFuZydzIGxhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YW5nJTI3c19sYXciLCJbMTMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNDAiLCJOdmlkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OdmlkaWEiLCJKZW5zZW4gSHVhbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KZW5zZW5fSHVhbmciLCJBcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJzZWFyY2ggZW5naW5lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9lbmdpbmVzIiwidGFyZ2V0aW5nIG9ubGluZSBhZHZlcnRpc2VtZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhcmdldGVkX2FkdmVydGlzaW5nIiwiaW50ZXJuZXQgdHJhZmZpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmV0X3RyYWZmaWMiLCJ0YXJnZXRlZCBhZHZlcnRpc2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmtldGluZ19hbmRfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBZFNlbnNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWRTZW5zZSIsIkZhY2Vib29rIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFjZWJvb2siLCJkcm9uZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbm1hbm5lZF9hZXJpYWxfdmVoaWNsZSIsIkFEQVMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZHZhbmNlZF9kcml2ZXItYXNzaXN0YW5jZV9zeXN0ZW0iLCJzZWxmLWRyaXZpbmcgY2FycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbGYtZHJpdmluZ19jYXJzIiwiYXV0b21hdGljIGxhbmd1YWdlIHRyYW5zbGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGljX2xhbmd1YWdlX3RyYW5zbGF0aW9uIiwiTWljcm9zb2Z0IFRyYW5zbGF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb3NvZnRfVHJhbnNsYXRvciIsIkdvb2dsZSBUcmFuc2xhdGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfVHJhbnNsYXRlIiwiQXBwbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9Db21wdXRlciIsIkZhY2UgSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNlX0lEIiwiTWljcm9zb2Z0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0IiwiRGVlcEZhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwRmFjZSIsIkdvb2dsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvb2dsZSIsIkZhY2VOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNlTmV0IiwiaW1hZ2UgbGFiZWxpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9sYWJlbGluZyIsImlQaG90byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lQaG90byIsIlRpa1RvayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rpa1RvayIsIkNoaWVmIGF1dG9tYXRpb24gb2ZmaWNlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoaWVmX2F1dG9tYXRpb25fb2ZmaWNlciIsIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIGhlYWx0aGNhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9pbl9oZWFsdGhjYXJlIiwibWVkaWNpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFsdGhfZXF1aXR5IiwibWVkaWNhbCByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfcmVzZWFyY2giLCJbMTMxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNDEiLCJIaXBwb2NyYXRpYyBPYXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlwcG9jcmF0aWNfT2F0aCIsIlsxMzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0MiIsIlsxMzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0MyIsImJpZyBkYXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlnX2RhdGEiLCJvcmdhbm9pZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZ2Fub2lkIiwidGlzc3VlIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGlzc3VlX2VuZ2luZWVyaW5nIiwibWljcm9zY29weSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc2NvcHkiLCJbMTM0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1CYXgtMjAyMy0xNDQiLCJBbHBoYUZvbGQgMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhRm9sZF8yIiwic3RydWN0dXJlIG9mIGEgcHJvdGVpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3RlaW5fc3RydWN0dXJlIiwiWzEzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTQ1IiwiWzEzNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTQ2IiwiUGFya2luc29uJ3MgZGlzZWFzZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcmtpbnNvbiUyN3NfZGlzZWFzZSIsImFscGhhLXN5bnVjbGVpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhLXN5bnVjbGVpbiIsIlsxMzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0NyIsIlsxMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0OCIsIkdhbWUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiR2FtZSBwbGF5aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FtZV9BSSIsIlsxMzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0OSIsIkRlZXAgQmx1ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lCTV9EZWVwX0JsdWUiLCJHYXJyeSBLYXNwYXJvdiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhcnJ5X0thc3Bhcm92IiwiWzE0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTUwIiwiSmVvcGFyZHkhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVvcGFyZHkhIiwicXVpeiBzaG93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVpel9zaG93IiwiSUJNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNIiwicXVlc3Rpb24gYW5zd2VyaW5nIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F1ZXN0aW9uX2Fuc3dlcmluZ19zeXN0ZW0iLCJXYXRzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXRzb25fKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlX3NvZnR3YXJlKSIsIkJyYWQgUnV0dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJhZF9SdXR0ZXIiLCJLZW4gSmVubmluZ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LZW5fSmVubmluZ3MiLCJbMTQxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTEiLCJBbHBoYUdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFHbyIsIkxlZSBTZWRvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xlZV9TZWRvbCIsImNvbXB1dGVyIEdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfR28iLCJoYW5kaWNhcHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb19oYW5kaWNhcHMiLCJkZWZlYXRlZCBLZSBKaWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHBoYUdvX3ZlcnN1c19LZV9KaWUiLCJbMTQyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTIiLCJpbXBlcmZlY3QtaW5mb3JtYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbXBlcmZlY3RfaW5mb3JtYXRpb24iLCJwb2tlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Bva2VyIiwiUGx1cmlidXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QbHVyaWJ1c18ocG9rZXJfYm90KSIsIlsxNDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE1MyIsIkRlZXBNaW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcE1pbmQiLCJNdVplcm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdVplcm8iLCJBdGFyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F0YXJpIiwiWzE0NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU0IiwiU3RhckNyYWZ0IElJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhckNyYWZ0X0lJIiwiWzE0NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU1IiwiR3JhbiBUdXJpc21vIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3Jhbl9UdXJpc21vXyhzZXJpZXMpIiwiWzE0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU2Iiwib3Blbi13b3JsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4td29ybGQiLCJbMTQ3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTciLCJHUFQtNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00IiwiTExhTWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MbGFtYV8obGFuZ3VhZ2VfbW9kZWwpIiwiTWlzdHJhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pc3RyYWxfQUkiLCJzdXBlcnZpc2VkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3VwZXJ2aXNlZF9sZWFybmluZyIsImZpbmUtdHVuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluZS10dW5pbmdfKGRlZXBfbGVhcm5pbmcpIiwiY2xhc3NpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGFzc2lmaWVyXyhtYXRoZW1hdGljcykiLCJbMTQ4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTgiLCJbMTQ5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTkiLCJbMTUwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjAiLCJNb250ZSBDYXJsbyB0cmVlIHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vbnRlX0NhcmxvX3RyZWVfc2VhcmNoIiwiUXdlbi03QiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F3ZW4iLCJBSU1FIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1lcmljYW5fSW52aXRhdGlvbmFsX01hdGhlbWF0aWNzX0V4YW1pbmF0aW9uIiwiWzE1MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTYxIiwiQWxwaGFHZW9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhR2VvbWV0cnkiLCJHb29nbGUgRGVlcE1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfRGVlcE1pbmQiLCJbMTUyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjIiLCJFbGV1dGhlckFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWxldXRoZXJBSSIsIlsxNTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2MyIsIlsxNTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2NCIsIkxlYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZWFuXyhwcm9vZl9hc3Npc3RhbnQpIiwiWzE1NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTY1IiwiVG9wb2xvZ2ljYWwgZGVlcCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RvcG9sb2dpY2FsX2RlZXBfbGVhcm5pbmciLCJ0b3BvbG9naWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RvcG9sb2d5IiwiWzE1Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTY2IiwiV29ybGQgUGVuc2lvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JsZF9QZW5zaW9uc18lMjZfSW52ZXN0bWVudHNfRm9ydW0iLCJbMTU3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjciLCJNaWxpdGFyeSBhcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWxpdGFyeV9hcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbMTU4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1DUlMtMjAxOS0xNjgiLCJjb21tYW5kIGFuZCBjb250cm9sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tbWFuZF9hbmRfY29udHJvbCIsIlsxNTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVNseXVzYXItMjAxOS0xNjkiLCJ0YXJnZXQgYWNxdWlzaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJnZXRfYWNxdWlzaXRpb24iLCJKb2ludCBGaXJlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZvcndhcmRfb2JzZXJ2ZXJzX2luX3RoZV9VLlMuX21pbGl0YXJ5IiwiWzE2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTcwIiwiWzE2MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGF2aWVzLTIwMjMtMTcxIiwiWzE2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTcyIiwiVmluY2VudCB2YW4gR29naCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZpbmNlbnRfdmFuX0dvZ2giLCJHZW5lcmF0aXZlIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsImVkaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9R2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249ZWRpdCIsIlsxNjNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3MyIsIlsxNjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NCIsIlsxNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NSIsIlsxNjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NiIsImxlYXJuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9sZWFybmluZyIsInRyYWluaW5nIGRhdGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFpbmluZ19kYXRhIiwiWzE2N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV86MC0xNzciLCJbMTY4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNzgiLCJwcm9tcHRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvbXB0XyhuYXR1cmFsX2xhbmd1YWdlKSIsIlsxNjldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUdlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2Vfbnl0aW1lcy0xNzkiLCJbMTcwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1HZW5lcmF0aXZlX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2Jsb29tYmVyZy0xODAiLCJ0cmFuc2Zvcm1lciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RyYW5zZm9ybWVyXyhtYWNoaW5lX2xlYXJuaW5nX21vZGVsKSIsImRlZXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwidGV4dC10by1pbWFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RleHQtdG8taW1hZ2UiLCJhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbWFnZSBnZW5lcmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfYXJ0IiwiU3RhYmxlIERpZmZ1c2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0YWJsZV9EaWZmdXNpb24iLCJNaWRqb3VybmV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlkam91cm5leSIsIkRBTEwtRSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RBTEwtRSIsInRleHQtdG8tdmlkZW8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXh0LXRvLXZpZGVvX21vZGVsIiwiU29yYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvcmFfKHRleHQtdG8tdmlkZW9fbW9kZWwpIiwiWzE3MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9ueXRpbWVzLWdwdDQtMTgxIiwiWzE3Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTgyIiwiWzE3M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTgzIiwiWzE3NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV86NC0xODQiLCJPcGVuQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuQUkiLCJBbnRocm9waWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbnRocm9waWMiLCJCYWlkdSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhaWR1IiwiWzE3NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9lY29ub21pc3QxLTE4NSIsIlsxNzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE4NiIsIlsxNzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE4NyIsIlsxNzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUdlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfZWNvbm9taXN0Mi0xODgiLCJbMTc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xODkiLCJbMTgwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1HZW5lcmF0aXZlX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX21ja2luc2V5LTE5MCIsIlsxODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5MSIsImN5YmVyY3JpbWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJlcmNyaW1lIiwiZmFrZSBuZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFrZV9uZXdzIiwiZGVlcGZha2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcGZha2VzIiwidGhlIG1hc3MgcmVwbGFjZW1lbnQgb2YgaHVtYW4gam9icyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlY2hub2xvZ2ljYWxfdW5lbXBsb3ltZW50IiwiWzE4Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkyIiwiWzE4M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkzIiwiWzE4NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTk0IiwiZ2FtZS1wbGF5aW5nIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaWRlb19nYW1lX2NvbnNvbGUiLCJpbmR1c3RyaWFsIHJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdXN0cmlhbF9yb2JvdGljcyIsIlsxODVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NSIsIlsxODZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NiIsIlsxODddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NyIsIlsxODhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5OCIsInRlbGVkaWxkb25pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWxlZGlsZG9uaWNzIiwiWzE4OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTk5IiwiWzE5MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjAwIiwiUmVwbGlrYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlcGxpa2EiLCJbMTkxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDEiLCJkZWVwZmFrZSBwb3Jub2dyYXBoeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBmYWtlX3Bvcm5vZ3JhcGh5IiwiWzE5Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjAyIiwib25saW5lIGdlbmRlci1iYXNlZCB2aW9sZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV9nZW5kZXItYmFzZWRfdmlvbGVuY2UiLCJzZXh1YWwgZ3Jvb21pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXh1YWxfZ3Jvb21pbmciLCJbMTkzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDMiLCJbMTk0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDQiLCJbMTk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDUiLCJlbmVyZ3kgc3RvcmFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZXJneV9zdG9yYWdlIiwiZm9yZWlnbiBwb2xpY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3JlaWduX3BvbGljeSIsImRpc2FzdGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzYXN0ZXIiLCJbMTk2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDYiLCJbMTk3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDciLCJbMTk4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDgiLCJwcmVkaWN0aXZlIGFuYWx5dGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByZWRpY3RpdmVfYW5hbHl0aWNzIiwiMjAyNCBJbmRpYW4gZWxlY3Rpb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvMjAyNF9JbmRpYW5fZ2VuZXJhbF9lbGVjdGlvbiIsIlsxOTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIwOSIsIkV0aGljcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V0aGljc19vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlsyMDBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIxMCIsIkRlbWlzIEhhc3NhYmlzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVtaXNfSGFzc2FiaXMiLCJbMjAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNpbW9uaXRlMjAxNi0yMTEiLCJbMjAyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTg3LTIxMiIsIlsyMDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGFza293c2tpMjAyMy0yMTMiLCJJbmZvcm1hdGlvbiBwcml2YWN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fcHJpdmFjeSIsIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBjb3B5cmlnaHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hbmRfY29weXJpZ2h0IiwicHJpdmFjeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByaXZhY3kiLCJzdXJ2ZWlsbGFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXJ2ZWlsbGFuY2UiLCJjb3B5cmlnaHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3B5cmlnaHQiLCJbMjA0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUdBTzIwMjItMjE0IiwidGVtcG9yYXJ5IHdvcmtlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wb3Jhcnlfd29ya2VyIiwiWzIwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVWYWxpbnNreTIwMTktMjE1IiwibmVjZXNzYXJ5IGV2aWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZWNlc3NhcnlfZXZpbCIsInVuZXRoaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuZXRoaWNhbCIsInJpZ2h0IHRvIHByaXZhY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SaWdodF90b19wcml2YWN5IiwiWzIwNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk5MS0yMTYiLCJkYXRhIGFnZ3JlZ2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9hZ2dyZWdhdGlvbiIsImRlLWlkZW50aWZpY2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGUtaWRlbnRpZmljYXRpb24iLCJkaWZmZXJlbnRpYWwgcHJpdmFjeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF9wcml2YWN5IiwiWzIwN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk5MSVFMiU4MCU5Mzk5Mi0yMTciLCJDeW50aGlhIER3b3JrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3ludGhpYV9Ed29yayIsImZhaXJuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFpcm5lc3NfKG1hY2hpbmVfbGVhcm5pbmcpIiwiQnJpYW4gQ2hyaXN0aWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJpYW5fQ2hyaXN0aWFuIiwiWzIwOF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwNjMtMjE4IiwiZmFpciB1c2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWlyX3VzZSIsIlsyMDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmluY2VudDIwMjItMjE5IiwiWzIxMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjIwIiwicm9ib3RzLnR4dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90cy50eHQiLCJbMjExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjEiLCJKb2huIEdyaXNoYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX0dyaXNoYW0iLCJKb25hdGhhbiBGcmFuemVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9uYXRoYW5fRnJhbnplbiIsIlsyMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUmVpc25lcjIwMjMtMjIyIiwiWzIxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVBbHRlckhhcnJpczIwMjMtMjIzIiwic3VpIGdlbmVyaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWlfZ2VuZXJpcyIsIlsyMTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNCIsIkJpZyBUZWNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlnX1RlY2giLCJBbHBoYWJldCBJbmMuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFiZXRfSW5jLiIsIkFwcGxlIEluYy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9JbmMuIiwiTWV0YSBQbGF0Zm9ybXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRhX1BsYXRmb3JtcyIsIlsyMTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNSIsIlsyMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNiIsIlsyMTddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNyIsImNsb3VkIGluZnJhc3RydWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xvdWRfY29tcHV0aW5nIiwiY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nIiwiZGF0YSBjZW50ZXJzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9jZW50ZXIiLCJbMjE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjgiLCJbMjE5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjkiLCJFbnZpcm9ubWVudGFsIGltcGFjdHMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbnZpcm9ubWVudGFsX2ltcGFjdHNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJJbnRlcm5hdGlvbmFsIEVuZXJneSBBZ2VuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlcm5hdGlvbmFsX0VuZXJneV9BZ2VuY3kiLCJbMjIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzAiLCJbMjIxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzEiLCJbMjIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzIiLCJHb2xkbWFuIFNhY2hzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29sZG1hbl9TYWNocyIsIlsyMjNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzMyIsIlsyMjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzNCIsIlsyMjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzNSIsIkplbi1Ic3VuIEh1YW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVuLUhzdW5fSHVhbmciLCJbMjI2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzYiLCJDb25zdGVsbGF0aW9uIEVuZXJneSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0ZWxsYXRpb25fRW5lcmd5IiwiVGhyZWUgTWlsZSBJc2xhbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaHJlZV9NaWxlX0lzbGFuZCIsIk51Y2xlYXIgUmVndWxhdG9yeSBDb21taXNzaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVjbGVhcl9SZWd1bGF0b3J5X0NvbW1pc3Npb24iLCJJbmZsYXRpb24gUmVkdWN0aW9uIEFjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZmxhdGlvbl9SZWR1Y3Rpb25fQWN0IiwiWzIyN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjM3IiwiUGFsaXNhZGVzIE51Y2xlYXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWxpc2FkZXNfTnVjbGVhcl9HZW5lcmF0aW5nX1N0YXRpb24iLCJFeGVsb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeGVsb24iLCJbMjI4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzgiLCJUYWl3YW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWl3YW4iLCJUYW95dWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFveXVhbixfVGFpd2FuIiwiWzIyOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGF0YWNlbnRlckR5bmFtaWNzLTIzOSIsInBoYXNlIG91dCBudWNsZWFyIHBvd2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVjbGVhcl9wb3dlcl9waGFzZS1vdXQiLCJTaW5nYXBvcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaW5nYXBvcmUiLCJGdWt1c2hpbWEgbnVjbGVhciBhY2NpZGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1a3VzaGltYV9udWNsZWFyX2FjY2lkZW50IiwiWzIzMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtYmxvb21iZXJnanAtMjQwIiwiRmVkZXJhbCBFbmVyZ3kgUmVndWxhdG9yeSBDb21taXNzaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVkZXJhbF9FbmVyZ3lfUmVndWxhdG9yeV9Db21taXNzaW9uIiwiVGFsZW4gRW5lcmd5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFsZW5fRW5lcmd5IiwiU3VzcXVlaGFubmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXNxdWVoYW5uYV9TdGVhbV9FbGVjdHJpY19TdGF0aW9uIiwiWzIzMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtQmxvb21iZXJnMjAyNDExMDQtMjQxIiwiV2lsbGllIEwuIFBoaWxsaXBzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lsbGllX0wuX1BoaWxsaXBzIiwiWW91VHViZSDCpyBNb2RlcmF0aW9uIGFuZCBvZmZlbnNpdmUgY29udGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvdVR1YmUjTW9kZXJhdGlvbl9hbmRfb2ZmZW5zaXZlX2NvbnRlbnQiLCJyZWNvbW1lbmRlciBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjb21tZW5kZXJfc3lzdGVtIiwibWF4aW1pemluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGhlbWF0aWNhbF9vcHRpbWl6YXRpb24iLCJtaXNpbmZvcm1hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pc2luZm9ybWF0aW9uIiwiY29uc3BpcmFjeSB0aGVvcmllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNwaXJhY3lfdGhlb3JpZXMiLCJwYXJ0aXNhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcnRpc2FuXyhwb2xpdGljcykiLCJmaWx0ZXIgYnViYmxlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpbHRlcl9idWJibGVzIiwiWzIzMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOaWNhczIwMTgtMjQyIiwiWzIzM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjQzIiwiY2l0YXRpb24gbmVlZGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkNpdGF0aW9uX25lZWRlZCIsImdlbmVyYXRpdmUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX0FJIiwiWzIzNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVXaWxsaWFtczIwMjMtMjQ0IiwiR2VvZmZyZXkgSGludG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZmZyZXlfSGludG9uIiwiWzIzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUYXlsb3JIZXJuMjAyMy0yNDUiLCJBbGdvcml0aG1pYyBiaWFzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxnb3JpdGhtaWNfYmlhcyIsIkZhaXJuZXNzIChtYWNoaW5lIGxlYXJuaW5nKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhaXJuZXNzXyhtYWNoaW5lX2xlYXJuaW5nKSIsImJpYXNlZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2JpYXMiLCJba10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjQ3IiwiWzIzN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSb3NlMjAyMy0yNDgiLCJbMjM4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNOQTIwMTktMjQ5IiwiWzIzOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVHb2ZmcmV5MjAwODE3LTI1MCIsImhhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtIiwiZmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NyZWRpdF9yYXRpbmciLCJyZWNydWl0bWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY3J1aXRtZW50IiwiaG91c2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B1YmxpY19ob3VzaW5nIiwicG9saWNpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb2xpY2luZyIsImRpc2NyaW1pbmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzY3JpbWluYXRpb24iLCJbMjQwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNTEiLCJHb29nbGUgUGhvdG9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX1Bob3RvcyIsIlsyNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hyaXN0aWFuMjAyMDI1LTI1MiIsIlsyNDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5OTUtMjUzIiwiWzI0M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVHcmFudEhpbGwyMDIzLTI1NCIsIkNPTVBBUyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NPTVBBU18oc29mdHdhcmUpIiwiVS5TLiBjb3VydHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VLlMuX2NvdXJ0IiwiZGVmZW5kYW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmZW5kYW50IiwicmVjaWRpdmlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY2lkaXZpc3QiLCJKdWxpYSBBbmd3aW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWxpYV9Bbmd3aW4iLCJQcm9QdWJsaWNhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvUHVibGljYSIsIlsyNDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGFyc29uQW5nd2luMjAxNi0yNTUiLCJbbF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU3IiwiWzI0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU4IiwiWzI0N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU5IiwiWzI0OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYwIiwiWzI0OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYxIiwiW21dIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI2MyIsImRpc3RyaWJ1dGl2ZSBmYWlybmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGl2ZV9qdXN0aWNlIiwic3RlcmVvdHlwZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVyZW90eXBlIiwiYW50aS1kaXNjcmltaW5hdGlvbiBsYXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aS1kaXNjcmltaW5hdGlvbl9sYXciLCJbMjM2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TYW11ZWwtMjAyMi0yNDYiLCJDb25mZXJlbmNlIG9uIEZhaXJuZXNzLCBBY2NvdW50YWJpbGl0eSwgYW5kIFRyYW5zcGFyZW5jeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FDTV9Db25mZXJlbmNlX29uX0ZhaXJuZXNzLF9BY2NvdW50YWJpbGl0eSxfYW5kX1RyYW5zcGFyZW5jeSIsIkFzc29jaWF0aW9uIGZvciBDb21wdXRpbmcgTWFjaGluZXJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNzb2NpYXRpb25fZm9yX0NvbXB1dGluZ19NYWNoaW5lcnkiLCJkdWJpb3VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkFjY3VyYWN5X2Rpc3B1dGUjRGlzcHV0ZWRfc3RhdGVtZW50IiwiZGlzY3VzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhbGs6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRHViaW91cyIsIlsyNTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9ja3JpbGwyMDIyLTI2NCIsIkV4cGxhaW5hYmxlIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwbGFpbmFibGVfQUkiLCJBbGdvcml0aG1pYyB0cmFuc3BhcmVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGdvcml0aG1pY190cmFuc3BhcmVuY3kiLCJSaWdodCB0byBleHBsYW5hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JpZ2h0X3RvX2V4cGxhbmF0aW9uIiwiWzI1Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTYW1wbGUyMDE3LTI2NSIsImRlZXAgbmV1cmFsIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcF9uZXVyYWxfbmV0d29ya3MiLCJsaW5lYXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXIiLCJbMjUzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNjYiLCJydWxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1J1bGVyIiwiWzI1NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwMTEwLTI2NyIsIlsyNTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hyaXN0aWFuMjAyMDg4JUUyJTgwJTkzOTEtMjY4IiwiWzI1Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjY5IiwiR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWxfRGF0YV9Qcm90ZWN0aW9uX1JlZ3VsYXRpb24iLCJbbl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjcwIiwiWzI1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwOTEtMjcxIiwiREFSUEEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EQVJQQSIsIlhBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGxhaW5hYmxlX0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiWzI1OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwODMtMjcyIiwiWzI1OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVWZXJtYTIwMjEtMjczIiwiWzI2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSb3RobWFuMjAyMC0yNzQiLCJNdWx0aXRhc2sgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aXRhc2tfbGVhcm5pbmciLCJbMjYxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjAxMDUlRTIlODAlOTMxMDgtMjc1IiwiRGVjb252b2x1dGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY29udm9sdXRpb24iLCJEZWVwRHJlYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwRHJlYW0iLCJbMjYyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjAxMDglRTIlODAlOTMxMTItMjc2IiwiZ2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX3ByZS10cmFpbmVkX3RyYW5zZm9ybWVyIiwiZGljdGlvbmFyeSBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpY3Rpb25hcnlfbGVhcm5pbmciLCJbMjYzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNzciLCJMZXRoYWwgYXV0b25vbW91cyB3ZWFwb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXRoYWxfYXV0b25vbW91c193ZWFwb24iLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBhcm1zIHJhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hcm1zX3JhY2UiLCJiYWQgYWN0b3JzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFkX2FjdG9yIiwiYXV0aG9yaXRhcmlhbiBnb3Zlcm5tZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dGhvcml0YXJpYW4iLCJ0ZXJyb3Jpc3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVycm9yaXN0IiwiY3JpbWluYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3JpbWluYWxzIiwicm9ndWUgc3RhdGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ndWVfc3RhdGVzIiwiW29dIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI3OSIsIndlYXBvbnMgb2YgbWFzcyBkZXN0cnVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYXBvbnNfb2ZfbWFzc19kZXN0cnVjdGlvbiIsIlsyNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5ODclRTIlODAlOTM5OTAtMjgwIiwia2lsbCBhbiBpbm5vY2VudCBwZXJzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdXJkZXIiLCJVbml0ZWQgTmF0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXRlZF9OYXRpb25zIiwiQ29udmVudGlvbiBvbiBDZXJ0YWluIENvbnZlbnRpb25hbCBXZWFwb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udmVudGlvbl9vbl9DZXJ0YWluX0NvbnZlbnRpb25hbF9XZWFwb25zIiwiVW5pdGVkIFN0YXRlcyI6Imh0dHBzOi8vaWQubG9jLmdvdi9hdXRob3JpdGllcy9zaDg1MDA4MTgwIiwiWzI2Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk4OC0yODEiLCJbMjY3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yODIiLCJGYWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFjaWFsX3JlY29nbml0aW9uX3N5c3RlbSIsInZvaWNlIHJlY29nbml0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlYWtlcl9yZWNvZ25pdGlvbiIsImNsYXNzaWZ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xhc3NpZmllcl8obWFjaGluZV9sZWFybmluZykiLCJSZWNvbW1lbmRhdGlvbiBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjb21tZW5kYXRpb25fc3lzdGVtcyIsInByb3BhZ2FuZGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wYWdhbmRhIiwiRGVlcGZha2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcGZha2VzIiwiY2VudHJhbGl6ZWQgZGVjaXNpb24gbWFraW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vY3JhY3kiLCJtYXJrZXRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFya2V0XyhlY29ub21pY3MpIiwiZGlnaXRhbCB3YXJmYXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlnaXRhbF93YXJmYXJlIiwiYWR2YW5jZWQgc3B5d2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NweXdhcmUiLCJbMjY4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhcmFyaTIwMTgtMjgzIiwiZmFjaWFsIHJlY29nbml0aW9uIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNpYWxfcmVjb2duaXRpb25fc3lzdGVtIiwibWFzcyBzdXJ2ZWlsbGFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXNzX3N1cnZlaWxsYW5jZSIsIlsyNjldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4NCIsIlsyNzBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4NSIsIlsyNzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVXJiaW5hTGVudHpvc0ludmVybml6emlFa2luczIwMjItMjg2IiwiV29ya3BsYWNlIGltcGFjdCBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmtwbGFjZV9pbXBhY3Rfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJUZWNobm9sb2dpY2FsIHVuZW1wbG95bWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlY2hub2xvZ2ljYWxfdW5lbXBsb3ltZW50IiwiWzI3Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRS0yODciLCJbMjczXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yODgiLCJ1bmVtcGxveW1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmVtcGxveW1lbnQiLCJwcm9kdWN0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9kdWN0aXZpdHkiLCJyZWRpc3RyaWJ1dGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVkaXN0cmlidXRpb25fb2ZfaW5jb21lX2FuZF93ZWFsdGgiLCJbMjc0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUlHTV9DaGljYWdvMjAxNy0yODkiLCJDYXJsIEJlbmVkaWt0IEZyZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXJsX0JlbmVkaWt0X0ZyZXkiLCJbcF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkxIiwiWzI3Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkyIiwiWzI3N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkzIiwiWzI3OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjk0IiwiVGhlIEVjb25vbWlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9FY29ub21pc3QiLCJbMjc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1vcmdlbnN0ZXJuMjAxNS0yOTUiLCJwYXJhbGVnYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFyYWxlZ2FsIiwiWzI4MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjk2IiwiSm9zZXBoIFdlaXplbmJhdW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb3NlcGhfV2VpemVuYmF1bSIsIlsyODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI5NyIsIkV4aXN0ZW50aWFsIHJpc2sgZnJvbSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4aXN0ZW50aWFsX3Jpc2tfZnJvbV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlN0ZXBoZW4gSGF3a2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0ZXBoZW5fSGF3a2luZyIsInNwZWxsIHRoZSBlbmQgb2YgdGhlIGh1bWFuIHJhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9iYWxfY2F0YXN0cm9waGljX3Jpc2siLCJbMjgyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNlbGxhbi1Kb25lczIwMTQtMjk4IiwiW3FdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMwMCIsInNlbnRpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbnRpZW5jZSIsIk5pY2sgQm9zdHJvbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pY2tfQm9zdHJvbSIsInBhcGVyY2xpcCBmYWN0b3J5IG1hbmFnZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnN0cnVtZW50YWxfY29udmVyZ2VuY2UjUGFwZXJjbGlwX21heGltaXplciIsIlsyODRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQm9zdHJvbTIwMTQtMzAxIiwiU3R1YXJ0IFJ1c3NlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsIlsyODVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbDIwMTktMzAyIiwic3VwZXJpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZSIsImFsaWduZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9hbGlnbm1lbnQiLCJbMjg2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDMiLCJZdXZhbCBOb2FoIEhhcmFyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1l1dmFsX05vYWhfSGFyYXJpIiwiaWRlb2xvZ2llcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lkZW9sb2dpZXMiLCJsYXciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXciLCJnb3Zlcm5tZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR292ZXJubWVudCIsIm1vbmV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9uZXkiLCJlY29ub215IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWNvbm9teSIsImxhbmd1YWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFuZ3VhZ2UiLCJbMjg3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhcmFyaTIwMjMtMzA0IiwiWzI4OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVNJUMzJUJDbGxlckJvc3Ryb20yMDE0LTMwNSIsIkJpbGwgR2F0ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWxsX0dhdGVzIiwiRWxvbiBNdXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWxvbl9NdXNrIiwiWzI4OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzA2IiwiWW9zaHVhIEJlbmdpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvc2h1YV9CZW5naW8iLCJTYW0gQWx0bWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtX0FsdG1hbiIsIlsyOTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMwNyIsIkFJIHRha2VvdmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfdGFrZW92ZXIiLCJbMjkxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDgiLCJbMjkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDkiLCJ0aGUgam9pbnQgc3RhdGVtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVtZW50X29uX0FJX3Jpc2tfb2ZfZXh0aW5jdGlvbiIsIlsyOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmFsYW5jZTIwMjMtMzEwIiwiSsO8cmdlbiBTY2htaWRodWJlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0olQzMlQkNyZ2VuX1NjaG1pZGh1YmVyIiwiWzI5NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzExIiwiWzI5NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzEyIiwiWzI5Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzEzIiwiQW5kcmV3IE5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5kcmV3X05nIiwiWzI5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzE0IiwiWWFubiBMZUN1biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lhbm5fTGVDdW4iLCJbMjk4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMTUiLCJbMjk5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMTYiLCJbMzAwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjA2NyxfNzMtMzE3IiwiTWFjaGluZSBldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2V0aGljcyIsIkZyaWVuZGx5IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJpZW5kbHlfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBcnRpZmljaWFsIG1vcmFsIGFnZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbW9yYWxfYWdlbnRzIiwiSHVtYW4gQ29tcGF0aWJsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX0NvbXBhdGlibGUiLCJFbGllemVyIFl1ZGtvd3NreSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsaWV6ZXJfWXVka293c2t5IiwiWzMwMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVZdWRrb3dza3kyMDA4LTMxOCIsIlszMDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQW5kZXJzb25BbmRlcnNvbjIwMTEtMzE5IiwiQUFBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FBQUkiLCJbMzAzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUFBQUkyMDE0LTMyMCIsIldlbmRlbGwgV2FsbGFjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlbmRlbGxfV2FsbGFjaCIsIlszMDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFV2FsbGFjaDIwMTAtMzIxIiwiU3R1YXJ0IEouIFJ1c3NlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsInRocmVlIHByaW5jaXBsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9Db21wYXRpYmxlI1J1c3NlbGwnc190aHJlZV9wcmluY2lwbGVzIiwiWzMwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsMjAxOTE3My0zMjIiLCJIdWdnaW5nIEZhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWdnaW5nX0ZhY2UiLCJbMzA2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjMiLCJbMzA3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjQiLCJNZXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0YV9QbGF0Zm9ybXMiLCJbMzA4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjUiLCJMbGFtYSAyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTExhTUEiLCJbMzA5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjYiLCJbMzEwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjciLCJmaW5lLXR1bmVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluZS10dW5pbmdfKGRlZXBfbGVhcm5pbmcpIiwiWzMxMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzI4IiwiYmlvdGVycm9yaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvdGVycm9yaXNtIiwiWzMxMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzI5IiwiQWxhbiBUdXJpbmcgSW5zdGl0dXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxhbl9UdXJpbmdfSW5zdGl0dXRlIiwiWzMxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzMwIiwiWzMxNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzMxIiwiQXNpbG9tYXIgQ29uZmVyZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FzaWxvbWFyX0NvbmZlcmVuY2Vfb25fQmVuZWZpY2lhbF9BSSIsIlszMTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzMiIsIlszMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzMyIsIlszMTddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzNCIsIlVLIEFJIFNhZmV0eSBJbnN0aXR1dGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9TYWZldHlfSW5zdGl0dXRlXyhVbml0ZWRfS2luZ2RvbSkiLCJbMzE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMzUiLCJSZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhdGlvbl9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXRpb25fb2ZfYWxnb3JpdGhtcyIsIkFJIFNhZmV0eSBTdW1taXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9TYWZldHlfU3VtbWl0IiwiWzMxOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzM2IiwiWzMyMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVMYXdfTGlicmFyeV9vZl9Db25ncmVzc18oVS5TLikuX0dsb2JhbF9MZWdhbF9SZXNlYXJjaF9EaXJlY3RvcmF0ZTIwMTktMzM3IiwiU3RhbmZvcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFuZm9yZCIsIlszMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmluY2VudDIwMjMtMzM4IiwiWzMyMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTdGFuZm9yZF9Vbml2ZXJzaXR5MjAyMy0zMzkiLCJbMzIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVVORVNDTzIwMjEtMzQwIiwiR2xvYmFsIFBhcnRuZXJzaGlwIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvYmFsX1BhcnRuZXJzaGlwX29uX0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiSGVucnkgS2lzc2luZ2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucnlfS2lzc2luZ2VyIiwiRXJpYyBTY2htaWR0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXJpY19TY2htaWR0IiwiRGFuaWVsIEh1dHRlbmxvY2hlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbF9IdXR0ZW5sb2NoZXIiLCJbMzI0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUtpc3NpbmdlcjIwMjEtMzQxIiwiWzMyNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVBbHRtYW5Ccm9ja21hblN1dHNrZXZlcjIwMjMtMzQyIiwiWzMyNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQzIiwiQ291bmNpbCBvZiBFdXJvcGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3VuY2lsX29mX0V1cm9wZSIsIkZyYW1ld29yayBDb252ZW50aW9uIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIdW1hbiBSaWdodHMsIERlbW9jcmFjeSBhbmQgdGhlIFJ1bGUgb2YgTGF3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWV3b3JrX0NvbnZlbnRpb25fb25fQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2VfYW5kX0h1bWFuX1JpZ2h0cyxfRGVtb2NyYWN5X2FuZF90aGVfUnVsZV9vZl9MYXciLCJbMzI3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNDQiLCJJcHNvcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lwc29zIiwiUmV1dGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JldXRlcnMiLCJbMzI4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUVkd2FyZHMyMDIzLTM0NSIsIkZveCBOZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm94X05ld3MiLCJbMzI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUthc3Blcm93aWN6MjAyMy0zNDYiLCJbMzMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUZveF9OZXdzMjAyMy0zNDciLCJCbGV0Y2hsZXkgUGFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JsZXRjaGxleV9QYXJrIiwiWzMzMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQ4IiwiWzMzMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQ5IiwiWzMzM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUwIiwiQUkgU2VvdWwgU3VtbWl0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfU2VvdWxfU3VtbWl0IiwiWzMzNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUxIiwiWzMzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUyIiwiSGlzdG9yeSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJUaW1lbGluZSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RpbWVsaW5lX29mX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiQWxhbiBUdXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGFuX1R1cmluZyIsInRoZW9yeSBvZiBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeV9vZl9jb21wdXRhdGlvbiIsIlszMzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5LTM1MyIsIlszMzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUNsYXJlbmRvbl9QcmVzcy0yMDA0LTM1NCIsImN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY3MiLCJpbmZvcm1hdGlvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl90aGVvcnkiLCJuZXVyb2Jpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2Jpb2xvZ3kiLCJbcl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzU2IiwiWzMzOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzU3IiwiTWNDdWxsb3VjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhcnJlbl9NY0N1bGxvdWNoIiwiUGl0dHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYWx0ZXJfUGl0dHMiLCJbMTE1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMTctMTIzIiwiQ29tcHV0aW5nIE1hY2hpbmVyeSBhbmQgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nX01hY2hpbmVyeV9hbmRfSW50ZWxsaWdlbmNlIiwiWzM0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtVHVyaW5nLTM1OCIsImEgd29ya3Nob3AiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXJ0bW91dGhfd29ya3Nob3AiLCJEYXJ0bW91dGggQ29sbGVnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhcnRtb3V0aF9Db2xsZWdlIiwiW3NdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2MCIsIlt0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNjIiLCJbdV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzY0IiwiY2hlY2tlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGVja2VycyIsImxvZ2ljYWwgdGhlb3JlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVvcmVtIiwiW3ZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2NSIsImdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIlszNDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTmV3cXVpc3QxOTk0ODYlRTIlODAlOTM4Ni0zNjYiLCJIZXJiZXJ0IFNpbW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIlszNDVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2NyIsIk1hcnZpbiBNaW5za3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ2aW5fTWluc2t5IiwiWzM0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzY4IiwiW3ddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM3MCIsImNyaXRpY2lzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpZ2h0aGlsbF9yZXBvcnQiLCJTaXIgSmFtZXMgTGlnaHRoaWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lyX0phbWVzX0xpZ2h0aGlsbCIsIlszNDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGlnaHRoaWxsMTk3My0zNzEiLCJmdW5kIG1vcmUgcHJvZHVjdGl2ZSBwcm9qZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hbnNmaWVsZF9BbWVuZG1lbnQiLCJbMzQ5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5SQzE5OTkyMTIlRTIlODAlOTMyMTMtMzcyIiwiTWluc2t5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFydmluX01pbnNreSIsIlBhcGVydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcGVydCIsIlszNTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjEyMi0zNzMiLCJleHBlcnQgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVydF9zeXN0ZW0iLCJbMzUxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNzQiLCJmaWZ0aCBnZW5lcmF0aW9uIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlmdGhfZ2VuZXJhdGlvbl9jb21wdXRlciIsImFjYWRlbWljIHJlc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWNhZGVtaWNfcmVzZWFyY2giLCJMaXNwIE1hY2hpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXNwX01hY2hpbmUiLCJzeW1ib2xzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltYm9saWNfQUkiLCJtZW50YWwgb2JqZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lbnRhbF9vYmplY3RzIiwicGF0dGVybiByZWNvZ25pdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdHRlcm5fcmVjb2duaXRpb24iLCJbMzUyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjQtMzc1IiwiWzM1M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOaWxzc29uMTk5ODctMzc2IiwiUm9kbmV5IEJyb29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvZG5leV9Ccm9va3MiLCJbeF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzgxIiwiSnVkZWEgUGVhcmwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWRlYV9QZWFybCIsIkxvZnRpIFphZGVoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9mdGlfWmFkZWgiLCJbMzU4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjUtMzgyIiwiY29ubmVjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3Rpb25pc20iLCJbMzU5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zODMiLCJjb252b2x1dGlvbmFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnZvbHV0aW9uYWxfbmV1cmFsX25ldHdvcmtzIiwiWzM2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTI2LTM4NCIsIm5hcnJvdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI05hcnJvd192cy5fZ2VuZXJhbF9BSSIsIm1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX29wdGltaXphdGlvbiIsIlszNjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZvcm1hbF9hbmRfbmFycm93X21ldGhvZHNfYWRvcHRlZF9pbl90aGVfMTk5MHMtMzg1IiwiQUkgZWZmZWN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfZWZmZWN0IiwiWzM2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzg2IiwiW3ldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM4OCIsImZhc3RlciBjb21wdXRlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb29yZSUyN3NfbGF3IiwiWzM2NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzg5IiwiY2xvdWQgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xvdWRfY29tcHV0aW5nIiwiWzM2NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDbGFyazIwMTViLTM5MCIsImxhcmdlIGFtb3VudHMgb2YgZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpZ19kYXRhIiwiWzM2Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzkxIiwiW3pdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5MiIsImFsaWdubWVudCBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfYWxpZ25tZW50IiwiQUdJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIkdvIHBsYXllciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvX3BsYXllciIsIkdQVC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BULTMiLCJsYXJnZSBsYW5ndWFnZSBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhcmdlX2xhbmd1YWdlX21vZGVsIiwiWzM2N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzkzIiwiWzM2OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzk0IiwiWzM2OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzk1IiwiWzM3MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVEaUZlbGljaWFudG9uaW8yMDIzLTM5NiIsIlszNzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFR29zd2FtaTIwMjMtMzk3Iiwic3RhcnR1cHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFydHVwX2NvbXBhbnkiLCJbMzcyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zOTgiLCJQaGlsb3NvcGh5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlszNzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5OSIsIlszNzRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUphcm93LTIwMjQtNDAwIiwiZXBpc3RlbW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXBpc3RlbW9sb2d5IiwiZnJlZSB3aWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV93aWxsIiwiWzM3NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDAxIiwiZXRoaWNzIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXRoaWNzX29mX0FJIiwiRGFydG1vdXRoIHdvcmtzaG9wIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFydG1vdXRoX3dvcmtzaG9wIiwiU3ludGhldGljIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bnRoZXRpY19pbnRlbGxpZ2VuY2UiLCJbMzc2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVR1cmluZzE5NTAxLTQwMiIsIndlIGNhbiBub3QgZGV0ZXJtaW5lIHRoZXNlIHRoaW5ncyBhYm91dCBvdGhlciBwZW9wbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ibGVtX29mX290aGVyX21pbmRzIiwiWzM3N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUdXJpbmcxOTUwVW5kZXJfJTIyVGhlX0FyZ3VtZW50X2Zyb21fQ29uc2Npb3VzbmVzcyUyMi00MDMiLCJbMzc4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MDQiLCJSdXNzZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X0ouX1J1c3NlbGwiLCJOb3J2aWciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3J2aWciLCJBZXJvbmF1dGljYWwgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZXJvbmF1dGljcyIsInBpZ2VvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaWdlb24iLCJbMzc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMy00MDUiLCJKb2huIE1jQ2FydGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9NY0NhcnRoeV8oY29tcHV0ZXJfc2NpZW50aXN0KSIsIlszODBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWFrZXIyMDA2LTQwNiIsIlszODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWNDYXJ0aHkxOTk5LTQwNyIsIlszODJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWluc2t5MTk4Ni00MDgiLCJbMzgzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MDkiLCJbMzg0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTAiLCJidXp6d29yZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0J1enp3b3JkIiwiWzM4NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDExIiwicGFyYWRpZ20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJhZGlnbSIsIlthYV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDEzIiwic3ViLXN5bWJvbGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ViLXN5bWJvbGljIiwic29mdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnRfY29tcHV0aW5nIiwiU3ltYm9saWMgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1ib2xpY19BSSIsIkdPRkFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR09GQUkiLCJbMzg3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhdWdlbGFuZDE5ODUxMTIlRTIlODAlOTMxMTctNDE0IiwicGh5c2ljYWwgc3ltYm9sIHN5c3RlbXMgaHlwb3RoZXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoeXNpY2FsX3N5bWJvbF9zeXN0ZW1zX2h5cG90aGVzaXMiLCJbMzg4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTUiLCJNb3JhdmVjJ3MgcGFyYWRveCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vcmF2ZWMlMjdzX3BhcmFkb3giLCJbMzg5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTYiLCJIdWJlcnQgRHJleWZ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YmVydF9EcmV5ZnVzIiwiYXJndWVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHJleWZ1cyUyN19jcml0aXF1ZV9vZl9BSSIsIlszOTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQxNyIsIlthYl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDE5IiwiYWxnb3JpdGhtaWMgYmlhcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2JpYXMiLCJbMzkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUxhbmdsZXkyMDExLTQyMCIsIlszOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFS2F0ejIwMTItNDIxIiwiZXhwbGFpbmFibGUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBsYWluYWJsZV9BSSIsIm5ldXJvLXN5bWJvbGljIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cm8tc3ltYm9saWNfQUkiLCJOZWF0cyBhbmQgc2NydWZmaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVhdHNfYW5kX3NjcnVmZmllcyIsIlszOTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQyMiIsIlNvZnQgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdF9jb21wdXRpbmciLCJnZW5ldGljIGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5ldGljX2FsZ29yaXRobXMiLCJmdXp6eSBsb2dpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1enp5X2xvZ2ljIiwiV2VhayBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYWtfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbMzk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVBlbm5hY2hpbkdvZXJ0emVsMjAwNy00MjMiLCJbMzk2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJvYmVydHMyMDE2LTQyNCIsInBoaWxvc29waHkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfbWluZCIsIm1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kIiwiY29uc2Npb3VzbmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNjaW91c25lc3MiLCJtZW50YWwgc3RhdGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9taW5kIiwiWzM5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk4Ni00MjUiLCJhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBmaWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5fZmljdGlvbiIsIkhhcmQgcHJvYmxlbSBvZiBjb25zY2lvdXNuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZF9wcm9ibGVtX29mX2NvbnNjaW91c25lc3MiLCJUaGVvcnkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeV9vZl9taW5kIiwiRGF2aWQgQ2hhbG1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9DaGFsbWVycyIsIlszOThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hhbG1lcnMxOTk1LTQyNiIsImluZm9ybWF0aW9uIHByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9wcm9jZXNzaW5nXyhwc3ljaG9sb2d5KSIsInN1YmplY3RpdmUgZXhwZXJpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1YmplY3RpdmVfZXhwZXJpZW5jZSIsIlszOTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRGVubmV0dDE5OTEtNDI3IiwiQ29tcHV0YXRpb25hbCB0aGVvcnkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfdGhlb3J5X29mX21pbmQiLCJGdW5jdGlvbmFsaXNtIChwaGlsb3NvcGh5IG9mIG1pbmQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnVuY3Rpb25hbGlzbV8ocGhpbG9zb3BoeV9vZl9taW5kKSIsIm1pbmTigJNib2R5IHByb2JsZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kJUUyJTgwJTkzYm9keV9wcm9ibGVtIiwiSmVycnkgRm9kb3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KZXJyeV9Gb2RvciIsIkhpbGFyeSBQdXRuYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IaWxhcnlfUHV0bmFtIiwiWzQwMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVIb3JzdDIwMDUtNDI4IiwiSm9obiBTZWFybGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX1NlYXJsZSIsInN0cm9uZyBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0cm9uZ19BSV9oeXBvdGhlc2lzIiwiW2FjXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TZWFybGUnc19zdHJvbmdfQUktNDMyIiwiWzQwNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDMzIiwiQUkgaXMgc2VudGllbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW50aWVudF9BSSIsIls0MDVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQzNCIsIls0MDZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVRob21zb24tMjAyMi00MzUiLCJbNDA3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1LYXRlbWFuLTIwMjMtNDM2IiwiU2FwaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TYXBpZW5jZSIsInNlbGYtYXdhcmVuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1hd2FyZW5lc3MiLCJSb2JvdCByaWdodHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9yaWdodHMiLCJbNDA4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzciLCJbNDA5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzgiLCJodW1hbiByaWdodHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9yaWdodHMiLCJbNDEwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzkiLCJbNDExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00NDAiLCJtb3JhbCBibGluZCBzcG90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9yYWxfYmxpbmRuZXNzIiwic2xhdmVyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NsYXZlcnkiLCJmYWN0b3J5IGZhcm1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0b3J5X2Zhcm1pbmciLCJsYXJnZS1zY2FsZSBzdWZmZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWZmZXJpbmdfcmlza3MiLCJyZXByb2dyYW0gYW5kIGltcHJvdmUgaXRzZWxmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjdXJzaXZlX3NlbGYtaW1wcm92ZW1lbnQiLCJJLiBKLiBHb29kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fSi5fR29vZCIsImludGVsbGlnZW5jZSBleHBsb3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VuY2VfZXhwbG9zaW9uIiwiVmVybm9yIFZpbmdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmVybm9yX1ZpbmdlIiwic2luZ3VsYXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2dpY2FsX3Npbmd1bGFyaXR5IiwiWzQxMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDQxIiwiUy1zaGFwZWQgY3VydmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TLXNoYXBlZF9jdXJ2ZSIsIls0MTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExMDA1LTQ0MiIsIlRyYW5zaHVtYW5pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2h1bWFuaXNtIiwiSGFucyBNb3JhdmVjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuc19Nb3JhdmVjIiwiS2V2aW4gV2Fyd2ljayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tldmluX1dhcndpY2siLCJSYXkgS3VyendlaWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXlfS3VyendlaWwiLCJjeWJvcmdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3lib3JnIiwiQWxkb3VzIEh1eGxleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZG91c19IdXhsZXkiLCJSb2JlcnQgRXR0aW5nZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JlcnRfRXR0aW5nZXIiLCJbNDE0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00NDMiLCJFZHdhcmQgRnJlZGtpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Vkd2FyZF9GcmVka2luIiwiU2FtdWVsIEJ1dGxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbXVlbF9CdXRsZXJfKG5vdmVsaXN0KSIsIkRhcndpbiBhbW9uZyB0aGUgTWFjaGluZXMiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvZGFyd2luYW1vbmdtYWNoaTAwZHlzbyIsIkdlb3JnZSBEeXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlb3JnZV9EeXNvbl8oc2NpZW5jZV9oaXN0b3JpYW4pIiwiRGFyd2luIEFtb25nIHRoZSBNYWNoaW5lczogVGhlIEV2b2x1dGlvbiBvZiBHbG9iYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFyd2luX0Ftb25nX3RoZV9NYWNoaW5lcyNFdm9sdXRpb25fb2ZfR2xvYmFsX0ludGVsbGlnZW5jZSIsIls0MTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ0NCIsIkRhbiBNY1F1aWxsYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5fTWNRdWlsbGFuIiwiZGVncm93dGgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWdyb3d0aCIsIls0MTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLXY5MzUtNDQ1IiwiQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gZmljdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2luX2ZpY3Rpb24iLCJLYXJlbCDEjGFwZWsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJlbF8lQzQlOENhcGVrIiwiUi5VLlIuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUi5VLlIuIiwiWzQxN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtQUlfaW5fbXl0aC00NDYiLCJzY2llbmNlIGZpY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbmNlX2ZpY3Rpb24iLCJbNDE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ29yZHVjazIwMDQzNDAlRTIlODAlOTM0MDAtNDQ3IiwidHJvcGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ucm9wZV8obGl0ZXJhdHVyZSkiLCJNYXJ5IFNoZWxsZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ5X1NoZWxsZXkiLCJGcmFua2Vuc3RlaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua2Vuc3RlaW4iLCJBcnRodXIgQy4gQ2xhcmtlJ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS8yMDAxOl9BX1NwYWNlX09keXNzZXlfKG5vdmVsKSIsIlN0YW5sZXkgS3VicmljaydzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvMjAwMTpfQV9TcGFjZV9PZHlzc2V5IiwiSEFMIDkwMDAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IQUxfOTAwMCIsIkRpc2NvdmVyeSBPbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXNjb3ZlcnlfT25lIiwiVGhlIFRlcm1pbmF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfVGVybWluYXRvciIsIlRoZSBNYXRyaXgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTWF0cml4IiwiVGhlIERheSB0aGUgRWFydGggU3Rvb2QgU3RpbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfRGF5X3RoZV9FYXJ0aF9TdG9vZF9TdGlsbCIsIkFsaWVucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsaWVuc18oZmlsbSkiLCJbNDE5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUJ1dHRhenpvMjAwMS00NDgiLCJJc2FhYyBBc2ltb3YiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Jc2FhY19Bc2ltb3YiLCJUaHJlZSBMYXdzIG9mIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhyZWVfTGF3c19vZl9Sb2JvdGljcyIsIk11bHRpdmFjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGl2YWMiLCJbNDIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUFuZGVyc29uMjAwOC00NDkiLCJbNDIxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ2F1bGV5MjAwNy00NTAiLCJ0aGUgYWJpbGl0eSB0byBmZWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VudGllbmNlIiwiQS5JLiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0EuSS5fQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2UiLCJFeCBNYWNoaW5hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhfTWFjaGluYV8oZmlsbSkiLCJEbyBBbmRyb2lkcyBEcmVhbSBvZiBFbGVjdHJpYyBTaGVlcD8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb19BbmRyb2lkc19EcmVhbV9vZl9FbGVjdHJpY19TaGVlcCUzRiIsIlBoaWxpcCBLLiBEaWNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbGlwX0suX0RpY2siLCJbNDIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUdhbHZhbjE5OTctNDUxIiwiQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIGVsZWN0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2FuZF9lbGVjdGlvbnMiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb250ZW50IGRldGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2NvbnRlbnRfZGV0ZWN0aW9uIiwiQmVoYXZpb3Igc2VsZWN0aW9uIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlaGF2aW9yX3NlbGVjdGlvbl9hbGdvcml0aG0iLCJCdXNpbmVzcyBwcm9jZXNzIGF1dG9tYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CdXNpbmVzc19wcm9jZXNzX2F1dG9tYXRpb24iLCJDYXNlLWJhc2VkIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nhc2UtYmFzZWRfcmVhc29uaW5nIiwiQ29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2ludGVsbGlnZW5jZSIsIkRpZ2l0YWwgaW1tb3J0YWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWdpdGFsX2ltbW9ydGFsaXR5IiwiRW1lcmdlbnQgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1lcmdlbnRfYWxnb3JpdGhtIiwiRmVtYWxlIGdlbmRlcmluZyBvZiBBSSB0ZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GZW1hbGVfZ2VuZGVyaW5nX29mX0FJX3RlY2hub2xvZ2llcyIsIkdsb3NzYXJ5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJJbnRlbGxpZ2VuY2UgYW1wbGlmaWNhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9hbXBsaWZpY2F0aW9uIiwiTWluZCB1cGxvYWRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kX3VwbG9hZGluZyIsIk9yZ2Fub2lkIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZ2Fub2lkX2ludGVsbGlnZW5jZSIsIlJvYm90aWMgcHJvY2VzcyBhdXRvbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19wcm9jZXNzX2F1dG9tYXRpb24iLCJXZXR3YXJlIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2V0d2FyZV9jb21wdXRlciIsIkp1bXAgdXAgdG86IGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1LYXRlbWFuLTIwMjNfNDM2LTAiLCJiIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtS2F0ZW1hbi0yMDIzXzQzNi0xIiwiUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUnVzc2VsbE5vcnZpZzIwMjEiLCJMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTHVnZXJTdHViYmxlZmllbGQyMDA0IiwiUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9vbGVNYWNrd29ydGhHb2ViZWwxOTk4IiwiTmlsc3NvbiAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTmlsc3NvbjE5OTgiLCJeIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtRk9PVE5PVEVHYWx2YW4xOTk3XzQ1MS0wIiwiWzMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5ld3F1aXN0MTk5NDI5Ni0zMiIsIlszMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDcmV2aWVyMTk5MzIwNCVFMiU4MCU5MzIwOC0zMyIsIls0Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUdXJpbmcxOTUwLTQ2IiwiUmF5IFNvbG9tb25vZmYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXlfU29sb21vbm9mZiIsIls0M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTb2xvbW9ub2ZmMTk1Ni00NyIsIkFJIHdpbnRlciDCpyBNYWNoaW5lIHRyYW5zbGF0aW9uIGFuZCB0aGUgQUxQQUMgcmVwb3J0IG9mIDE5NjYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV93aW50ZXIjTWFjaGluZV90cmFuc2xhdGlvbl9hbmRfdGhlX0FMUEFDX3JlcG9ydF9vZl8xOTY2IiwiY29uZGl0aW9uYWxseSBpbmRlcGVuZGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsbHlfaW5kZXBlbmRlbnQiLCJbOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9taW5nb3MyMDE1Y2hwdC5fNi05OSIsImxhdGVudCB2YXJpYWJsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRlbnRfdmFyaWFibGVzIiwiWzk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URURvbWluZ29zMjAxNTIxMC0xMDIiLCJXYXJyZW4gUy4gTWNDdWxsb2NoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FycmVuX1MuX01jQ3VsbG9jaCIsIldhbHRlciBQaXR0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhbHRlcl9QaXR0cyIsIlsxMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE3ODUtMTI0IiwiS2FybCBTdGVpbmJ1Y2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1N0ZWluYnVjaCIsIlJvZ2VyIERhdmlkIEpvc2VwaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1Sb2dlcl9EYXZpZF9Kb3NlcGgmYWN0aW9uPWVkaXQmcmVkbGluaz0xIiwiWzExN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTY2htaWRodWJlcjIwMjJzZWN0Ll81LTEyNSIsIkZyYW5rIFJvc2VuYmxhdHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua19Sb3NlbmJsYXR0IiwiT2xpdmVyIFNlbGZyaWRnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09saXZlcl9TZWxmcmlkZ2UiLCJBbGV4ZXkgSXZha2huZW5rbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhleV9JdmFraG5lbmtvIiwiVmFsZW50aW4gTGFwYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1WYWxlbnRpbl9MYXBhJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlsxMThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU2NobWlkaHViZXIyMDIyc2VjdC5fNi0xMjYiLCJLYW9ydSBOYWthbm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9S2FvcnVfTmFrYW5vJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlsxMTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU2NobWlkaHViZXIyMDIyc2VjdC5fNy0xMjciLCJTaHVuLUljaGkgQW1hcmkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaHVuLUljaGlfQW1hcmkiLCJKb2huIEpvc2VwaCBIb3BmaWVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fSm9zZXBoX0hvcGZpZWxkIiwiSGVucnkgSi4gS2VsbGV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucnlfSi5fS2VsbGV5IiwiQXJ0aHVyIEUuIEJyeXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGh1cl9FLl9Ccnlzb24iLCJTdHVhcnQgRHJleWZ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0dWFydF9EcmV5ZnVzIiwiWXUtQ2hpIEhvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWXUtQ2hpX0hvIiwiU2VwcG8gTGlubmFpbm1hYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlcHBvX0xpbm5haW5tYWEiLCJbMTIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNjaG1pZGh1YmVyMjAyMnNlY3QuXzgtMTI4IiwiUGF1bCBXZXJib3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXVsX1dlcmJvcyIsIlsxMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEzMCIsImJpYXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWFzXyhzdGF0aXN0aWNzKSIsIkpvbiBLbGVpbmJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb25fS2xlaW5iZXJnIiwiQ29ybmVsbCBVbml2ZXJzaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ybmVsbF9Vbml2ZXJzaXR5IiwiVW5pdmVyc2l0eSBvZiBDaGljYWdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2l0eV9vZl9DaGljYWdvIiwiQ2FybmVnaWUgTWVsbG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FybmVnaWVfTWVsbG9uIiwiWzI0NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwNjclRTIlODAlOTM3MC0yNTYiLCJNYXggUGxhbmNrIEluc3RpdHV0ZSBmb3IgSW50ZWxsaWdlbnQgU3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01heF9QbGFuY2tfSW5zdGl0dXRlX2Zvcl9JbnRlbGxpZ2VudF9TeXN0ZW1zIiwiWzI1MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYyIiwibGFuZCBtaW5lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhbmRfbWluZXMiLCJbMjY0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTg5LTI3OCIsIlsyNzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQXJudHpHcmVnb3J5WmllcmFobjIwMTYzMy0yOTAiLCJyb2JvcG9jYWx5cHNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3BvY2FseXBzZSIsIlsyODNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExMDAxLTI5OSIsIlszMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM1NSIsIlszNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ3JldmllcjE5OTM0NyVFMiU4MCU5MzQ5LTM1OSIsIlszNDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMDMxNy0zNjEiLCJbMzQzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDAzMTgtMzYzIiwiQXJ0aHVyIFNhbXVlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGh1cl9TYW11ZWxfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJJQk0gNzAxIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNXzcwMSIsIkRhbmllbCBCb2Jyb3ciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5pZWxfQm9icm93IiwiU1RVREVOVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NUVURFTlQiLCJOZXdlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGxlbl9OZXdlbGwiLCJTaW1vbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlcmJlcnRfQS5fU2ltb24iLCJMb2dpYyBUaGVvcmlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2ljX1RoZW9yaXN0IiwiVGVycnkgV2lub2dyYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXJyeV9XaW5vZ3JhZCIsIlNIUkRMVSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NIUkRMVSIsIlszNDddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjEyMS0zNjkiLCJFbWJvZGllZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtYm9kaWVkX21pbmQiLCJbMzU0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ29yZHVjazIwMDQ0NTQlRTIlODAlOTM0NjItMzc3IiwiWzM1NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVNb3JhdmVjMTk4OC0zNzgiLCJbMzU2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUJyb29rczE5OTAtMzc5IiwiTm91dmVsbGUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3V2ZWxsZV9BSSIsIkRldmVsb3BtZW50YWwgcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXZlbG9wbWVudGFsX3JvYm90aWNzIiwiWzM1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzgwIiwiVGhlIEF0bGFudGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0F0bGFudGljIiwiWzM2M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVXb25nMjAyMy0zODciLCJCbG9vbWJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CbG9vbWJlcmdfTmV3cyIsIk5pbHMgTmlsc3NvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pbHNfTmlsc3Nvbl8ocmVzZWFyY2hlcikiLCJbMzg2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5pbHNzb24xOTgzMTAtNDEyIiwiWzM5MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDcmV2aWVyMTk5MzEyNS00MTgiLCJbNDAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNlYXJsZTE5OTktNDI5IiwiWzQwMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTZWFybGUxOTgwMS00MzAiLCJbNDAzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTgxNy00MzEiLCJjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtVGhvbXNvbi0yMDIyXzQzNS0yIiwiQUkgc2V0IHRvIGV4Y2VlZCBodW1hbiBicmFpbiBwb3dlciI6Imh0dHA6Ly93d3cuY25uLmNvbS8yMDA2L1RFQ0gvc2NpZW5jZS8wNy8yNC9haS5ib3N0cm9tLyIsIkFyY2hpdmVkIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjAwMjIwMTczNDE5L2h0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vc2l0ZXMvaW5mby9maWxlcy9jb21taXNzaW9uLXdoaXRlLXBhcGVyLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWZlYjIwMjBfZW4ucGRmIiwiV2F5YmFjayBNYWNoaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2F5YmFja19NYWNoaW5lIiwiZG9pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9pXyhpZGVudGlmaWVyKSIsIjEwLjEwMTYvai5idXNob3IuMjAxOC4wOC4wMDQiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouYnVzaG9yLjIwMTguMDguMDA0IiwiSVNTTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTU05fKGlkZW50aWZpZXIpIiwiMDAwNy02ODEzIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDAwNy02ODEzIiwiUzJDSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TMkNJRF8oaWRlbnRpZmllcikiLCJSdXNzZWxsICYgTm9ydmlnICgyMDIxIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJ1c3NlbGxOb3J2aWcyMDIxIiwiUGVubmFjaGluICYgR29lcnR6ZWwgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlBlbm5hY2hpbkdvZXJ0emVsMjAwNyIsIk5pbHNzb24gKDE5OTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5pbHNzb24xOTk1IiwiTWNDYXJ0aHkgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ2FydGh5MjAwNyIsIkJlYWwgJiBXaW5zdG9uICgyMDA5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCZWFsV2luc3RvbjIwMDkiLCJNY0NvcmR1Y2sgKDIwMDQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNDb3JkdWNrMjAwNCIsIk5SQyAoMTk5OSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOUkMxOTk5IiwiTWNDYXJ0aHkgZXQgYWwuICgxOTU1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNY0NhcnRoeU1pbnNreVJvY2hlc3RlclNoYW5ub24xOTU1IiwiQ3JldmllciAoMTk5MyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDcmV2aWVyMTk5MyIsIk1vcmF2ZWMgKDE5ODgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTW9yYXZlYzE5ODgiLCJGaWZ0aCBHZW5lcmF0aW9uIFByb2plY3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWZ0aF9HZW5lcmF0aW9uX1Byb2plY3QiLCJBbHZleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsdmV5IiwiTWljcm9lbGVjdHJvbmljcyBhbmQgQ29tcHV0ZXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3JvZWxlY3Ryb25pY3NfYW5kX0NvbXB1dGVyX1RlY2hub2xvZ3lfQ29ycG9yYXRpb24iLCJTdHJhdGVnaWMgQ29tcHV0aW5nIEluaXRpYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHJhdGVnaWNfQ29tcHV0aW5nX0luaXRpYXRpdmUiLCJOZXdxdWlzdCAoMTk5NCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOZXdxdWlzdDE5OTQiLCJBSSBXaW50ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9XaW50ZXIiLCJMaWdodGhpbGwgcmVwb3J0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlnaHRoaWxsX3JlcG9ydCIsIk1hbnNmaWVsZCBBbWVuZG1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYW5zZmllbGRfQW1lbmRtZW50IiwiSG93ZSAoMTk5NCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSG93ZTE5OTQiLCJBbGV4TmV0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleE5ldCIsIkdvbGRtYW4gKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvbGRtYW4yMDIyIiwiTWNLaW5zZXkgKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jS2luc2V5MjAxOCIsIlRvZXdzICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUb2V3czIwMjMiLCJjb25zdHJhaW50IHNhdGlzZmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cmFpbnRfc2F0aXNmYWN0aW9uIiwiUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZQb29sZU1hY2t3b3J0aEdvZWJlbDE5OTgiLCJMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMdWdlclN0dWJibGVmaWVsZDIwMDQiLCJOaWxzc29uICgxOTk4IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5pbHNzb24xOTk4IiwiSW50cmFjdGFiaWxpdHkgYW5kIGVmZmljaWVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyYWN0YWJseSIsImNvbWJpbmF0b3JpYWwgZXhwbG9zaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluYXRvcmlhbF9leHBsb3Npb24iLCJLYWhuZW1hbiAoMjAxMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2FobmVtYW4yMDExIiwiRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkRyZXlmdXNEcmV5ZnVzMTk4NiIsIldhc29uICYgU2hhcGlybyAoMTk2NikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGV2Fzb25TaGFwaXJvMTk2NiIsIkthaG5lbWFuLCBTbG92aWMgJiBUdmVyc2t5ICgxOTgyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZLYWhuZW1hblNsb3ZpY1R2ZXJza3kxOTgyIiwiU21vbGlhciAmIFpoYW5nICgxOTk0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTbW9saWFyWmhhbmcxOTk0IiwiTmV1bWFubiAmIE3DtmxsZXIgKDIwMDgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ldW1hbm5NJUMzJUI2bGxlcjIwMDgiLCJLdXBlcm1hbiwgUmVpY2hsZXkgJiBCYWlsZXkgKDIwMDYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkt1cGVybWFuUmVpY2hsZXlCYWlsZXkyMDA2IiwiTWNHYXJyeSAoMjAwNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNHYXJyeTIwMDUiLCJCZXJ0aW5pLCBEZWwgQmltYm8gJiBUb3JuaWFpICgyMDA2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCZXJ0aW5pRGVsX0JpbWJvVG9ybmlhaTIwMDYiLCJTZW1hbnRpYyBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbWFudGljX25ldHdvcmsiLCJkZXNjcmlwdGlvbiBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXNjcmlwdGlvbl9sb2dpYyIsImluaGVyaXRhbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5oZXJpdGFuY2VfKG9iamVjdC1vcmllbnRlZF9wcm9ncmFtbWluZykiLCJmcmFtZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFtZV8oYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UpIiwic2NyaXB0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjcmlwdHNfKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlKSIsIlNpdHVhdGlvbiBjYWxjdWx1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpdHVhdGlvbl9jYWxjdWx1cyIsImV2ZW50IGNhbGN1bHVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZlbnRfY2FsY3VsdXMiLCJmbHVlbnQgY2FsY3VsdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GbHVlbnRfY2FsY3VsdXMiLCJmcmFtZSBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWVfcHJvYmxlbSIsIkNhdXNhbCBjYWxjdWx1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdXNhbGl0eSNDYXVzYWxfY2FsY3VsdXMiLCJtb2RhbCBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RhbF9sb2dpYyIsIkRlZmF1bHQgcmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmYXVsdF9yZWFzb25pbmciLCJGcmFtZSBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWVfcHJvYmxlbSIsImRlZmF1bHQgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWZhdWx0X2xvZ2ljIiwibm9uLW1vbm90b25pYyBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob24tbW9ub3RvbmljX2xvZ2ljIiwiY2lyY3Vtc2NyaXB0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2lyY3Vtc2NyaXB0aW9uXyhsb2dpYykiLCJjbG9zZWQgd29ybGQgYXNzdW1wdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nsb3NlZF93b3JsZF9hc3N1bXB0aW9uIiwiYWJkdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWJkdWN0aXZlX3JlYXNvbmluZyIsIkxlbmF0ICYgR3VoYSAoMTk4OSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMZW5hdEd1aGExOTg5IiwicXVhbGlmaWNhdGlvbiBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbGlmaWNhdGlvbl9wcm9ibGVtIiwiTmV3cXVpc3QgKDE5OTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ld3F1aXN0MTk5NCIsIkNyZXZpZXIgKDE5OTMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNyZXZpZXIxOTkzIiwiQXV0b21hdGVkIHBsYW5uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nIiwiQXV0b21hdGVkIGRlY2lzaW9uIG1ha2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9kZWNpc2lvbl9tYWtpbmciLCJEZWNpc2lvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWNpc2lvbl90aGVvcnkiLCJDbGFzc2ljYWwgcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmdfYW5kX3NjaGVkdWxpbmcjY2xhc3NpY2FsX3BsYW5uaW5nIiwiSW52ZXJzZSByZWluZm9yY2VtZW50IGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW52ZXJzZV9yZWluZm9yY2VtZW50X2xlYXJuaW5nIiwiTGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiVHVyaW5nICgxOTUwKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUdXJpbmcxOTUwIiwiU29sb21vbm9mZiAoMTk1NikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGU29sb21vbm9mZjE5NTYiLCJjbHVzdGVyIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2x1c3Rlcl9hbmFseXNpcyIsIlJlaW5mb3JjZW1lbnQgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nIiwiVGhlIEVjb25vbWlzdCAoMjAxNikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhlX0Vjb25vbWlzdDIwMTYiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIChBSSk6IFdoYXQgSXMgQUkgYW5kIEhvdyBEb2VzIEl0IFdvcms/IHwgQnVpbHQgSW5cIiI6Imh0dHBzOi8vYnVpbHRpbi5jb20vYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJKb3JkYW4gJiBNaXRjaGVsbCAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSm9yZGFuTWl0Y2hlbGwyMDE1IiwiTkxQIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiRGlja3NvbiAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRGlja3NvbjIwMjIiLCJDYW1icmlhICYgV2hpdGUgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNhbWJyaWFXaGl0ZTIwMTQiLCJWaW5jZW50ICgyMDE5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZWaW5jZW50MjAxOSIsIkJ1c2h3aWNrICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCdXNod2ljazIwMjMiLCJDaGFsbGEgZXQgYWwuICgyMDExKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaGFsbGFNb3JlbGFuZE11JUM1JUExaWNraUV2YW5zMjAxMSIsIk1JVCBBSUwgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1JVF9BSUwyMDE0IiwiVGhybyAoMTk5MykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhybzE5OTMiLCJFZGVsc29uICgxOTkxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZFZGVsc29uMTk5MSIsIlRhbyAmIFRhbiAoMjAwNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGFvVGFuMjAwNSIsIlNjYXNzZWxsYXRpICgyMDAyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTY2Fzc2VsbGF0aTIwMDIiLCJXYWRkZWxsICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXYWRkZWxsMjAxOCIsIlBvcmlhIGV0IGFsLiAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9yaWFDYW1icmlhQmFqcGFpSHVzc2FpbjIwMTciLCJTZWFyY2ggYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9hbGdvcml0aG0iLCJVbmluZm9ybWVkIHNlYXJjaGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pbmZvcm1lZF9zZWFyY2giLCJicmVhZHRoIGZpcnN0IHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyZWFkdGhfZmlyc3Rfc2VhcmNoIiwiZGVwdGgtZmlyc3Qgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwdGgtZmlyc3Rfc2VhcmNoIiwiSGV1cmlzdGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGV1cmlzdGljIiwiYmVzdCBmaXJzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jlc3QtZmlyc3Rfc2VhcmNoIiwiQSoiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BKl9zZWFyY2hfYWxnb3JpdGhtIiwiUG9vbGUgJiBNYWNrd29ydGggKDIwMTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9vbGVNYWNrd29ydGgyMDE3IiwiTG9jYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2NhbF9zZWFyY2hfKG9wdGltaXphdGlvbikiLCJcIk9wdGltaXphdGlvbiBBbGdvcml0aG1zIGluIE5ldXJhbCBOZXR3b3Jrc1wiIjoiaHR0cHM6Ly93d3cua2RudWdnZXRzLmNvbS9vcHRpbWl6YXRpb24tYWxnb3JpdGhtcy1pbi1uZXVyYWwtbmV0d29ya3MiLCJFdm9sdXRpb25hcnkgY29tcHV0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfY29tcHV0YXRpb24iLCJNZXJrbGUgJiBNaWRkZW5kb3JmICgyMDEzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNZXJrbGVNaWRkZW5kb3JmMjAxMyIsIkxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNfaW5fY29tcHV0ZXJfc2NpZW5jZSIsIlByb3Bvc2l0aW9uYWwgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wb3NpdGlvbmFsX2xvZ2ljIiwiRmlyc3Qtb3JkZXIgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXJzdC1vcmRlcl9sb2dpYyIsImVxdWFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXF1YWxpdHlfKG1hdGhlbWF0aWNzKSIsIkxvZ2ljYWwgaW5mZXJlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNhbF9pbmZlcmVuY2UiLCJSZXNvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzb2x1dGlvbl8obG9naWMpIiwidW5pZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmlmaWNhdGlvbl8oY29tcHV0ZXJfc2NpZW5jZSkiLCJBQ00gU0lHUExBTiBOb3RpY2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUNNX1NJR1BMQU5fTm90aWNlcyIsIjEwLjExNDUvODcyNzM0LjgwNjkzOSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGODcyNzM0LjgwNjkzOSIsIlNjaWVudGlmaWMgQW1lcmljYW4gKDE5OTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaWVudGlmaWNfQW1lcmljYW4xOTk5IiwiSGlkZGVuIE1hcmtvdiBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZGRlbl9NYXJrb3ZfbW9kZWwiLCJEeW5hbWljIEJheWVzaWFuIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHluYW1pY19CYXllc2lhbl9uZXR3b3JrIiwiRG9taW5nb3MgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkRvbWluZ29zMjAxNSIsIkJheWVzaWFuIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmF5ZXNpYW5fbGVhcm5pbmciLCJEb21pbmdvcyAoMjAxNSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEb21pbmdvczIwMTUiLCJCYXllc2lhbiBkZWNpc2lvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9kZWNpc2lvbl90aGVvcnkiLCJDaWFyYW1lbGxhLCBBbGJlcnRvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxiZXJ0b19DaWFyYW1lbGxhIiwiSVNCTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTQk5fKGlkZW50aWZpZXIpIiwiOTc4LTgtODk0Ny04NzYwLTMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC04LTg5NDctODc2MC0zIiwiRGVjaXNpb24gdHJlZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHRlcm5hdGluZ19kZWNpc2lvbl90cmVlIiwiTm9uLXBhcmFtZXRlcmljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9ucGFyYW1ldHJpY19zdGF0aXN0aWNzIiwic3VwcG9ydCB2ZWN0b3IgbWFjaGluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBwb3J0X3ZlY3Rvcl9tYWNoaW5lcyIsIk5haXZlIEJheWVzIGNsYXNzaWZpZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYWl2ZV9CYXllc19jbGFzc2lmaWVyIiwiYXV0b21hdGljIGRpZmZlcmVudGlhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRpY19kaWZmZXJlbnRpYXRpb24iLCJVbml2ZXJzYWwgYXBwcm94aW1hdGlvbiB0aGVvcmVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2FsX2FwcHJveGltYXRpb25fdGhlb3JlbSIsIkN5YmVua28gKDE5ODgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkN5YmVua28xOTg4IiwiSG9ybmlrLCBTdGluY2hjb21iZSAmIFdoaXRlICgxOTg5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZIb3JuaWtTdGluY2hjb21iZVdoaXRlMTk4OSIsIkZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlZWRmb3J3YXJkX25ldXJhbF9uZXR3b3JrIiwiR29vZGZlbGxvdywgQmVuZ2lvICYgQ291cnZpbGxlICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kZmVsbG93QmVuZ2lvQ291cnZpbGxlMjAxNiIsIkhpbnRvbiBldCBhbC4gKDIwMTYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkhpbnRvbl9ldF9hbC4yMDE2IiwiU2NobWlkaHViZXIgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaG1pZGh1YmVyMjAxNSIsIkRlbmcgJiBZdSAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRGVuZ1l1MjAxNCIsIkNpcmVzYW4sIE1laWVyICYgU2NobWlkaHViZXIgKDIwMTIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNpcmVzYW5NZWllclNjaG1pZGh1YmVyMjAxMiIsImQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1GT09UTk9URVVORVNDTzIwMjFfMzQwLTMiLCJmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTc4NV8xMjQtNSIsImciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxNzg1XzEyNC02IiwiU2NobWlkaHViZXIgKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaG1pZGh1YmVyMjAyMiIsIkNocmlzdGlhbiAoMjAyMCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaHJpc3RpYW4yMDIwIiwiU21pdGggKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNtaXRoMjAyMyIsIlwiRXhwbGFpbmVkOiBHZW5lcmF0aXZlIEFJXCIiOiJodHRwczovL25ld3MubWl0LmVkdS8yMDIzL2V4cGxhaW5lZC1nZW5lcmF0aXZlLWFpLTExMDkiLCJcIkFJIFdyaXRpbmcgYW5kIENvbnRlbnQgQ3JlYXRpb24gVG9vbHNcIiI6Imh0dHBzOi8vbWl0c2xvYW5lZHRlY2gubWl0LmVkdS9haS90b29scy93cml0aW5nIiwiTWFybW91eWV0ICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNYXJtb3V5ZXQyMDIzIiwiS29iaWVsdXMgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRktvYmllbHVzMjAxOSIsIlwiTW9qbyBSaXNpbmc6IFRoZSByZXN1cmdlbmNlIG9mIEFJLWZpcnN0IHByb2dyYW1taW5nIGxhbmd1YWdlc1wiIjoiaHR0cHM6Ly92ZW50dXJlYmVhdC5jb20vYWkvbW9qby1yaXNpbmctdGhlLXJlc3VyZ2VuY2Utb2YtYWktZmlyc3QtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzIiwiXCI3IEFJIFByb2dyYW1taW5nIExhbmd1YWdlcyBZb3UgTmVlZCB0byBLbm93XCIiOiJodHRwczovL2FpYnVzaW5lc3MuY29tL3ZlcnRpY2Fscy83LWFpLXByb2dyYW1taW5nLWxhbmd1YWdlcy15b3UtbmVlZC10by1rbm93IiwiXCJXaHkgSmVuc2VuIEh1YW5nIGFuZCBNYXJjIEJlbmlvZmYgc2VlICdnaWdhbnRpYycgb3Bwb3J0dW5pdHkgZm9yIGFnZW50aWMgQUlcIiI6Imh0dHBzOi8vdmVudHVyZWJlYXQuY29tL2FpL3doeS1qZW5zZW4taHVhbmctYW5kLW1hcmMtYmVuaW9mZi1zZWUtZ2lnYW50aWMtb3Bwb3J0dW5pdHktZm9yLWFnZW50aWMtYWkvIiwiXCJIdWFuZydzIExhdyBJcyB0aGUgTmV3IE1vb3JlJ3MgTGF3LCBhbmQgRXhwbGFpbnMgV2h5IE52aWRpYSBXYW50cyBBcm1cIiI6Imh0dHBzOi8vd3d3Lndzai5jb20vYXJ0aWNsZXMvaHVhbmdzLWxhdy1pcy10aGUtbmV3LW1vb3Jlcy1sYXctYW5kLWV4cGxhaW5zLXdoeS1udmlkaWEtd2FudHMtYXJtLTExNjAwNDg4MDAxIiwiMDA5OS05NjYwIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDA5OS05NjYwIiwiXCJUaGUgcG90ZW50aWFsIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBoZWFsdGhjYXJlXCIiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM2NjE2MTgxIiwiMTAuNzg2MS9mdXR1cmVob3NwLjYtMi05NCI6Imh0dHBzOi8vZG9pLm9yZy8xMC43ODYxJTJGZnV0dXJlaG9zcC42LTItOTQiLCJQTUMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QTUNfKGlkZW50aWZpZXIpIiwiUE1JRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BNSURfKGlkZW50aWZpZXIpIiwiXCJTeXN0ZW1hdGljIHJldmlldyBvZiBhcHByb2FjaGVzIHRvIGRldGVjdGlvbiBhbmQgY2xhc3NpZmljYXRpb24gb2Ygc2tpbiBjYW5jZXIgdXNpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6IERldmVsb3BtZW50IGFuZCBwcm9zcGVjdHNcIiI6Imh0dHBzOi8vbGlua2luZ2h1Yi5lbHNldmllci5jb20vcmV0cmlldmUvcGlpL1MwMDEwNDgyNTI0MDA4Mjc4IiwiMTAuMTAxNi9qLmNvbXBiaW9tZWQuMjAyNC4xMDg3NDIiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouY29tcGJpb21lZC4yMDI0LjEwODc0MiIsIlwiQ291Z2ggU291bmQgRGV0ZWN0aW9uIGFuZCBEaWFnbm9zaXMgVXNpbmcgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgVGVjaG5pcXVlczogQ2hhbGxlbmdlcyBhbmQgT3Bwb3J0dW5pdGllc1wiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DODU0NTIwMSIsIkJpYmNvZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJjb2RlXyhpZGVudGlmaWVyKSIsIjIwMjFJRUVFQS4uLjlqMjMyN0EiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAyMUlFRUVBLi4uOWoyMzI3QSIsIjEwLjExMDkvQUNDRVNTLjIwMjEuMzA5NzU1OSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA5JTJGQUNDRVNTLjIwMjEuMzA5NzU1OSIsIjIxNjktMzUzNiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzIxNjktMzUzNiIsIlwiVGhlIGZ1dHVyZSBvZiBwZXJzb25hbGl6ZWQgY2FyZGlvdmFzY3VsYXIgbWVkaWNpbmUgZGVtYW5kcyAzRCBhbmQgNEQgcHJpbnRpbmcsIHN0ZW0gY2VsbHMsIGFuZCBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzODklMkZmc2Vucy4yMDIzLjEyOTQ3MjEiLCIxMC4zMzg5L2ZzZW5zLjIwMjMuMTI5NDcyMSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4zMzg5JTJGZnNlbnMuMjAyMy4xMjk0NzIxIiwiMjY3My01MDY3IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjY3My01MDY3IiwiXCJIaWdobHkgYWNjdXJhdGUgcHJvdGVpbiBzdHJ1Y3R1cmUgcHJlZGljdGlvbiB3aXRoIEFscGhhRm9sZFwiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DODM3MTYwNSIsIjIwMjFOYXR1ci41OTYuLjU4M0oiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAyMU5hdHVyLjU5Ni4uNTgzSiIsIjEwLjEwMzgvczQxNTg2LTAyMS0wMzgxOS0yIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzglMkZzNDE1ODYtMDIxLTAzODE5LTIiLCJcIkFJIGRpc2NvdmVycyBuZXcgY2xhc3Mgb2YgYW50aWJpb3RpY3MgdG8ga2lsbCBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYVwiIjoiaHR0cHM6Ly93d3cubmV3c2NpZW50aXN0LmNvbS9hcnRpY2xlLzI0MDk3MDYtYWktZGlzY292ZXJzLW5ldy1jbGFzcy1vZi1hbnRpYmlvdGljcy10by1raWxsLWRydWctcmVzaXN0YW50LWJhY3RlcmlhLyIsIlwiQUkgc3BlZWRzIHVwIGRydWcgZGVzaWduIGZvciBQYXJraW5zb24ncyB0ZW4tZm9sZFwiIjoiaHR0cHM6Ly93d3cuY2FtLmFjLnVrL3Jlc2VhcmNoL25ld3MvYWktc3BlZWRzLXVwLWRydWctZGVzaWduLWZvci1wYXJraW5zb25zLXRlbi1mb2xkIiwiXCJEaXNjb3Zlcnkgb2YgcG90ZW50IGluaGliaXRvcnMgb2YgzrEtc3ludWNsZWluIGFnZ3JlZ2F0aW9uIHVzaW5nIHN0cnVjdHVyZS1iYXNlZCBpdGVyYXRpdmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzExMDYyOTAzIiwiMTAuMTAzOC9zNDE1ODktMDI0LTAxNTgwLXgiOiJodHRwczovL2RvaS5vcmcvMTAuMTAzOCUyRnM0MTU4OS0wMjQtMDE1ODAteCIsIlwiVGhlIFRhbGsgb2YgdGhlIFRvd24g4oCTIEl0XCIiOiJodHRwczovL3d3dy5uZXd5b3JrZXIuY29tL21hZ2F6aW5lLzE5NTIvMDgvMDIvaXQiLCIwMDI4LTc5MlgiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMDI4LTc5MlgiLCJcIlR3ZW50eSB5ZWFycyBvbiBmcm9tIERlZXAgQmx1ZSB2cyBLYXNwYXJvdjogaG93IGEgY2hlc3MgbWF0Y2ggc3RhcnRlZCB0aGUgYmlnIGRhdGEgcmV2b2x1dGlvblwiIjoiaHR0cHM6Ly90aGVjb252ZXJzYXRpb24uY29tL3R3ZW50eS15ZWFycy1vbi1mcm9tLWRlZXAtYmx1ZS12cy1rYXNwYXJvdi1ob3ctYS1jaGVzcy1tYXRjaC1zdGFydGVkLXRoZS1iaWctZGF0YS1yZXZvbHV0aW9uLTc2ODgyIiwiXCJDb21wdXRlciBXaW5zIG9uICdKZW9wYXJkeSEnOiBUcml2aWFsLCBJdCdzIE5vdFwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAxMS8wMi8xNy9zY2llbmNlLzE3amVvcGFyZHktd2F0c29uLmh0bWwiLCIwMzYyLTQzMzEiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMzYyLTQzMzEiLCJcIkFscGhhR28gcmV0aXJlcyBmcm9tIGNvbXBldGl0aXZlIEdvIGFmdGVyIGRlZmVhdGluZyB3b3JsZCBudW1iZXIgb25lIDPigJMwXCIiOiJodHRwczovL3d3dy50aGV2ZXJnZS5jb20vMjAxNy81LzI3LzE1NzA0MDg4L2FscGhhZ28ta2UtamllLWdhbWUtMy1yZXN1bHQtcmV0aXJlcy1mdXR1cmUiLCJcIlN1cGVyaHVtYW4gQUkgZm9yIG11bHRpcGxheWVyIHBva2VyXCIiOiJodHRwczovL3d3dy5zY2llbmNlLm9yZy9kb2kvMTAuMTEyNi9zY2llbmNlLmFheTI0MDAiLCIyMDE5U2NpLi4uMzY1Li44ODVCIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMTlTY2kuLi4zNjUuLjg4NUIiLCIxMC4xMTI2L3NjaWVuY2UuYWF5MjQwMCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2JTJGc2NpZW5jZS5hYXkyNDAwIiwiMDAzNi04MDc1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDAzNi04MDc1IiwiXCJNdVplcm86IE1hc3RlcmluZyBHbywgY2hlc3MsIHNob2dpIGFuZCBBdGFyaSB3aXRob3V0IHJ1bGVzXCIiOiJodHRwczovL2RlZXBtaW5kLmdvb2dsZS9kaXNjb3Zlci9ibG9nL211emVyby1tYXN0ZXJpbmctZ28tY2hlc3Mtc2hvZ2ktYW5kLWF0YXJpLXdpdGhvdXQtcnVsZXMiLCJcIkFJIGJlY29tZXMgZ3JhbmRtYXN0ZXIgaW4gJ2ZpZW5kaXNobHkgY29tcGxleCcgU3RhckNyYWZ0IElJXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDE5L29jdC8zMC9haS1iZWNvbWVzLWdyYW5kbWFzdGVyLWluLWZpZW5kaXNobHktY29tcGxleC1zdGFyY3JhZnQtaWkiLCIwMjYxLTMwNzciOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMjYxLTMwNzciLCJcIk91dHJhY2luZyBjaGFtcGlvbiBHcmFuIFR1cmlzbW8gZHJpdmVycyB3aXRoIGRlZXAgcmVpbmZvcmNlbWVudCBsZWFybmluZ1wiIjoiaHR0cHM6Ly93d3cucmVzZWFyY2hzcXVhcmUuY29tL2FydGljbGUvcnMtNzk1OTU0L2xhdGVzdC5wZGYiLCIyMDIyTmF0dXIuNjAyLi4yMjNXIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMjJOYXR1ci42MDIuLjIyM1ciLCIxMC4xMDM4L3M0MTU4Ni0wMjEtMDQzNTctNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGczQxNTg2LTAyMS0wNDM1Ny03IiwiXCJHb29nbGUgQUkgbGVhcm5zIHRvIHBsYXkgb3Blbi13b3JsZCB2aWRlbyBnYW1lcyBieSB3YXRjaGluZyB0aGVtXCIiOiJodHRwczovL3d3dy5uZXdzY2llbnRpc3QuY29tL2FydGljbGUvMjQyMjEwMS1nb29nbGUtYWktbGVhcm5zLXRvLXBsYXktb3Blbi13b3JsZC12aWRlby1nYW1lcy1ieS13YXRjaGluZy10aGVtIiwiXCJJbXByb3ZpbmcgbWF0aGVtYXRpY2FsIHJlYXNvbmluZyB3aXRoIHByb2Nlc3Mgc3VwZXJ2aXNpb25cIiI6Imh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbXByb3ZpbmctbWF0aGVtYXRpY2FsLXJlYXNvbmluZy13aXRoLXByb2Nlc3Mtc3VwZXJ2aXNpb24vIiwiYXJYaXYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Bclhpdl8oaWRlbnRpZmllcikiLCIyNDAyLjE5NDUwIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzI0MDIuMTk0NTAiLCJjcy5BSSI6Imh0dHBzOi8vYXJ4aXYub3JnL2FyY2hpdmUvY3MuQUkiLCIyMzA1LjIwMDUwdjEiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMjMwNS4yMDA1MHYxIiwiY3MuTEciOiJodHRwczovL2FyeGl2Lm9yZy9hcmNoaXZlL2NzLkxHIiwiXCJNaWNyb3NvZnQncyBuZXcgclN0YXItTWF0aCB0ZWNobmlxdWUgdXBncmFkZXMgc21hbGwgbW9kZWxzIHRvIG91dHBlcmZvcm0gT3BlbkFJJ3MgbzEtcHJldmlldyBhdCBtYXRoIHByb2JsZW1zXCIiOiJodHRwczovL3ZlbnR1cmViZWF0LmNvbS9haS9taWNyb3NvZnRzLW5ldy1yc3Rhci1tYXRoLXRlY2huaXF1ZS11cGdyYWRlcy1zbWFsbC1tb2RlbHMtdG8tb3V0cGVyZm9ybS1vcGVuYWlzLW8xLXByZXZpZXctYXQtbWF0aC1wcm9ibGVtcy8iLCJcIkFJIGFjaGlldmVzIHNpbHZlci1tZWRhbCBzdGFuZGFyZCBzb2x2aW5nIEludGVybmF0aW9uYWwgTWF0aGVtYXRpY2FsIE9seW1waWFkIHByb2JsZW1zXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDI0LzA3LzI1L3NjaWVuY2UvYWktbWF0aC1hbHBoYXByb29mLWRlZXBtaW5kLmh0bWwiLCJUaGUgTmV3IFlvcmsgVGltZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtfVGltZXMiLCJcIkxsZW1tYTogQW4gT3BlbiBMYW5ndWFnZSBNb2RlbCBGb3IgTWF0aGVtYXRpY3NcIiI6Imh0dHBzOi8vYmxvZy5lbGV1dGhlci5haS9sbGVtbWEvIiwiXCJKdWxpdXMgQUlcIiI6Imh0dHBzOi8vanVsaXVzLmFpL2hvbWUvYWktbWF0aCIsIlwiOCBCZXN0IEFJIGZvciBNYXRoIFRvb2xzIChKYW51YXJ5IDIwMjUpXCIiOiJodHRwczovL3d3dy51bml0ZS5haS9iZXN0LWFpLWZvci1tYXRoLXRvb2xzLyIsImh0dHBzOi8vdmlkZW92b2ljZS5vcmcvYWktaW4tZmluYW5jZS1pbm5vdmF0aW9uLWVudHJlcHJlbmV1cnNoaXAtdnMtb3Zlci1yZWd1bGF0aW9uLXdpdGgtdGhlLWV1cy1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1hY3Qtd29udC13b3JrLWFzLWludGVuZGVkLyI6Imh0dHBzOi8vdmlkZW92b2ljZS5vcmcvYWktaW4tZmluYW5jZS1pbm5vdmF0aW9uLWVudHJlcHJlbmV1cnNoaXAtdnMtb3Zlci1yZWd1bGF0aW9uLXdpdGgtdGhlLWV1cy1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1hY3Qtd29udC13b3JrLWFzLWludGVuZGVkLyIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBOYXRpb25hbCBTZWN1cml0eSI6Imh0dHBzOi8vZmFzLm9yZy9zZ3AvY3JzL25hdHNlYy9SNDUxNzgucGRmIiwiUEQtbm90aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6UEQtbm90aWNlIiwiMTAuMTMxNDAvUkcuMi4yLjMwMjQ3LjUwMDg3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEzMTQwJTJGUkcuMi4yLjMwMjQ3LjUwMDg3IiwiXCInTGF2ZW5kZXInOiBUaGUgQUkgbWFjaGluZSBkaXJlY3RpbmcgSXNyYWVsJ3MgYm9tYmluZyBzcHJlZSBpbiBHYXphXCIiOiJodHRwczovL3d3dy45NzJtYWcuY29tL2xhdmVuZGVyLWFpLWlzcmFlbGktYXJteS1nYXphLyIsIlwiJ1RoZSBHb3NwZWwnOiBob3cgSXNyYWVsIHVzZXMgQUkgdG8gc2VsZWN0IGJvbWJpbmcgdGFyZ2V0cyBpbiBHYXphXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vd29ybGQvMjAyMy9kZWMvMDEvdGhlLWdvc3BlbC1ob3ctaXNyYWVsLXVzZXMtYWktdG8tc2VsZWN0LWJvbWJpbmctdGFyZ2V0cyIsIlwiRHJvaG5lbiBoYWJlbiBkZW4gS3JpZWcgaW4gZGVyIFVrcmFpbmUgcmV2b2x1dGlvbmllcnQsIGRvY2ggc2llIHNpbmQgZW1wZmluZGxpY2ggYXVmIFN0w7Zyc2VuZGVyIOKAkyBkZXNoYWxiIHNvbGxlbiBzaWUgamV0enQgYXV0b25vbSBvcGVyaWVyZW5cIiI6Imh0dHBzOi8vd3d3Lm56ei5jaC9pbnRlcm5hdGlvbmFsL2RpZS11a3JhaW5lLXNldHp0LWF1Zi1kcm9obmVuLWRpZS1hdXRvbm9tLW5hdmlnaWVyZW4tdW5kLXRvZXRlbi1rb2VubmVuLWxkLjE4Mzg3MzEiLCJcIkV4ZWN1dGl2ZSBPcmRlciBOLTEyLTIzXCIiOiJodHRwczovL3d3dy5nb3YuY2EuZ292L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA5L0FJLUVPLU5vLjEyLV8tR0dOLVNpZ25lZC5wZGYiLCIyMzA3LjE1MjA4IjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDcuMTUyMDgiLCJlZXNzLklWIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYXJjaGl2ZS9lZXNzLklWIiwiXCJXaGF0IGlzIENoYXRHUFQsIERBTEwtRSwgYW5kIGdlbmVyYXRpdmUgQUk/XCIiOiJodHRwczovL3d3dy5tY2tpbnNleS5jb20vZmVhdHVyZWQtaW5zaWdodHMvbWNraW5zZXktZXhwbGFpbmVycy93aGF0LWlzLWdlbmVyYXRpdmUtYWkiLCJcIldoYXQgaXMgZ2VuZXJhdGl2ZSBBST9cIiI6Imh0dHBzOi8vd3d3LmlibS5jb20vdG9waWNzL2dlbmVyYXRpdmUtYWkiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEdsb3NzYXJ5OiBOZXVyYWwgTmV0d29ya3MgYW5kIE90aGVyIFRlcm1zIEV4cGxhaW5lZFwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vYXJ0aWNsZS9haS1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1nbG9zc2FyeS5odG1sIiwiXCJHZW5lcmF0aXZlIG1vZGVsc1wiIjoiaHR0cHM6Ly9vcGVuYWkuY29tL3Jlc2VhcmNoL2dlbmVyYXRpdmUtbW9kZWxzIiwiXCJBbnRocm9waWMgU2FpZCB0byBCZSBDbG9zaW5nIEluIG9uICQzMDAgTWlsbGlvbiBpbiBOZXcgQS5JLiBGdW5kaW5nXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzAxLzI3L3RlY2hub2xvZ3kvYW50aHJvcGljLWFpLWZ1bmRpbmcuaHRtbCIsIlwiQSBDaGVhdCBTaGVldCB0byBBSSBCdXp6d29yZHMgYW5kIFRoZWlyIE1lYW5pbmdzXCIiOiJodHRwczovL25ld3MuYmxvb21iZXJnbGF3LmNvbS90ZWNoLWFuZC10ZWxlY29tLWxhdy9hLWNoZWF0LXNoZWV0LXRvLWFpLWJ1enp3b3Jkcy1hbmQtdGhlaXItbWVhbmluZ3MtcXVpY2t0YWtlIiwiXCJPcGVuQUkgUGxhbnMgdG8gVXAgdGhlIEFudGUgaW4gVGVjaCdzIEEuSS4gUmFjZVwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAyMy8wMy8xNC90ZWNobm9sb2d5L29wZW5haS1ncHQ0LWNoYXRncHQuaHRtbCIsIjIyMDEuMDgyMzkiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMjIwMS4wODIzOSIsImNzLkNMIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYXJjaGl2ZS9jcy5DTCIsIlwiQSBDb21pbmctT3V0IFBhcnR5IGZvciBHZW5lcmF0aXZlIEEuSS4sIFNpbGljb24gVmFsbGV5J3MgTmV3IENyYXplXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIyLzEwLzIxL3RlY2hub2xvZ3kvZ2VuZXJhdGl2ZS1haS5odG1sIiwiXCJPcGVuQUkgVW52ZWlscyBBLkkuIFRoYXQgSW5zdGFudGx5IEdlbmVyYXRlcyBFeWUtUG9wcGluZyBWaWRlb3NcIiI6Imh0dHBzOi8vd3d3Lm55dGltZXMuY29tLzIwMjQvMDIvMTUvdGVjaG5vbG9neS9vcGVuYWktc29yYS12aWRlb3MuaHRtbCIsIlwiVGhlIHJhY2Ugb2YgdGhlIEFJIGxhYnMgaGVhdHMgdXBcIiI6Imh0dHBzOi8vd3d3LmVjb25vbWlzdC5jb20vYnVzaW5lc3MvMjAyMy8wMS8zMC90aGUtcmFjZS1vZi10aGUtYWktbGFicy1oZWF0cy11cCIsIlwiR29vZ2xlIENsb3VkIGJyaW5ncyBnZW5lcmF0aXZlIEFJIHRvIGRldmVsb3BlcnMsIGJ1c2luZXNzZXMsIGFuZCBnb3Zlcm5tZW50c1wiIjoiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2Jsb2cvcHJvZHVjdHMvYWktbWFjaGluZS1sZWFybmluZy9nZW5lcmF0aXZlLWFpLWZvci1idXNpbmVzc2VzLWFuZC1nb3Zlcm5tZW50cyIsIkdlbmVyYXRpdmUgQUkgYXQgV29yayI6Imh0dHBzOi8vd3d3Lm5iZXIub3JnL3BhcGVycy93MzExNjEiLCIxMC4zMzg2L3czMTE2MSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4zMzg2JTJGdzMxMTYxIiwiYXJjaGl2ZWQiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzEwMTkxODI0MDMvaHR0cDovL2ludGVsbGlnZW5jZS5vcmcvZmlsZXMvQUlQb3NOZWdGYWN0b3IucGRmIiwiXCJEb24ndCBmZWFyIGFuIEFJLWluZHVjZWQgam9icyBhcG9jYWx5cHNlIGp1c3QgeWV0XCIiOiJodHRwczovL3d3dy5lY29ub21pc3QuY29tL2J1c2luZXNzLzIwMjMvMDMvMDYvZG9udC1mZWFyLWFuLWFpLWluZHVjZWQtam9icy1hcG9jYWx5cHNlLWp1c3QteWV0IiwiXCJJbiBIb2xseXdvb2Qgd3JpdGVycycgYmF0dGxlIGFnYWluc3QgQUksIGh1bWFucyB3aW4gKGZvciBub3cpXCIiOiJodHRwczovL2FwbmV3cy5jb20vYXJ0aWNsZS9ob2xseXdvb2QtYWktc3RyaWtlLXdnYS1hcnRpZmljaWFsLWludGVsbGlnZW5jZS0zOWFiNzI1ODJjM2ExNWY3NzUxMGM5YzMwYTQ1ZmZjOCIsIlwiR2VuZXJhdGl2ZSBBSTogVW5sb2NraW5nIHRoZSBmdXR1cmUgb2YgZmFzaGlvblwiIjoiaHR0cHM6Ly93d3cubWNraW5zZXkuY29tL2luZHVzdHJpZXMvcmV0YWlsL291ci1pbnNpZ2h0cy9nZW5lcmF0aXZlLWFpLXVubG9ja2luZy10aGUtZnV0dXJlLW9mLWZhc2hpb24iLCJcIkhvdyBHZW5lcmF0aXZlIEFJIENhbiBBdWdtZW50IEh1bWFuIENyZWF0aXZpdHlcIiI6Imh0dHBzOi8vaGJyLm9yZy8yMDIzLzA3L2hvdy1nZW5lcmF0aXZlLWFpLWNhbi1hdWdtZW50LWh1bWFuLWNyZWF0aXZpdHkiLCIwMDE3LTgwMTIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMDE3LTgwMTIiLCJcIlRyYW5zY3JpcHQ6IFNlbmF0ZSBKdWRpY2lhcnkgU3ViY29tbWl0dGVlIEhlYXJpbmcgb24gT3ZlcnNpZ2h0IG9mIEFJXCIiOiJodHRwczovL3RlY2hwb2xpY3kucHJlc3MvdHJhbnNjcmlwdC1zZW5hdGUtanVkaWNpYXJ5LXN1YmNvbW1pdHRlZS1oZWFyaW5nLW9uLW92ZXJzaWdodC1vZi1haS8iLCJcIk1pc2luZm9ybWF0aW9uIHJlbG9hZGVkPyBGZWFycyBhYm91dCB0aGUgaW1wYWN0IG9mIGdlbmVyYXRpdmUgQUkgb24gbWlzaW5mb3JtYXRpb24gYXJlIG92ZXJibG93blwiIjoiaHR0cHM6Ly9taXNpbmZvcmV2aWV3Lmhrcy5oYXJ2YXJkLmVkdS9hcnRpY2xlL21pc2luZm9ybWF0aW9uLXJlbG9hZGVkLWZlYXJzLWFib3V0LXRoZS1pbXBhY3Qtb2YtZ2VuZXJhdGl2ZS1haS1vbi1taXNpbmZvcm1hdGlvbi1hcmUtb3ZlcmJsb3duLyIsIjEwLjM3MDE2L21yLTIwMjAtMTI3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjM3MDE2JTJGbXItMjAyMC0xMjciLCJcIk5ldyBBSSBzeXN0ZW1zIGNvbGxpZGUgd2l0aCBjb3B5cmlnaHQgbGF3XCIiOiJodHRwczovL3d3dy5iYmMuY28udWsvbmV3cy9idXNpbmVzcy02NjIzMTI2OCIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlLCBGb3VuZGF0aW9ucyBvZiBDb21wdXRhdGlvbmFsIEFnZW50cyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE3Lzk3ODEwMDkyNTgyMjciLCIxMC4xMDE3Lzk3ODEwMDkyNTgyMjciOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNyUyRjk3ODEwMDkyNTgyMjciLCI5NzgtMS0wMDkyLTU4MTktNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtMDA5Mi01ODE5LTciLCJBcnRpZmljaWFsIEludGVsbGlnZW5jZTogQSBNb2Rlcm4gQXBwcm9hY2giOiJodHRwOi8vYWltYS5jcy5iZXJrZWxleS5lZHUvIiwiOTc4LTAtMTM0Ni0xMDk5LTMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTEzNDYtMTA5OS0zIiwiXCJXaHkgYWdlbnRzIGFyZSB0aGUgbmV4dCBmcm9udGllciBvZiBnZW5lcmF0aXZlIEFJXCIiOiJodHRwczovL3d3dy5tY2tpbnNleS5jb20vY2FwYWJpbGl0aWVzL21ja2luc2V5LWRpZ2l0YWwvb3VyLWluc2lnaHRzL3doeS1hZ2VudHMtYXJlLXRoZS1uZXh0LWZyb250aWVyLW9mLWdlbmVyYXRpdmUtYWkiLCJcIlBvd2VyZWQgYnkgQUk6IEV4YW1pbmluZyBIb3cgQUkgRGVzY3JpcHRpb25zIEluZmx1ZW5jZSBQZXJjZXB0aW9ucyBvZiBGZXJ0aWxpdHkgVHJhY2tpbmcgQXBwbGljYXRpb25zXCIiOiJodHRwczovL2RsLmFjbS5vcmcvZG9pLzEwLjExNDUvMzYzMTQxNCIsIjEwLjExNDUvMzYzMTQxNCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGMzYzMTQxNCIsIlwiU21hcnQgU2V4IFRveXM6IEEgTmFycmF0aXZlIFJldmlldyBvZiBSZWNlbnQgUmVzZWFyY2ggb24gQ3VsdHVyYWwsIEhlYWx0aCBhbmQgU2FmZXR5IENvbnNpZGVyYXRpb25zXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMTkzMC0wMjQtMDAzOTItMyIsIjEwLjEwMDcvczExOTMwLTAyNC0wMDM5Mi0zIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTE5MzAtMDI0LTAwMzkyLTMiLCIxNTQ4LTM1OTIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTQ4LTM1OTIiLCJcIkxhcmdlIExhbmd1YWdlIE1vZGVscyBpbiBhbiBBcHA6IENvbmR1Y3RpbmcgYSBRdWFsaXRhdGl2ZSBTeW50aGV0aWMgRGF0YSBBbmFseXNpcyBvZiBIb3cgU25hcGNoYXQncyBcIk15IEFJXCIgUmVzcG9uZHMgdG8gUXVlc3Rpb25zIEFib3V0IFNleHVhbCBDb25zZW50LCBTZXh1YWwgUmVmdXNhbHMsIFNleHVhbCBBc3NhdWx0LCBhbmQgU2V4dGluZ1wiIjoiaHR0cHM6Ly93d3cudGFuZGZvbmxpbmUuY29tL2RvaS9mdWxsLzEwLjEwODAvMDAyMjQ0OTkuMjAyNC4yMzk2NDU3IiwiMTAuMTA4MC8wMDIyNDQ5OS4yMDI0LjIzOTY0NTciOiJodHRwczovL2RvaS5vcmcvMTAuMTA4MCUyRjAwMjI0NDk5LjIwMjQuMjM5NjQ1NyIsIjAwMjItNDQ5OSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzAwMjItNDQ5OSIsIlwiXCJSZXBsaWthIFJlbW92aW5nIEVyb3RpYyBSb2xlLVBsYXkgSXMgTGlrZSBHcmFuZCBUaGVmdCBBdXRvIFJlbW92aW5nIEd1bnMgb3IgQ2Fyc1wiOiBSZWRkaXQgRGlzY291cnNlIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIENoYXRib3RzIGFuZCBTZXh1YWwgVGVjaG5vbG9naWVzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE3NyUyRjIzNzgwMjMxMjQxMjU5NjI3IiwiMTAuMTE3Ny8yMzc4MDIzMTI0MTI1OTYyNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTc3JTJGMjM3ODAyMzEyNDEyNTk2MjciLCIyMzc4LTAyMzEiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8yMzc4LTAyMzEiLCJcIkxlZ2FsIFByb3RlY3Rpb24gb2YgUmV2ZW5nZSBhbmQgRGVlcGZha2UgUG9ybiBWaWN0aW1zIGluIHRoZSBFdXJvcGVhbiBVbmlvbjogRmluZGluZ3MgRnJvbSBhIENvbXBhcmF0aXZlIExlZ2FsIFN0dWR5XCIiOiJodHRwczovL2pvdXJuYWxzLnNhZ2VwdWIuY29tL2RvaS9hYnMvMTAuMTE3Ny8xNTI0ODM4MDIyMTE0Mzc3Mj9qb3VybmFsQ29kZT10dmFhIiwiMTAuMTE3Ny8xNTI0ODM4MDIyMTE0Mzc3MiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTc3JTJGMTUyNDgzODAyMjExNDM3NzIiLCIxNTI0LTgzODAiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTI0LTgzODAiLCJcIlJvbGUgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgaW4gdGhlIFByZXZlbnRpb24gb2YgT25saW5lIENoaWxkIFNleHVhbCBBYnVzZTogQSBTeXN0ZW1hdGljIFJldmlldyBvZiBMaXRlcmF0dXJlXCIiOiJodHRwczovL3d3dy50YW5kZm9ubGluZS5jb20vZG9pL2Z1bGwvMTAuMTA4MC8xOTM2MTYxMC4yMDI0LjIzMzE4ODUiLCIxMC4xMDgwLzE5MzYxNjEwLjIwMjQuMjMzMTg4NSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDgwJTJGMTkzNjE2MTAuMjAyNC4yMzMxODg1IiwiMTkzNi0xNjEwIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTkzNi0xNjEwIiwiXCJBIEh1bWFuLUNlbnRlcmVkIFN5c3RlbWF0aWMgTGl0ZXJhdHVyZSBSZXZpZXcgb2YgdGhlIENvbXB1dGF0aW9uYWwgQXBwcm9hY2hlcyBmb3IgT25saW5lIFNleHVhbCBSaXNrIERldGVjdGlvblwiIjoiaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzM0Nzk2MDkiLCIxMC4xMTQ1LzM0Nzk2MDkiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM0Nzk2MDkiLCIyNTczLTAxNDIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8yNTczLTAxNDIiLCJcIlJlc2hhcGluZyBCdXNpbmVzcyBXaXRoIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3Nsb2FucmV2aWV3Lm1pdC5lZHUvcHJvamVjdHMvcmVzaGFwaW5nLWJ1c2luZXNzLXdpdGgtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJcIjgg4oCTIEFJIGZvciBsYXJnZS1zY2FsZSBldmFjdWF0aW9uIG1vZGVsaW5nOiBwcm9taXNlcyBhbmQgY2hhbGxlbmdlc1wiIjoiaHR0cHM6Ly93d3cuc2NpZW5jZWRpcmVjdC5jb20vc2NpZW5jZS9hcnRpY2xlL3BpaS9COTc4MDEyODI0MDczMTAwMDE0OSIsIjk3OC0wLTEyODItNDA3My0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xMjgyLTQwNzMtMSIsIlwiQSBGcmFtZXdvcmsgZm9yIEludGVsbGlnZW50IEZpcmUgRGV0ZWN0aW9uIGFuZCBFdmFjdWF0aW9uIFN5c3RlbVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvczEwNjk0LTAyMS0wMTE1Ny0zIiwiMTAuMTAwNy9zMTA2OTQtMDIxLTAxMTU3LTMiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMDY5NC0wMjEtMDExNTctMyIsIjE1NzItODA5OSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzE1NzItODA5OSIsIlwiTW9kZWxsaW5nIGFuZCBpbnRlcnByZXRpbmcgcHJlLWV2YWN1YXRpb24gZGVjaXNpb24tbWFraW5nIHVzaW5nIG1hY2hpbmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3LnNjaWVuY2VkaXJlY3QuY29tL3NjaWVuY2UvYXJ0aWNsZS9waWkvUzA5MjY1ODA1MTkzMTMxODQiLCIxMC4xMDE2L2ouYXV0Y29uLjIwMjAuMTAzMTQwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLmF1dGNvbi4yMDIwLjEwMzE0MCIsImhkbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hkbF8oaWRlbnRpZmllcikiLCIxMDE3OS8xNzMxNSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTAxNzklMkYxNzMxNSIsIjA5MjYtNTgwNSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzA5MjYtNTgwNSIsIlwiSW5kaWEncyBsYXRlc3QgZWxlY3Rpb24gZW1icmFjZWQgQUkgdGVjaG5vbG9neS4gSGVyZSBhcmUgc29tZSB3YXlzIGl0IHdhcyB1c2VkIGNvbnN0cnVjdGl2ZWx5XCIiOiJodHRwczovL3d3dy5wYnMub3JnL25ld3Nob3VyL3dvcmxkL2luZGlhcy1sYXRlc3QtZWxlY3Rpb24tZW1icmFjZWQtYWktdGVjaG5vbG9neS1oZXJlLWFyZS1zb21lLXdheXMtaXQtd2FzLXVzZWQtY29uc3RydWN0aXZlbHkiLCJcIkV0aGljcyBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgUm9ib3RpY3NcIiI6Imh0dHBzOi8vcGxhdG8uc3RhbmZvcmQuZWR1L2FyY2hpdmVzL2ZhbGwyMDIzL2VudHJpZXMvZXRoaWNzLWFpLyIsIlNpbW9uaXRlICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTaW1vbml0ZTIwMTYiLCJMYXNrb3dza2kgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxhc2tvd3NraTIwMjMiLCJHQU8gKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdBTzIwMjIiLCJWYWxpbnNreSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmFsaW5za3kyMDE5IiwiQ2hyaXN0aWFuICgyMDIwKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaHJpc3RpYW4yMDIwIiwiVmluY2VudCAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmluY2VudDIwMjIiLCJcIkNvcHlyaWdodCBTZXJ2aWNlczogRmFpciBVc2VcIiI6Imh0dHBzOi8vZ3VpZGVzLmxpYnJhcnkuY29ybmVsbC5lZHUvY29weXJpZ2h0L2ZhaXItdXNlIiwiXCJIb3cgdG8gU3RvcCBZb3VyIERhdGEgRnJvbSBCZWluZyBVc2VkIHRvIFRyYWluIEFJXCIiOiJodHRwczovL3d3dy53aXJlZC5jb20vc3RvcnkvaG93LXRvLXN0b3AteW91ci1kYXRhLWZyb20tYmVpbmctdXNlZC10by10cmFpbi1haSIsIjEwNTktMTAyOCI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzEwNTktMTAyOCIsIlJlaXNuZXIgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJlaXNuZXIyMDIzIiwiQWx0ZXIgJiBIYXJyaXMgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFsdGVySGFycmlzMjAyMyIsIlwiR2V0dGluZyB0aGUgSW5ub3ZhdGlvbiBFY29zeXN0ZW0gUmVhZHkgZm9yIEFJLiBBbiBJUCBwb2xpY3kgdG9vbGtpdFwiIjoiaHR0cHM6Ly93d3cud2lwby5pbnQvZWRvY3MvcHViZG9jcy9lbi93aXBvLXB1Yi0yMDAzLWVuLWdldHRpbmctdGhlLWlubm92YXRpb24tZWNvc3lzdGVtLXJlYWR5LWZvci1haS5wZGYiLCJXSVBPIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV0lQTyIsIlwiQmlnIFRlY2ggaXMgc3BlbmRpbmcgbW9yZSB0aGFuIFZDIGZpcm1zIG9uIEFJIHN0YXJ0dXBzXCIiOiJodHRwczovL2Fyc3RlY2huaWNhLmNvbS9haS8yMDIzLzEyL2JpZy10ZWNoLWlzLXNwZW5kaW5nLW1vcmUtdGhhbi12Yy1maXJtcy1vbi1haS1zdGFydHVwcyIsIlwiVGhlIEZ1dHVyZSBvZiBBSSBJcyBHT01BXCIiOiJodHRwczovL3d3dy50aGVhdGxhbnRpYy5jb20vdGVjaG5vbG9neS9hcmNoaXZlLzIwMjMvMTAvYmlnLWFpLXNpbGljb24tdmFsbGV5LWRvbWluYW5jZS82NzU3NTIiLCJcIkJpZyB0ZWNoIGFuZCB0aGUgcHVyc3VpdCBvZiBBSSBkb21pbmFuY2VcIiI6Imh0dHBzOi8vd3d3LmVjb25vbWlzdC5jb20vYnVzaW5lc3MvMjAyMy8wMy8yNi9iaWctdGVjaC1hbmQtdGhlLXB1cnN1aXQtb2YtYWktZG9taW5hbmNlIiwiXCJXaGVyZSB0aGUgYmF0dGxlIHRvIGRvbWluYXRlIEFJIG1heSBiZSB3b25cIiI6Imh0dHBzOi8vd3d3LmNubi5jb20vMjAyMy8xMi8xOS90ZWNoL2Nsb3VkLWNvbXBldGl0aW9uLWFuZC1haS9pbmRleC5odG1sIiwiXCJJbiB0aGUgQWdlIG9mIEEuSS4sIFRlY2gncyBMaXR0bGUgR3V5cyBOZWVkIEJpZyBGcmllbmRzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA3LzA1L2J1c2luZXNzL2FydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyLWRhdGEtY2VudGVycy5odG1sIiwiXCJFbGVjdHJpY2l0eSAyMDI0IOKAkyBBbmFseXNpc1wiIjoiaHR0cHM6Ly93d3cuaWVhLm9yZy9yZXBvcnRzL2VsZWN0cmljaXR5LTIwMjQiLCJcIkFJIGFscmVhZHkgdXNlcyBhcyBtdWNoIGVuZXJneSBhcyBhIHNtYWxsIGNvdW50cnkuIEl0J3Mgb25seSB0aGUgYmVnaW5uaW5nXCIiOiJodHRwczovL3d3dy52b3guY29tL2NsaW1hdGUvMjAyNC8zLzI4LzI0MTExNzIxL2FpLXVzZXMtYS1sb3Qtb2YtZW5lcmd5LWV4cGVydHMtZXhwZWN0LWl0LXRvLWRvdWJsZS1pbi1qdXN0LWEtZmV3LXllYXJzIiwiXCJBSSBpcyBleGhhdXN0aW5nIHRoZSBwb3dlciBncmlkLiBUZWNoIGZpcm1zIGFyZSBzZWVraW5nIGEgbWlyYWNsZSBzb2x1dGlvblwiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL2J1c2luZXNzLzIwMjQvMDYvMjEvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtbnVjbGVhci1mdXNpb24tY2xpbWF0ZS8/dXRtX2NhbXBhaWduPXdwX3Bvc3RfbW9zdCZ1dG1fbWVkaXVtPWVtYWlsJnV0bV9zb3VyY2U9bmV3c2xldHRlciZ3cGlzcmM9bmxfbW9zdCZjYXJ0YS11cmw9aHR0cHMlM0ElMkYlMkZzMi53YXNoaW5ndG9ucG9zdC5jb20lMkZjYXItbG4tdHIlMkYzZTBkNjc4JTJGNjY3NWEyZDJjMmMwNTQ3MmRkOWVjMGY0JTJGNTk2YzA5MDA5YmJjMGYyMDg2NTAzNmU3JTJGMTIlMkY1MiUyRjY2NzVhMmQyYzJjMDU0NzJkZDllYzBmNCIsIlwiQUkgRGF0YSBDZW50ZXJzIGFuZCB0aGUgQ29taW5nIFlTIFBvd2VyIERlbWFuZCBTdXJnZVwiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjQwNzI2MDgwNDI4L2h0dHBzOi8vd3d3LmdvbGRtYW5zYWNocy5jb20vaW50ZWxsaWdlbmNlL3BhZ2VzL2dzLXJlc2VhcmNoL2dlbmVyYXRpb25hbC1ncm93dGgtYWktZGF0YS1jZW50ZXJzLWFuZC10aGUtY29taW5nLXVzLXBvd2VyLXN1cmdlL3JlcG9ydC5wZGYiLCJ0aGUgb3JpZ2luYWwiOiJodHRwOi8vd3d3LXJvaGFuLnNkc3UuZWR1L2ZhY3VsdHkvdmluZ2UvbWlzYy9zaW5ndWxhcml0eS5odG1sIiwiXCJFbmVyZ3ktR3V6emxpbmcgQUkgSXMgQWxzbyB0aGUgRnV0dXJlIG9mIEVuZXJneSBTYXZpbmdzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2J1c2luZXNzL2VuZXJneS1vaWwvYWktZGF0YS1jZW50ZXJzLWVuZXJneS1zYXZpbmdzLWQ2MDIyOTZlIiwiXCJUZWNoIEluZHVzdHJ5IFdhbnRzIHRvIExvY2sgVXAgTnVjbGVhciBQb3dlciBmb3IgQUlcIiI6Imh0dHBzOi8vd3d3Lndzai5jb20vYnVzaW5lc3MvZW5lcmd5LW9pbC90ZWNoLWluZHVzdHJ5LXdhbnRzLXRvLWxvY2stdXAtbnVjbGVhci1wb3dlci1mb3ItYWktNmNiNzUzMTY/bW9kPWRqZW0xMHBvaW50IiwiXCJOdmlkaWEncyBIdWFuZyBTYXlzIE51Y2xlYXIgUG93ZXIgYW4gT3B0aW9uIHRvIEZlZWQgRGF0YSBDZW50ZXJzXCIiOiJodHRwczovL3d3dy5ibG9vbWJlcmcuY29tL25ld3MvYXJ0aWNsZXMvMjAyNC0wOS0yNy9udmlkaWEtcy1odWFuZy1zYXlzLW51Y2xlYXItcG93ZXItYW4tb3B0aW9uLXRvLWZlZWQtZGF0YS1jZW50ZXJzIiwiXCJNaWNyb3NvZnQgZGVhbCB3b3VsZCByZW9wZW4gVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwbGFudCB0byBwb3dlciBBSVwiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL2J1c2luZXNzLzIwMjQvMDkvMjAvbWljcm9zb2Z0LXRocmVlLW1pbGUtaXNsYW5kLW51Y2xlYXItY29uc3RlbGxhdGlvbiIsIlwiVGhyZWUgTWlsZSBJc2xhbmQncyBOdWNsZWFyIFBsYW50IHRvIFJlb3BlbiwgSGVscCBQb3dlciBNaWNyb3NvZnQncyBBSSBDZW50ZXJzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2J1c2luZXNzL2VuZXJneS1vaWwvdGhyZWUtbWlsZS1pc2xhbmRzLW51Y2xlYXItcGxhbnQtdG8tcmVvcGVuLWhlbHAtcG93ZXItbWljcm9zb2Z0cy1haS1jZW50ZXJzLWFlYmZiM2M4P21vZD1TZWFyY2hyZXN1bHRzX3BvczEmcGFnZT0xIiwiXCJUYWl3YW4gdG8gc3RvcCBsYXJnZSBkYXRhIGNlbnRlcnMgaW4gdGhlIE5vcnRoLCBjaXRlcyBpbnN1ZmZpY2llbnQgcG93ZXJcIiI6Imh0dHBzOi8vd3d3LmRhdGFjZW50ZXJkeW5hbWljcy5jb20vZW4vbmV3cy90YWl3YW4tdG8tc3RvcC1sYXJnZS1kYXRhLWNlbnRlcnMtaW4tdGhlLW5vcnRoLWNpdGVzLWluc3VmZmljaWVudC1wb3dlci8iLCJcIuOCqOODjOODk+ODh+OCo+OCouWHuuizh+OBruaXpeacrOS8gealreOAgeWOn+eZuui/keOBj+OBp++8oe+8qeODh+ODvOOCv+OCu+ODs+OCv+ODvOaWsOioreaknOiojlwiIjoiaHR0cHM6Ly93d3cuYmxvb21iZXJnLmNvLmpwL25ld3MvYXJ0aWNsZXMvMjAyNC0xMC0xOC9TTEhHS0tUMEFGQjQwMCIsIlwiTnVjbGVhci1IdW5ncnkgQUkgQ2FtcHVzZXMgTmVlZCBOZXcgUGxhbiB0byBGaW5kIFBvd2VyIEZhc3RcIiI6Imh0dHBzOi8vd3d3LmJsb29tYmVyZy5jb20vbmV3cy9hcnRpY2xlcy8yMDI0LTExLTA0L251Y2xlYXItaHVuZ3J5LWFpLWNhbXB1c2VzLW5lZWQtbmV3LXN0cmF0ZWd5LXRvLWZpbmQtcG93ZXItZmFzdCIsIk5pY2FzICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOaWNhczIwMTgiLCJcIlRydXN0IGFuZCBEaXN0cnVzdCBpbiBBbWVyaWNhXCIiOiJodHRwczovL3d3dy5wZXdyZXNlYXJjaC5vcmcvcG9saXRpY3MvMjAxOS8wNy8yMi90cnVzdC1hbmQtZGlzdHJ1c3QtaW4tYW1lcmljYSIsIldpbGxpYW1zICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXaWxsaWFtczIwMjMiLCJUYXlsb3IgJiBIZXJuICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUYXlsb3JIZXJuMjAyMyIsIlwiV2h5IGl0J3Mgc28gZGFtbiBoYXJkIHRvIG1ha2UgQUkgZmFpciBhbmQgdW5iaWFzZWRcIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMjI5MTY2MDIvYWktYmlhcy1mYWlybmVzcy10cmFkZW9mZnMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJSb3NlICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSb3NlMjAyMyIsIkNOQSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQ05BMjAxOSIsIkdvZmZyZXkgKDIwMDgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvZmZyZXkyMDA4IiwiQmVyZGFobCBldCBhbC4gKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJlcmRhaGxCYWtlck1hbm5Pc29iYTIwMjMiLCJHb2ZmcmV5ICgyMDA4IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvZmZyZXkyMDA4IiwiR3JhbnQgJiBIaWxsICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHcmFudEhpbGwyMDIzIiwiTGFyc29uICYgQW5nd2luICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMYXJzb25Bbmd3aW4yMDE2IiwiTGlwYXJ0aXRvICgyMDExIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxpcGFydGl0bzIwMTEiLCJHb29kbWFuICYgRmxheG1hbiAoMjAxNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kbWFuRmxheG1hbjIwMTciLCJEb2NrcmlsbCAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRG9ja3JpbGwyMDIyIiwiU2FtcGxlICgyMDE3KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTYW1wbGUyMDE3IiwiXCJCbGFjayBCb3ggQUlcIiI6Imh0dHBzOi8vd3d3LnRlY2hvcGVkaWEuY29tL2RlZmluaXRpb24vMzQ5NDAvYmxhY2stYm94LWFpIiwiVmVybWEgKDIwMjEpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlZlcm1hMjAyMSIsIlJvdGhtYW4gKDIwMjApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJvdGhtYW4yMDIwIiwiXCJOZXcgQW50aHJvcGljIFJlc2VhcmNoIFNoZWRzIExpZ2h0IG9uIEFJJ3MgJ0JsYWNrIEJveCdcIiI6Imh0dHBzOi8vZ2l6bW9kby5jb20vbmV3LWFudGhyb3BpYy1yZXNlYXJjaC1zaGVkcy1saWdodC1vbi1haXMtYmxhY2stYm94LTE4NTE0OTEzMzMiLCJSb2JpdHpza2kgKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJvYml0enNraTIwMTgiLCJTYWluYXRvICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTYWluYXRvMjAxNSIsIkhhcmFyaSAoMjAxOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGFyYXJpMjAxOCIsIlwiSG93IENoaW5hIFVzZXMgSGlnaC1UZWNoIFN1cnZlaWxsYW5jZSB0byBTdWJkdWUgTWlub3JpdGllc1wiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAxOS8wNS8yMi93b3JsZC9hc2lhL2NoaW5hLXN1cnZlaWxsYW5jZS14aW5qaWFuZy5odG1sIiwiXCJTZWN1cml0eSBsYXBzZSBleHBvc2VkIGEgQ2hpbmVzZSBzbWFydCBjaXR5IHN1cnZlaWxsYW5jZSBzeXN0ZW1cIiI6Imh0dHBzOi8vdGVjaGNydW5jaC5jb20vMjAxOS8wNS8wMy9jaGluYS1zbWFydC1jaXR5LWV4cG9zZWQiLCJVcmJpbmEgZXQgYWwuICgyMDIyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZVcmJpbmFMZW50em9zSW52ZXJuaXp6aUVraW5zMjAyMiIsIjUxKDMpIEluZHVzdHJpYWwgTGF3IEpvdXJuYWwgNTEx4oCTNTU5IjoiaHR0cHM6Ly9hY2FkZW1pYy5vdXAuY29tL2lsai9hcnRpY2xlLzUxLzMvNTExLzYzMjEwMDgiLCJGb3JkICYgQ29sdmluICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZGb3JkQ29sdmluMjAxNSIsIk1jR2F1Z2hleSAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNHYXVnaGV5MjAyMiIsIklHTSBDaGljYWdvICgyMDE3KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZJR01fQ2hpY2FnbzIwMTciLCJBcm50eiwgR3JlZ29yeSAmIFppZXJhaG4gKDIwMTYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFybnR6R3JlZ29yeVppZXJhaG4yMDE2IiwiTG9ociAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTG9ocjIwMTciLCJGcmV5ICYgT3Nib3JuZSAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRnJleU9zYm9ybmUyMDE3IiwiQXJudHosIEdyZWdvcnkgJiBaaWVyYWhuICgyMDE2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFybnR6R3JlZ29yeVppZXJhaG4yMDE2IiwiXCJBSSBpcyBhbHJlYWR5IHRha2luZyB2aWRlbyBnYW1lIGlsbHVzdHJhdG9ycycgam9icyBpbiBDaGluYVwiIjoiaHR0cHM6Ly9yZXN0b2Z3b3JsZC5vcmcvMjAyMy9haS1pbWFnZS1jaGluYS12aWRlby1nYW1lLWxheW9mZnMiLCJcIkNoaW5hJ3MgZ2FtZSBhcnQgaW5kdXN0cnkgcmVwb3J0ZWRseSBkZWNpbWF0ZWQgYnkgZ3Jvd2luZyBBSSB1c2VcIiI6Imh0dHBzOi8vd3d3LmdhbWVkZXZlbG9wZXIuY29tL2FydC9jaGluYS1zLWdhbWUtYXJ0LWluZHVzdHJ5LXJlcG9ydGVkbHktZGVjaW1hdGVkLWFpLWFydC11c2UiLCJNb3JnZW5zdGVybiAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTW9yZ2Vuc3Rlcm4yMDE1IiwiTWFoZGF3aSAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWFoZGF3aTIwMTciLCJUaG9tcHNvbiAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhvbXBzb24yMDE0IiwiVGhlIEd1YXJkaWFuIFdlZWtseSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9HdWFyZGlhbl9XZWVrbHkiLCJDZWxsYW4tSm9uZXMgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNlbGxhbi1Kb25lczIwMTQiLCJSdXNzZWxsICYgTm9ydmlnIDIwMjEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUnVzc2VsbE5vcnZpZzIwMjEiLCJCb3N0cm9tICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCb3N0cm9tMjAxNCIsIlJ1c3NlbGwgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJ1c3NlbGwyMDE5IiwiTcO8bGxlciAmIEJvc3Ryb20gKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk0lQzMlQkNsbGVyQm9zdHJvbTIwMTQiLCJCb3N0cm9tICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCb3N0cm9tMjAxNSIsIkhhcmFyaSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGFyYXJpMjAyMyIsIlJhd2xpbnNvbiAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUmF3bGluc29uMjAxNSIsIkhvbGxleSAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSG9sbGV5MjAxNSIsIkdpYmJzICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHaWJiczIwMTQiLCJcIlwiR29kZmF0aGVyIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdGFsa3MgaW1wYWN0IGFuZCBwb3RlbnRpYWwgb2YgbmV3IEFJXCIiOiJodHRwczovL3d3dy5jYnNuZXdzLmNvbS92aWRlby9nb2RmYXRoZXItb2YtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtdGFsa3MtaW1wYWN0LWFuZC1wb3RlbnRpYWwtb2YtbmV3LWFpIiwiXCJDYW5hZGlhbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBsZWFkZXIgR2VvZmZyZXkgSGludG9uIHBpbGVzIG9uIGZlYXJzIG9mIGNvbXB1dGVyIHRha2VvdmVyXCIiOiJodHRwczovL3d3dy5jYmMuY2EvbmV3cy9idXNpbmVzcy9haS1kb29tLWNvbHVtbi1kb24tcGl0dGlzLTEuNjgyOTMwMiIsIlwiJzUw4oCTNTAgY2hhbmNlJyB0aGF0IEFJIG91dHNtYXJ0cyBodW1hbml0eSwgR2VvZmZyZXkgSGludG9uIHNheXNcIiI6Imh0dHBzOi8vd3d3LmJubmJsb29tYmVyZy5jYS81MC01MC1jaGFuY2UtdGhhdC1haS1vdXRzbWFydHMtaHVtYW5pdHktZ2VvZmZyZXktaGludG9uLXNheXMtMS4yMDg1Mzk0IiwiVmFsYW5jZSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmFsYW5jZTIwMjMiLCJcIlJpc2Ugb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgaW5ldml0YWJsZSBidXQgc2hvdWxkIG5vdCBiZSBmZWFyZWQsICdmYXRoZXIgb2YgQUknIHNheXNcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS90ZWNobm9sb2d5LzIwMjMvbWF5LzA3L3Jpc2Utb2YtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtaXMtaW5ldml0YWJsZS1idXQtc2hvdWxkLW5vdC1iZS1mZWFyZWQtZmF0aGVyLW9mLWFpLXNheXMiLCJcIidGYXRoZXIgb2YgQUknIHNheXMgdGVjaCBmZWFycyBtaXNwbGFjZWQ6ICdZb3UgY2Fubm90IHN0b3AgaXQnXCIiOiJodHRwczovL3d3dy5mb3huZXdzLmNvbS90ZWNoL2ZhdGhlci1haS1qdXJnZW4tc2NobWlkaHViZXItc2F5cy10ZWNoLWZlYXJzLW1pc3BsYWNlZC1jYW5ub3Qtc3RvcCIsIlwiSnVlcmdlbiBTY2htaWRodWJlciwgUmVub3duZWQgJ0ZhdGhlciBPZiBNb2Rlcm4gQUksJyBTYXlzIEhpcyBMaWZlJ3MgV29yayBXb24ndCBMZWFkIFRvIER5c3RvcGlhXCIiOiJodHRwczovL3d3dy5mb3JiZXMuY29tL3NpdGVzL2hlc3NpZWpvbmVzLzIwMjMvMDUvMjMvanVlcmdlbi1zY2htaWRodWJlci1yZW5vd25lZC1mYXRoZXItb2YtbW9kZXJuLWFpLXNheXMtaGlzLWxpZmVzLXdvcmstd29udC1sZWFkLXRvLWR5c3RvcGlhIiwiXCJBbmRyZXcgTmc6ICdEbyB3ZSB0aGluayB0aGUgd29ybGQgaXMgYmV0dGVyIG9mZiB3aXRoIG1vcmUgb3IgbGVzcyBpbnRlbGxpZ2VuY2U/J1wiIjoiaHR0cHM6Ly93d3cuZnQuY29tL2NvbnRlbnQvMmRjMDdmOWUtZDJhOS00ZDk4LWI3NDYtYjA1MWY5MzUyYmUzIiwiXCJIb3cgTm90IHRvIEJlIFN0dXBpZCBBYm91dCBBSSwgV2l0aCBZYW5uIExlQ3VuXCIiOiJodHRwczovL3d3dy53aXJlZC5jb20vc3RvcnkvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtbWV0YS15YW5uLWxlY3VuLWludGVydmlldyIsIkJyb29rcyAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQnJvb2tzMjAxNCIsIkdlaXN0ICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHZWlzdDIwMTUiLCJNYWRyaWdhbCAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWFkcmlnYWwyMDE1IiwiTGVlICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMZWUyMDE0IiwiWXVka293c2t5ICgyMDA4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZZdWRrb3dza3kyMDA4IiwiQW5kZXJzb24gJiBBbmRlcnNvbiAoMjAxMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQW5kZXJzb25BbmRlcnNvbjIwMTEiLCJBQUFJICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZBQUFJMjAxNCIsIldhbGxhY2ggKDIwMTApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRldhbGxhY2gyMDEwIiwiXCJIdWdnaW5nIEZhY2UgQ0VPIHNheXMgaGUncyBmb2N1c2VkIG9uIGJ1aWxkaW5nIGEgJ3N1c3RhaW5hYmxlIG1vZGVsJyBmb3IgdGhlICQ0LjUgYmlsbGlvbiBvcGVuLXNvdXJjZS1BSSBzdGFydHVwXCIiOiJodHRwczovL3d3dy5idXNpbmVzc2luc2lkZXIuY29tL2h1Z2dpbmctZmFjZS1vcGVuLXNvdXJjZS1haS1hcHByb2FjaC0yMDIzLTEyIiwiXCJHb29nbGUgb3BlbiBzb3VyY2VzIHRvb2xzIHRvIHN1cHBvcnQgQUkgbW9kZWwgZGV2ZWxvcG1lbnRcIiI6Imh0dHBzOi8vdGVjaGNydW5jaC5jb20vMjAyNC8wNC8wOS9nb29nbGUtb3Blbi1zb3VyY2VzLXRvb2xzLXRvLXN1cHBvcnQtYWktbW9kZWwtZGV2ZWxvcG1lbnQiLCJcIlRoZSBvcGVuLXNvdXJjZSBBSSBib29tIGlzIGJ1aWx0IG9uIEJpZyBUZWNoJ3MgaGFuZG91dHMuIEhvdyBsb25nIHdpbGwgaXQgbGFzdD9cIiI6Imh0dHBzOi8vd3d3LnRlY2hub2xvZ3lyZXZpZXcuY29tLzIwMjMvMDUvMTIvMTA3Mjk1MC9vcGVuLXNvdXJjZS1haS1nb29nbGUtb3BlbmFpLWVsZXV0aGVyLW1ldGEiLCJcIk1pc3RyYWwgQUkncyBOZXcgTGFuZ3VhZ2UgTW9kZWwgQWltcyBmb3IgT3BlbiBTb3VyY2UgU3VwcmVtYWN5XCIiOiJodHRwczovL2FpYnVzaW5lc3MuY29tL25scC9taXN0cmFsLWFpLXMtbmV3LWxhbmd1YWdlLW1vZGVsLWFpbXMtZm9yLW9wZW4tc291cmNlLXN1cHJlbWFjeSIsIlwiU3RhYmlsaXR5IGFubm91bmNlcyBTdGFibGUgRGlmZnVzaW9uIDMsIGEgbmV4dC1nZW4gQUkgaW1hZ2UgZ2VuZXJhdG9yXCIiOiJodHRwczovL2Fyc3RlY2huaWNhLmNvbS9pbmZvcm1hdGlvbi10ZWNobm9sb2d5LzIwMjQvMDIvc3RhYmlsaXR5LWFubm91bmNlcy1zdGFibGUtZGlmZnVzaW9uLTMtYS1uZXh0LWdlbi1haS1pbWFnZS1nZW5lcmF0b3IiLCJcIkhvdyBlbnRlcnByaXNlcyBhcmUgdXNpbmcgb3BlbiBzb3VyY2UgTExNczogMTYgZXhhbXBsZXNcIiI6Imh0dHBzOi8vdmVudHVyZWJlYXQuY29tL2FpL2hvdy1lbnRlcnByaXNlcy1hcmUtdXNpbmctb3Blbi1zb3VyY2UtbGxtcy0xNi1leGFtcGxlcyIsIlwiU2hvdWxkIHdlIG1ha2Ugb3VyIG1vc3QgcG93ZXJmdWwgQUkgbW9kZWxzIG9wZW4gc291cmNlIHRvIGFsbD9cIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMjAyNC8yLzIvMjQwNTg0ODQvb3Blbi1zb3VyY2UtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYWktcmlzay1tZXRhLWxsYW1hLTItY2hhdGdwdC1vcGVuYWktZGVlcGZha2UiLCJcIlVuZGVyc3RhbmRpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgZXRoaWNzIGFuZCBzYWZldHlcIiI6Imh0dHBzOi8vd3d3LnR1cmluZy5hYy51ay9zaXRlcy9kZWZhdWx0L2ZpbGVzLzIwMTktMDYvdW5kZXJzdGFuZGluZ19hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9ldGhpY3NfYW5kX3NhZmV0eS5wZGYiLCJcIkFJIEV0aGljcyBhbmQgR292ZXJuYW5jZSBpbiBQcmFjdGljZVwiIjoiaHR0cHM6Ly93d3cudHVyaW5nLmFjLnVrL3NpdGVzL2RlZmF1bHQvZmlsZXMvMjAyMy0xMi9haWVnLWF0aS1haS1ldGhpY3MtYW4taW50cm9fMS5wZGYiLCJcIkEgVW5pZmllZCBGcmFtZXdvcmsgb2YgRml2ZSBQcmluY2lwbGVzIGZvciBBSSBpbiBTb2NpZXR5XCIiOiJodHRwczovL2hkc3IubWl0cHJlc3MubWl0LmVkdS9wdWIvbDBqc2g5ZDEiLCIxMC4xMTYyLzk5NjA4ZjkyLjhjZDU1MGQxIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExNjIlMkY5OTYwOGY5Mi44Y2Q1NTBkMSIsIlwiQSBjcml0aWNhbCBwZXJzcGVjdGl2ZSBvbiBndWlkZWxpbmVzIGZvciByZXNwb25zaWJsZSBhbmQgdHJ1c3R3b3J0aHkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMTAxOS0wMjAtMDk5NDgtMSIsIjEwLjEwMDcvczExMDE5LTAyMC0wOTk0OC0xIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTEwMTktMDIwLTA5OTQ4LTEiLCIxNTcyLTg2MzMiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTcyLTg2MzMiLCJcIkV0aGljYWwgaXNzdWVzIGluIHRoZSBkZXZlbG9wbWVudCBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZTogcmVjb2duaXppbmcgdGhlIHJpc2tzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOC9JSk9FUy0wNS0yMDIzLTAxMDciLCIxMC4xMTA4L0lKT0VTLTA1LTIwMjMtMDEwNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA4JTJGSUpPRVMtMDUtMjAyMy0wMTA3IiwiMjUxNC05MzY5IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjUxNC05MzY5IiwiXCJBSSBTYWZldHkgSW5zdGl0dXRlIHJlbGVhc2VzIG5ldyBBSSBzYWZldHkgZXZhbHVhdGlvbnMgcGxhdGZvcm1cIiI6Imh0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L25ld3MvYWktc2FmZXR5LWluc3RpdHV0ZS1yZWxlYXNlcy1uZXctYWktc2FmZXR5LWV2YWx1YXRpb25zLXBsYXRmb3JtIiwiQmVycnloaWxsIGV0IGFsLiAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQmVycnloaWxsSGVhbmdDbG9naGVyTWNCcmlkZTIwMTkiLCJCYXJmaWVsZCAmIFBhZ2FsbG8gKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJhcmZpZWxkUGFnYWxsbzIwMTgiLCJJcGhvZmVuICYgS3JpdGlrb3MgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRklwaG9mZW5Lcml0aWtvczIwMTkiLCJXaXJ0eiwgV2V5ZXJlciAmIEdleWVyICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXaXJ0eldleWVyZXJHZXllcjIwMTgiLCJCdWl0ZW4gKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJ1aXRlbjIwMTkiLCJMYXcgTGlicmFyeSBvZiBDb25ncmVzcyAoVS5TLikuIEdsb2JhbCBMZWdhbCBSZXNlYXJjaCBEaXJlY3RvcmF0ZSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTGF3X0xpYnJhcnlfb2ZfQ29uZ3Jlc3NfKFUuUy4pLl9HbG9iYWxfTGVnYWxfUmVzZWFyY2hfRGlyZWN0b3JhdGUyMDE5IiwiVmluY2VudCAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmluY2VudDIwMjMiLCJTdGFuZm9yZCBVbml2ZXJzaXR5ICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTdGFuZm9yZF9Vbml2ZXJzaXR5MjAyMyIsIlVORVNDTyAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVU5FU0NPMjAyMSIsIktpc3NpbmdlciAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2lzc2luZ2VyMjAyMSIsIkFsdG1hbiwgQnJvY2ttYW4gJiBTdXRza2V2ZXIgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFsdG1hbkJyb2NrbWFuU3V0c2tldmVyMjAyMyIsIlwiVU4gQW5ub3VuY2VzIEFkdmlzb3J5IEJvZHkgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vd3d3LnZvYW5ld3MuY29tL2EvdW4tYW5ub3VuY2VzLWFkdmlzb3J5LWJvZHktb24tYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtLzczMjg3MzIuaHRtbCIsIlwiQ291bmNpbCBvZiBFdXJvcGUgb3BlbnMgZmlyc3QgZXZlciBnbG9iYWwgdHJlYXR5IG9uIEFJIGZvciBzaWduYXR1cmVcIiI6Imh0dHBzOi8vd3d3LmNvZS5pbnQvZW4vd2ViL3BvcnRhbC8tL2NvdW5jaWwtb2YtZXVyb3BlLW9wZW5zLWZpcnN0LWV2ZXItZ2xvYmFsLXRyZWF0eS1vbi1haS1mb3Itc2lnbmF0dXJlIiwiRWR3YXJkcyAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRWR3YXJkczIwMjMiLCJLYXNwZXJvd2ljeiAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2FzcGVyb3dpY3oyMDIzIiwiRm94IE5ld3MgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkZveF9OZXdzMjAyMyIsIlwiVGhlIEJsZXRjaGxleSBEZWNsYXJhdGlvbiBieSBDb3VudHJpZXMgQXR0ZW5kaW5nIHRoZSBBSSBTYWZldHkgU3VtbWl0LCAx4oCTMiBOb3ZlbWJlciAyMDIzXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyMzExMDExMjM5MDQvaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL2FpLXNhZmV0eS1zdW1taXQtMjAyMy10aGUtYmxldGNobGV5LWRlY2xhcmF0aW9uL3RoZS1ibGV0Y2hsZXktZGVjbGFyYXRpb24tYnktY291bnRyaWVzLWF0dGVuZGluZy10aGUtYWktc2FmZXR5LXN1bW1pdC0xLTItbm92ZW1iZXItMjAyMyIsIlwiQ291bnRyaWVzIGFncmVlIHRvIHNhZmUgYW5kIHJlc3BvbnNpYmxlIGRldmVsb3BtZW50IG9mIGZyb250aWVyIEFJIGluIGxhbmRtYXJrIEJsZXRjaGxleSBEZWNsYXJhdGlvblwiIjoiaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvbmV3cy9jb3VudHJpZXMtYWdyZWUtdG8tc2FmZS1hbmQtcmVzcG9uc2libGUtZGV2ZWxvcG1lbnQtb2YtZnJvbnRpZXItYWktaW4tbGFuZG1hcmstYmxldGNobGV5LWRlY2xhcmF0aW9uIiwiXCJTZWNvbmQgZ2xvYmFsIEFJIHN1bW1pdCBzZWN1cmVzIHNhZmV0eSBjb21taXRtZW50cyBmcm9tIGNvbXBhbmllc1wiIjoiaHR0cHM6Ly93d3cucmV1dGVycy5jb20vdGVjaG5vbG9neS9nbG9iYWwtYWktc3VtbWl0LXNlb3VsLWFpbXMtZm9yZ2UtbmV3LXJlZ3VsYXRvcnktYWdyZWVtZW50cy0yMDI0LTA1LTIxIiwiXCJGcm9udGllciBBSSBTYWZldHkgQ29tbWl0bWVudHMsIEFJIFNlb3VsIFN1bW1pdCAyMDI0XCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyNDA1MjMyMDE2MTEvaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL2Zyb250aWVyLWFpLXNhZmV0eS1jb21taXRtZW50cy1haS1zZW91bC1zdW1taXQtMjAyNC9mcm9udGllci1haS1zYWZldHktY29tbWl0bWVudHMtYWktc2VvdWwtc3VtbWl0LTIwMjQiLCIwLTE5ODItNTA3OS03IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTE5ODItNTA3OS03IiwiXCJHb29nbGUgYm9va3MgbmdyYW1cIiI6Imh0dHBzOi8vYm9va3MuZ29vZ2xlLmNvbS9uZ3JhbXMvZ3JhcGg/Y29udGVudD1lbGVjdHJvbmljK2JyYWluJnllYXJfc3RhcnQ9MTkzMCZ5ZWFyX2VuZD0yMDE5JmNvcnB1cz1lbi0yMDE5JnNtb290aGluZz0zIiwiQ29tcHV0aW5nIG1hY2hpbmVyeSBhbmQgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nX21hY2hpbmVyeV9hbmRfaW50ZWxsaWdlbmNlIiwiSGF1Z2VsYW5kICgxOTg1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkhhdWdlbGFuZDE5ODUiLCJSdXNzZWxsICYgTm9ydmlnICgyMDAzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSdXNzZWxsTm9ydmlnMjAwMyIsIlNpbW9uICgxOTY1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNpbW9uMTk2NSIsIk1pbnNreSAoMTk2NyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNaW5za3kxOTY3IiwiTGlnaHRoaWxsICgxOTczKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMaWdodGhpbGwxOTczIiwiTlJDIDE5OTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTlJDMTk5OSIsIkV4cGVydCBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwZXJ0X3N5c3RlbXMiLCJNY0NvcmR1Y2sgKDIwMDQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ29yZHVjazIwMDQiLCJNb3JhdmVjICgxOTg4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNb3JhdmVjMTk4OCIsIkJyb29rcyAoMTk5MCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQnJvb2tzMTk5MCIsIldlbmcgZXQgYWwuICgyMDAxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXZW5nTWNDbGVsbGFuZFBlbnRsYW5kU3Bvcm5zMjAwMSIsIkx1bmdhcmVsbGEgZXQgYWwuICgyMDAzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMdW5nYXJlbGxhTWV0dGFQZmVpZmVyU2FuZGluaTIwMDMiLCJBc2FkYSBldCBhbC4gKDIwMDkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFzYWRhSG9zb2RhS3VuaXlvc2hpSXNoaWd1cm8yMDA5IiwiT3VkZXllciAoMjAxMCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGT3VkZXllcjIwMTAiLCJGb3JtYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNOZWF0X3ZzLl9zY3J1ZmZ5IiwiS3VyendlaWwgKDIwMDUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS3VyendlaWwyMDA1IiwiV29uZyAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGV29uZzIwMjMiLCJNb29yZSdzIExhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vb3JlJTI3c19MYXciLCJDbGFyayAoMjAxNWIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNsYXJrMjAxNWIiLCJCaWcgZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpZ19kYXRhIiwiXCJPcGVuQUkgUmVsZWFzZXMgR1BULTMsIFRoZSBMYXJnZXN0IE1vZGVsIFNvIEZhclwiIjoiaHR0cHM6Ly9hbmFseXRpY3NpbmRpYW1hZy5jb20vb3Blbi1haS1ncHQtMy1sYW5ndWFnZS1tb2RlbCIsIlwiQ2hhdEdQVCByZWFjaGVzIDEwMCBtaWxsaW9uIHVzZXJzIHR3byBtb250aHMgYWZ0ZXIgbGF1bmNoXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDIzL2ZlYi8wMi9jaGF0Z3B0LTEwMC1taWxsaW9uLXVzZXJzLW9wZW4tYWktZmFzdGVzdC1ncm93aW5nLWFwcCIsIlwiQ2hhdEdQVCB0dXJucyAxOiBBSSBjaGF0Ym90J3Mgc3VjY2VzcyBzYXlzIGFzIG11Y2ggYWJvdXQgaHVtYW5zIGFzIHRlY2hub2xvZ3lcIiI6Imh0dHBzOi8vdGhlY29udmVyc2F0aW9uLmNvbS9jaGF0Z3B0LXR1cm5zLTEtYWktY2hhdGJvdHMtc3VjY2Vzcy1zYXlzLWFzLW11Y2gtYWJvdXQtaHVtYW5zLWFzLXRlY2hub2xvZ3ktMjE4NzA0IiwiRGlGZWxpY2lhbnRvbmlvICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEaUZlbGljaWFudG9uaW8yMDIzIiwiR29zd2FtaSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGR29zd2FtaTIwMjMiLCJcIk5lYXJseSAxIGluIDQgbmV3IHN0YXJ0dXBzIGlzIGFuIEFJIGNvbXBhbnlcIiI6Imh0dHBzOi8vcGl0Y2hib29rLmNvbS9uZXdzL2FydGljbGVzL25lYXJseS0xLWluLTQtbmV3LXN0YXJ0dXBzLWlzLWFuLWFpLWNvbXBhbnkiLCJcIlBoaWxvc29waHkgaXMgY3J1Y2lhbCBpbiB0aGUgYWdlIG9mIEFJXCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vcGhpbG9zb3BoeS1pcy1jcnVjaWFsLWluLXRoZS1hZ2Utb2YtYWktMjM1OTA3IiwiXCJXaWxsIEFJIGV2ZXIgYmVjb21lIGNvbnNjaW91cz8gSXQgZGVwZW5kcyBvbiBob3cgeW91IHRoaW5rIGFib3V0IGJpb2xvZ3lcIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMzUxODkzL2NvbnNjaW91c25lc3MtYWktbWFjaGluZXMtbmV1cm9zY2llbmNlLW1pbmQiLCJcIlRoZSBQaGlsb3NvcGh5IG9mIEFJIGFuZCB0aGUgQUkgb2YgUGhpbG9zb3BoeVwiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTgxMDIzMTgxNzI1L2h0dHA6Ly9qbWMuc3RhbmZvcmQuZWR1L2FydGljbGVzL2FpcGhpbDIuaHRtbCIsIlwiQUkgaXMgY2xvc2VyIHRoYW4gZXZlciB0byBwYXNzaW5nIHRoZSBUdXJpbmcgdGVzdCBmb3IgJ2ludGVsbGlnZW5jZScuIFdoYXQgaGFwcGVucyB3aGVuIGl0IGRvZXM/XCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vYWktaXMtY2xvc2VyLXRoYW4tZXZlci10by1wYXNzaW5nLXRoZS10dXJpbmctdGVzdC1mb3ItaW50ZWxsaWdlbmNlLXdoYXQtaGFwcGVucy13aGVuLWl0LWRvZXMtMjE0NzIxIiwiTWFrZXIgKDIwMDYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1ha2VyMjAwNiIsIk1jQ2FydGh5ICgxOTk5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNY0NhcnRoeTE5OTkiLCJNaW5za3kgKDE5ODYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1pbnNreTE5ODYiLCJcIldoYXQgSXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKT9cIiI6Imh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9sZWFybi93aGF0LWlzLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlIiwiR29vZ2xlIENsb3VkIFBsYXRmb3JtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX0Nsb3VkX1BsYXRmb3JtIiwiXCJPbmUgb2YgdGhlIEJpZ2dlc3QgUHJvYmxlbXMgaW4gUmVndWxhdGluZyBBSSBJcyBBZ3JlZWluZyBvbiBhIERlZmluaXRpb25cIiI6Imh0dHBzOi8vY2FybmVnaWVlbmRvd21lbnQub3JnL3Bvc3RzLzIwMjIvMTAvb25lLW9mLXRoZS1iaWdnZXN0LXByb2JsZW1zLWluLXJlZ3VsYXRpbmctYWktaXMtYWdyZWVpbmctb24tYS1kZWZpbml0aW9uP2xhbmc9ZW4iLCJDYXJuZWdpZSBFbmRvd21lbnQgZm9yIEludGVybmF0aW9uYWwgUGVhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXJuZWdpZV9FbmRvd21lbnRfZm9yX0ludGVybmF0aW9uYWxfUGVhY2UiLCJcIkFJIG9yIEJTPyBIb3cgdG8gdGVsbCBpZiBhIG1hcmtldGluZyB0b29sIHJlYWxseSB1c2VzIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3d3dy50aGVkcnVtLmNvbS9vcGluaW9uLzIwMjMvMDMvMzAvYWktb3ItYnMtaG93LXRlbGwtaWYtbWFya2V0aW5nLXRvb2wtcmVhbGx5LXVzZXMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJOaWxzc29uICgxOTgzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOaWxzc29uMTk4MyIsIkhhdWdlbGFuZCAoMTk4NSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGF1Z2VsYW5kMTk4NSIsIk5ld2VsbCAmIFNpbW9uICgxOTc2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ld2VsbFNpbW9uMTk3NiIsIk1pbnNreSAoMTk4NiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNaW5za3kxOTg2IiwiUGlua2VyICgyMDA3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlBpbmtlcjIwMDciLCJEcmV5ZnVzJyBjcml0aXF1ZSBvZiBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RyZXlmdXMlMjdfY3JpdGlxdWVfb2ZfQUkiLCJEcmV5ZnVzICgxOTcyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEcmV5ZnVzMTk3MiIsIkZlYXJuICgyMDA3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkZlYXJuMjAwNyIsIkxhbmdsZXkgKDIwMTEpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxhbmdsZXkyMDExIiwiS2F0eiAoMjAxMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2F0ejIwMTIiLCJOZWF0cyB2cy4gc2NydWZmaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVhdHNfdnMuX3NjcnVmZmllcyIsIk5pbHNzb24gKDE5ODMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTmlsc3NvbjE5ODMiLCJSb2JlcnRzICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSb2JlcnRzMjAxNiIsIkNoYWxtZXJzICgxOTk1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaGFsbWVyczE5OTUiLCJEZW5uZXR0ICgxOTkxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEZW5uZXR0MTk5MSIsIkhvcnN0ICgyMDA1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZIb3JzdDIwMDUiLCJTZWFybGUgKDE5OTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNlYXJsZTE5OTkiLCJTZWFybGUgKDE5ODApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNlYXJsZTE5ODAiLCJcIk5pY2sgQm9zdHJvbTogSG93IGNhbiB3ZSBiZSBjZXJ0YWluIGEgbWFjaGluZSBpc24ndCBjb25zY2lvdXM/XCIiOiJodHRwczovL3d3dy5zcGVjdGF0b3IuY28udWsvYXJ0aWNsZS9uaWNrLWJvc3Ryb20taG93LWNhbi13ZS1iZS1jZXJ0YWluLWEtbWFjaGluZS1pc250LWNvbnNjaW91cyIsIlwiV2h5IGRvbid0IHJvYm90cyBoYXZlIHJpZ2h0cz9cIiI6Imh0dHBzOi8vYmlndGhpbmsuY29tL3RoaW5raW5nL3doeS1kb250LXJvYm90cy1oYXZlLXJpZ2h0cyIsIlwiQUkgU2hvdWxkIEJlIFRlcnJpZmllZCBvZiBIdW1hbnNcIiI6Imh0dHBzOi8vdGltZS5jb20vNjI5NjIzNC9haS1zaG91bGQtYmUtdGVycmlmaWVkLW9mLWh1bWFucyIsIlwiV2hhdCBsZWFkZXJzIG5lZWQgdG8ga25vdyBhYm91dCByb2JvdCByaWdodHNcIiI6Imh0dHBzOi8vd3d3LmZhc3Rjb21wYW55LmNvbS85MDkyMDc2OS93aGF0LWxlYWRlcnMtbmVlZC10by1rbm93LWFib3V0LXJvYm90LXJpZ2h0cyIsIlwiR2l2ZSByb2JvdHMgJ3BlcnNvbmhvb2QnIHN0YXR1cywgRVUgY29tbWl0dGVlIGFyZ3Vlc1wiIjoiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNy9qYW4vMTIvZ2l2ZS1yb2JvdHMtcGVyc29uaG9vZC1zdGF0dXMtZXUtY29tbWl0dGVlLWFyZ3VlcyIsIlwiRXhwZXJ0cyBEb24ndCBUaGluayBSb2JvdHMgU2hvdWxkIEhhdmUgUmlnaHRzXCIiOiJodHRwczovL3d3dy5uZXdzd2Vlay5jb20vcm9ib3RzLWh1bWFuLXJpZ2h0cy1lbGVjdHJvbmljLXBlcnNvbnMtaHVtYW5zLXZlcnN1cy1tYWNoaW5lcy04ODYwNzUiLCJcIlJvYm90IHJpZ2h0cyB2aW9sYXRlIGh1bWFuIHJpZ2h0cywgZXhwZXJ0cyB3YXJuIEVVXCIiOiJodHRwczovL3d3dy5ldXJvbmV3cy5jb20vMjAxOC8wNC8xMy9yb2JvdC1yaWdodHMtdmlvbGF0ZS1odW1hbi1yaWdodHMtZXhwZXJ0cy13YXJuLWV1IiwiSW50ZWxsaWdlbmNlIGV4cGxvc2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9leHBsb3Npb24iLCJ0ZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9zaW5ndWxhcml0eSIsIk9tb2h1bmRybyAoMjAwOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGT21vaHVuZHJvMjAwOCIsIkt1cnp3ZWlsICgyMDA1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZLdXJ6d2VpbDIwMDUiLCJHb29kICgxOTY1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kMTk2NSIsIlZpbmdlICgxOTkzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZWaW5nZTE5OTMiLCJCdXRsZXIgKDE4NjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJ1dGxlcjE4NjMiLCJEeXNvbiAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRHlzb24xOTk4IiwiXCJhIGdpZnQgdG8gdGhlIGZhciByaWdodFwiIjoiaHR0cHM6Ly93d3cuY29tcHV0ZXJ3ZWVrbHkuY29tL29waW5pb24vTGFib3Vycy1BSS1BY3Rpb24tUGxhbi1hLWdpZnQtdG8tdGhlLWZhci1yaWdodCIsIkJ1dHRhenpvICgyMDAxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCdXR0YXp6bzIwMDEiLCJBbmRlcnNvbiAoMjAwOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQW5kZXJzb24yMDA4IiwiTWNDYXVsZXkgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ2F1bGV5MjAwNyIsIkdhbHZhbiAoMTk5NykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGR2FsdmFuMTk5NyIsIk9wZW4gU3lsbGFidXMiOiJodHRwczovL2V4cGxvcmVyLm9wZW5zeWxsYWJ1cy5vcmcvcmVzdWx0L2ZpZWxkP2lkPUNvbXB1dGVyK1NjaWVuY2UiLCJSdXNzZWxsLCBTdHVhcnQgSi4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsIk5vcnZpZywgUGV0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRlcl9Ob3J2aWciLCJMQ0NOIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTENDTl8oaWRlbnRpZmllcikiLCJSaWNoLCBFbGFpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGFpbmVfUmljaCIsIjk3OC0wLTA3MDAtODc3MC01IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wNzAwLTg3NzAtNSIsIkx1Z2VyLCBHZW9yZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9R2VvcmdlX0x1Z2VyJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlN0dWJibGVmaWVsZCwgV2lsbGlhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fU3R1YmJsZWZpZWxkIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFN0cnVjdHVyZXMgYW5kIFN0cmF0ZWdpZXMgZm9yIENvbXBsZXggUHJvYmxlbSBTb2x2aW5nIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL2FydGlmaWNpYWxpbnRlbGwwMDAwbHVnZSIsIjk3OC0wLTgwNTMtNDc4MC03IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC04MDUzLTQ3ODAtNyIsIk5pbHNzb24sIE5pbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OaWxzX05pbHNzb25fKHJlc2VhcmNoZXIpIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTmV3IFN5bnRoZXNpcyI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9hcnRpZmljaWFsaW50ZWxsMDAwMG5pbHMiLCI5NzgtMS01NTg2LTA0NjctNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtNTU4Ni0wNDY3LTQiLCIwLTEzLTc5MDM5NS0yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTEzLTc5MDM5NS0yIiwiUG9vbGUsIERhdmlkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPURhdmlkX1Bvb2xlXyhyZXNlYXJjaGVyKSZhY3Rpb249ZWRpdCZyZWRsaW5rPTEiLCJNYWNrd29ydGgsIEFsYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGFuX01hY2t3b3J0aCIsIkdvZWJlbCwgUmFuZHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9UmFuZHlfR29lYmVsJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIkNvbXB1dGF0aW9uYWwgSW50ZWxsaWdlbmNlOiBBIExvZ2ljYWwgQXBwcm9hY2giOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvY29tcHV0YXRpb25hbGludDAwcG9vbCIsIjk3OC0wLTE5NTEtMDI3MC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xOTUxLTAyNzAtMyIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBGb3VuZGF0aW9ucyBvZiBDb21wdXRhdGlvbmFsIEFnZW50cyI6Imh0dHA6Ly9hcnRpbnQuaW5mby9pbmRleC5odG1sIiwiOTc4LTEtMTA3MS05NTM5LTQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTEwNzEtOTUzOS00IiwiOTc4LTMtMzE5NS04NDg2LTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0zLTMxOTUtODQ4Ni03IiwiQ3JldmllciwgRGFuaWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuaWVsX0NyZXZpZXIiLCIwLTQ2NS0wMjk5Ny0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTQ2NS0wMjk5Ny0zIiwiTWNDb3JkdWNrLCBQYW1lbGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYW1lbGFfTWNDb3JkdWNrIiwiMS01Njg4LTEyMDUtMSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvMS01Njg4LTEyMDUtMSIsIk5ld3F1aXN0LCBILiBQLiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hQX05ld3F1aXN0IiwiOTc4LTAtNjcyMy0wNDEyLTUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTY3MjMtMDQxMi01IiwiMDQ3MTYxNDk2MyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvMDQ3MTYxNDk2MyIsIkFJICYgTUwgaW4gRnVzaW9uIjoiaHR0cHM6Ly9zdWxpLnBwcGwuZ292LzIwMjMvY291cnNlL1JlYS1QUFBMLVNVTEkyMDIzLnBkZiIsIkFJICYgTUwgaW4gRnVzaW9uLCB2aWRlbyBsZWN0dXJlIjoiaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xbnBDVHJKOFhKbjIwWkdEQV9EZk1wQU51UVpGTXpLUGgvdmlldz91c3A9ZHJpdmVfbGluayIsIlwiRnJhbnplbiwgR3Jpc2hhbSBhbmQgT3RoZXIgUHJvbWluZW50IEF1dGhvcnMgU3VlIE9wZW5BSVwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAyMy8wOS8yMC9ib29rcy9hdXRob3JzLW9wZW5haS1sYXdzdWl0LWNoYXRncHQtY29weXJpZ2h0Lmh0bWw/Y2FtcGFpZ25faWQ9MiZlbWM9ZWRpdF90aF8yMDIzMDkyMSZpbnN0YW5jZV9pZD0xMDMyNTkmbmw9dG9kYXlzaGVhZGxpbmVzJnJlZ2lfaWQ9NjI4MTY0NDAmc2VnbWVudF9pZD0xNDUyODgmdXNlcl9pZD1hZDI0ZjM1NDVkYWUwZWM0NDI4NGEzOGJiNGE4OGYxZCIsIkFsdG1hbiwgU2FtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtX0FsdG1hbiIsIkJyb2NrbWFuLCBHcmVnIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JlZ19Ccm9ja21hbiIsIlN1dHNrZXZlciwgSWx5YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lseWFfU3V0c2tldmVyIiwiXCJHb3Zlcm5hbmNlIG9mIFN1cGVyaW50ZWxsaWdlbmNlXCIiOiJodHRwczovL29wZW5haS5jb20vYmxvZy9nb3Zlcm5hbmNlLW9mLXN1cGVyaW50ZWxsaWdlbmNlIiwiMTAuMTAwNy9zMDAxNDYtMDA3LTAwOTQtNSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczAwMTQ2LTAwNy0wMDk0LTUiLCIxMC4xMTA5L3RhbWQuMjAwOS4yMDIxNzAyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZ0YW1kLjIwMDkuMjAyMTcwMiIsIlwiQXNrIHRoZSBBSSBleHBlcnRzOiBXaGF0J3MgZHJpdmluZyB0b2RheSdzIHByb2dyZXNzIGluIEFJP1wiIjoiaHR0cHM6Ly93d3cubWNraW5zZXkuY29tL2J1c2luZXNzLWZ1bmN0aW9ucy9tY2tpbnNleS1hbmFseXRpY3Mvb3VyLWluc2lnaHRzL2Fzay10aGUtYWktZXhwZXJ0cy13aGF0cy1kcml2aW5nLXRvZGF5cy1wcm9ncmVzcy1pbi1haSIsIjk3OC0xLTc4NjQtMzkwNC04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMS03ODY0LTM5MDQtOCIsIk9DTEMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PQ0xDXyhpZGVudGlmaWVyKSIsIldpbnN0b24sIFBhdHJpY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXRyaWNrX1dpbnN0b24iLCIxMC4xMTA5L01JUy4yMDA5Ljc1IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZNSVMuMjAwOS43NSIsIjE3MjEuMS81MjM1NyI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTcyMS4xJTJGNTIzNTciLCJcIlN0cmF0ZWdpZXMgdG8gSW1wcm92ZSB0aGUgSW1wYWN0IG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIG9uIEhlYWx0aCBFcXVpdHk6IFNjb3BpbmcgUmV2aWV3XCIiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxMTA0MTQ1OSIsIjEwLjIxOTYvNDI5MzYiOiJodHRwczovL2RvaS5vcmcvMTAuMjE5NiUyRjQyOTM2IiwiMjgxNy0xNzA1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjgxNy0xNzA1IiwiSGVsbG8sIFdvcmxkOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgaXRzIFVzZSBpbiB0aGUgUHVibGljIFNlY3RvciI6Imh0dHBzOi8vb2VjZC1vcHNpLm9yZy93cC1jb250ZW50L3VwbG9hZHMvMjAxOS8xMS9BSS1SZXBvcnQtT25saW5lLnBkZiIsIkJvc3Ryb20sIE5pY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OaWNrX0Jvc3Ryb20iLCJTdXBlcmludGVsbGlnZW5jZTogUGF0aHMsIERhbmdlcnMsIFN0cmF0ZWdpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZTpfUGF0aHMsX0RhbmdlcnMsX1N0cmF0ZWdpZXMiLCJcIldoYXQgaGFwcGVucyB3aGVuIG91ciBjb21wdXRlcnMgZ2V0IHNtYXJ0ZXIgdGhhbiB3ZSBhcmU/XCIiOiJodHRwczovL3d3dy50ZWQuY29tL3RhbGtzL25pY2tfYm9zdHJvbV93aGF0X2hhcHBlbnNfd2hlbl9vdXJfY29tcHV0ZXJzX2dldF9zbWFydGVyX3RoYW5fd2VfYXJlL3RyYW5zY3JpcHQiLCJURUQgKGNvbmZlcmVuY2UpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVEVEXyhjb25mZXJlbmNlKSIsIlwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYSB0b29sLCBub3QgYSB0aHJlYXRcIiI6Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExMjEzMDk1NC9odHRwOi8vd3d3LnJldGhpbmtyb2JvdGljcy5jb20vYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtdG9vbC10aHJlYXQiLCJCcm9va3MsIFJvZG5leSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvZG5leV9Ccm9va3MiLCJcIkVsZXBoYW50cyBEb24ndCBQbGF5IENoZXNzXCIiOiJodHRwOi8vcGVvcGxlLmNzYWlsLm1pdC5lZHUvYnJvb2tzL3BhcGVycy9lbGVwaGFudHMucGRmIiwiQ2l0ZVNlZXJYIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2l0ZVNlZXJYXyhpZGVudGlmaWVyKSIsIjEwLjEuMS41ODguNzUzOSI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjU4OC43NTM5IiwiMTAuMTAxNi9TMDkyMS04ODkwKDA1KTgwMDI1LTkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRlMwOTIxLTg4OTAlMjgwNSUyOTgwMDI1LTkiLCJcIlRvd2FyZHMgSW50ZWxsaWdlbnQgUmVndWxhdGlvbiBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZlcnIuMjAxOS44IiwiMTAuMTAxNy9lcnIuMjAxOS44IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZlcnIuMjAxOS44IiwiMTg2Ny0yOTlYIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTg2Ny0yOTlYIiwiXCJXaGF0IHRoZSBOZXcgR1BULTQgQUkgQ2FuIERvXCIiOiJodHRwczovL3d3dy5zY2llbnRpZmljYW1lcmljYW4uY29tL2FydGljbGUvd2hhdC10aGUtbmV3LWdwdC00LWFpLWNhbi1kby8iLCJCdXRsZXIsIFNhbXVlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbXVlbF9CdXRsZXJfKG5vdmVsaXN0KSIsIlwiRGFyd2luIGFtb25nIHRoZSBNYWNoaW5lc1wiIjoiaHR0cHM6Ly9uemV0Yy52aWN0b3JpYS5hYy5uei90bS9zY2hvbGFybHkvdGVpLUJ1dEZpci10MS1nMS10MS1nMS10NC1ib2R5Lmh0bWwiLCJUaGUgUHJlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfUHJlc3MiLCJDb21wdXRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyXyhtYWdhemluZSkiLCIxMC4xMTA5LzIuOTMzNTAwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkYyLjkzMzUwMCIsIjEwLjExMDkvTUNJLjIwMTQuMjMwNzIyNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA5JTJGTUNJLjIwMTQuMjMwNzIyNyIsIlwiU3RlcGhlbiBIYXdraW5nIHdhcm5zIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGNvdWxkIGVuZCBtYW5raW5kXCIiOiJodHRwczovL3d3dy5iYmMuY29tL25ld3MvdGVjaG5vbG9neS0zMDI5MDU0MCIsIkJCQyBOZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQkJDX05ld3MiLCJDaGFsbWVycywgRGF2aWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9DaGFsbWVycyIsIlwiRmFjaW5nIHVwIHRvIHRoZSBwcm9ibGVtIG9mIGNvbnNjaW91c25lc3NcIiI6Imh0dHA6Ly93d3cuaW1wcmludC5jby51ay9jaGFsbWVycy5odG1sIiwiSm91cm5hbCBvZiBDb25zY2lvdXNuZXNzIFN0dWRpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb3VybmFsX29mX0NvbnNjaW91c25lc3NfU3R1ZGllcyIsIjEwLjEuMS4xMDMuODM2MiI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjEwMy44MzYyIiwiMTAuMTAxNy9DQk85NzgwNTExOTc1ODM3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZDQk85NzgwNTExOTc1ODM3IiwiOTc4LTAtNTIxOC03NjI4LTUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTUyMTgtNzYyOC01IiwiQ2hyaXN0aWFuLCBCcmlhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyaWFuX0NocmlzdGlhbiIsIlRoZSBBbGlnbm1lbnQgUHJvYmxlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9BbGlnbm1lbnRfUHJvYmxlbSIsIjk3OC0wLTM5MzgtNjgzMy0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0zOTM4LTY4MzMtMyIsIjEyMDIuMjc0NSI6Imh0dHBzOi8vYXJ4aXYub3JnL2Ficy8xMjAyLjI3NDUiLCIxMC4xMTA5L2N2cHIuMjAxMi42MjQ4MTEwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZjdnByLjIwMTIuNjI0ODExMCIsIjk3OC0xLTQ2NzMtMTIyOC04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMS00NjczLTEyMjgtOCIsIlwiV2h5IDIwMTUgV2FzIGEgQnJlYWt0aHJvdWdoIFllYXIgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vd3d3LmJsb29tYmVyZy5jb20vbmV3cy9hcnRpY2xlcy8yMDE1LTEyLTA4L3doeS0yMDE1LXdhcy1hLWJyZWFrdGhyb3VnaC15ZWFyLWluLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlIiwiXCJDb21tZW50YXJ5OiBCYWQgbmV3cy4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYmlhc2VkXCIiOiJodHRwczovL3d3dy5jaGFubmVsbmV3c2FzaWEuY29tL25ld3MvY29tbWVudGFyeS9hcnRpZmljaWFsLWludGVsbGlnZW5jZS1iaWctZGF0YS1iaWFzLWhpcmluZy1sb2Fucy1rZXktY2hhbGxlbmdlLTExMDk3Mzc0IiwiQ3liZW5rbywgRy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfQ3liZW5rbyIsIlwiRGVlcCBMZWFybmluZzogTWV0aG9kcyBhbmQgQXBwbGljYXRpb25zXCIiOiJodHRwOi8vcmVzZWFyY2gubWljcm9zb2Z0LmNvbS9wdWJzLzIwOTM1NS9EZWVwTGVhcm5pbmctTm93UHVibGlzaGluZy1Wb2w3LVNJRy0wMzkucGRmIiwiMTAuMTU2MS8yMDAwMDAwMDM5IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjE1NjElMkYyMDAwMDAwMDM5IiwiRGVubmV0dCwgRGFuaWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuaWVsX0Rlbm5ldHQiLCJDb25zY2lvdXNuZXNzIEV4cGxhaW5lZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNjaW91c25lc3NfRXhwbGFpbmVkIiwiOTc4LTAtNzEzOS05MDM3LTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTcxMzktOTAzNy05IiwiXCJBSSBoYXMgYWxyZWFkeSBjaGFuZ2VkIHRoZSB3b3JsZC4gVGhpcyByZXBvcnQgc2hvd3MgaG93XCIiOiJodHRwczovL3d3dy5zZmNocm9uaWNsZS5jb20vdGVjaC9hcnRpY2xlL2FpLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXJlcG9ydC1zdGFuZm9yZC0xNzg2OTU1OC5waHAiLCJcIk1hY2hpbmUgbGVhcm5pbmc6IFdoYXQgaXMgdGhlIHRyYW5zZm9ybWVyIGFyY2hpdGVjdHVyZT9cIiI6Imh0dHBzOi8vYmR0ZWNodGFsa3MuY29tLzIwMjIvMDUvMDIvd2hhdC1pcy10aGUtdHJhbnNmb3JtZXIiLCJcIlJvYm90cyBXaXRoIEZsYXdlZCBBSSBNYWtlIFNleGlzdCBBbmQgUmFjaXN0IERlY2lzaW9ucywgRXhwZXJpbWVudCBTaG93c1wiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjIwNjI3MjI1ODI3L2h0dHBzOi8vd3d3LnNjaWVuY2VhbGVydC5jb20vcm9ib3RzLXdpdGgtZmxhd2VkLWFpLW1ha2Utc2V4aXN0LXJhY2lzdC1hbmQtdG94aWMtZGVjaXNpb25zLWV4cGVyaW1lbnQtc2hvd3MiLCJEb21pbmdvcywgUGVkcm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZWRyb19Eb21pbmdvcyIsIkJhc2ljIEJvb2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaWNfQm9va3MiLCI5NzgtMC00NjUwLTY1NzAtNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNDY1MC02NTcwLTciLCJEcmV5ZnVzLCBIdWJlcnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWJlcnRfRHJleWZ1cyIsIldoYXQgQ29tcHV0ZXJzIENhbid0IERvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2hhdF9Db21wdXRlcnNfQ2FuJTI3dF9EbyIsIjk3OC0wLTA2MDEtMTA4Mi02IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wNjAxLTEwODItNiIsIk1pbmQgb3ZlciBNYWNoaW5lOiBUaGUgUG93ZXIgb2YgSHVtYW4gSW50dWl0aW9uIGFuZCBFeHBlcnRpc2UgaW4gdGhlIEVyYSBvZiB0aGUgQ29tcHV0ZXIiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZG92ZXJtYWNoaW5lcDAwZHJleSIsIjk3OC0wLTAyOTAtODA2MC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wMjkwLTgwNjAtMyIsIkR5c29uLCBHZW9yZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfRHlzb25fKHNjaWVuY2VfaGlzdG9yaWFuKSIsIjk3OC0wLTczODItMDAzMC05IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC03MzgyLTAwMzAtOSIsIlRoZSBOZXJ2b3VzIFN5c3RlbSI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9uZXJ2b3Vzc3lzdGVtMDAwMGVkZWwiLCI5NzgtMC03OTEwLTA0NjQtNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNzkxMC0wNDY0LTciLCJcIlBvbGw6IEFJIHBvc2VzIHJpc2sgdG8gaHVtYW5pdHksIGFjY29yZGluZyB0byBtYWpvcml0eSBvZiBBbWVyaWNhbnNcIiI6Imh0dHBzOi8vYXJzdGVjaG5pY2EuY29tL2luZm9ybWF0aW9uLXRlY2hub2xvZ3kvMjAyMy8wNS9wb2xsLTYxLW9mLWFtZXJpY2Fucy1zYXktYWktdGhyZWF0ZW5zLWh1bWFuaXR5cy1mdXR1cmUiLCI5NzgtMC04MDIxLTE4MzktNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtODAyMS0xODM5LTQiLCJcIldpbGwgcm9ib3RzIGNyZWF0ZSBtb3JlIGpvYnMgdGhhbiB0aGV5IGRlc3Ryb3k/XCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDE1L3NlcC8wNi93aWxsLXJvYm90cy1jcmVhdGUtZGVzdHJveS1qb2JzIiwiXCJGb3ggTmV3cyBQb2xsXCIiOiJodHRwczovL3N0YXRpYy5mb3huZXdzLmNvbS9mb3huZXdzLmNvbS9jb250ZW50L3VwbG9hZHMvMjAyMy8wNS9Gb3hfQXByaWwtMjEtMjQtMjAyM19Db21wbGV0ZV9OYXRpb25hbF9Ub3BsaW5lX01heS0xLVJlbGVhc2UucGRmIiwiMTAuMS4xLjM5NS40MTYiOiJodHRwczovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS4zOTUuNDE2IiwiMTAuMTAxNi9qLnRlY2hmb3JlLjIwMTYuMDguMDE5IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLnRlY2hmb3JlLjIwMTYuMDguMDE5IiwiMDA0MC0xNjI1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDA0MC0xNjI1IiwiXCJGcm9tIG5vdCB3b3JraW5nIHRvIG5ldXJhbCBuZXR3b3JraW5nXCIiOiJodHRwczovL3d3dy5lY29ub21pc3QuY29tL25ld3Mvc3BlY2lhbC1yZXBvcnQvMjE3MDA3NTYtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYm9vbS1iYXNlZC1vbGQtaWRlYS1tb2Rlcm4tdHdpc3Qtbm90IiwiSlNUT1IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KU1RPUl8oaWRlbnRpZmllcikiLCJcIklzIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIHJlYWxseSBhbiBleGlzdGVudGlhbCB0aHJlYXQgdG8gaHVtYW5pdHk/XCIiOiJodHRwOi8vdGhlYnVsbGV0aW4ub3JnL2FydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXJlYWxseS1leGlzdGVudGlhbC10aHJlYXQtaHVtYW5pdHk4NTc3IiwiXCJFbG9uIE11c2s6IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIG91ciBiaWdnZXN0IGV4aXN0ZW50aWFsIHRocmVhdFwiIjoiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNC9vY3QvMjcvZWxvbi1tdXNrLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWFpLWJpZ2dlc3QtZXhpc3RlbnRpYWwtdGhyZWF0IiwiU29mdHdhcmUgc3R1ZGllczogYSBsZXhpY29uIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL3NvZnR3YXJlc3R1ZGllc2wwMGZ1bGxfMDA3IiwiOTc4LTEtNDM1Ni00Nzg3LTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTQzNTYtNDc4Ny05IiwiXCIxMCB5ZWFycyBsYXRlciwgZGVlcCBsZWFybmluZyAncmV2b2x1dGlvbicgcmFnZXMgb24sIHNheSBBSSBwaW9uZWVycyBIaW50b24sIExlQ3VuIGFuZCBMaVwiIjoiaHR0cHM6Ly92ZW50dXJlYmVhdC5jb20vYWkvMTAteWVhcnMtb24tYWktcGlvbmVlcnMtaGludG9uLWxlY3VuLWxpLXNheS1kZWVwLWxlYXJuaW5nLXJldm9sdXRpb24td2lsbC1jb250aW51ZSIsIkdvb2QsIEkuIEouIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fSi5fR29vZCIsIlNwZWN1bGF0aW9ucyBDb25jZXJuaW5nIHRoZSBGaXJzdCBVbHRyYWludGVsbGlnZW50IE1hY2hpbmUiOiJodHRwczovL2V4aGliaXRzLnN0YW5mb3JkLmVkdS9mZWlnZW5iYXVtL2NhdGFsb2cvZ3o3MjdyZzM4NjkiLCJEZWVwIExlYXJuaW5nIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNDE2MTExMDEwL2h0dHA6Ly93d3cuZGVlcGxlYXJuaW5nYm9vay5vcmciLCIxNjA2LjA4ODEzIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE2MDYuMDg4MTMiLCIxMC4xNjA5L2FpbWFnLnYzOGkzLjI3NDEiOiJodHRwczovL2RvaS5vcmcvMTAuMTYwOSUyRmFpbWFnLnYzOGkzLjI3NDEiLCJHb3Zlcm5tZW50IEFjY291bnRhYmlsaXR5IE9mZmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvdmVybm1lbnRfQWNjb3VudGFiaWxpdHlfT2ZmaWNlIiwiQ29uc3VtZXIgRGF0YTogSW5jcmVhc2luZyBVc2UgUG9zZXMgUmlza3MgdG8gUHJpdmFjeSI6Imh0dHBzOi8vd3d3Lmdhby5nb3YvcHJvZHVjdHMvZ2FvLTIyLTEwNjA5NiIsIlwiR29vZ2xlJ3MgUGhvdG8gQXBwIFN0aWxsIENhbid0IEZpbmQgR29yaWxsYXMuIEFuZCBOZWl0aGVyIENhbiBBcHBsZSdzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA1LzIyL3RlY2hub2xvZ3kvYWktcGhvdG8tbGFiZWxzLWdvb2dsZS1hcHBsZS5odG1sIiwiXCJIZXJlJ3Mgd2hlcmUgdGhlIEEuSS4gam9icyBhcmVcIiI6Imh0dHBzOi8vd3d3LmNuYmMuY29tLzIwMjMvMDQvMDUvYWktam9icy1zZWUtdGhlLXN0YXRlLWJ5LXN0YXRlLWRhdGEtZnJvbS1hLXN0YW5mb3JkLXN0dWR5Lmh0bWwiLCJIYXJhcmksIFl1dmFsIE5vYWgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ZdXZhbF9Ob2FoX0hhcmFyaSIsIlwiV2h5IFRlY2hub2xvZ3kgRmF2b3JzIFR5cmFubnlcIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS9tYWdhemluZS9hcmNoaXZlLzIwMTgvMTAveXV2YWwtbm9haC1oYXJhcmktdGVjaG5vbG9neS10eXJhbm55LzU2ODMzMCIsIlwiQUkgYW5kIHRoZSBmdXR1cmUgb2YgaHVtYW5pdHlcIiI6Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TFdpTS1MdVJlNnciLCJIYXVnZWxhbmQsIEpvaG4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX0hhdWdlbGFuZCIsIjk3OC0wLTI2MjAtODE1My01IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0yNjIwLTgxNTMtNSIsIlNhaW5hdGgsIFQuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyYV9TYWluYXRoIiwiMjAxMklTUE0uLi4yOS4uLjgySCI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDEySVNQTS4uLjI5Li4uODJIIiwiMTAuMTEwOS9tc3AuMjAxMi4yMjA1NTk3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZtc3AuMjAxMi4yMjA1NTk3IiwiXCJCaWxsIEdhdGVzIG9uIGRhbmdlcnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6ICdJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHNvbWUgcGVvcGxlIGFyZSBub3QgY29uY2VybmVkJ1wiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL25ld3MvdGhlLXN3aXRjaC93cC8yMDE1LzAxLzI4L2JpbGwtZ2F0ZXMtb24tZGFuZ2Vycy1vZi1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1kb250LXVuZGVyc3RhbmQtd2h5LXNvbWUtcGVvcGxlLWFyZS1ub3QtY29uY2VybmVkIiwiMDE5MC04Mjg2IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDE5MC04Mjg2IiwiTXVsdGlsYXllciBGZWVkZm9yd2FyZCBOZXR3b3JrcyBhcmUgVW5pdmVyc2FsIEFwcHJveGltYXRvcnMiOiJodHRwOi8vY29nbml0aXZlbWVkaXVtLmNvbS9tYWdpY19wYXBlci9hc3NldHMvSG9ybmlrLnBkZiIsIlwiVGhlIENvbXB1dGF0aW9uYWwgVGhlb3J5IG9mIE1pbmRcIiI6Imh0dHA6Ly9wbGF0by5zdGFuZm9yZC5lZHUvZW50cmllcy9jb21wdXRhdGlvbmFsLW1pbmQiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGF0IEVkaW5idXJnaCBVbml2ZXJzaXR5OiBhIFBlcnNwZWN0aXZlXCIiOiJodHRwOi8vd3d3LmluZi5lZC5hYy51ay9hYm91dC9BSWhpc3RvcnkuaHRtbCIsIlwiUm9ib3RzIGFuZCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5pZ21jaGljYWdvLm9yZy9zdXJ2ZXlzL3JvYm90cy1hbmQtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCIxMC4xMDgwLzIxNTgyMDQxLjIwMTguMTU2MzgwMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDgwJTJGMjE1ODIwNDEuMjAxOC4xNTYzODAzIiwiMjE1OC0yMDQxIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjE1OC0yMDQxIiwiMjAxNVNjaS4uLjM0OS4uMjU1SiI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDE1U2NpLi4uMzQ5Li4yNTVKIiwiMTAuMTEyNi9zY2llbmNlLmFhYTg0MTUiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuYWFhODQxNSIsIkthaG5lbWFuLCBEYW5pZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5pZWxfS2FobmVtYW4iLCJUaGlua2luZywgRmFzdCBhbmQgU2xvdyI6Imh0dHBzOi8vYm9va3MuZ29vZ2xlLmNvbS9ib29rcz9pZD1adUtUdkVSdVBHOEMiLCI5NzgtMS00Mjk5LTY5MzUtMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtNDI5OS02OTM1LTIiLCJUdmVyc2t5LCBBbW9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1vc19UdmVyc2t5IiwiMTk3NFNjaS4uLjE4NS4xMTI0VCI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8xOTc0U2NpLi4uMTg1LjExMjRUIiwiMTAuMTEyNi9zY2llbmNlLjE4NS40MTU3LjExMjQiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuMTg1LjQxNTcuMTEyNCIsIjk3OC0wLTUyMTItODQxNC0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC01MjEyLTg0MTQtMSIsIlwiUmVndWxhdGUgQUk/IEdPUCBtdWNoIG1vcmUgc2tlcHRpY2FsIHRoYW4gRGVtcyB0aGF0IGdvdmVybm1lbnQgY2FuIGRvIGl0IHJpZ2h0OiBwb2xsXCIiOiJodHRwczovL3d3dy5mb3huZXdzLmNvbS9wb2xpdGljcy9yZWd1bGF0ZS1haS1nb3AtbXVjaC1tb3JlLXNrZXB0aWNhbC10aGFuLWRlbXMtdGhhdC10aGUtZ292ZXJubWVudC1jYW4tZG8taXQtcmlnaHQtcG9sbCIsIlwiTm9hbSBDaG9tc2t5IG9uIFdoZXJlIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFdlbnQgV3JvbmdcIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS90ZWNobm9sb2d5L2FyY2hpdmUvMjAxMi8xMS9ub2FtLWNob21za3ktb24td2hlcmUtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2Utd2VudC13cm9uZy8yNjE2MzcvP3NpbmdsZV9wYWdlPXRydWUiLCJcIktpc21ldFwiIjoiaHR0cDovL3d3dy5haS5taXQuZWR1L3Byb2plY3RzL2h1bWFub2lkLXJvYm90aWNzLWdyb3VwL2tpc21ldC9raXNtZXQuaHRtbCIsIktpc3NpbmdlciwgSGVucnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZW5yeV9LaXNzaW5nZXIiLCJcIlRoZSBDaGFsbGVuZ2Ugb2YgQmVpbmcgSHVtYW4gaW4gdGhlIEFnZSBvZiBBSVwiIjoiaHR0cHM6Ly93d3cud3NqLmNvbS9hcnRpY2xlcy9iZWluZy1odW1hbi1hcnRpZmljYWwtaW50ZWxsaWdlbmNlLWFpLWNoZXNzLWFudGliaW90aWMtcGhpbG9zb3BoeS1ldGhpY3MtYmlsbC1vZi1yaWdodHMtMTE2MzU3OTUyNzEiLCJUaGUgV2FsbCBTdHJlZXQgSm91cm5hbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9XYWxsX1N0cmVldF9Kb3VybmFsIiwiXCJHUFVzIENvbnRpbnVlIHRvIERvbWluYXRlIHRoZSBBSSBBY2NlbGVyYXRvciBNYXJrZXQgZm9yIE5vd1wiIjoiaHR0cHM6Ly93d3cuaW5mb3JtYXRpb253ZWVrLmNvbS9haS1vci1tYWNoaW5lLWxlYXJuaW5nL2dwdXMtY29udGludWUtdG8tZG9taW5hdGUtdGhlLWFpLWFjY2VsZXJhdG9yLW1hcmtldC1mb3Itbm93IiwiXCJVc2luZyBDb21tZXJjaWFsIEtub3dsZWRnZSBCYXNlcyBmb3IgQ2xpbmljYWwgRGVjaXNpb24gU3VwcG9ydDogT3Bwb3J0dW5pdGllcywgSHVyZGxlcywgYW5kIFJlY29tbWVuZGF0aW9uc1wiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DMTUxMzY4MSIsIjEwLjExOTcvamFtaWEuTTIwNTUiOiJodHRwczovL2RvaS5vcmcvMTAuMTE5NyUyRmphbWlhLk0yMDU1IiwiS3VyendlaWwsIFJheSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JheV9LdXJ6d2VpbCIsIlRoZSBTaW5ndWxhcml0eSBpcyBOZWFyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1Npbmd1bGFyaXR5X2lzX05lYXIiLCI5NzgtMC02NzAwLTMzODQtMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNjcwMC0zMzg0LTMiLCJcIlRoZSBjaGFuZ2luZyBzY2llbmNlIG9mIG1hY2hpbmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczEwOTk0LTAxMS01MjQyLXkiLCJNYWNoaW5lIExlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9MZWFybmluZ18oam91cm5hbCkiLCIxMC4xMDA3L3MxMDk5NC0wMTEtNTI0Mi15IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTA5OTQtMDExLTUyNDIteSIsIkFuZ3dpbiwgSnVsaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWxpYV9Bbmd3aW4iLCJcIkhvdyBXZSBBbmFseXplZCB0aGUgQ09NUEFTIFJlY2lkaXZpc20gQWxnb3JpdGhtXCIiOiJodHRwczovL3d3dy5wcm9wdWJsaWNhLm9yZy9hcnRpY2xlL2hvdy13ZS1hbmFseXplZC10aGUtY29tcGFzLXJlY2lkaXZpc20tYWxnb3JpdGhtIiwiXCJXaGF0IGlzIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIb3cgRG9lcyBBSSBXb3JrPyBUZWNoVGFyZ2V0XCIiOiJodHRwczovL3d3dy50ZWNodGFyZ2V0LmNvbS9zZWFyY2hlbnRlcnByaXNlYWkvZGVmaW5pdGlvbi9BSS1BcnRpZmljaWFsLUludGVsbGlnZW5jZSIsIlwiV2lsbCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBkZXN0cm95IGh1bWFuaXR5PyBIZXJlIGFyZSA1IHJlYXNvbnMgbm90IHRvIHdvcnJ5XCIiOiJodHRwczovL3d3dy52b3guY29tLzIwMTQvOC8yMi82MDQzNjM1LzUtcmVhc29ucy13ZS1zaG91bGRudC13b3JyeS1hYm91dC1zdXBlci1pbnRlbGxpZ2VudC1jb21wdXRlcnMtdGFraW5nIiwiTGVuYXQsIERvdWdsYXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb3VnbGFzX0xlbmF0IiwiOTc4LTAtMjAxNS0xNzUyLTEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTIwMTUtMTc1Mi0xIiwiTGlnaHRoaWxsLCBKYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0phbWVzX0xpZ2h0aGlsbCIsIlRoZSBOYXJyYXRpdmUgYW5kIHRoZSBBbGdvcml0aG06IEdlbnJlcyBvZiBDcmVkaXQgUmVwb3J0aW5nIGZyb20gdGhlIE5pbmV0ZWVudGggQ2VudHVyeSB0byBUb2RheSI6Imh0dHBzOi8vbXByYS51Yi51bmktbXVlbmNoZW4uZGUvMjgxNDIvMS9NUFJBX3BhcGVyXzI4MTQyLnBkZiIsIjEwLjIxMzkvc3Nybi4xNzM2MjgzIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjIxMzklMkZzc3JuLjE3MzYyODMiLCJcIlJvYm90cyBXaWxsIFRha2UgSm9icywgYnV0IE5vdCBhcyBGYXN0IGFzIFNvbWUgRmVhciwgTmV3IFJlcG9ydCBTYXlzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDE3LzAxLzEyL3RlY2hub2xvZ3kvcm9ib3RzLXdpbGwtdGFrZS1qb2JzLWJ1dC1ub3QtYXMtZmFzdC1hcy1zb21lLWZlYXItbmV3LXJlcG9ydC1zYXlzLmh0bWwiLCIxMC4xLjEuODMuNzYxNSI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjgzLjc2MTUiLCIxMC4xMDgwLzA5NTQwMDkwMzEwMDAxNjU1MTEwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwODAlMkYwOTU0MDA5MDMxMDAwMTY1NTExMCIsIlwiTWFjaGluZSBFdGhpY3NcIiI6Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTEyOTA0NDgyMS9odHRwOi8vd3d3LmFhYWkub3JnL0xpYnJhcnkvU3ltcG9zaWEvRmFsbC9mczA1LTA2IiwiXCJUaGUgY2FzZSBhZ2FpbnN0IGtpbGxlciByb2JvdHMsIGZyb20gYSBndXkgYWN0dWFsbHkgd29ya2luZyBvbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly93d3cuaHJ3Lm9yZy9yZXBvcnQvMjAxMi8xMS8xOS9sb3NpbmctaHVtYW5pdHkvY2FzZS1hZ2FpbnN0LWtpbGxlci1yb2JvdHMiLCJcIldoYXQgam9icyB3aWxsIHN0aWxsIGJlIGFyb3VuZCBpbiAyMCB5ZWFycz8gUmVhZCB0aGlzIHRvIHByZXBhcmUgeW91ciBmdXR1cmVcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS91cy1uZXdzLzIwMTcvanVuLzI2L2pvYnMtZnV0dXJlLWF1dG9tYXRpb24tcm9ib3RzLXNraWxscy1jcmVhdGl2ZS1oZWFsdGgiLCJBSUA1MDogQUkgUGFzdCwgUHJlc2VudCwgRnV0dXJlIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDgxMDA4MTIwMjM4L2h0dHA6Ly93d3cuZW5nYWdpbmdleHBlcmllbmNlLmNvbS8yMDA2LzA3L2FpNTBfYWlfcGFzdF9wci5odG1sIiwiXCJHb29nbGUncyBHZW1pbmk6IGlzIHRoZSBuZXcgQUkgbW9kZWwgcmVhbGx5IGJldHRlciB0aGFuIENoYXRHUFQ/XCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vZ29vZ2xlcy1nZW1pbmktaXMtdGhlLW5ldy1haS1tb2RlbC1yZWFsbHktYmV0dGVyLXRoYW4tY2hhdGdwdC0yMTk1MjYiLCJNaW5za3ksIE1hcnZpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcnZpbl9NaW5za3kiLCJUaGUgU29jaWV0eSBvZiBNaW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1NvY2lldHlfb2ZfTWluZCIsIk1jQ2FydGh5LCBKb2huIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9NY0NhcnRoeV8oY29tcHV0ZXJfc2NpZW50aXN0KSIsIlJvY2hlc3RlciwgTmF0aGFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0aGFuX1JvY2hlc3RlciIsIlNoYW5ub24sIENsYXVkZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXVkZV9TaGFubm9uIiwiXCJBIFByb3Bvc2FsIGZvciB0aGUgRGFydG1vdXRoIFN1bW1lciBSZXNlYXJjaCBQcm9qZWN0IG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwNzA4MjYyMzAzMTAvaHR0cDovL3d3dy1mb3JtYWwuc3RhbmZvcmQuZWR1L2ptYy9oaXN0b3J5L2RhcnRtb3V0aC9kYXJ0bW91dGguaHRtbCIsIldoYXQgaXMgQUk/IjoiaHR0cDovL2ptYy5zdGFuZm9yZC5lZHUvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2Uvd2hhdC1pcy1haS9pbmRleC5odG1sIiwiMTAuMS4xLjg1Ljg5MDQiOiJodHRwczovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS44NS44OTA0IiwiMTAuMTAwNy9zMTA2NzYtMDA3LTkxMzgtMiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczEwNjc2LTAwNy05MTM4LTIiLCIxMC4xMDE3L1MwMjY5ODg4OTA1MDAwNDA4IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZTMDI2OTg4ODkwNTAwMDQwOCIsIldpbGwgUm9ib3RzIEF1dG9tYXRlIFlvdXIgSm9iIEF3YXk/IEZ1bGwgRW1wbG95bWVudCwgQmFzaWMgSW5jb21lLCBhbmQgRWNvbm9taWMgRGVtb2NyYWN5IjoiaHR0cHM6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTMwNDQ0NDgiLCIxMC4yMTM5L3Nzcm4uMzA0NDQ0OCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4yMTM5JTJGc3Nybi4zMDQ0NDQ4IiwiU1NSTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NTUk5fKGlkZW50aWZpZXIpIiwiOTc4LTEtNDYxNC02OTQwLTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTQ2MTQtNjk0MC03IiwiTW9yYXZlYywgSGFucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbnNfTW9yYXZlYyIsIk1pbmQgQ2hpbGRyZW4iOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZGNoaWxkcmVuZnV0dTAwbW9yYSIsIjk3OC0wLTY3NDUtNzYxNi0yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC02NzQ1LTc2MTYtMiIsIlwiQXV0b21hdGlvbiBhbmQgYW54aWV0eVwiIjoiaHR0cHM6Ly93d3cuZWNvbm9taXN0LmNvbS9uZXdzL3NwZWNpYWwtcmVwb3J0LzIxNzAwNzU4LXdpbGwtc21hcnRlci1tYWNoaW5lcy1jYXVzZS1tYXNzLXVuZW1wbG95bWVudC1hdXRvbWF0aW9uLWFuZC1hbnhpZXR5IiwiXCJGdXR1cmUgUHJvZ3Jlc3MgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgUG9sbCBBbW9uZyBFeHBlcnRzXCIiOiJodHRwOi8vd3d3LnNvcGhpYS5kZS9wZGYvMjAxNF9QVC1BSV9wb2xscy5wZGYiLCIxMC4xMTQ1LzI2Mzk0NzUuMjYzOTQ3OCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGMjYzOTQ3NS4yNjM5NDc4IiwiMTAuMTAxNi9qLmltYXZpcy4yMDA3LjA4LjAxMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2JTJGai5pbWF2aXMuMjAwNy4wOC4wMTMiLCJOZXdlbGwsIEFsbGVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxsZW5fTmV3ZWxsIiwiU2ltb24sIEguIEEuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIlwiQ29tcHV0ZXIgU2NpZW5jZSBhcyBFbXBpcmljYWwgSW5xdWlyeTogU3ltYm9scyBhbmQgU2VhcmNoXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM2MDAxOC4zNjAwMjIiLCIxMC4xMTQ1LzM2MDAxOC4zNjAwMjIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM2MDAxOC4zNjAwMjIiLCJcIkhvdyBZb3VUdWJlIERyaXZlcyBQZW9wbGUgdG8gdGhlIEludGVybmV0J3MgRGFya2VzdCBDb3JuZXJzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2FydGljbGVzL2hvdy15b3V0dWJlLWRyaXZlcy12aWV3ZXJzLXRvLXRoZS1pbnRlcm5ldHMtZGFya2VzdC1jb3JuZXJzLTE1MTgwMjA0NzgiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFByZXBhcmVzIGZvciAyMDAxXCIiOiJodHRwczovL2FpLnN0YW5mb3JkLmVkdS9+bmlsc3Nvbi9PbmxpbmVQdWJzLU5pbHMvR2VuZXJhbCUyMEVzc2F5cy9BSU1hZzA0LTA0LTAwMi5wZGYiLCJBc3NvY2lhdGlvbiBmb3IgdGhlIEFkdmFuY2VtZW50IG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNzb2NpYXRpb25fZm9yX3RoZV9BZHZhbmNlbWVudF9vZl9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIk5SQyAoVW5pdGVkIFN0YXRlcyBOYXRpb25hbCBSZXNlYXJjaCBDb3VuY2lsKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXRlZF9TdGF0ZXNfTmF0aW9uYWxfUmVzZWFyY2hfQ291bmNpbCIsIk9tb2h1bmRybywgU3RldmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGV2ZV9PbW9odW5kcm8iLCJcIk9uIHRoZSBpbXBhY3Qgb2Ygcm9ib3RpY3MgaW4gYmVoYXZpb3JhbCBhbmQgY29nbml0aXZlIHNjaWVuY2VzOiBmcm9tIGluc2VjdCBuYXZpZ2F0aW9uIHRvIGh1bWFuIGNvZ25pdGl2ZSBkZXZlbG9wbWVudFwiIjoiaHR0cDovL3d3dy5weW91ZGV5ZXIuY29tL0lFRUVUQU1ET3VkZXllcjEwLnBkZiIsIjEwLjExMDkvdGFtZC4yMDA5LjIwMzkwNTciOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOSUyRnRhbWQuMjAwOS4yMDM5MDU3IiwiMTAuMTAwNy85NzgtMy01NDAtNjg2NzctNF8xIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkY5NzgtMy01NDAtNjg2NzctNF8xIiwiOTc4LTMtNTQwMi0zNzMzLTQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0zLTU0MDItMzczMy00IiwiUGlua2VyLCBTdGV2ZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGV2ZW5fUGlua2VyIiwiVGhlIExhbmd1YWdlIEluc3RpbmN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0xhbmd1YWdlX0luc3RpbmN0IiwiOTc4LTAtMDYxMy0zNjQ2LTEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTA2MTMtMzY0Ni0xIiwiXCJBIHJldmlldyBvZiBhZmZlY3RpdmUgY29tcHV0aW5nOiBGcm9tIHVuaW1vZGFsIGFuYWx5c2lzIHRvIG11bHRpbW9kYWwgZnVzaW9uXCIiOiJodHRwOi8vcmVzZWFyY2hyZXBvc2l0b3J5Lm5hcGllci5hYy51ay9PdXRwdXQvMTc5MjQyOSIsIjEwLjEwMTYvai5pbmZmdXMuMjAxNy4wMi4wMDMiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouaW5mZnVzLjIwMTcuMDIuMDAzIiwiMTg5My8yNTQ5MCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTg5MyUyRjI1NDkwIiwiXCJNaWNyb3NvZnQncyBCaWxsIEdhdGVzIGluc2lzdHMgQUkgaXMgYSB0aHJlYXRcIiI6Imh0dHBzOi8vd3d3LmJiYy5jby51ay9uZXdzLzMxMDQ3NzgwIiwiXCJSZXZlYWxlZDogVGhlIEF1dGhvcnMgV2hvc2UgUGlyYXRlZCBCb29rcyBhcmUgUG93ZXJpbmcgR2VuZXJhdGl2ZSBBSVwiIjoiaHR0cHM6Ly93d3cudGhlYXRsYW50aWMuY29tL3RlY2hub2xvZ3kvYXJjaGl2ZS8yMDIzLzA4L2Jvb2tzMy1haS1tZXRhLWxsYW1hLXBpcmF0ZWQtYm9va3MvNjc1MDYzLyIsIlwiVGhpbmtpbmcgTWFjaGluZXM6IFRoZSBTZWFyY2ggZm9yIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxODA4MTkxNTI0NTUvaHR0cHM6Ly93d3cuc2NpZW5jZWhpc3Rvcnkub3JnL2Rpc3RpbGxhdGlvbnMvbWFnYXppbmUvdGhpbmtpbmctbWFjaGluZXMtdGhlLXNlYXJjaC1mb3ItYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJcIkZpdmUgZXhwZXJ0cyBzaGFyZSB3aGF0IHNjYXJlcyB0aGVtIHRoZSBtb3N0IGFib3V0IEFJXCIiOiJodHRwczovL2Z1dHVyaXNtLmNvbS9hcnRpZmljaWFsLWludGVsbGlnZW5jZS1leHBlcnRzLWZlYXIvYW1wIiwiUnVzc2VsbCwgU3R1YXJ0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X0ouX1J1c3NlbGwiLCJIdW1hbiBDb21wYXRpYmxlOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgdGhlIFByb2JsZW0gb2YgQ29udHJvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX0NvbXBhdGlibGUiLCI5NzgtMC01MjU1LTU4NjEtMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNTI1NS01ODYxLTMiLCJcIlN0ZXBoZW4gSGF3a2luZywgRWxvbiBNdXNrLCBhbmQgQmlsbCBHYXRlcyBXYXJuIEFib3V0IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL29ic2VydmVyLmNvbS8yMDE1LzA4L3N0ZXBoZW4taGF3a2luZy1lbG9uLW11c2stYW5kLWJpbGwtZ2F0ZXMtd2Fybi1hYm91dC1hcnRpZmljaWFsLWludGVsbGlnZW5jZSIsIlwiQ29tcHV0ZXIgc2F5cyBubzogd2h5IG1ha2luZyBBSXMgZmFpciwgYWNjb3VudGFibGUgYW5kIHRyYW5zcGFyZW50IGlzIGNydWNpYWxcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS9zY2llbmNlLzIwMTcvbm92LzA1L2NvbXB1dGVyLXNheXMtbm8td2h5LW1ha2luZy1haXMtZmFpci1hY2NvdW50YWJsZS1hbmQtdHJhbnNwYXJlbnQtaXMtY3J1Y2lhbCIsIlwiRXhwbG9yaW5nIExJTUUgRXhwbGFuYXRpb25zIGFuZCB0aGUgTWF0aGVtYXRpY3MgQmVoaW5kIEl0XCIiOiJodHRwczovL3d3dy5jb2RlbW90aW9uLmNvbS9tYWdhemluZS9haS1tbC9saW1lLWV4cGxhaW5hYmxlLWFpIiwiMTAuMTAyMy9BOjEwMTMyOTg1MDcxMTQiOiJodHRwczovL2RvaS5vcmcvMTAuMTAyMyUyRkElM0ExMDEzMjk4NTA3MTE0IiwiU2NobWlkaHViZXIsIEouIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSiVDMyVCQ3JnZW5fU2NobWlkaHViZXIiLCIxNDA0Ljc4MjgiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMTQwNC43ODI4IiwiMTAuMTAxNi9qLm5ldW5ldC4yMDE0LjA5LjAwMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2JTJGai5uZXVuZXQuMjAxNC4wOS4wMDMiLCJTY2htaWRodWJlciwgSsO8cmdlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0olQzMlQkNyZ2VuX1NjaG1pZGh1YmVyIiwiXCJBbm5vdGF0ZWQgSGlzdG9yeSBvZiBNb2Rlcm4gQUkgYW5kIERlZXAgTGVhcm5pbmdcIiI6Imh0dHBzOi8vcGVvcGxlLmlkc2lhLmNoL35qdWVyZ2VuLyIsIlNlYXJsZSwgSm9obiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fU2VhcmxlIiwiXCJNaW5kcywgQnJhaW5zIGFuZCBQcm9ncmFtc1wiIjoiaHR0cDovL2NvZ3ByaW50cy5vcmcvNzE1MC8xLzEwLjEuMS44My41MjQ4LnBkZiIsIjEwLjEwMTcvUzAxNDA1MjVYMDAwMDU3NTYiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNyUyRlMwMTQwNTI1WDAwMDA1NzU2IiwiTWluZCwgbGFuZ3VhZ2UgYW5kIHNvY2lldHkiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZGxhbmd1YWdlc29jaTAwc2VhciIsIjk3OC0wLTQ2NTAtNDUyMS0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC00NjUwLTQ1MjEtMSIsIlwiSG93IEdvb2dsZSBQbGFucyB0byBTb2x2ZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly93d3cudGVjaG5vbG9neXJldmlldy5jb20vMjAxNi8wMy8zMS8xNjEyMzQvaG93LWdvb2dsZS1wbGFucy10by1zb2x2ZS1hcnRpZmljaWFsLWludGVsbGlnZW5jZSIsIlwiQ2hhdEdQVC00IENyZWF0b3IgSWx5YSBTdXRza2V2ZXIgb24gQUkgSGFsbHVjaW5hdGlvbnMgYW5kIEFJIERlbW9jcmFjeVwiIjoiaHR0cHM6Ly93d3cuZm9yYmVzLmNvbS9zaXRlcy9jcmFpZ3NtaXRoLzIwMjMvMDMvMTUvZ3B0LTQtY3JlYXRvci1pbHlhLXN1dHNrZXZlci1vbi1haS1oYWxsdWNpbmF0aW9ucy1hbmQtYWktZGVtb2NyYWN5IiwiMTAuMTEwOS85My4zMTE2NTMiOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOSUyRjkzLjMxMTY1MyIsIlNvbG9tb25vZmYsIFJheSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JheV9Tb2xvbW9ub2ZmIiwiQW4gSW5kdWN0aXZlIEluZmVyZW5jZSBNYWNoaW5lIjoiaHR0cDovL3dvcmxkLnN0ZC5jb20vfnJqcy9pbmRpbmY1Ni5wZGYiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEluZGV4IFJlcG9ydCAyMDIzL0NoYXB0ZXIgNjogUG9saWN5IGFuZCBHb3Zlcm5hbmNlXCIiOiJodHRwczovL2FpaW5kZXguc3RhbmZvcmQuZWR1L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA0L0hBSV9BSS1JbmRleC1SZXBvcnQtMjAyM19DSEFQVEVSXzYtMS5wZGYiLCIxMC4xMDA3LzExNTczNTQ4IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkYxMTU3MzU0OCIsIjk3OC0zLTU0MDItOTYyMS04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMy01NDAyLTk2MjEtOCIsIlwiJ0dvZGZhdGhlciBvZiBBSScgR2VvZmZyZXkgSGludG9uIHF1aXRzIEdvb2dsZSBhbmQgd2FybnMgb3ZlciBkYW5nZXJzIG9mIG1pc2luZm9ybWF0aW9uXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDIzL21heS8wMi9nZW9mZnJleS1oaW50b24tZ29kZmF0aGVyLW9mLWFpLXF1aXRzLWdvb2dsZS13YXJucy1kYW5nZXJzLW9mLW1hY2hpbmUtbGVhcm5pbmciLCJUaGUgR3VhcmRpYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfR3VhcmRpYW4iLCJcIldoYXQgSm9icyBXaWxsIHRoZSBSb2JvdHMgVGFrZT9cIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS9idXNpbmVzcy9hcmNoaXZlLzIwMTQvMDEvd2hhdC1qb2JzLXdpbGwtdGhlLXJvYm90cy10YWtlLzI4MzIzOSIsIlJvYm90aWNzOiBUaGUgTWFycmlhZ2Ugb2YgQ29tcHV0ZXJzIGFuZCBNYWNoaW5lcyI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9pc2JuXzk3ODA4MTYwMjYyODkiLCI5NzgtMC04MTYwLTI2MjgtOSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtODE2MC0yNjI4LTkiLCJcIlRyYW5zZm9ybWVycyBSZXZvbHV0aW9uaXplZCBBSS4gV2hhdCBXaWxsIFJlcGxhY2UgVGhlbT9cIiI6Imh0dHBzOi8vd3d3LmZvcmJlcy5jb20vc2l0ZXMvcm9idG9ld3MvMjAyMy8wOS8wMy90cmFuc2Zvcm1lcnMtcmV2b2x1dGlvbml6ZWQtYWktd2hhdC13aWxsLXJlcGxhY2UtdGhlbSIsIlR1cmluZywgQWxhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsYW5fVHVyaW5nIiwiXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vYWNhZGVtaWMub3VwLmNvbS9taW5kL2FydGljbGUvTElYLzIzNi80MzMvOTg2MjM4IiwiTWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQiLCIxMC4xMDkzL21pbmQvTElYLjIzNi40MzMiOiJodHRwczovL2RvaS5vcmcvMTAuMTA5MyUyRm1pbmQlMkZMSVguMjM2LjQzMyIsIjE0NjAtMjExMyI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzE0NjAtMjExMyIsIlVORVNDTyBTY2llbmNlIFJlcG9ydDogdGhlIFJhY2UgQWdhaW5zdCBUaW1lIGZvciBTbWFydGVyIERldmVsb3BtZW50IjoiaHR0cHM6Ly91bmVzZG9jLnVuZXNjby5vcmcvYXJrOi80ODIyMy9wZjAwMDAzNzc0MzMvUERGLzM3NzQzM2VuZy5wZGYubXVsdGkiLCI5NzgtOS0yMzEwLTA0NTAtNiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTktMjMxMC0wNDUwLTYiLCJcIkR1YWwgdXNlIG9mIGFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyZWQgZHJ1ZyBkaXNjb3ZlcnlcIiI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzk1NDQyODAiLCIxMC4xMDM4L3M0MjI1Ni0wMjItMDA0NjUtOSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGczQyMjU2LTAyMi0wMDQ2NS05IiwiXCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBsZWFkIHRvIGV4dGluY3Rpb24sIGV4cGVydHMgd2FyblwiIjoiaHR0cHM6Ly93d3cuYmJjLmNvbS9uZXdzL3VrLTY1NzQ2NTI0IiwiXCJBbWF6b24gcmVwb3J0ZWRseSBlbXBsb3lzIHRob3VzYW5kcyBvZiBwZW9wbGUgdG8gbGlzdGVuIHRvIHlvdXIgQWxleGEgY29udmVyc2F0aW9uc1wiIjoiaHR0cHM6Ly93d3cuY25uLmNvbS8yMDE5LzA0LzExL3RlY2gvYW1hem9uLWFsZXhhLWxpc3RlbmluZy9pbmRleC5odG1sIiwiXCJBIENvbXBsZXRlIEd1aWRlIHRvIFNIQVAg4oCTIFNIQVBsZXkgQWRkaXRpdmUgZXhQbGFuYXRpb25zIGZvciBQcmFjdGl0aW9uZXJzXCIiOiJodHRwczovL2FuYWx5dGljc2luZGlhbWFnLmNvbS9hLWNvbXBsZXRlLWd1aWRlLXRvLXNoYXAtc2hhcGxleS1hZGRpdGl2ZS1leHBsYW5hdGlvbnMtZm9yLXByYWN0aXRpb25lcnMiLCJcIk9wZW5BSSBoYXMgcHVibGlzaGVkIHRoZSB0ZXh0LWdlbmVyYXRpbmcgQUkgaXQgc2FpZCB3YXMgdG9vIGRhbmdlcm91cyB0byBzaGFyZVwiIjoiaHR0cHM6Ly93d3cudGhldmVyZ2UuY29tLzIwMTkvMTEvNy8yMDk1MzA0MC9vcGVuYWktdGV4dC1nZW5lcmF0aW9uLWFpLWdwdC0yLWZ1bGwtbW9kZWwtcmVsZWFzZS0xLTViLXBhcmFtZXRlcnMiLCJcIlRoZSBzY2FyeSB0cnV0aCBhYm91dCBBSSBjb3B5cmlnaHQgaXMgbm9ib2R5IGtub3dzIHdoYXQgd2lsbCBoYXBwZW4gbmV4dFwiIjoiaHR0cHM6Ly93d3cudGhldmVyZ2UuY29tLzIzNDQ0Njg1L2dlbmVyYXRpdmUtYWktY29weXJpZ2h0LWluZnJpbmdlbWVudC1sZWdhbC1mYWlyLXVzZS10cmFpbmluZy1kYXRhIiwiXCJBSSBpcyBlbnRlcmluZyBhbiBlcmEgb2YgY29ycG9yYXRlIGNvbnRyb2xcIiI6Imh0dHBzOi8vd3d3LnRoZXZlcmdlLmNvbS8yMzY2Nzc1Mi9haS1wcm9ncmVzcy0yMDIzLXJlcG9ydC1zdGFuZm9yZC1jb3Jwb3JhdGUtY29udHJvbCIsIlZpbmdlLCBWZXJub3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZXJub3JfVmluZ2UiLCJcIlRoZSBDb21pbmcgVGVjaG5vbG9naWNhbCBTaW5ndWxhcml0eTogSG93IHRvIFN1cnZpdmUgaW4gdGhlIFBvc3QtSHVtYW4gRXJhXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwNzAxMDExMzM2NDYvaHR0cDovL3d3dy1yb2hhbi5zZHN1LmVkdS9mYWN1bHR5L3ZpbmdlL21pc2Mvc2luZ3VsYXJpdHkuaHRtbCIsIjE5OTN2aXNlLm5hc2EuLi4xMVYiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMTk5M3Zpc2UubmFzYS4uLjExViIsIlwiQ2hhdGJvdHMgSGF2ZSBFbnRlcmVkIHRoZSBVbmNhbm55IFZhbGxleVwiIjoiaHR0cHM6Ly93d3cudGhlYXRsYW50aWMuY29tL3RlY2hub2xvZ3kvYXJjaGl2ZS8yMDE3LzA0L3VuY2FubnktdmFsbGV5LWRpZ2l0YWwtYXNzaXN0YW50cy81MjM4MDYiLCJXYXNvbiwgUC4gQy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRlcl9DYXRoY2FydF9XYXNvbiIsIlwiUmVhc29uaW5nXCIiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbmV3aG9yaXpvbnNpbnBzeTAwMDBmb3NzIiwiXCJBdXRvbm9tb3VzIG1lbnRhbCBkZXZlbG9wbWVudCBieSByb2JvdHMgYW5kIGFuaW1hbHNcIiI6Imh0dHA6Ly93d3cuY3NlLm1zdS5lZHUvZGwvU2NpZW5jZVBhcGVyLnBkZiIsIjEwLjExMjYvc2NpZW5jZS4yOTEuNTUwNC41OTkiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuMjkxLjU1MDQuNTk5IiwiXCJXaGF0IGlzICdmdXp6eSBsb2dpYyc/IEFyZSB0aGVyZSBjb21wdXRlcnMgdGhhdCBhcmUgaW5oZXJlbnRseSBmdXp6eSBhbmQgZG8gbm90IGFwcGx5IHRoZSB1c3VhbCBiaW5hcnkgbG9naWM/XCIiOiJodHRwczovL3d3dy5zY2llbnRpZmljYW1lcmljYW4uY29tL2FydGljbGUvd2hhdC1pcy1mdXp6eS1sb2dpYy1hcmUtdCIsIlwiSHVtYW5zIG1heSBiZSBtb3JlIGxpa2VseSB0byBiZWxpZXZlIGRpc2luZm9ybWF0aW9uIGdlbmVyYXRlZCBieSBBSVwiIjoiaHR0cHM6Ly93d3cudGVjaG5vbG9neXJldmlldy5jb20vMjAyMy8wNi8yOC8xMDc1NjgzL2h1bWFucy1tYXktYmUtbW9yZS1saWtlbHktdG8tYmVsaWV2ZS1kaXNpbmZvcm1hdGlvbi1nZW5lcmF0ZWQtYnktYWkvIiwiTUlUIFRlY2hub2xvZ3kgUmV2aWV3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX1RlY2hub2xvZ3lfUmV2aWV3IiwiXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgdGhlIFB1YmxpYyBTZWN0b3Ig4oCTIEFwcGxpY2F0aW9ucyBhbmQgQ2hhbGxlbmdlc1wiIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8zNTY5NDM1IiwiMTAuMTA4MC8wMTkwMDY5Mi4yMDE4LjE0OTgxMDMiOiJodHRwczovL2RvaS5vcmcvMTAuMTA4MCUyRjAxOTAwNjkyLjIwMTguMTQ5ODEwMyIsIjAxOTAtMDY5MiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzAxOTAtMDY5MiIsIlwiQ2hhdEdQVCBJcyBBbHJlYWR5IE9ic29sZXRlXCIiOiJodHRwczovL3d3dy50aGVhdGxhbnRpYy5jb20vdGVjaG5vbG9neS9hcmNoaXZlLzIwMjMvMDUvYWktYWR2YW5jZW1lbnRzLW11bHRpbW9kYWwtbW9kZWxzLzY3NDExMy8iLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFzIGEgUG9zaXRpdmUgYW5kIE5lZ2F0aXZlIEZhY3RvciBpbiBHbG9iYWwgUmlza1wiIjoiaHR0cDovL2ludGVsbGlnZW5jZS5vcmcvZmlsZXMvQUlQb3NOZWdGYWN0b3IucGRmIiwiMjAwOGdjci4uYm9vay4uMzAzWSI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDA4Z2NyLi5ib29rLi4zMDNZIiwiQXV0b3IsIERhdmlkIEguIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF2aWRfQXV0b3IiLCJCZXJsaW5za2ksIERhdmlkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF2aWRfQmVybGluc2tpIiwiVGhlIEFkdmVudCBvZiB0aGUgQWxnb3JpdGhtIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL2FkdmVudG9mYWxnb3JpdGgwMDAwYmVybCIsIjk3OC0wLTE1NjAtMTM5MS04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xNTYwLTEzOTEtOCIsIlRoZSBMaW5lOiBBSSBhbmQgdGhlIEZ1dHVyZSBvZiBQZXJzb25ob29kIjoiaHR0cHM6Ly9kaXJlY3QubWl0LmVkdS9ib29rcy9ib29rLzU4NTkvVGhlLUxpbmVBSS1hbmQtdGhlLUZ1dHVyZS1vZi1QZXJzb25ob29kIiwiTUlUIFByZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX1ByZXNzIiwiQ3VraWVyLCBLZW5uZXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS2VubmV0aF9DdWtpZXIiLCJGb3JlaWduIEFmZmFpcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3JlaWduX0FmZmFpcnMiLCJBbGV4IFBlbnRsYW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleF9QZW50bGFuZCIsIkFJIG1hY2hpbmUtbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobSIsIkV2YW5zLCBXb29keSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvb2R5X0V2YW5zIiwiXCJQb3N0aHVtYW4gUmlnaHRzOiBEaW1lbnNpb25zIG9mIFRyYW5zaHVtYW4gV29ybGRzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuNTIwOSUyRnJldl9USy4yMDE1LnYxMi5uMi40OTA3MiIsIjEwLjUyMDkvcmV2X1RLLjIwMTUudjEyLm4yLjQ5MDcyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUyMDklMkZyZXZfVEsuMjAxNS52MTIubjIuNDkwNzIiLCJcIlVTIExlYWRlcnNoaXAgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQ2FuIFNoYXBlIHRoZSAyMXN0IENlbnR1cnkgR2xvYmFsIE9yZGVyXCIiOiJodHRwczovL3RoZWRpcGxvbWF0LmNvbS8yMDIzLzA5L3VzLWxlYWRlcnNoaXAtaW4tYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtY2FuLXNoYXBlLXRoZS0yMXN0LWNlbnR1cnktZ2xvYmFsLW9yZGVyIiwiVGhlIERpcGxvbWF0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0RpcGxvbWF0XyhtYWdhemluZSkiLCJvbmxpbmUiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA3LzE4L21hZ2F6aW5lL3dpa2lwZWRpYS1haS1jaGF0Z3B0Lmh0bWwiLCJHbGVpY2ssIEphbWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xlaWNrLF9KYW1lcyIsIlRoZSBOZXcgWW9yayBSZXZpZXcgb2YgQm9va3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtfUmV2aWV3X29mX0Jvb2tzIiwiQWdlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWdlbmN5XyhwaGlsb3NvcGh5KSIsInJlYXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlYXNvbiIsInB1cnBvc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3RpdmF0aW9uIiwiVmVyaXR5IEhhcmRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZXJpdHlfSGFyZGluZyIsIkdhcnkgTWFyY3VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FyeV9NYXJjdXMiLCJEYW5pZWxhIFJ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbGFfUnVzIiwiR3JlZ29yeSBNb25lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUdyZWdvcnlfTW9uZSZhY3Rpb249ZWRpdCZyZWRsaW5rPTEiLCJNYWRodW1pdGEgTXVyZ2lhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFkaHVtaXRhX011cmdpYSIsImdvdmVybm1lbnRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR292ZXJubWVudCIsImNhbXBhaWduIGZpbmFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYW1wYWlnbl9maW5hbmNlIiwidGVjaCBjb21wYW5pZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNoX2NvbXBhbnkiLCJ0cmFuc3BhcmVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc3BhcmVuY3lfKGJlaGF2aW9yKSIsIlNlY3Rpb24gMjMwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VjdGlvbl8yMzAiLCJwcm9kdWN0IGxpYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2R1Y3RfbGlhYmlsaXR5IiwiRkRBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkRBIiwiRkNDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkNDIiwiRlRDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVkZXJhbF9UcmFkZV9Db21taXNzaW9uIiwiRm9yZGhhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZvcmRoYW1fVW5pdmVyc2l0eSIsIkNoaW5tYXlpIFNoYXJtYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1DaGlubWF5aV9TaGFybWEmYWN0aW9uPWVkaXQmcmVkbGluaz0xIiwibWVkaWNhbCBsaWNlbnNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfbGljZW5zZSIsIm1hbHByYWN0aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFscHJhY3RpY2UiLCJIaXBwb2NyYXRpYyBvYXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlwcG9jcmF0aWNfb2F0aCIsImRvIG5vIGhhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmltdW1fbm9uX25vY2VyZSIsIlwiSHVtYW4gcmlnaHRzIGZvciByb2JvdHM/IFdlJ3JlIGdldHRpbmcgY2FycmllZCBhd2F5XCIiOiJodHRwOi8vd3d3LnRoZXRpbWVzLmNvLnVrL3R0by90ZWNobm9sb2d5L2FydGljbGUxOTY2MzkxLmVjZSIsIkNhaW4ncyBKYXdib25lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FpbiUyN3NfSmF3Ym9uZSIsIlNjaWVudGlmaWMgQW1lcmljYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX0FtZXJpY2FuIiwibmF0dXJhbC1sYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbC1sYW5ndWFnZV9wcm9jZXNzaW5nIiwiY29udGV4dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRleHRfKGxpbmd1aXN0aWNzKSIsImFuY2llbnQgbGFuZ3VhZ2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5jaWVudF9sYW5ndWFnZSIsImNpdmlsaXphdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaXZpbGl6YXRpb24iLCJJbW1lcndhaHIsIERhbmllbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltbWVyd2FocixfRGFuaWVsIiwiVGhlIE5ldyBZb3JrZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtlciIsImNhcnRvb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FydG9vbiIsIlwiRGVlcCBsZWFybmluZ1wiIjoiaHR0cHM6Ly93d3cubmF0dXJlLmNvbS9hcnRpY2xlcy9uYXR1cmUxNDUzOSIsIjIwMTVOYXR1ci41MjEuLjQzNkwiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAxNU5hdHVyLjUyMS4uNDM2TCIsIjEwLjEwMzgvbmF0dXJlMTQ1MzkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAzOCUyRm5hdHVyZTE0NTM5IiwiTGVwb3JlLCBKaWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmlsbF9MZXBvcmUiLCJcIkNvbnRlbnQ6IFBsdWcgJiBQcmF5IEZpbG0g4oCTIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIOKAkyBSb2JvdHNcIiI6Imh0dHA6Ly93d3cucGx1Z2FuZHByYXktZmlsbS5kZS9lbi9jb250ZW50Lmh0bWwiLCJNYXJjdXMsIEdhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJjdXMsX0dhcnkiLCI5NzgtMC0zNzQyLTU3ODMtNSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtMzc0Mi01NzgzLTUiLCJcIkh1bWFuLWxldmVsIGNvbnRyb2wgdGhyb3VnaCBkZWVwIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbmF0dXJlMTQyMzYiLCIyMDE1TmF0dXIuNTE4Li41MjlNIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMTVOYXR1ci41MTguLjUyOU0iLCIxMC4xMDM4L25hdHVyZTE0MjM2IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzglMkZuYXR1cmUxNDIzNiIsIkRRTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBfUS1sZWFybmluZyIsIlByZXNzLCBFeWFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXlhbF9QcmVzcyIsIlwiUm9ib3RzIGNvdWxkIGRlbWFuZCBsZWdhbCByaWdodHNcIiI6Imh0dHA6Ly9uZXdzLmJiYy5jby51ay8yL2hpL3RlY2hub2xvZ3kvNjIwMDAwNS5zdG0iLCJJUSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lRIiwiXCJEZWVwIExlYXJuaW5nXCIiOiJodHRwczovL3d3dy5yZXNlYXJjaGdhdGUubmV0L3B1YmxpY2F0aW9uLzIzMDY5MDc5NSIsIjEwLjEwMDcvczEzMjE4LTAxMi0wMTk4LXoiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMzIxOC0wMTItMDE5OC16IiwiMTYxMC0xOTg3IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTYxMC0xOTg3IiwiXCJDb21wYXJpbmcgdGhlIGV4cGVydCBzdXJ2ZXkgYW5kIGNpdGF0aW9uIGltcGFjdCBqb3VybmFsIHJhbmtpbmcgbWV0aG9kczogRXhhbXBsZSBmcm9tIHRoZSBmaWVsZCBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5hc2VyZW5rby5jb20vcGFwZXJzL0pPSV9BSV9Kb3VybmFsX1JhbmtpbmdfU2VyZW5rby5wZGYiLCIxMC4xMDE2L2ouam9pLjIwMTEuMDYuMDAyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLmpvaS4yMDExLjA2LjAwMiIsIlwiTWFzdGVyaW5nIHRoZSBnYW1lIG9mIEdvIHdpdGggZGVlcCBuZXVyYWwgbmV0d29ya3MgYW5kIHRyZWUgc2VhcmNoXCIiOiJodHRwczovL3d3dy5uYXR1cmUuY29tL2FydGljbGVzL25hdHVyZTE2OTYxIiwiMjAxNk5hdHVyLjUyOS4uNDg0UyI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDE2TmF0dXIuNTI5Li40ODRTIiwiMTAuMTAzOC9uYXR1cmUxNjk2MSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGbmF0dXJlMTY5NjEiLCJWYXN3YW5pLCBBc2hpc2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Bc2hpc2hfVmFzd2FuaSIsIkF0dGVudGlvbiBpcyBhbGwgeW91IG5lZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25faXNfYWxsX3lvdV9uZWVkIiwiTG9uZG9uIFJldmlldyBvZiBCb29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvbmRvbl9SZXZpZXdfb2ZfQm9va3MiLCJhbnRocm9wb21vcnBoaXNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aHJvcG9tb3JwaGlzZSIsIldoaXRlIFBhcGVyOiBPbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSDigJMgQSBFdXJvcGVhbiBhcHByb2FjaCB0byBleGNlbGxlbmNlIGFuZCB0cnVzdCI6Imh0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vc2l0ZXMvaW5mby9maWxlcy9jb21taXNzaW9uLXdoaXRlLXBhcGVyLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWZlYjIwMjBfZW4ucGRmIiwic2lzdGVyIHByb2plY3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOldpa2ltZWRpYV9zaXN0ZXJfcHJvamVjdHMiLCJEZWZpbml0aW9ucyI6Imh0dHBzOi8vZW4ud2lrdGlvbmFyeS5vcmcvd2lraS9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIk1lZGlhIjoiaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlF1b3RhdGlvbnMiOiJodHRwczovL2VuLndpa2lxdW90ZS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlRleHRib29rcyI6Imh0dHBzOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiUmVzb3VyY2VzIjoiaHR0cHM6Ly9lbi53aWtpdmVyc2l0eS5vcmcvd2lraS9Qb3J0YWw6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJEYXRhIjoiaHR0cHM6Ly93d3cud2lraWRhdGEub3JnL3dpa2kvUTExNjYwIiwiU2Nob2xpYSI6Imh0dHBzOi8vd3d3Lndpa2lkYXRhLm9yZy93aWtpL1dpa2lkYXRhOlNjaG9saWEiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5pZXAudXRtLmVkdS9hcnQtaW50ZSIsIkludGVybmV0IEVuY3ljbG9wZWRpYSBvZiBQaGlsb3NvcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJuZXRfRW5jeWNsb3BlZGlhX29mX1BoaWxvc29waHkiLCJ0aW1lbGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RpbWVsaW5lX29mX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiUGFyYW1ldGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFyYW1ldGVyIiwiSHlwZXJwYXJhbWV0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeXBlcnBhcmFtZXRlcl8obWFjaGluZV9sZWFybmluZykiLCJMb3NzIGZ1bmN0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvc3NfZnVuY3Rpb25zX2Zvcl9jbGFzc2lmaWNhdGlvbiIsIlJlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWdyZXNzaW9uX2FuYWx5c2lzIiwiQmlhc+KAk3ZhcmlhbmNlIHRyYWRlb2ZmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlhcyVFMiU4MCU5M3ZhcmlhbmNlX3RyYWRlb2ZmIiwiRG91YmxlIGRlc2NlbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb3VibGVfZGVzY2VudCIsIk92ZXJmaXR0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3ZlcmZpdHRpbmciLCJDbHVzdGVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2x1c3Rlcl9hbmFseXNpcyIsIlNHRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0b2NoYXN0aWNfZ3JhZGllbnRfZGVzY2VudCIsIlF1YXNpLU5ld3RvbiBtZXRob2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWFzaS1OZXd0b25fbWV0aG9kIiwiQ29uanVnYXRlIGdyYWRpZW50IG1ldGhvZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbmp1Z2F0ZV9ncmFkaWVudF9tZXRob2QiLCJCYWNrcHJvcGFnYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYWNrcHJvcGFnYXRpb24iLCJBdHRlbnRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25fKG1hY2hpbmVfbGVhcm5pbmcpIiwiQ29udm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbiIsIk5vcm1hbGl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JtYWxpemF0aW9uXyhtYWNoaW5lX2xlYXJuaW5nKSIsIkJhdGNobm9ybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhdGNoX25vcm1hbGl6YXRpb24iLCJBY3RpdmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWN0aXZhdGlvbl9mdW5jdGlvbiIsIlNvZnRtYXgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0bWF4X2Z1bmN0aW9uIiwiU2lnbW9pZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZ21vaWRfZnVuY3Rpb24iLCJSZWN0aWZpZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN0aWZpZXJfKG5ldXJhbF9uZXR3b3JrcykiLCJHYXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXRpbmdfbWVjaGFuaXNtIiwiV2VpZ2h0IGluaXRpYWxpemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VpZ2h0X2luaXRpYWxpemF0aW9uIiwiUmVndWxhcml6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyaXphdGlvbl8obWF0aGVtYXRpY3MpIiwiRGF0YXNldHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFpbmluZyxfdmFsaWRhdGlvbixfYW5kX3Rlc3RfZGF0YV9zZXRzIiwiQXVnbWVudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9hdWdtZW50YXRpb24iLCJQcm9tcHQgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9tcHRfZW5naW5lZXJpbmciLCJRLWxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUS1sZWFybmluZyIsIlNBUlNBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGUlRTIlODAlOTNhY3Rpb24lRTIlODAlOTNyZXdhcmQlRTIlODAlOTNzdGF0ZSVFMiU4MCU5M2FjdGlvbiIsIkltaXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltaXRhdGlvbl9sZWFybmluZyIsIlBvbGljeSBncmFkaWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGljeV9ncmFkaWVudF9tZXRob2QiLCJEaWZmdXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWZmdXNpb25fcHJvY2VzcyIsIkxhdGVudCBkaWZmdXNpb24gbW9kZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRlbnRfZGlmZnVzaW9uX21vZGVsIiwiQXV0b3JlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvcmVncmVzc2l2ZV9tb2RlbCIsIkFkdmVyc2FyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FkdmVyc2FyaWFsX21hY2hpbmVfbGVhcm5pbmciLCJSQUciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXRyaWV2YWwtYXVnbWVudGVkX2dlbmVyYXRpb24iLCJSTEhGIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVpbmZvcmNlbWVudF9sZWFybmluZ19mcm9tX2h1bWFuX2ZlZWRiYWNrIiwiU2VsZi1zdXBlcnZpc2VkIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1zdXBlcnZpc2VkX2xlYXJuaW5nIiwiV29yZCBlbWJlZGRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JkX2VtYmVkZGluZyIsIkhhbGx1Y2luYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxsdWNpbmF0aW9uXyhhcnRpZmljaWFsX2ludGVsbGlnZW5jZSkiLCJJbi1jb250ZXh0IGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvbXB0X2VuZ2luZWVyaW5nI0luLWNvbnRleHRfbGVhcm5pbmciLCJBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cmFsX25ldHdvcmtfKG1hY2hpbmVfbGVhcm5pbmcpIiwiTGFuZ3VhZ2UgbW9kZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYW5ndWFnZV9tb2RlbCIsIkxhcmdlIGxhbmd1YWdlIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFyZ2VfbGFuZ3VhZ2VfbW9kZWwiLCJOTVQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyYWxfbWFjaGluZV90cmFuc2xhdGlvbiIsIldhdmVOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXZlTmV0IiwiSHVtYW4gaW1hZ2Ugc3ludGhlc2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW5faW1hZ2Vfc3ludGhlc2lzIiwiSFdSIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuZHdyaXRpbmdfcmVjb2duaXRpb24iLCJPQ1IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcHRpY2FsX2NoYXJhY3Rlcl9yZWNvZ25pdGlvbiIsIlNwZWVjaCBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nX3NwZWVjaF9zeW50aGVzaXMiLCIxNS5haSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpLzE1LmFpIiwiRWxldmVuTGFicyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsZXZlbkxhYnMiLCJTcGVlY2ggcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVlY2hfcmVjb2duaXRpb24iLCJXaGlzcGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2hpc3Blcl8oc3BlZWNoX3JlY29nbml0aW9uX3N5c3RlbSkiLCJGYWNpYWwgcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNpYWxfcmVjb2duaXRpb25fc3lzdGVtIiwiQWxwaGFGb2xkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFGb2xkIiwiVGV4dC10by1pbWFnZSBtb2RlbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXh0LXRvLWltYWdlX21vZGVsIiwiQXVyb3JhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXVyb3JhXyh0ZXh0LXRvLWltYWdlX21vZGVsKSIsIkZpcmVmbHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZG9iZV9GaXJlZmx5IiwiRmx1eCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZsdXhfKHRleHQtdG8taW1hZ2VfbW9kZWwpIiwiSWRlb2dyYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JZGVvZ3JhbV8odGV4dC10by1pbWFnZV9tb2RlbCkiLCJJbWFnZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfQnJhaW4jVGV4dC10by1pbWFnZV9tb2RlbCIsIlRleHQtdG8tdmlkZW8gbW9kZWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGV4dC10by12aWRlb19tb2RlbCIsIkRyZWFtIE1hY2hpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EcmVhbV9NYWNoaW5lXyh0ZXh0LXRvLXZpZGVvX21vZGVsKSIsIkdlbi0zIEFscGhhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUnVud2F5Xyhjb21wYW55KSNHZW4tM19BbHBoYSIsIkhhaWx1byBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmlNYXhfKGNvbXBhbnkpI0hhaWx1b19BSSIsIktsaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS2xpbmdfKHRleHQtdG8tdmlkZW9fbW9kZWwpIiwiVmVvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX0RlZXBNaW5kI1ZpZGVvX21vZGVsIiwiTXVzaWMgZ2VuZXJhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011c2ljX2FuZF9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlN1bm8gQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdW5vX0FJIiwiVWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VkaW8iLCJXb3JkMnZlYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmQydmVjIiwiU2VxMnNlcSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlcTJzZXEiLCJHbG9WZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb1ZlIiwiQkVSVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JFUlRfKGxhbmd1YWdlX21vZGVsKSIsIlQ1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVDVfKGxhbmd1YWdlX21vZGVsKSIsIkxsYW1hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGxhbWFfKGxhbmd1YWdlX21vZGVsKSIsIkNoaW5jaGlsbGEgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGluY2hpbGxhXyhsYW5ndWFnZV9tb2RlbCkiLCJQYUxNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFMTSIsIkdQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfcHJlLXRyYWluZWRfdHJhbnNmb3JtZXIiLCJKIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BULUoiLCI0byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00byIsIm8xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlbkFJX28xIiwibzMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuQUlfbzMiLCJjaGF0Ym90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VtaW5pXyhjaGF0Ym90KSIsIkxhTURBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFNREEiLCJCTE9PTSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JMT09NXyhsYW5ndWFnZV9tb2RlbCkiLCJQcm9qZWN0IERlYmF0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9qZWN0X0RlYmF0ZXIiLCJJQk0gV2F0c29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX1dhdHNvbiIsIklCTSBXYXRzb254IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX1dhdHNvbngiLCJHcmFuaXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX0dyYW5pdGUiLCJQYW5HdS3OoyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YXdlaV9QYW5HdSIsIkRlZXBTZWVrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcFNlZWsiLCJRd2VuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXdlbiIsIkFscGhhWmVybyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhWmVybyIsIk9wZW5BSSBGaXZlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlbkFJX0ZpdmUiLCJTZWxmLWRyaXZpbmcgY2FyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1kcml2aW5nX2NhciIsIkFjdGlvbiBzZWxlY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BY3Rpb25fc2VsZWN0aW9uIiwiQXV0b0dQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9HUFQiLCJSb2JvdCBjb250cm9sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfY29udHJvbCIsIldhcnJlbiBTdHVyZ2lzIE1jQ3VsbG9jaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhcnJlbl9TdHVyZ2lzX01jQ3VsbG9jaCIsIkpvaG4gdm9uIE5ldW1hbm4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX3Zvbl9OZXVtYW5uIiwiQ2xhdWRlIFNoYW5ub24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGF1ZGVfU2hhbm5vbiIsIk5hdGhhbmllbCBSb2NoZXN0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXRoYW5pZWxfUm9jaGVzdGVyXyhjb21wdXRlcl9zY2llbnRpc3QpIiwiQWxsZW4gTmV3ZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxsZW5fTmV3ZWxsIiwiQ2xpZmYgU2hhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaWZmX1NoYXciLCJIZXJiZXJ0IEEuIFNpbW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIkJlcm5hcmQgV2lkcm93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmVybmFyZF9XaWRyb3ciLCJTZXltb3VyIFBhcGVydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NleW1vdXJfUGFwZXJ0IiwiSm9obiBIb3BmaWVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fSG9wZmllbGQiLCJMb3RmaSBBLiBaYWRlaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvdGZpX0EuX1phZGVoIiwiU3RlcGhlbiBHcm9zc2JlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVwaGVuX0dyb3NzYmVyZyIsIkFsZXggR3JhdmVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleF9HcmF2ZXNfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJGZWktRmVpIExpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVpLUZlaV9MaSIsIkFsZXggS3JpemhldnNreSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhfS3JpemhldnNreSIsIklseWEgU3V0c2tldmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWx5YV9TdXRza2V2ZXIiLCJEYXZpZCBTaWx2ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9TaWx2ZXJfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJJYW4gR29vZGZlbGxvdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lhbl9Hb29kZmVsbG93IiwiQW5kcmVqIEthcnBhdGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5kcmVqX0thcnBhdGh5IiwiTmV1cmFsIFR1cmluZyBtYWNoaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cmFsX1R1cmluZ19tYWNoaW5lIiwiRGlmZmVyZW50aWFibGUgbmV1cmFsIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlmZmVyZW50aWFibGVfbmV1cmFsX2NvbXB1dGVyIiwiVHJhbnNmb3JtZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl8oZGVlcF9sZWFybmluZ19hcmNoaXRlY3R1cmUpIiwiVmlzaW9uIHRyYW5zZm9ybWVyIChWaVQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmlzaW9uX3RyYW5zZm9ybWVyIiwiUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrIChSTk4pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjdXJyZW50X25ldXJhbF9uZXR3b3JrIiwiTG9uZyBzaG9ydC10ZXJtIG1lbW9yeSAoTFNUTSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25nX3Nob3J0LXRlcm1fbWVtb3J5IiwiR2F0ZWQgcmVjdXJyZW50IHVuaXQgKEdSVSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXRlZF9yZWN1cnJlbnRfdW5pdCIsIkVjaG8gc3RhdGUgbmV0d29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VjaG9fc3RhdGVfbmV0d29yayIsIk11bHRpbGF5ZXIgcGVyY2VwdHJvbiAoTUxQKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpbGF5ZXJfcGVyY2VwdHJvbiIsIkNvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmsgKENOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbmFsX25ldXJhbF9uZXR3b3JrIiwiUmVzaWR1YWwgbmV1cmFsIG5ldHdvcmsgKFJOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXNpZHVhbF9uZXVyYWxfbmV0d29yayIsIkhpZ2h3YXkgbmV0d29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZ2h3YXlfbmV0d29yayIsIk1hbWJhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFtYmFfKGRlZXBfbGVhcm5pbmdfYXJjaGl0ZWN0dXJlKSIsIkF1dG9lbmNvZGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b2VuY29kZXIiLCJWYXJpYXRpb25hbCBhdXRvZW5jb2RlciAoVkFFKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhcmlhdGlvbmFsX2F1dG9lbmNvZGVyIiwiR2VuZXJhdGl2ZSBhZHZlcnNhcmlhbCBuZXR3b3JrIChHQU4pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9hZHZlcnNhcmlhbF9uZXR3b3JrIiwiR3JhcGggbmV1cmFsIG5ldHdvcmsgKEdOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaF9uZXVyYWxfbmV0d29yayIsIlRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3J0YWw6VGVjaG5vbG9neSIsIkNhdGVnb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6RXhpc3RlbnRpYWxfcmlza19mcm9tX2FydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCJBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGlmaWNpYWxfbmV1cmFsX25ldHdvcmtzIiwiQ29tcGFuaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9yb2JvdGljc19jb21wYW5pZXMiLCJDaXJjdW1zY3JpcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaXJjdW1zY3JpcHRpb25fKGxvZ2ljKSIsIkdhcmJhZ2UgY29sbGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhcmJhZ2VfY29sbGVjdGlvbl8oY29tcHV0ZXJfc2NpZW5jZSkiLCJMaXNwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzcF8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpIiwiQUxHT0wgNjAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTEdPTF82MCIsIk1jQ2FydGh5IGV2YWx1YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaG9ydC1jaXJjdWl0X2V2YWx1YXRpb24iLCJNY0NhcnRoeSBGb3JtYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NY0NhcnRoeV9Gb3JtYWxpc20iLCJNY0NhcnRoeSA5MSBmdW5jdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01jQ2FydGh5XzkxX2Z1bmN0aW9uIiwiU3BhY2UgZm91bnRhaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGFjZV9mb3VudGFpbiIsIlBoaWxvc29waHkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfbWluZCIsIlBoaWxvc29waGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBoaWxvc29waGVyc19vZl9taW5kIiwiRy4gRS4gTS4gQW5zY29tYmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HLl9FLl9NLl9BbnNjb21iZSIsIkFyaXN0b3RsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FyaXN0b3RsZSIsIkFybXN0cm9uZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdmlkX01hbGV0X0FybXN0cm9uZyIsIlRob21hcyBBcXVpbmFzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhvbWFzX0FxdWluYXMiLCJKLiBMLiBBdXN0aW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KLl9MLl9BdXN0aW4iLCJBbGV4YW5kZXIgQmFpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhhbmRlcl9CYWluXyhwaGlsb3NvcGhlcikiLCJHZW9yZ2UgQmVya2VsZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfQmVya2VsZXkiLCJIZW5yaSBCZXJnc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucmlfQmVyZ3NvbiIsIk5lZCBCbG9jayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05lZF9CbG9jayIsIkZyYW56IEJyZW50YW5vIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbnpfQnJlbnRhbm8iLCJDLiBELiBCcm9hZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0MuX0QuX0Jyb2FkIiwiVHlsZXIgQnVyZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UeWxlcl9CdXJnZSIsIlBhdHJpY2lhIENodXJjaGxhbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXRyaWNpYV9DaHVyY2hsYW5kIiwiUGF1bCBDaHVyY2hsYW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF1bF9DaHVyY2hsYW5kIiwiQW5keSBDbGFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FuZHlfQ2xhcmsiLCJEaGFybWFraXJ0aSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RoYXJtYWtpcnRpIiwiRG9uYWxkIERhdmlkc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9uYWxkX0Rhdmlkc29uXyhwaGlsb3NvcGhlcikiLCJEYW5pZWwgRGVubmV0dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbF9EZW5uZXR0IiwiUmVuw6kgRGVzY2FydGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVuJUMzJUE5X0Rlc2NhcnRlcyIsIkZyZWQgRHJldHNrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWRfRHJldHNrZSIsIkZvZG9yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVycnlfRm9kb3IiLCJHb2xkbWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWx2aW5fR29sZG1hbiIsIk1hcnRpbiBIZWlkZWdnZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ0aW5fSGVpZGVnZ2VyIiwiRGF2aWQgSHVtZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdmlkX0h1bWUiLCJFZG11bmQgSHVzc2VybCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VkbXVuZF9IdXNzZXJsIiwiV2lsbGlhbSBKYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fSmFtZXMiLCJGcmFuayBDYW1lcm9uIEphY2tzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua19DYW1lcm9uX0phY2tzb24iLCJJbW1hbnVlbCBLYW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW1tYW51ZWxfS2FudCIsIkRhdmlkIExld2lzIChwaGlsb3NvcGhlcikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9MZXdpc18ocGhpbG9zb3BoZXIpIiwiSm9obiBMb2NrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fTG9ja2UiLCJHb3R0ZnJpZWQgV2lsaGVsbSBMZWlibml6IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR290dGZyaWVkX1dpbGhlbG1fTGVpYm5peiIsIk1hdXJpY2UgTWVybGVhdS1Qb250eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdXJpY2VfTWVybGVhdS1Qb250eSIsIlRob21hcyBOYWdlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rob21hc19OYWdlbCIsIkFsdmEgTm/DqyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsdmFfTm8lQzMlQUIiLCJEZXJlayBQYXJmaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXJla19QYXJmaXQiLCJQbGF0byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BsYXRvIiwiUmljaGFyZCBSb3J0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JpY2hhcmRfUm9ydHkiLCJHaWxiZXJ0IFJ5bGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HaWxiZXJ0X1J5bGUiLCJXaWxmcmlkIFNlbGxhcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWxmcmlkX1NlbGxhcnMiLCJCYXJ1Y2ggU3Bpbm96YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhcnVjaF9TcGlub3phIiwiTWljaGFlbCBUeWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNoYWVsX1R5ZV8ocGhpbG9zb3BoZXIpIiwiVmFzdWJhbmRodSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zhc3ViYW5kaHUiLCJMdWR3aWcgV2l0dGdlbnN0ZWluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTHVkd2lnX1dpdHRnZW5zdGVpbiIsIlN0ZXBoZW4gWWFibG8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVwaGVuX1lhYmxvIiwiWmh1YW5nemkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9aaHVhbmdfWmhvdSIsIm1vcmUuLi4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmRleF9vZl9waGlsb3NvcGh5X29mX3NjaWVuY2VfYXJ0aWNsZXMiLCJCZWhhdmlvcmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlaGF2aW9yaXNtIiwiQmlvbG9naWNhbCBuYXR1cmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvbG9naWNhbF9uYXR1cmFsaXNtIiwiRHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQlRTIlODAlOTNib2R5X2R1YWxpc20iLCJFbGltaW5hdGl2ZSBtYXRlcmlhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsaW1pbmF0aXZlX21hdGVyaWFsaXNtIiwiRW1lcmdlbnQgbWF0ZXJpYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWVyZ2VudF9tYXRlcmlhbGlzbSIsIkVwaXBoZW5vbWVuYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FcGlwaGVub21lbmFsaXNtIiwiRnVuY3Rpb25hbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uYWxpc21fKHBoaWxvc29waHlfb2ZfbWluZCkiLCJJbnRlcmFjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aW9uaXNtXyhwaGlsb3NvcGh5X29mX21pbmQpIiwiTmHDr3ZlIHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYSVDMyVBRnZlX3JlYWxpc20iLCJOZXVyb3BoZW5vbWVub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb3BoZW5vbWVub2xvZ3kiLCJOZXV0cmFsIG1vbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldXRyYWxfbW9uaXNtIiwiTmV3IG15c3RlcmlhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ld19teXN0ZXJpYW5pc20iLCJOb25kdWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9uZHVhbGlzbSIsIk9jY2FzaW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PY2Nhc2lvbmFsaXNtIiwiUGFyYWxsZWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc3ljaG9waHlzaWNhbF9wYXJhbGxlbGlzbSIsIlBoZW5vbWVuYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGVub21lbmFsaXNtIiwiUGhlbm9tZW5vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoZW5vbWVub2xvZ3lfKHBoaWxvc29waHkpIiwiUGh5c2ljYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaHlzaWNhbGlzbSIsIlR5cGUgcGh5c2ljYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UeXBlX3BoeXNpY2FsaXNtIiwiUHJvcGVydHkgZHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3BlcnR5X2R1YWxpc20iLCJSZXByZXNlbnRhdGlvbmFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3JlcHJlc2VudGF0aW9uIiwiU29saXBzaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29saXBzaXNtIiwiU3Vic3RhbmNlIGR1YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWJzdGFuY2VfZHVhbGlzbSIsIkFic3RyYWN0IG9iamVjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fic3RyYWN0X2FuZF9jb25jcmV0ZSIsIkNyZWF0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcmVhdGl2aXR5IiwiQ29nbml0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29nbml0aW9uIiwiQ29nbml0aXZlIGNsb3N1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2duaXRpdmVfY2xvc3VyZV8ocGhpbG9zb3BoeSkiLCJDb25jZXB0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uY2VwdCIsIkNvbnNjaW91c25lc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zY2lvdXNuZXNzIiwiSHlwb3N0YXRpYyBhYnN0cmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h5cG9zdGF0aWNfYWJzdHJhY3Rpb24iLCJJZGVhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWRlYSIsIklkZW50aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWRlbnRpdHlfKHBoaWxvc29waHkpIiwiSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbmNlIiwiSHVtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9pbnRlbGxpZ2VuY2UiLCJJbnRlbnRpb25hbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVudGlvbmFsaXR5IiwiSW50cm9zcGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc3BlY3Rpb24iLCJJbnR1aXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnR1aXRpb24iLCJMYW5ndWFnZSBvZiB0aG91Z2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFuZ3VhZ2Vfb2ZfdGhvdWdodF9oeXBvdGhlc2lzIiwiTWVudGFsIGV2ZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX2V2ZW50IiwiTWVudGFsIGltYWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX2ltYWdlIiwiTWVudGFsIHByb2Nlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wbGF0ZTpNZW50YWxfcHJvY2Vzc2VzIiwiTWVudGFsIHByb3BlcnR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3N0YXRlIiwiTWVudGFsIHJlcHJlc2VudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3JlcHJlc2VudGF0aW9uIiwiTWluZOKAk2JvZHkgcHJvYmxlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQlRTIlODAlOTNib2R5X3Byb2JsZW0iLCJQYWluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFpbl8ocGhpbG9zb3BoeSkiLCJQcm9ibGVtIG9mIG90aGVyIG1pbmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmxlbV9vZl9vdGhlcl9taW5kcyIsIlByb3Bvc2l0aW9uYWwgYXR0aXR1ZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wb3NpdGlvbmFsX2F0dGl0dWRlIiwiUXVhbGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbGlhIiwiVGFidWxhIHJhc2EiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWJ1bGFfcmFzYSIsIlVuZGVyc3RhbmRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmRlcnN0YW5kaW5nIiwiWm9tYmllIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoaWNhbF96b21iaWUiLCJNZXRhcGh5c2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldGFwaHlzaWNzIiwiaW5mb3JtYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX2luZm9ybWF0aW9uIiwic2VsZiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2Zfc2VsZiIsIlBoaWxvc29waGVycyBjYXRlZ29yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBoaWxvc29waGVyc19vZl9taW5kIiwiUHJvamVjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpXaWtpUHJvamVjdF9QaGlsb3NvcGh5IiwiVGFzayBGb3JjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpXaWtpUHJvamVjdF9QaGlsb3NvcGh5L01pbmQiLCJQaGlsb3NvcGh5IG9mIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NjaWVuY2UiLCJBbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waGljYWxfYW5hbHlzaXMiLCJBbmFseXRpY+KAk3N5bnRoZXRpYyBkaXN0aW5jdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FuYWx5dGljJUUyJTgwJTkzc3ludGhldGljX2Rpc3RpbmN0aW9uIiwiQSBwcmlvcmkgYW5kIGEgcG9zdGVyaW9yaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FfcHJpb3JpX2FuZF9hX3Bvc3RlcmlvcmkiLCJDYXVzYWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXVzYWxpdHkiLCJNaWxsJ3MgTWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbGwlMjdzX01ldGhvZHMiLCJDb21tZW5zdXJhYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tbWVuc3VyYWJpbGl0eV8ocGhpbG9zb3BoeV9vZl9zY2llbmNlKSIsIkNvbnNpbGllbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uc2lsaWVuY2UiLCJDb25zdHJ1Y3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zdHJ1Y3RfKHBoaWxvc29waHkpIiwiQ29ycmVsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3JyZWxhdGlvbiIsImZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ycmVsYXRpb25fZnVuY3Rpb24iLCJDcmVhdGl2ZSBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcmVhdGl2ZV9zeW50aGVzaXMiLCJEZW1hcmNhdGlvbiBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVtYXJjYXRpb25fcHJvYmxlbSIsIkVtcGlyaWNhbCBldmlkZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcGlyaWNhbF9ldmlkZW5jZSIsIkV4cGVyaW1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBlcmltZW50IiwiZGVzaWduIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVzaWduX29mX2V4cGVyaW1lbnRzIiwiRXhwbGFuYXRvcnkgcG93ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBsYW5hdG9yeV9wb3dlciIsIkZhY3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0IiwiRmFsc2lmaWFiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWxzaWZpYWJpbGl0eSIsIkZlbWluaXN0IG1ldGhvZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlbWluaXN0X21ldGhvZCIsIkZ1bmN0aW9uYWwgY29udGV4dHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uYWxfY29udGV4dHVhbGlzbSIsIkh5cG90aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeXBvdGhlc2lzIiwiYWx0ZXJuYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHRlcm5hdGl2ZV9oeXBvdGhlc2lzIiwibnVsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL051bGxfaHlwb3RoZXNpcyIsIklnbm9yYW11cyBldCBpZ25vcmFiaW11cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lnbm9yYW11c19ldF9pZ25vcmFiaW11cyIsIkluZHVjdGl2ZSByZWFzb25pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmR1Y3RpdmVfcmVhc29uaW5nIiwiSW50ZXJ0aGVvcmV0aWMgcmVkdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJ0aGVvcmV0aWNfcmVkdWN0aW9uIiwiSW5xdWlyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lucXVpcnkiLCJOYXR1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXR1cmVfKHBoaWxvc29waHkpIiwiT2JqZWN0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PYmplY3Rpdml0eV8ocGhpbG9zb3BoeSkiLCJPYnNlcnZhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ic2VydmF0aW9uIiwiUGFyYWRpZ20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJhZGlnbSIsIlByb2JsZW0gb2YgaW5kdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmxlbV9vZl9pbmR1Y3Rpb24iLCJTY2llbnRpZmljIGV2aWRlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19ldmlkZW5jZSIsIkV2aWRlbmNlLWJhc2VkIHByYWN0aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZpZGVuY2UtYmFzZWRfcHJhY3RpY2UiLCJTY2llbnRpZmljIGxhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVudGlmaWNfbGF3IiwiU2NpZW50aWZpYyBtZXRob2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX21ldGhvZCIsIlNjaWVudGlmaWMgcGx1cmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19wbHVyYWxpc20iLCJTY2llbnRpZmljIFJldm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX1Jldm9sdXRpb24iLCJUZXN0YWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rlc3RhYmlsaXR5IiwiVGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5IiwiY2hvaWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5X2Nob2ljZSIsImxhZGVubmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeS1sYWRlbm5lc3MiLCJzY2llbnRpZmljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY190aGVvcnkiLCJVbmRlcmRldGVybWluYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmRlcmRldGVybWluYXRpb24iLCJVbml0eSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdHlfb2Zfc2NpZW5jZSIsIlZhcmlhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFyaWFibGVfYW5kX2F0dHJpYnV0ZV8ocmVzZWFyY2gpIiwiY29udHJvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRyb2xfdmFyaWFibGUiLCJkZXBlbmRlbnQgYW5kIGluZGVwZW5kZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwZW5kZW50X2FuZF9pbmRlcGVuZGVudF92YXJpYWJsZXMiLCJDb2hlcmVudGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvaGVyZW50aXNtIiwiQ29uZmlybWF0aW9uIGhvbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmZpcm1hdGlvbl9ob2xpc20iLCJDb25zdHJ1Y3RpdmUgZW1waXJpY2lzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cnVjdGl2ZV9lbXBpcmljaXNtIiwiQ29uc3RydWN0aXZlIHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zdHJ1Y3RpdmVfcmVhbGlzbSIsIkNvbnN0cnVjdGl2aXN0IGVwaXN0ZW1vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cnVjdGl2aXN0X2VwaXN0ZW1vbG9neSIsIkNvbnRleHR1YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db250ZXh0dWFsaXNtIiwiQ29udmVudGlvbmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udmVudGlvbmFsaXNtIiwiRGVkdWN0aXZlLW5vbW9sb2dpY2FsIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVkdWN0aXZlLW5vbW9sb2dpY2FsX21vZGVsIiwiRXBpc3RlbW9sb2dpY2FsIGFuYXJjaGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VwaXN0ZW1vbG9naWNhbF9hbmFyY2hpc20iLCJFdm9sdXRpb25pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25pc20iLCJGYWxsaWJpbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhbGxpYmlsaXNtIiwiRm91bmRhdGlvbmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm91bmRhdGlvbmFsaXNtIiwiSHlwb3RoZXRpY28tZGVkdWN0aXZlIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHlwb3RoZXRpY28tZGVkdWN0aXZlX21vZGVsIiwiSW5kdWN0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdWN0aW9uaXNtIiwiSW5zdHJ1bWVudGFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdHJ1bWVudGFsaXNtIiwiTW9kZWwtZGVwZW5kZW50IHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbC1kZXBlbmRlbnRfcmVhbGlzbSIsIk5hdHVyYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXR1cmFsaXNtXyhwaGlsb3NvcGh5KSIsIlBvc2l0aXZpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3NpdGl2aXNtIiwiUmVkdWN0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVkdWN0aW9uaXNtIiwiRGV0ZXJtaW5pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmlzbSIsIlByYWdtYXRpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmFnbWF0aXNtIiwiUmF0aW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXRpb25hbGlzbSIsIkVtcGlyaWNpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbXBpcmljaXNtIiwiUmVjZWl2ZWQgdmlldyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY2VpdmVkX3ZpZXdfb2ZfdGhlb3JpZXMiLCJTZW1hbnRpYyB2aWV3IG9mIHRoZW9yaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VtYW50aWNfdmlld19vZl90aGVvcmllcyIsIlNjaWVudGlmaWMgZXNzZW50aWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19lc3NlbnRpYWxpc20iLCJTY2llbnRpZmljIGZvcm1hbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVudGlmaWNfZm9ybWFsaXNtIiwiU2NpZW50aWZpYyByZWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19yZWFsaXNtIiwiQW50aS1yZWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aS1yZWFsaXNtIiwiU2NpZW50aWZpYyBza2VwdGljaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19za2VwdGljaXNtIiwiU2NpZW50aXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aXNtIiwiU3RydWN0dXJhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0cnVjdHVyYWxpc21fKHBoaWxvc29waHlfb2Zfc2NpZW5jZSkiLCJVbmlmb3JtaXRhcmlhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaWZvcm1pdGFyaWFuaXNtIiwiVmVyaWZpY2F0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmVyaWZpY2F0aW9uaXNtIiwiVml0YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXRhbGlzbSIsIkJpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9iaW9sb2d5IiwiQ2hlbWlzdHJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfY2hlbWlzdHJ5X3Rlcm1zIiwiU3BhY2UgYW5kIHRpbWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NwYWNlX2FuZF90aW1lIiwiU29jaWFsIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NvY2lhbF9zY2llbmNlIiwiQXJjaGFlb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9hcmNoYWVvbG9neSIsIkVjb25vbWljc+KAjiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfZWNvbm9taWNzIiwiR2VvZ3JhcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZ3JhcGh5X29mX3JvYm90aWNzIiwiTGluZ3Vpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX2xpbmd1aXN0aWNzIiwiUHN5Y2hvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfcHN5Y2hvbG9neSIsIkNyaXRpY2lzbSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3JpdGljaXNtX29mX3NjaWVuY2UiLCJEZXNjcmlwdGl2ZSBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVzY3JpcHRpdmVfcmVzZWFyY2giLCJFcGlzdGVtb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FcGlzdGVtb2xvZ3kiLCJFeGFjdCBzY2llbmNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4YWN0X3NjaWVuY2VzIiwiRmFpdGggYW5kIHJhdGlvbmFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFpdGhfYW5kX3JhdGlvbmFsaXR5IiwiSGFyZCBhbmQgc29mdCBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZF9hbmRfc29mdF9zY2llbmNlIiwiSGlzdG9yeSBhbmQgcGhpbG9zb3BoeSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlzdG9yeV9hbmRfcGhpbG9zb3BoeV9vZl9zY2llbmNlIiwiTm9uLXNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob24tc2NpZW5jZSIsIlBzZXVkb3NjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc2V1ZG9zY2llbmNlIiwiTm9ybWF0aXZlIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JtYXRpdmVfc2NpZW5jZSIsIlByb3Rvc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3Rvc2NpZW5jZSIsIlF1ZXN0aW9uYWJsZSBjYXVzZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F1ZXN0aW9uYWJsZV9jYXVzZSIsIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIHJlbGlnaW9uIGFuZCBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsYXRpb25zaGlwX2JldHdlZW5fcmVsaWdpb25fYW5kX3NjaWVuY2UiLCJSaGV0b3JpYyBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmhldG9yaWNfb2Zfc2NpZW5jZSIsIlNjaWVuY2Ugc3R1ZGllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVuY2Vfc3R1ZGllcyIsIlNvY2lvbG9neSBvZiBzY2llbnRpZmljIGlnbm9yYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lvbG9neV9vZl9zY2llbnRpZmljX2lnbm9yYW5jZSIsIlNvY2lvbG9neSBvZiBzY2llbnRpZmljIGtub3dsZWRnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lvbG9neV9vZl9zY2llbnRpZmljX2tub3dsZWRnZSIsIlBoaWxvc29waGVycyBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9waGlsb3NvcGhlcnNfb2Zfc2NpZW5jZSIsIlJvZ2VyIEJhY29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9nZXJfQmFjb24iLCJGcmFuY2lzIEJhY29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc19CYWNvbiIsIkdhbGlsZW8gR2FsaWxlaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhbGlsZW9fR2FsaWxlaSIsIklzYWFjIE5ld3RvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lzYWFjX05ld3RvbiIsIkF1Z3VzdGUgQ29tdGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWd1c3RlX0NvbXRlIiwiSGVucmkgUG9pbmNhcsOpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucmlfUG9pbmNhciVDMyVBOSIsIlBpZXJyZSBEdWhlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BpZXJyZV9EdWhlbSIsIlJ1ZG9sZiBTdGVpbmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUnVkb2xmX1N0ZWluZXIiLCJLYXJsIFBlYXJzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1BlYXJzb24iLCJDaGFybGVzIFNhbmRlcnMgUGVpcmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhcmxlc19TYW5kZXJzX1BlaXJjZSIsIldpbGhlbG0gV2luZGVsYmFuZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGhlbG1fV2luZGVsYmFuZCIsIkFsZnJlZCBOb3J0aCBXaGl0ZWhlYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGZyZWRfTm9ydGhfV2hpdGVoZWFkIiwiQmVydHJhbmQgUnVzc2VsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlcnRyYW5kX1J1c3NlbGwiLCJPdHRvIE5ldXJhdGgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PdHRvX05ldXJhdGgiLCJNaWNoYWVsIFBvbGFueWkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNoYWVsX1BvbGFueWkiLCJIYW5zIFJlaWNoZW5iYWNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuc19SZWljaGVuYmFjaCIsIlJ1ZG9sZiBDYXJuYXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SdWRvbGZfQ2FybmFwIiwiS2FybCBQb3BwZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1BvcHBlciIsIkNhcmwgR3VzdGF2IEhlbXBlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhcmxfR3VzdGF2X0hlbXBlbCIsIlcuIFYuIE8uIFF1aW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lsbGFyZF9WYW5fT3JtYW5fUXVpbmUiLCJUaG9tYXMgS3VobiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rob21hc19LdWhuIiwiSW1yZSBMYWthdG9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW1yZV9MYWthdG9zIiwiUGF1bCBGZXllcmFiZW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF1bF9GZXllcmFiZW5kIiwiSWFuIEhhY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JYW5fSGFja2luZyIsIkJhcyB2YW4gRnJhYXNzZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNfdmFuX0ZyYWFzc2VuIiwiTGFycnkgTGF1ZGFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFycnlfTGF1ZGFuIiwiUGhpbG9zb3BoeSBwb3J0YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3J0YWw6UGhpbG9zb3BoeSIsIlNjaWVuY2UgcG9ydGFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUG9ydGFsOlNjaWVuY2UiLCJFdm9sdXRpb25hcnkgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZvbHV0aW9uYXJ5X2FsZ29yaXRobSIsIkV2b2x1dGlvbmFyeSBkYXRhIG1pbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9kYXRhX21pbmluZyIsIkV2b2x1dGlvbmFyeSBtdWx0aW1vZGFsIG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9tdWx0aW1vZGFsX29wdGltaXphdGlvbiIsIkh1bWFuLWJhc2VkIGV2b2x1dGlvbmFyeSBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuLWJhc2VkX2V2b2x1dGlvbmFyeV9jb21wdXRhdGlvbiIsIkludGVyYWN0aXZlIGV2b2x1dGlvbmFyeSBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aXZlX2V2b2x1dGlvbmFyeV9jb21wdXRhdGlvbiIsIkFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGdvcml0aG0iLCJDZWxsdWxhciBldm9sdXRpb25hcnkgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VsbHVsYXJfZXZvbHV0aW9uYXJ5X2FsZ29yaXRobSIsIkNvdmFyaWFuY2UgTWF0cml4IEFkYXB0YXRpb24gRXZvbHV0aW9uIFN0cmF0ZWd5IChDTUEtRVMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ01BLUVTIiwiQ3VsdHVyYWwgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3VsdHVyYWxfYWxnb3JpdGhtIiwiRGlmZmVyZW50aWFsIGV2b2x1dGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF9ldm9sdXRpb24iLCJFdm9sdXRpb25hcnkgcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfcHJvZ3JhbW1pbmciLCJHZW5ldGljIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfYWxnb3JpdGhtIiwiR2VuZXRpYyBwcm9ncmFtbWluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfcHJvZ3JhbW1pbmciLCJHZW5lIGV4cHJlc3Npb24gcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lX2V4cHJlc3Npb25fcHJvZ3JhbW1pbmciLCJFdm9sdXRpb24gc3RyYXRlZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25fc3RyYXRlZ3kiLCJOYXR1cmFsIGV2b2x1dGlvbiBzdHJhdGVneSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05hdHVyYWxfZXZvbHV0aW9uX3N0cmF0ZWd5IiwiTmV1cm9ldm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2V2b2x1dGlvbiIsIkxlYXJuaW5nIGNsYXNzaWZpZXIgc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGVhcm5pbmdfY2xhc3NpZmllcl9zeXN0ZW0iLCJTd2FybSBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Td2FybV9pbnRlbGxpZ2VuY2UiLCJBbnQgY29sb255IG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FudF9jb2xvbnlfb3B0aW1pemF0aW9uIiwiQmVlcyBhbGdvcml0aG0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZWVzX2FsZ29yaXRobSIsIkN1Y2tvbyBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DdWNrb29fc2VhcmNoIiwiUGFydGljbGUgc3dhcm0gb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGljbGVfc3dhcm1fb3B0aW1pemF0aW9uIiwiQmFjdGVyaWFsIENvbG9ueSBPcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYWN0ZXJpYWxfQ29sb255X09wdGltaXphdGlvbiIsIk1ldGFoZXVyaXN0aWMgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldGFoZXVyaXN0aWMiLCJGaXJlZmx5IGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpcmVmbHlfYWxnb3JpdGhtIiwiSGFybW9ueSBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtb255X3NlYXJjaCIsIkdhdXNzaWFuIGFkYXB0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXVzc2lhbl9hZGFwdGF0aW9uIiwiTWVtZXRpYyBhbGdvcml0aG0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1ldGljX2FsZ29yaXRobSIsIkFydGlmaWNpYWwgZGV2ZWxvcG1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2RldmVsb3BtZW50IiwiQXJ0aWZpY2lhbCBsaWZlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9saWZlIiwiRGlnaXRhbCBvcmdhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZ2l0YWxfb3JnYW5pc20iLCJFdm9sdXRpb25hcnkgcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfcm9ib3RpY3MiLCJGaXRuZXNzIGZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRml0bmVzc19mdW5jdGlvbiIsIkZpdG5lc3MgbGFuZHNjYXBlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRml0bmVzc19sYW5kc2NhcGUiLCJGaXRuZXNzIGFwcHJveGltYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXRuZXNzX2FwcHJveGltYXRpb24iLCJHZW5ldGljIG9wZXJhdG9ycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfb3BlcmF0b3JzIiwiTm8gZnJlZSBsdW5jaCBpbiBzZWFyY2ggYW5kIG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05vX2ZyZWVfbHVuY2hfaW5fc2VhcmNoX2FuZF9vcHRpbWl6YXRpb24iLCJNYXRpbmcgcG9vbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGluZ19wb29sIiwiUHJlbWF0dXJlIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJlbWF0dXJlX2NvbnZlcmdlbmNlIiwiUHJvZ3JhbSBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtX3N5bnRoZXNpcyIsIkpvdXJuYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWNhZGVtaWNfam91cm5hbCIsIkV2b2x1dGlvbmFyeSBDb21wdXRhdGlvbiAoam91cm5hbCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfQ29tcHV0YXRpb25fKGpvdXJuYWwpIiwiQ29tcHV0ZXIgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NvbXB1dGVyX3NjaWVuY2UiLCJBQ00gQ29tcHV0aW5nIENsYXNzaWZpY2F0aW9uIFN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FDTV9Db21wdXRpbmdfQ2xhc3NpZmljYXRpb25fU3lzdGVtIiwiSGFyZHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl9oYXJkd2FyZSIsIlByaW50ZWQgY2lyY3VpdCBib2FyZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByaW50ZWRfY2lyY3VpdF9ib2FyZCIsIlBlcmlwaGVyYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJpcGhlcmFsIiwiSW50ZWdyYXRlZCBjaXJjdWl0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWdyYXRlZF9jaXJjdWl0IiwiVmVyeSBMYXJnZSBTY2FsZSBJbnRlZ3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZlcnlfTGFyZ2VfU2NhbGVfSW50ZWdyYXRpb24iLCJTeXN0ZW1zIG9uIENoaXAgKFNvQ3MpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3lzdGVtX29uX2FfY2hpcCIsIkVuZXJneSBjb25zdW1wdGlvbiAoR3JlZW4gY29tcHV0aW5nKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyZWVuX2NvbXB1dGluZyIsIkVsZWN0cm9uaWMgZGVzaWduIGF1dG9tYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvbmljX2Rlc2lnbl9hdXRvbWF0aW9uIiwiSGFyZHdhcmUgYWNjZWxlcmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZHdhcmVfYWNjZWxlcmF0aW9uIiwiUHJvY2Vzc29yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvY2Vzc29yXyhjb21wdXRpbmcpIiwiU2l6ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfY29tcHV0ZXJfc2l6ZV9jYXRlZ29yaWVzIiwiRm9ybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1fZmFjdG9yXyhkZXNpZ24pIiwiQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYXJjaGl0ZWN0dXJlIiwiQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9jb21wbGV4aXR5IiwiRGVwZW5kYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlcGVuZGFiaWxpdHkiLCJFbWJlZGRlZCBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWJlZGRlZF9zeXN0ZW0iLCJSZWFsLXRpbWUgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVhbC10aW1lX2NvbXB1dGluZyIsIk5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfbmV0d29yayIsIk5ldHdvcmsgYXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19hcmNoaXRlY3R1cmUiLCJOZXR3b3JrIHByb3RvY29sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19wcm90b2NvbCIsIk5ldHdvcmsgY29tcG9uZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtpbmdfaGFyZHdhcmUiLCJOZXR3b3JrIHNjaGVkdWxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfc2NoZWR1bGVyIiwiTmV0d29yayBwZXJmb3JtYW5jZSBldmFsdWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19wZXJmb3JtYW5jZSIsIk5ldHdvcmsgc2VydmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfc2VydmljZSIsIkludGVycHJldGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJwcmV0ZXJfKGNvbXB1dGluZykiLCJNaWRkbGV3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlkZGxld2FyZSIsIlZpcnR1YWwgbWFjaGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZpcnR1YWxfbWFjaGluZSIsIk9wZXJhdGluZyBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVyYXRpbmdfc3lzdGVtIiwiU29mdHdhcmUgcXVhbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX3F1YWxpdHkiLCJTb2Z0d2FyZSBub3RhdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWluZ19sYW5ndWFnZV90aGVvcnkiLCJ0b29scyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3Rvb2wiLCJQcm9ncmFtbWluZyBwYXJhZGlnbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3BhcmFkaWdtIiwiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWluZ19sYW5ndWFnZSIsIkNvbXBpbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGlsZXJfY29uc3RydWN0aW9uIiwiRG9tYWluLXNwZWNpZmljIGxhbmd1YWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlIiwiTW9kZWxpbmcgbGFuZ3VhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbGluZ19sYW5ndWFnZSIsIlNvZnR3YXJlIGZyYW1ld29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX2ZyYW1ld29yayIsIkludGVncmF0ZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlZ3JhdGVkX2RldmVsb3BtZW50X2Vudmlyb25tZW50IiwiU29mdHdhcmUgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfY29uZmlndXJhdGlvbl9tYW5hZ2VtZW50IiwiU29mdHdhcmUgbGlicmFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpYnJhcnlfKGNvbXB1dGluZykiLCJTb2Z0d2FyZSByZXBvc2l0b3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfcmVwb3NpdG9yeSIsIlNvZnR3YXJlIGRldmVsb3BtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZGV2ZWxvcG1lbnQiLCJDb250cm9sIHZhcmlhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udHJvbF92YXJpYWJsZV8ocHJvZ3JhbW1pbmcpIiwiU29mdHdhcmUgZGV2ZWxvcG1lbnQgcHJvY2VzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX2RldmVsb3BtZW50X3Byb2Nlc3MiLCJSZXF1aXJlbWVudHMgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXF1aXJlbWVudHNfYW5hbHlzaXMiLCJTb2Z0d2FyZSBkZXNpZ24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZV9kZXNpZ24iLCJTb2Z0d2FyZSBjb25zdHJ1Y3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZV9jb25zdHJ1Y3Rpb24iLCJTb2Z0d2FyZSBkZXBsb3ltZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZGVwbG95bWVudCIsIlNvZnR3YXJlIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZW5naW5lZXJpbmciLCJTb2Z0d2FyZSBtYWludGVuYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX21haW50ZW5hbmNlIiwiUHJvZ3JhbW1pbmcgdGVhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3RlYW0iLCJPcGVuLXNvdXJjZSBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX3NvZnR3YXJlIiwiVGhlb3J5IG9mIGNvbXB1dGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5X29mX2NvbXB1dGF0aW9uIiwiTW9kZWwgb2YgY29tcHV0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbF9vZl9jb21wdXRhdGlvbiIsIlN0b2NoYXN0aWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdG9jaGFzdGljX2NvbXB1dGluZyIsIkZvcm1hbCBsYW5ndWFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1hbF9sYW5ndWFnZSIsIkF1dG9tYXRhIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRhX3RoZW9yeSIsIkNvbXB1dGFiaWxpdHkgdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YWJpbGl0eV90aGVvcnkiLCJDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHkgdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9jb21wbGV4aXR5X3RoZW9yeSIsIlNlbWFudGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbWFudGljc18oY29tcHV0ZXJfc2NpZW5jZSkiLCJBbGdvcml0aG0gZGVzaWduIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxnb3JpdGhtX2Rlc2lnbiIsIkFuYWx5c2lzIG9mIGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmFseXNpc19vZl9hbGdvcml0aG1zIiwiQWxnb3JpdGhtaWMgZWZmaWNpZW5jeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2VmZmljaWVuY3kiLCJSYW5kb21pemVkIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhbmRvbWl6ZWRfYWxnb3JpdGhtIiwiQ29tcHV0YXRpb25hbCBnZW9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfZ2VvbWV0cnkiLCJEaXNjcmV0ZSBtYXRoZW1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc2NyZXRlX21hdGhlbWF0aWNzIiwiUHJvYmFiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9iYWJpbGl0eSIsIlN0YXRpc3RpY3MiOiJodHRwczovL3N0YXRzLndpa2ltZWRpYS5vcmcvIy9lbi53aWtpcGVkaWEub3JnIiwiTWF0aGVtYXRpY2FsIHNvZnR3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX3NvZnR3YXJlIiwiSW5mb3JtYXRpb24gdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fdGhlb3J5IiwiTWF0aGVtYXRpY2FsIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX2FuYWx5c2lzIiwiTnVtZXJpY2FsIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVtZXJpY2FsX2FuYWx5c2lzIiwiVGhlb3JldGljYWwgY29tcHV0ZXIgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yZXRpY2FsX2NvbXB1dGVyX3NjaWVuY2UiLCJJbmZvcm1hdGlvbiBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fc3lzdGVtIiwiRGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRhYmFzZSIsIkluZm9ybWF0aW9uIHN0b3JhZ2Ugc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyX2RhdGFfc3RvcmFnZSIsIkVudGVycHJpc2UgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW50ZXJwcmlzZV9pbmZvcm1hdGlvbl9zeXN0ZW0iLCJTb2NpYWwgaW5mb3JtYXRpb24gc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lhbF9zb2Z0d2FyZSIsIkdlb2dyYXBoaWMgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZ3JhcGhpY19pbmZvcm1hdGlvbl9zeXN0ZW0iLCJEZWNpc2lvbiBzdXBwb3J0IHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY2lzaW9uX3N1cHBvcnRfc3lzdGVtIiwiUHJvY2VzcyBjb250cm9sIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2Nlc3NfY29udHJvbCIsIk11bHRpbWVkaWEgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGltZWRpYV9kYXRhYmFzZSIsIkRhdGEgbWluaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9taW5pbmciLCJEaWdpdGFsIGxpYnJhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWdpdGFsX2xpYnJhcnkiLCJDb21wdXRpbmcgcGxhdGZvcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRpbmdfcGxhdGZvcm0iLCJEaWdpdGFsIG1hcmtldGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZ2l0YWxfbWFya2V0aW5nIiwiV29ybGQgV2lkZSBXZWIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JsZF9XaWRlX1dlYiIsIkluZm9ybWF0aW9uIHJldHJpZXZhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX3JldHJpZXZhbCIsIlNlY3VyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfc2VjdXJpdHkiLCJDcnlwdG9ncmFwaHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcnlwdG9ncmFwaHkiLCJGb3JtYWwgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1hbF9tZXRob2RzIiwiU2VjdXJpdHkgaGFja2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VjdXJpdHlfaGFja2VyIiwiU2VjdXJpdHkgc2VydmljZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZWN1cml0eV9zZXJ2aWNlXyh0ZWxlY29tbXVuaWNhdGlvbikiLCJJbnRydXNpb24gZGV0ZWN0aW9uIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJ1c2lvbl9kZXRlY3Rpb25fc3lzdGVtIiwiSGFyZHdhcmUgc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJkd2FyZV9zZWN1cml0eSIsIk5ldHdvcmsgc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXR3b3JrX3NlY3VyaXR5IiwiSW5mb3JtYXRpb24gc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9zZWN1cml0eSIsIkFwcGxpY2F0aW9uIHNlY3VyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fc2VjdXJpdHkiLCJIdW1hbuKAk2NvbXB1dGVyIGludGVyYWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW4lRTIlODAlOTNjb21wdXRlcl9pbnRlcmFjdGlvbiIsIkludGVyYWN0aW9uIGRlc2lnbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aW9uX2Rlc2lnbiIsIlNvY2lhbCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2NpYWxfY29tcHV0aW5nIiwiVWJpcXVpdG91cyBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VYmlxdWl0b3VzX2NvbXB1dGluZyIsIlZpc3VhbGl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXN1YWxpemF0aW9uXyhncmFwaGljcykiLCJBY2Nlc3NpYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYWNjZXNzaWJpbGl0eSIsIkNvbmN1cnJlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uY3VycmVuY3lfKGNvbXB1dGVyX3NjaWVuY2UpIiwiQ29uY3VycmVudCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25jdXJyZW50X2NvbXB1dGluZyIsIlBhcmFsbGVsIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcmFsbGVsX2NvbXB1dGluZyIsIkRpc3RyaWJ1dGVkIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGVkX2NvbXB1dGluZyIsIk11bHRpdGhyZWFkaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGl0aHJlYWRpbmdfKGNvbXB1dGVyX2FyY2hpdGVjdHVyZSkiLCJNdWx0aXByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aXByb2Nlc3NpbmciLCJLbm93bGVkZ2UgcmVwcmVzZW50YXRpb24gYW5kIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbl9hbmRfcmVhc29uaW5nIiwiQXV0b21hdGVkIHBsYW5uaW5nIGFuZCBzY2hlZHVsaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nX2FuZF9zY2hlZHVsaW5nIiwiU2VhcmNoIG1ldGhvZG9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX29wdGltaXphdGlvbiIsIkNvbnRyb2wgbWV0aG9kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udHJvbF90aGVvcnkiLCJEaXN0cmlidXRlZCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGVkX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiTXVsdGktdGFzayBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpLXRhc2tfbGVhcm5pbmciLCJDcm9zcy12YWxpZGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3Jvc3MtdmFsaWRhdGlvbl8oc3RhdGlzdGljcykiLCJHcmFwaGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyX2dyYXBoaWNzIiwiQW5pbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYW5pbWF0aW9uIiwiRXh0ZW5kZWQgcmVhbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4dGVuZGVkX3JlYWxpdHkiLCJBdWdtZW50ZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWdtZW50ZWRfcmVhbGl0eSIsIk1peGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWl4ZWRfcmVhbGl0eSIsIlZpcnR1YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXJ0dWFsX3JlYWxpdHkiLCJSZW5kZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZW5kZXJpbmdfKGNvbXB1dGVyX2dyYXBoaWNzKSIsIlBob3RvZ3JhcGggbWFuaXB1bGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhvdG9ncmFwaF9tYW5pcHVsYXRpb24iLCJHcmFwaGljcyBwcm9jZXNzaW5nIHVuaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaGljc19wcm9jZXNzaW5nX3VuaXQiLCJJbWFnZSBjb21wcmVzc2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltYWdlX2NvbXByZXNzaW9uIiwiU29saWQgbW9kZWxpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2xpZF9tb2RlbGluZyIsIlF1YW50dW0gQ29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbnR1bV9Db21wdXRpbmciLCJFLWNvbW1lcmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRS1jb21tZXJjZSIsIkVudGVycHJpc2Ugc29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbnRlcnByaXNlX3NvZnR3YXJlIiwiQ29tcHV0YXRpb25hbCBtYXRoZW1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfbWF0aGVtYXRpY3MiLCJDb21wdXRhdGlvbmFsIHBoeXNpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX3BoeXNpY3MiLCJDb21wdXRhdGlvbmFsIGNoZW1pc3RyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfY2hlbWlzdHJ5IiwiQ29tcHV0YXRpb25hbCBiaW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9iaW9sb2d5IiwiQ29tcHV0YXRpb25hbCBzb2NpYWwgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfc29jaWFsX3NjaWVuY2UiLCJDb21wdXRhdGlvbmFsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9lbmdpbmVlcmluZyIsIkRpZmZlcmVudGlhYmxlIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlbXBsYXRlOkRpZmZlcmVudGlhYmxlX2NvbXB1dGluZyIsIkNvbXB1dGF0aW9uYWwgaGVhbHRoY2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYWx0aF9pbmZvcm1hdGljcyIsIkRpZ2l0YWwgYXJ0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlnaXRhbF9hcnQiLCJFbGVjdHJvbmljIHB1Ymxpc2hpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvbmljX3B1Ymxpc2hpbmciLCJDeWJlcndhcmZhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJlcndhcmZhcmUiLCJFbGVjdHJvbmljIHZvdGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsZWN0cm9uaWNfdm90aW5nIiwiVmlkZW8gZ2FtZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaWRlb19nYW1lIiwiV29yZCBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29yZF9wcm9jZXNzb3IiLCJPcGVyYXRpb25zIHJlc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlcmF0aW9uc19yZXNlYXJjaCIsIkVkdWNhdGlvbmFsIHRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZHVjYXRpb25hbF90ZWNobm9sb2d5IiwiRG9jdW1lbnQgbWFuYWdlbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvY3VtZW50X21hbmFnZW1lbnRfc3lzdGVtIiwiT3V0bGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL091dGxpbmVfb2Zfcm9ib3RpY3MiLCJHbG9zc2FyaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6R2xvc3Nhcmllc19vZl9jb21wdXRlcnMiLCJFbWVyZ2luZyB0ZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWVyZ2luZ190ZWNobm9sb2dpZXMiLCJJbmZvcm1hdGlvbiBhbmRjb21tdW5pY2F0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX2FuZF9jb21tdW5pY2F0aW9uc190ZWNobm9sb2d5IiwiQW1iaWVudCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbWJpZW50X2ludGVsbGlnZW5jZSIsIkludGVybmV0IG9mIHRoaW5ncyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmV0X29mX3RoaW5ncyIsIk1hY2hpbmUgdHJhbnNsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3RyYW5zbGF0aW9uIiwiTWFjaGluZSB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9tYWNoaW5lX3Zpc2lvbiIsIk1vYmlsZSB0cmFuc2xhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vYmlsZV90cmFuc2xhdGlvbiIsIlByb2dyZXNzIGluIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3Jlc3NfaW5fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJTZW1hbnRpYyBXZWIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW1hbnRpY19XZWIiLCJBdG9tdHJvbmljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F0b210cm9uaWNzIiwiQ2FyYm9uIG5hbm90dWJlIGZpZWxkLWVmZmVjdCB0cmFuc2lzdG9yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FyYm9uX25hbm90dWJlX2ZpZWxkLWVmZmVjdF90cmFuc2lzdG9yIiwiQ3liZXJtZXRob2RvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N5YmVybWV0aG9kb2xvZ3kiLCJGb3VydGgtZ2VuZXJhdGlvbiBvcHRpY2FsIGRpc2NzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3B0aWNhbF9kaXNjI0ZvdXJ0aC1nZW5lcmF0aW9uIiwiM0Qgb3B0aWNhbCBkYXRhIHN0b3JhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS8zRF9vcHRpY2FsX2RhdGFfc3RvcmFnZSIsIkhvbG9ncmFwaGljIGRhdGEgc3RvcmFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvbG9ncmFwaGljX2RhdGFfc3RvcmFnZSIsIkdQR1BVIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhbC1wdXJwb3NlX2NvbXB1dGluZ19vbl9ncmFwaGljc19wcm9jZXNzaW5nX3VuaXRzIiwiQ0JSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWFibGVfbWV0YWxsaXphdGlvbl9jZWxsIiwiRUNSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvY2hlbWljYWxfUkFNIiwiRlJBTSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlcnJvZWxlY3RyaWNfUkFNIiwiTWlsbGlwZWRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlsbGlwZWRlX21lbW9yeSIsIk1SQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWduZXRvcmVzaXN0aXZlX1JBTSIsIk5SQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYW5vLVJBTSIsIlBSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGFzZS1jaGFuZ2VfbWVtb3J5IiwiUmFjZXRyYWNrIG1lbW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhY2V0cmFja19tZW1vcnkiLCJSUkFNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzaXN0aXZlX3JhbmRvbS1hY2Nlc3NfbWVtb3J5IiwiU09OT1MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TT05PUyIsIlVsdHJhUkFNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVWx0cmFSQU0iLCJPcHRpY2FsIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wdGljYWxfY29tcHV0aW5nIiwiUkZJRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhZGlvLWZyZXF1ZW5jeV9pZGVudGlmaWNhdGlvbiIsIkNoaXBsZXNzIFJGSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGlwbGVzc19SRklEIiwiU29mdHdhcmUtZGVmaW5lZCByYWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlLWRlZmluZWRfcmFkaW8iLCJUaHJlZS1kaW1lbnNpb25hbCBpbnRlZ3JhdGVkIGNpcmN1aXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaHJlZS1kaW1lbnNpb25hbF9pbnRlZ3JhdGVkX2NpcmN1aXQiLCJBdXRvbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGlvbiIsIkNvbGxpbmdyaWRnZSBkaWxlbW1hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29sbGluZ3JpZGdlX2RpbGVtbWEiLCJEaWZmZXJlbnRpYWwgdGVjaG5vbG9naWNhbCBkZXZlbG9wbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF90ZWNobm9sb2dpY2FsX2RldmVsb3BtZW50IiwiRGlzcnVwdGl2ZSBpbm5vdmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzcnVwdGl2ZV9pbm5vdmF0aW9uIiwiRXBoZW1lcmFsaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VwaGVtZXJhbGl6YXRpb24iLCJCaW9ldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaW9ldGhpY3MiLCJDeWJlcmV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N5YmVyZXRoaWNzIiwiTmV1cm9ldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2V0aGljcyIsIlJvYm90IGV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90X2V0aGljcyIsIkV4cGxvcmF0b3J5IGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwbG9yYXRvcnlfZW5naW5lZXJpbmciLCJQcm9hY3Rpb25hcnkgcHJpbmNpcGxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYWN0aW9uYXJ5X3ByaW5jaXBsZSIsIlRlY2hub2xvZ2ljYWwgY2hhbmdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9jaGFuZ2UiLCJUZWNobm9sb2dpY2FsIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9jb252ZXJnZW5jZSIsIlRlY2hub2xvZ2ljYWwgZXZvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9ldm9sdXRpb24iLCJUZWNobm9sb2dpY2FsIHBhcmFkaWdtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9wYXJhZGlnbSIsIlRlY2hub2xvZ3kgZm9yZWNhc3RpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X2ZvcmVjYXN0aW5nIiwiQWNjZWxlcmF0aW5nIGNoYW5nZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FjY2VsZXJhdGluZ19jaGFuZ2UiLCJGdXR1cmUtb3JpZW50ZWQgdGVjaG5vbG9neSBhbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1dHVyZS1vcmllbnRlZF90ZWNobm9sb2d5X2FuYWx5c2lzIiwiSG9yaXpvbiBzY2FubmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvcml6b25fc2Nhbm5pbmciLCJUZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9zaW5ndWxhcml0eSIsIlRlY2hub2xvZ3kgc2NvdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X3Njb3V0aW5nIiwiVGVjaG5vbG9neSBpbiBzY2llbmNlIGZpY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X2luX3NjaWVuY2VfZmljdGlvbiIsIlRlY2hub2xvZ3kgcmVhZGluZXNzIGxldmVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9neV9yZWFkaW5lc3NfbGV2ZWwiLCJUZWNobm9sb2d5IHJvYWRtYXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X3JvYWRtYXAiLCJMaXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9lbWVyZ2luZ190ZWNobm9sb2dpZXMiLCJJbmRleCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZGV4X29mX3JvYm90aWNzX2FydGljbGVzIiwiSGFsbCBvZiBGYW1lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfSGFsbF9vZl9GYW1lIiwiTGF3cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhd3Nfb2Zfcm9ib3RpY3MiLCJDb21wZXRpdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9jb21wZXRpdGlvbiIsIkFJIGNvbXBldGl0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXBldGl0aW9uc19hbmRfcHJpemVzX2luX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiVHlwZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdCIsIkFlcm9ib3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZXJvYm90IiwiQW50aHJvcG9tb3JwaGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aHJvcG9tb3JwaGljIiwiSHVtYW5vaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbm9pZF9yb2JvdCIsIkFuZHJvaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmRyb2lkXyhyb2JvdCkiLCJDeWJvcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJvcmciLCJHeW5vaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HeW5vaWQiLCJDbGF5dHJvbmljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXl0cm9uaWNzIiwiQ29tcGFuaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFuaW9uX3JvYm90IiwiQXV0b21hdG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdG9uIiwiQW5pbWF0cm9uaWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmltYXRyb25pY3MiLCJBdWRpby1BbmltYXRyb25pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWRpby1BbmltYXRyb25pY3MiLCJJbmR1c3RyaWFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdXN0cmlhbF9yb2JvdCIsIkFydGljdWxhdGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWN1bGF0ZWRfcm9ib3QiLCJhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX2FybSIsIkRvbWVzdGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tZXN0aWNfcm9ib3QiLCJFZHVjYXRpb25hbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VkdWNhdGlvbmFsX3JvYm90aWNzIiwiRW50ZXJ0YWlubWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VudGVydGFpbm1lbnRfcm9ib3QiLCJKdWdnbGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0p1Z2dsaW5nX3JvYm90IiwiTWVkaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfcm9ib3QiLCJTZXJ2aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VydmljZV9yb2JvdCIsIkRpc2FiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXNhYmlsaXR5X3JvYm90IiwiQWdyaWN1bHR1cmFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWdyaWN1bHR1cmFsX3JvYm90IiwiRm9vZCBzZXJ2aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3Jlc3RhdXJhbnQiLCJSZXRhaWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcmV0YWlsIiwiQkVBTSByb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JFQU1fcm9ib3RpY3MiLCJTb2Z0IHJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdF9yb2JvdGljcyIsIkJpb3JvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvcm9ib3RpY3MiLCJDbG91ZCByb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nsb3VkX3JvYm90aWNzIiwiQ29udGludXVtIHJvYm90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udGludXVtX3JvYm90IiwiVW5tYW5uZWQgdmVoaWNsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VubWFubmVkX3ZlaGljbGUiLCJhZXJpYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbm1hbm5lZF9hZXJpYWxfdmVoaWNsZSIsImdyb3VuZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VubWFubmVkX2dyb3VuZF92ZWhpY2xlIiwiTW9iaWxlIHJvYm90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9iaWxlX3JvYm90IiwiTWljcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb2JvdGljcyIsIk5hbm9yb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05hbm9yb2JvdGljcyIsIk5lY3JvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVjcm9ib3RpY3MiLCJSb2JvdGljIHNwYWNlY3JhZnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX3NwYWNlY3JhZnQiLCJTcGFjZSBwcm9iZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwYWNlX3Byb2JlIiwiU3dhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Td2FybV9yb2JvdGljcyIsIlRlbGVyb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlbGVyb2JvdGljcyIsIlVuZGVyd2F0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbm9tb3VzX3VuZGVyd2F0ZXJfdmVoaWNsZSIsInJlbW90ZWx5LW9wZXJhdGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVtb3RlbHlfb3BlcmF0ZWRfdW5kZXJ3YXRlcl92ZWhpY2xlIiwiUm9ib3RpYyBmaXNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19maXNoIiwiTG9jb21vdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90X2xvY29tb3Rpb24iLCJUcmFja3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db250aW51b3VzX3RyYWNrIiwiV2Fsa2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xlZ2dlZF9yb2JvdCIsIkhleGFwb2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZXhhcG9kXyhyb2JvdGljcykiLCJDbGltYmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaW1iZXJfKEJFQU0pIiwiRWxlY3RyaWMgdW5pY3ljbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJpY191bmljeWNsZSIsIlJvYm90aWMgZmlucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfZmluIiwiTmF2aWdhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfbmF2aWdhdGlvbiIsIm1hcHBpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX21hcHBpbmciLCJNb3Rpb24gcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3Rpb25fcGxhbm5pbmciLCJTaW11bHRhbmVvdXMgbG9jYWxpemF0aW9uIGFuZCBtYXBwaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltdWx0YW5lb3VzX2xvY2FsaXphdGlvbl9hbmRfbWFwcGluZyIsIlZpc3VhbCBvZG9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zpc3VhbF9vZG9tZXRyeSIsIlZpc2lvbi1ndWlkZWQgcm9ib3Qgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zpc2lvbi1ndWlkZWRfcm9ib3Rfc3lzdGVtcyIsIkV2b2x1dGlvbmFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9yb2JvdGljcyIsIktpdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9raXQiLCJTaW11bGF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljc19zaW11bGF0b3IiLCJTdWl0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNzX3N1aXRlIiwiT3Blbi1zb3VyY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuLXNvdXJjZV9yb2JvdGljcyIsIlNvZnR3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3Rfc29mdHdhcmUiLCJBZGFwdGFibGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZGFwdGFibGVfcm9ib3RpY3MiLCJEZXZlbG9wbWVudGFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV2ZWxvcG1lbnRhbF9yb2JvdGljcyIsIkh1bWFu4oCTcm9ib3QgaW50ZXJhY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbiVFMiU4MCU5M3JvYm90X2ludGVyYWN0aW9uIiwiUGFyYWRpZ21zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19wYXJhZGlnbSIsIlBlcmNlcHR1YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJjZXB0dWFsX3JvYm90aWNzIiwiU2l0dWF0ZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaXR1YXRlZF9yb2JvdGljcyIsIlViaXF1aXRvdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VYmlxdWl0b3VzX3JvYm90IiwiQUJCIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUJCIiwiQW1hem9uIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1hem9uX1JvYm90aWNzIiwiQW55Ym90cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FueWJvdHMiLCJCYXJyZXR0IFRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXJyZXR0X1RlY2hub2xvZ3kiLCJCb3N0b24gRHluYW1pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cb3N0b25fRHluYW1pY3MiLCJEb29zYW4gUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb29zYW5fUm9ib3RpY3MiLCJFbmVyZ2lkIFRlY2hub2xvZ2llcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZXJnaWRfVGVjaG5vbG9naWVzIiwiRmFybVdpc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYXJtV2lzZSIsIkZBTlVDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkFOVUMiLCJGaWd1cmUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWd1cmVfQUkiLCJGb3N0ZXItTWlsbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9zdGVyLU1pbGxlciIsIkhhcnZlc3QgQXV0b21hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhcnZlc3RfQXV0b21hdGlvbiIsIkhEIEh5dW5kYWkgUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IRF9IeXVuZGFpX1JvYm90aWNzIiwiSG9uZXliZWUgUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ib25leWJlZV9Sb2JvdGljcyIsIkludHVpdGl2ZSBTdXJnaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHVpdGl2ZV9TdXJnaWNhbCIsIklSb2JvdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lSb2JvdCIsIktVS0EiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LVUtBIiwiUmFpbmJvdyBSb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhaW5ib3dfUm9ib3RpY3MiLCJTdGFyc2hpcCBUZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFyc2hpcF9UZWNobm9sb2dpZXMiLCJTeW1ib3RpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bWJvdGljIiwiVW5pdmVyc2FsIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2FsX1JvYm90aWNzIiwiV29sZiBSb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvbGZfUm9ib3RpY3MiLCJZYXNrYXdhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWWFza2F3YV9FbGVjdHJpY19Db3Jwb3JhdGlvbiIsIkNyaXRpcXVlIG9mIHdvcmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Dcml0aXF1ZV9vZl93b3JrIiwiUG93ZXJlZCBleG9za2VsZXRvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Bvd2VyZWRfZXhvc2tlbGV0b24iLCJXb3JrcGxhY2Ugcm9ib3RpY3Mgc2FmZXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29ya3BsYWNlX3JvYm90aWNzX3NhZmV0eSIsIlJvYm90aWMgdGVjaCB2ZXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY190ZWNoX3Zlc3QiLCJUZXJyYWluYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlcnJhaW5hYmlsaXR5IiwiRmljdGlvbmFsIHJvYm90cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfZmljdGlvbmFsX3JvYm90c19hbmRfYW5kcm9pZHMiLCJBSSBhbGlnbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9hbGlnbm1lbnQiLCJBSSBjYXBhYmlsaXR5IGNvbnRyb2wiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9jYXBhYmlsaXR5X2NvbnRyb2wiLCJDb25zZXF1ZW50aWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uc2VxdWVudGlhbGlzbSIsIkVmZmVjdGl2ZSBhY2NlbGVyYXRpb25pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZmZlY3RpdmVfYWNjZWxlcmF0aW9uaXNtIiwiSW5zdHJ1bWVudGFsIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdHJ1bWVudGFsX2NvbnZlcmdlbmNlIiwiTG9uZ3Rlcm1pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25ndGVybWlzbSIsIlN1ZmZlcmluZyByaXNrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Jpc2tfb2ZfYXN0cm9ub21pY2FsX3N1ZmZlcmluZyIsIlN1cGVyaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3VwZXJpbnRlbGxpZ2VuY2UiLCJBbGlnbm1lbnQgUmVzZWFyY2ggQ2VudGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxpZ25tZW50X1Jlc2VhcmNoX0NlbnRlciIsIkNlbnRlciBmb3IgQUkgU2FmZXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudGVyX2Zvcl9BSV9TYWZldHkiLCJDZW50ZXIgZm9yIEFwcGxpZWQgUmF0aW9uYWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DZW50ZXJfZm9yX0FwcGxpZWRfUmF0aW9uYWxpdHkiLCJDZW50ZXIgZm9yIEh1bWFuLUNvbXBhdGlibGUgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DZW50ZXJfZm9yX0h1bWFuLUNvbXBhdGlibGVfQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2UiLCJDZW50cmUgZm9yIHRoZSBTdHVkeSBvZiBFeGlzdGVudGlhbCBSaXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJlX2Zvcl90aGVfU3R1ZHlfb2ZfRXhpc3RlbnRpYWxfUmlzayIsIkZ1dHVyZSBvZiBIdW1hbml0eSBJbnN0aXR1dGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdXR1cmVfb2ZfSHVtYW5pdHlfSW5zdGl0dXRlIiwiRnV0dXJlIG9mIExpZmUgSW5zdGl0dXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnV0dXJlX29mX0xpZmVfSW5zdGl0dXRlIiwiSHVtYW5pdHkrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW5pdHklMkIiLCJJbnN0aXR1dGUgZm9yIEV0aGljcyBhbmQgRW1lcmdpbmcgVGVjaG5vbG9naWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdGl0dXRlX2Zvcl9FdGhpY3NfYW5kX0VtZXJnaW5nX1RlY2hub2xvZ2llcyIsIkxldmVyaHVsbWUgQ2VudHJlIGZvciB0aGUgRnV0dXJlIG9mIEludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldmVyaHVsbWVfQ2VudHJlX2Zvcl90aGVfRnV0dXJlX29mX0ludGVsbGlnZW5jZSIsIk1hY2hpbmUgSW50ZWxsaWdlbmNlIFJlc2VhcmNoIEluc3RpdHV0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfSW50ZWxsaWdlbmNlX1Jlc2VhcmNoX0luc3RpdHV0ZSIsIlNjb3R0IEFsZXhhbmRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NsYXRlX1N0YXJfQ29kZXgiLCJQYXVsIENocmlzdGlhbm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXVsX0NocmlzdGlhbm9fKHJlc2VhcmNoZXIpIiwiRXJpYyBEcmV4bGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSy5fRXJpY19EcmV4bGVyIiwiU2FtIEhhcnJpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbV9IYXJyaXMiLCJEYW4gSGVuZHJ5Y2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuX0hlbmRyeWNrcyIsIkJpbGwgSm95IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbF9Kb3kiLCJTaGFuZSBMZWdnIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2hhbmVfTGVnZyIsIlN0ZXZlIE9tb2h1bmRybyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0ZXZlX09tb2h1bmRybyIsIkh1dyBQcmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1d19QcmljZSIsIk1hcnRpbiBSZWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFydGluX1JlZXMiLCJKYWFuIFRhbGxpbm4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KYWFuX1RhbGxpbm4iLCJNYXggVGVnbWFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01heF9UZWdtYXJrIiwiRnJhbmsgV2lsY3playI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyYW5rX1dpbGN6ZWsiLCJSb21hbiBZYW1wb2xza2l5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9tYW5fWWFtcG9sc2tpeSIsIlN0YXRlbWVudCBvbiBBSSByaXNrIG9mIGV4dGluY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0ZW1lbnRfb25fQUlfcmlza19vZl9leHRpbmN0aW9uIiwiT3BlbiBsZXR0ZXIgb24gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9sZXR0ZXJfb25fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfKDIwMTUpIiwiT3VyIEZpbmFsIEludmVudGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL091cl9GaW5hbF9JbnZlbnRpb24iLCJUaGUgUHJlY2lwaWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1ByZWNpcGljZTpfRXhpc3RlbnRpYWxfUmlza19hbmRfdGhlX0Z1dHVyZV9vZl9IdW1hbml0eSIsIkRvIFlvdSBUcnVzdCBUaGlzIENvbXB1dGVyPyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvX1lvdV9UcnVzdF9UaGlzX0NvbXB1dGVyJTNGIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQWN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2VfQWN0IiwiQmlvbG9naWNhbCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jpb2N5YmVybmV0aWNzIiwiQmlvbWVkaWNhbCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jpb21lZGljYWxfY3liZXJuZXRpY3MiLCJCaW9zZW1pb3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaW9zZW1pb3RpY3MiLCJOZXVyb2N5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJhaW4lRTIlODAlOTNjb21wdXRlcl9pbnRlcmZhY2UiLCJDYXRhc3Ryb3BoZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRhc3Ryb3BoZV90aGVvcnkiLCJDb21wdXRhdGlvbmFsIG5ldXJvc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkNvbXB1dGF0aW9uYWxfbmV1cm9zY2llbmNlIiwiQ29ubmVjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3Rpb25pc20iLCJDb250cm9sIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRyb2xfdGhlb3J5IiwiQ29udmVyc2F0aW9uIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnZlcnNhdGlvbl90aGVvcnkiLCJDeWJlcm5ldGljcyBpbiB0aGUgU292aWV0IFVuaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY3NfaW5fdGhlX1NvdmlldF9VbmlvbiIsIkVtZXJnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtZXJnZW5jZSIsIkVuZ2luZWVyaW5nIGN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5naW5lZXJpbmdfY3liZXJuZXRpY3MiLCJIb21lb3N0YXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvbWVvc3Rhc2lzIiwiTWFuYWdlbWVudCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hbmFnZW1lbnRfY3liZXJuZXRpY3MiLCJNZWRpY2FsIGN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVkaWNhbF9jeWJlcm5ldGljcyIsIlNlY29uZC1vcmRlciBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlY29uZC1vcmRlcl9jeWJlcm5ldGljcyIsIkN5YmVyc2VtaW90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJzZW1pb3RpY3MiLCJTb2Npb2N5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29jaW9jeWJlcm5ldGljcyIsIlN5bmVyZ2V0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3luZXJnZXRpY3NfKEhha2VuKSIsIkN5YmVybmV0aWNpYW5zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY2lzdCIsIkFsZXhhbmRlciBMZXJuZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGV4YW5kZXJfTGVybmVyIiwiQWxleGV5IEx5YXB1bm92IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleGV5X0x5YXB1bm92IiwiQWxmcmVkIFJhZGNsaWZmZS1Ccm93biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZnJlZF9SYWRjbGlmZmUtQnJvd24iLCJBbGxlbm5hIExlb25hcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGxlbm5hX0xlb25hcmQiLCJBbnRob255IFdpbGRlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FudGhvbnlfV2lsZGVuIiwiQnVja21pbnN0ZXIgRnVsbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnVja21pbnN0ZXJfRnVsbGVyIiwiQ2hhcmxlcyBGcmFuw6dvaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGFybGVzX0ZyYW4lQzMlQTdvaXNfKHN5c3RlbXNfc2NpZW50aXN0KSIsIkdlbmV2aWV2ZSBCZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXZpZXZlX0JlbGwiLCJNYXJnYXJldCBCb2RlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmdhcmV0X0JvZGVuIiwiQ2xhdWRlIEJlcm5hcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGF1ZGVfQmVybmFyZCIsIkNsaWZmIEpvc2x5biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaWZmX0pvc2x5biIsIkVyaWNoIHZvbiBIb2xzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VyaWNoX3Zvbl9Ib2xzdCIsIkVybnN0IHZvbiBHbGFzZXJzZmVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VybnN0X3Zvbl9HbGFzZXJzZmVsZCIsIkZyYW5jaXMgSGV5bGlnaGVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc19IZXlsaWdoZW4iLCJGcmFuY2lzY28gVmFyZWxhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc2NvX1ZhcmVsYSIsIkZyZWRlcmljIFZlc3RlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWRlcmljX1Zlc3RlciIsIkNoYXJsZXMgR2VvZmZyZXkgVmlja2VycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlb2ZmcmV5X1ZpY2tlcnMiLCJHb3Jkb24gUGFzayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvcmRvbl9QYXNrIiwiR29yZG9uIFMuIEJyb3duIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29yZG9uX1MuX0Jyb3duIiwiR3JlZ29yeSBCYXRlc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JlZ29yeV9CYXRlc29uIiwiSGVpbnogdm9uIEZvZXJzdGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpbnpfdm9uX0ZvZXJzdGVyIiwiSHVtYmVydG8gTWF0dXJhbmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1iZXJ0b19NYXR1cmFuYSIsIkkuIEEuIFJpY2hhcmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fQS5fUmljaGFyZHMiLCJJZ29yIEFsZWtzYW5kZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JZ29yX0FsZWtzYW5kZXIiLCJKYWNxdWUgRnJlc2NvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmFjcXVlX0ZyZXNjbyIsIkpha29iIHZvbiBVZXhrw7xsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pha29iX0pvaGFubl92b25fVWV4ayVDMyVCQ2xsIiwiSmFzb24gSml4dWFuIEh1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmFzb25fSml4dWFuX0h1IiwiSmF5IFdyaWdodCBGb3JyZXN0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KYXlfV3JpZ2h0X0ZvcnJlc3RlciIsIkplbm5pZmVyIFdpbGJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVubmlmZXJfV2lsYnkiLCJKb2huIE4uIFdhcmZpZWxkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9OLl9XYXJmaWVsZCIsIkx1ZHdpZyB2b24gQmVydGFsYW5mZnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MdWR3aWdfdm9uX0JlcnRhbGFuZmZ5IiwiTWFsZXlrYSBBYmJhc3phZGVoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFsZXlrYV9BYmJhc3phZGVoIiwiTWFuZnJlZCBDbHluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYW5mcmVkX0NseW5lcyIsIk1hcmdhcmV0IE1lYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJnYXJldF9NZWFkIiwiTWFyaWFuIE1henVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyaWFuX01henVyIiwiTi4gS2F0aGVyaW5lIEhheWxlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL04uX0thdGhlcmluZV9IYXlsZXMiLCJOYXRhbGlhIEJla2h0ZXJldmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXRhbGlhX0Jla2h0ZXJldmEiLCJOaWtsYXMgTHVobWFubiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pa2xhc19MdWhtYW5uIiwiTm9yYmVydCBXaWVuZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JiZXJ0X1dpZW5lciIsIlB5b3RyIEdyaWdvcmVua28iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRyb19Hcmlnb3JlbmtvIiwiUWlhbiBYdWVzZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RaWFuX1h1ZXNlbiIsIlJhbnVscGggR2xhbnZpbGxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmFudWxwaF9HbGFudmlsbGUiLCJSb2JlcnQgVHJhcHBsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9iZXJ0X1RyYXBwbCIsIlNlcmdlaSBQLiBLdXJkeXVtb3YiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXJnZWlfUC5fS3VyZHl1bW92IiwiQW50aG9ueSBTdGFmZm9yZCBCZWVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhZmZvcmRfQmVlciIsIlN0dWFydCBLYXVmZm1hbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0dWFydF9LYXVmZm1hbiIsIlN0dWFydCBVbXBsZWJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X1VtcGxlYnkiLCJUYWxjb3R0IFBhcnNvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWxjb3R0X1BhcnNvbnMiLCJVbGxhIE1pdHpkb3JmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVWxsYV9NaXR6ZG9yZiIsIlZhbGVudGluIFR1cmNoaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWxlbnRpbl9UdXJjaGluIiwiVmFsZW50aW4gQnJhaXRlbmJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWxlbnRpbm9fQnJhaXRlbmJlcmciLCJXaWxsaWFtIFJvc3MgQXNoYnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XLl9Sb3NzX0FzaGJ5IiwiV2FsdGVyIEJyYWRmb3JkIENhbm5vbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhbHRlcl9CcmFkZm9yZF9DYW5ub24iLCJXYXJyZW4gTWNDdWxsb2NoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FycmVuX1N0dXJnaXNfTWNDdWxsb2NoIiwiV2lsbGlhbSBHcmV5IFdhbHRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fR3JleV9XYWx0ZXIiLCJzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW5jZSIsImVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5naW5lZXJpbmciLCJBZXJvc3BhY2UgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9hZXJvc3BhY2VfZW5naW5lZXJpbmciLCJBZ3JpY3VsdHVyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2FncmljdWx0dXJlIiwiQXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJjaGl0ZWN0dXJlIiwiQXN0cm9ub215IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXN0cm9ub215IiwiQm90YW55IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYm90YW5pY2FsX3Rlcm1zIiwiQ2FsY3VsdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9jYWxjdWx1cyIsIkNlbGwgYmlvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGxfYmlvbG9neSIsIkNpdmlsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfY2l2aWxfZW5naW5lZXJpbmciLCJDbGluaWNhbCByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NsaW5pY2FsX3Jlc2VhcmNoIiwiQ29tcHV0ZXIgaGFyZHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9jb21wdXRlcl9oYXJkd2FyZV90ZXJtcyIsIkRldmVsb3BtZW50YWwgYW5kIHJlcHJvZHVjdGl2ZSBiaW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfZGV2ZWxvcG1lbnRhbF9iaW9sb2d5IiwiRWNvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2Vjb2xvZ3kiLCJFY29ub21pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lY29ub21pY3MiLCJFbGVjdHJpY2FsIGFuZCBlbGVjdHJvbmljcyBlbmdpbmVlcmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2VsZWN0cmljYWxfYW5kX2VsZWN0cm9uaWNzX2VuZ2luZWVyaW5nIiwiQeKAk0wiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lbmdpbmVlcmluZzpfQSVFMiU4MCU5M0wiLCJN4oCTWiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGx1bGFyX2FuZF9tb2xlY3VsYXJfYmlvbG9neV8oTSVFMiU4MCU5M1opIiwiRW50b21vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2VudG9tb2xvZ3lfdGVybXMiLCJFbnZpcm9ubWVudGFsIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lbnZpcm9ubWVudGFsX3NjaWVuY2UiLCJHZW5ldGljcyBhbmQgZXZvbHV0aW9uYXJ5IGJpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW5ldGljc19hbmRfZXZvbHV0aW9uYXJ5X2Jpb2xvZ3kiLCIw4oCTTCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGx1bGFyX2FuZF9tb2xlY3VsYXJfYmlvbG9neV8oMCVFMiU4MCU5M0wpIiwiQeKAk00iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW9ncmFwaHlfdGVybXNfKEElRTIlODAlOTNNKSIsIk7igJNaIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfZ2VvZ3JhcGh5X3Rlcm1zXyhOJUUyJTgwJTkzWikiLCJBcmFiaWMgdG9wb255bXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9BcmFiaWNfdG9wb255bXMiLCJIZWJyZXcgdG9wb255bXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9IZWJyZXdfdG9wb255bXMiLCJXZXN0ZXJuIGFuZCBTb3V0aCBBc2lhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2lrb255bXNfaW5fV2VzdGVybl9hbmRfU291dGhfQXNpYSIsIkdlb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW9sb2d5IiwiSWNodGh5b2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9pY2h0aHlvbG9neSIsIk1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJlYXNfb2ZfbWF0aGVtYXRpY3MiLCJNZWNoYW5pY2FsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbWVjaGFuaWNhbF9lbmdpbmVlcmluZyIsIk1lZGljaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbWVkaWNpbmUiLCJNZXRlb3JvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX21ldGVvcm9sb2d5IiwiTXljb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9teWNvbG9neSIsIk5hbm90ZWNobm9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbmFub3RlY2hub2xvZ3kiLCJPcm5pdGhvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2JpcmRfdGVybXMiLCJQcm9iYWJpbGl0eSBhbmQgc3RhdGlzdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3Byb2JhYmlsaXR5X2FuZF9zdGF0aXN0aWNzIiwiUHN5Y2hpYXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3BzeWNoaWF0cnkiLCJRdWFudHVtIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3F1YW50dW1fY29tcHV0aW5nIiwiU2NpZW50aWZpYyBuYW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9zY2llbnRpZmljX25hbWluZyIsIlN0cnVjdHVyYWwgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9zdHJ1Y3R1cmFsX2VuZ2luZWVyaW5nIiwiVmlyb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl92aXJvbG9neSIsIkF1dGhvcml0eSBjb250cm9sIGRhdGFiYXNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlbHA6QXV0aG9yaXR5X2NvbnRyb2wiLCJHZXJtYW55IjoiaHR0cHM6Ly9kLW5iLmluZm8vZ25kLzQwMzM0NDctOCIsIkZyYW5jZSI6Imh0dHBzOi8vY2F0YWxvZ3VlLmJuZi5mci9hcms6LzEyMTQ4L2NiMTE5MzIwODR0IiwiQm5GIGRhdGEiOiJodHRwczovL2RhdGEuYm5mLmZyL2FyazovMTIxNDgvY2IxMTkzMjA4NHQiLCJKYXBhbiI6Imh0dHBzOi8vaWQubmRsLmdvLmpwL2F1dGgvbmRsbmEvMDA1NzQ3OTgiLCJDemVjaCBSZXB1YmxpYyI6Imh0dHBzOi8vYWxlcGgubmtwLmN6L0YvP2Z1bmM9ZmluZC1jJmxvY2FsX2Jhc2U9YXV0JmNjbF90ZXJtPWljYT1waDExNjUzNiZDT05fTE5HPUVORyIsIlNwYWluIjoiaHR0cDovL2NhdGFsb2dvLmJuZS5lcy91aHRiaW4vYXV0aG9yaXR5YnJvd3NlLmNnaT9hY3Rpb249ZGlzcGxheSZhdXRob3JpdHlfaWQ9WFg0NjU5ODIyIiwiTGF0dmlhIjoiaHR0cHM6Ly9rb3BrYXRhbG9ncy5sdi9GP2Z1bmM9ZGlyZWN0JmxvY2FsX2Jhc2U9bG5jMTAmZG9jX251bWJlcj0wMDAwNTAwMTAmUF9DT05fTE5HPUVORyIsIklzcmFlbCI6Imh0dHBzOi8vd3d3Lm5saS5vcmcuaWwvZW4vYXV0aG9yaXRpZXMvOTg3MDA3Mjk0OTY5MTA1MTcxIiwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm9sZGlkPTEyNzQ5NDEyOTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2Umb2xkaWQ9MTI3NDk0MTI5NyIsIkNhdGVnb3JpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWxwOkNhdGVnb3J5IiwiQ29tcHV0YXRpb25hbCBmaWVsZHMgb2Ygc3R1ZHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDb21wdXRhdGlvbmFsX2ZpZWxkc19vZl9zdHVkeSIsIkN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6Q3liZXJuZXRpY3MiLCJEYXRhIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpEYXRhX3NjaWVuY2UiLCJGb3JtYWwgc2NpZW5jZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpGb3JtYWxfc2NpZW5jZXMiLCJJbnRlbGxpZ2VuY2UgYnkgdHlwZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkludGVsbGlnZW5jZV9ieV90eXBlIiwiV2ViYXJjaGl2ZSB0ZW1wbGF0ZSB3YXliYWNrIGxpbmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6V2ViYXJjaGl2ZV90ZW1wbGF0ZV93YXliYWNrX2xpbmtzIiwiQ1MxIEdlcm1hbi1sYW5ndWFnZSBzb3VyY2VzIChkZSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDUzFfR2VybWFuLWxhbmd1YWdlX3NvdXJjZXNfKGRlKSIsIkNTMSBKYXBhbmVzZS1sYW5ndWFnZSBzb3VyY2VzIChqYSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDUzFfSmFwYW5lc2UtbGFuZ3VhZ2Vfc291cmNlc18oamEpIiwiQ1MxOiBsb25nIHZvbHVtZSB2YWx1ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkNTMTpfbG9uZ192b2x1bWVfdmFsdWUiLCJBcnRpY2xlcyB3aXRoIHNob3J0IGRlc2NyaXB0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6QXJ0aWNsZXNfd2l0aF9zaG9ydF9kZXNjcmlwdGlvbiIsIlNob3J0IGRlc2NyaXB0aW9uIGlzIGRpZmZlcmVudCBmcm9tIFdpa2lkYXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6U2hvcnRfZGVzY3JpcHRpb25faXNfZGlmZmVyZW50X2Zyb21fV2lraWRhdGEiLCJVc2UgZG15IGRhdGVzIGZyb20gSnVseSAyMDIzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6VXNlX2RteV9kYXRlc19mcm9tX0p1bHlfMjAyMyIsIldpa2lwZWRpYSBpbmRlZmluaXRlbHkgc2VtaS1wcm90ZWN0ZWQgcGFnZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpXaWtpcGVkaWFfaW5kZWZpbml0ZWx5X3NlbWktcHJvdGVjdGVkX3BhZ2VzIiwiQXJ0aWNsZXMgd2l0aCBleGNlcnB0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfZXhjZXJwdHMiLCJBbGwgYXJ0aWNsZXMgd2l0aCB1bnNvdXJjZWQgc3RhdGVtZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFsbF9hcnRpY2xlc193aXRoX3Vuc291cmNlZF9zdGF0ZW1lbnRzIiwiQXJ0aWNsZXMgd2l0aCB1bnNvdXJjZWQgc3RhdGVtZW50cyBmcm9tIEp1bmUgMjAyNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfdW5zb3VyY2VkX3N0YXRlbWVudHNfZnJvbV9KdW5lXzIwMjQiLCJBbGwgYWNjdXJhY3kgZGlzcHV0ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBbGxfYWNjdXJhY3lfZGlzcHV0ZXMiLCJBcnRpY2xlcyB3aXRoIGRpc3B1dGVkIHN0YXRlbWVudHMgZnJvbSBKdWx5IDIwMjQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpY2xlc193aXRoX2Rpc3B1dGVkX3N0YXRlbWVudHNfZnJvbV9KdWx5XzIwMjQiLCJQYWdlcyBkaXNwbGF5aW5nIHNob3J0IGRlc2NyaXB0aW9ucyBvZiByZWRpcmVjdCB0YXJnZXRzIHZpYSBNb2R1bGU6QW5ub3RhdGVkIGxpbmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpQYWdlc19kaXNwbGF5aW5nX3Nob3J0X2Rlc2NyaXB0aW9uc19vZl9yZWRpcmVjdF90YXJnZXRzX3ZpYV9Nb2R1bGU6QW5ub3RhdGVkX2xpbmsiLCJQYWdlcyB1c2luZyBTaXN0ZXIgcHJvamVjdCBsaW5rcyB3aXRoIGhpZGRlbiB3aWtpZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBhZ2VzX3VzaW5nX1Npc3Rlcl9wcm9qZWN0X2xpbmtzX3dpdGhfaGlkZGVuX3dpa2lkYXRhIiwiQXJ0aWNsZXMgd2l0aCBJbnRlcm5ldCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeSBsaW5rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfSW50ZXJuZXRfRW5jeWNsb3BlZGlhX29mX1BoaWxvc29waHlfbGlua3MiLCJDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlQWxpa2UgNC4wIExpY2Vuc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6VGV4dF9vZl90aGVfQ3JlYXRpdmVfQ29tbW9uc19BdHRyaWJ1dGlvbi1TaGFyZUFsaWtlXzQuMF9JbnRlcm5hdGlvbmFsX0xpY2Vuc2UiLCJUZXJtcyBvZiBVc2UiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6VGVybXNfb2ZfVXNlIiwiUHJpdmFjeSBQb2xpY3kiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6UHJpdmFjeV9wb2xpY3kiLCJXaWtpbWVkaWEgRm91bmRhdGlvbiwgSW5jLiI6Imh0dHBzOi8vd2lraW1lZGlhZm91bmRhdGlvbi5vcmcvIiwiUHJpdmFjeSBwb2xpY3kiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6UHJpdmFjeV9wb2xpY3kiLCJEaXNjbGFpbWVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpHZW5lcmFsX2Rpc2NsYWltZXIiLCJDb250YWN0IFdpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpDb250YWN0X3VzIiwiQ29kZSBvZiBDb25kdWN0IjoiaHR0cHM6Ly9mb3VuZGF0aW9uLndpa2ltZWRpYS5vcmcvd2lraS9TcGVjaWFsOk15TGFuZ3VhZ2UvUG9saWN5OlVuaXZlcnNhbF9Db2RlX29mX0NvbmR1Y3QiLCJEZXZlbG9wZXJzIjoiaHR0cHM6Ly9kZXZlbG9wZXIud2lraW1lZGlhLm9yZy8iLCJDb29raWUgc3RhdGVtZW50IjoiaHR0cHM6Ly9mb3VuZGF0aW9uLndpa2ltZWRpYS5vcmcvd2lraS9TcGVjaWFsOk15TGFuZ3VhZ2UvUG9saWN5OkNvb2tpZV9zdGF0ZW1lbnQiLCJNb2JpbGUgdmlldyI6Imh0dHBzOi8vZW4ubS53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm1vYmlsZWFjdGlvbj10b2dnbGVfdmlld19tb2JpbGUiLCJFZGl0IHByZXZpZXcgc2V0dGluZ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMiLCJBZGQgdG9waWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMifSwidGl0bGUiOiJBcnRpZmljaWFsIGludGVsbGlnZW5jZSIsImRlc2NyaXB0aW9uIjoiIiwidXJsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJjb250ZW50IjoiSnVtcCB0byBjb250ZW50XG5NYWluIG1lbnVcblNlYXJjaFxuQXBwZWFyYW5jZVxuRG9uYXRlXG5DcmVhdGUgYWNjb3VudFxuTG9nIGluXG5QZXJzb25hbCB0b29sc1xuXHRcdFBob3RvZ3JhcGggeW91ciBsb2NhbCBjdWx0dXJlLCBoZWxwIFdpa2lwZWRpYSBhbmQgd2luIVxuVG9nZ2xlIHRoZSB0YWJsZSBvZiBjb250ZW50c1xuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcbjE2MyBsYW5ndWFnZXNcbkFydGljbGVcblRhbGtcblJlYWRcblZpZXcgc291cmNlXG5WaWV3IGhpc3RvcnlcblRvb2xzXG5Gcm9tIFdpa2lwZWRpYSwgdGhlIGZyZWUgZW5jeWNsb3BlZGlhXG5cIkFJXCIgcmVkaXJlY3RzIGhlcmUuIEZvciBvdGhlciB1c2VzLCBzZWUgQUkgKGRpc2FtYmlndWF0aW9uKSBhbmQgQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKGRpc2FtYmlndWF0aW9uKS5cblBhcnQgb2YgYSBzZXJpZXMgb25cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSlcblxuXG5cbnNob3dcbk1ham9yIGdvYWxzXG5cblxuc2hvd1xuQXBwcm9hY2hlc1xuXG5cbnNob3dcbkFwcGxpY2F0aW9uc1xuXG5cbnNob3dcblBoaWxvc29waHlcblxuXG5zaG93XG5IaXN0b3J5XG5cblxuc2hvd1xuR2xvc3NhcnlcblxudnRlXG5cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSksIGluIGl0cyBicm9hZGVzdCBzZW5zZSwgaXMgaW50ZWxsaWdlbmNlIGV4aGliaXRlZCBieSBtYWNoaW5lcywgcGFydGljdWxhcmx5IGNvbXB1dGVyIHN5c3RlbXMuIEl0IGlzIGEgZmllbGQgb2YgcmVzZWFyY2ggaW4gY29tcHV0ZXIgc2NpZW5jZSB0aGF0IGRldmVsb3BzIGFuZCBzdHVkaWVzIG1ldGhvZHMgYW5kIHNvZnR3YXJlIHRoYXQgZW5hYmxlIG1hY2hpbmVzIHRvIHBlcmNlaXZlIHRoZWlyIGVudmlyb25tZW50IGFuZCB1c2UgbGVhcm5pbmcgYW5kIGludGVsbGlnZW5jZSB0byB0YWtlIGFjdGlvbnMgdGhhdCBtYXhpbWl6ZSB0aGVpciBjaGFuY2VzIG9mIGFjaGlldmluZyBkZWZpbmVkIGdvYWxzLlsxXSBTdWNoIG1hY2hpbmVzIG1heSBiZSBjYWxsZWQgQUlzLlxuXG5IaWdoLXByb2ZpbGUgYXBwbGljYXRpb25zIG9mIEFJIGluY2x1ZGUgYWR2YW5jZWQgd2ViIHNlYXJjaCBlbmdpbmVzIChlLmcuLCBHb29nbGUgU2VhcmNoKTsgcmVjb21tZW5kYXRpb24gc3lzdGVtcyAodXNlZCBieSBZb3VUdWJlLCBBbWF6b24sIGFuZCBOZXRmbGl4KTsgdmlydHVhbCBhc3Npc3RhbnRzIChlLmcuLCBHb29nbGUgQXNzaXN0YW50LCBTaXJpLCBhbmQgQWxleGEpOyBhdXRvbm9tb3VzIHZlaGljbGVzIChlLmcuLCBXYXltbyk7IGdlbmVyYXRpdmUgYW5kIGNyZWF0aXZlIHRvb2xzIChlLmcuLCBDaGF0R1BUIGFuZCBBSSBhcnQpOyBhbmQgc3VwZXJodW1hbiBwbGF5IGFuZCBhbmFseXNpcyBpbiBzdHJhdGVneSBnYW1lcyAoZS5nLiwgY2hlc3MgYW5kIEdvKS4gSG93ZXZlciwgbWFueSBBSSBhcHBsaWNhdGlvbnMgYXJlIG5vdCBwZXJjZWl2ZWQgYXMgQUk6IFwiQSBsb3Qgb2YgY3V0dGluZyBlZGdlIEFJIGhhcyBmaWx0ZXJlZCBpbnRvIGdlbmVyYWwgYXBwbGljYXRpb25zLCBvZnRlbiB3aXRob3V0IGJlaW5nIGNhbGxlZCBBSSBiZWNhdXNlIG9uY2Ugc29tZXRoaW5nIGJlY29tZXMgdXNlZnVsIGVub3VnaCBhbmQgY29tbW9uIGVub3VnaCBpdCdzIG5vdCBsYWJlbGVkIEFJIGFueW1vcmUuXCJbMl1bM11cblxuVmFyaW91cyBzdWJmaWVsZHMgb2YgQUkgcmVzZWFyY2ggYXJlIGNlbnRlcmVkIGFyb3VuZCBwYXJ0aWN1bGFyIGdvYWxzIGFuZCB0aGUgdXNlIG9mIHBhcnRpY3VsYXIgdG9vbHMuIFRoZSB0cmFkaXRpb25hbCBnb2FscyBvZiBBSSByZXNlYXJjaCBpbmNsdWRlIHJlYXNvbmluZywga25vd2xlZGdlIHJlcHJlc2VudGF0aW9uLCBwbGFubmluZywgbGVhcm5pbmcsIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvY2Vzc2luZywgcGVyY2VwdGlvbiwgYW5kIHN1cHBvcnQgZm9yIHJvYm90aWNzLlthXSBHZW5lcmFsIGludGVsbGlnZW5jZeKAlHRoZSBhYmlsaXR5IHRvIGNvbXBsZXRlIGFueSB0YXNrIHBlcmZvcm1lZCBieSBhIGh1bWFuIG9uIGFuIGF0IGxlYXN0IGVxdWFsIGxldmVs4oCUaXMgYW1vbmcgdGhlIGZpZWxkJ3MgbG9uZy10ZXJtIGdvYWxzLls0XSBUbyByZWFjaCB0aGVzZSBnb2FscywgQUkgcmVzZWFyY2hlcnMgaGF2ZSBhZGFwdGVkIGFuZCBpbnRlZ3JhdGVkIGEgd2lkZSByYW5nZSBvZiB0ZWNobmlxdWVzLCBpbmNsdWRpbmcgc2VhcmNoIGFuZCBtYXRoZW1hdGljYWwgb3B0aW1pemF0aW9uLCBmb3JtYWwgbG9naWMsIGFydGlmaWNpYWwgbmV1cmFsIG5ldHdvcmtzLCBhbmQgbWV0aG9kcyBiYXNlZCBvbiBzdGF0aXN0aWNzLCBvcGVyYXRpb25zIHJlc2VhcmNoLCBhbmQgZWNvbm9taWNzLltiXSBBSSBhbHNvIGRyYXdzIHVwb24gcHN5Y2hvbG9neSwgbGluZ3Vpc3RpY3MsIHBoaWxvc29waHksIG5ldXJvc2NpZW5jZSwgYW5kIG90aGVyIGZpZWxkcy5bNV1cblxuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2Ugd2FzIGZvdW5kZWQgYXMgYW4gYWNhZGVtaWMgZGlzY2lwbGluZSBpbiAxOTU2LFs2XSBhbmQgdGhlIGZpZWxkIHdlbnQgdGhyb3VnaCBtdWx0aXBsZSBjeWNsZXMgb2Ygb3B0aW1pc20gdGhyb3VnaG91dCBpdHMgaGlzdG9yeSxbN11bOF0gZm9sbG93ZWQgYnkgcGVyaW9kcyBvZiBkaXNhcHBvaW50bWVudCBhbmQgbG9zcyBvZiBmdW5kaW5nLCBrbm93biBhcyBBSSB3aW50ZXJzLls5XVsxMF0gRnVuZGluZyBhbmQgaW50ZXJlc3QgdmFzdGx5IGluY3JlYXNlZCBhZnRlciAyMDEyIHdoZW4gZGVlcCBsZWFybmluZyBvdXRwZXJmb3JtZWQgcHJldmlvdXMgQUkgdGVjaG5pcXVlcy5bMTFdIFRoaXMgZ3Jvd3RoIGFjY2VsZXJhdGVkIGZ1cnRoZXIgYWZ0ZXIgMjAxNyB3aXRoIHRoZSB0cmFuc2Zvcm1lciBhcmNoaXRlY3R1cmUsWzEyXSBhbmQgYnkgdGhlIGVhcmx5IDIwMjBzIG1hbnkgYmlsbGlvbnMgb2YgZG9sbGFycyB3ZXJlIGJlaW5nIGludmVzdGVkIGluIEFJIGFuZCB0aGUgZmllbGQgZXhwZXJpZW5jZWQgcmFwaWQgb25nb2luZyBwcm9ncmVzcyBpbiB3aGF0IGhhcyBiZWNvbWUga25vd24gYXMgdGhlIEFJIGJvb20uIFRoZSBlbWVyZ2VuY2Ugb2YgYWR2YW5jZWQgZ2VuZXJhdGl2ZSBBSSBpbiB0aGUgbWlkc3Qgb2YgdGhlIEFJIGJvb20gYW5kIGl0cyBhYmlsaXR5IHRvIGNyZWF0ZSBhbmQgbW9kaWZ5IGNvbnRlbnQgZXhwb3NlZCBzZXZlcmFsIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGFuZCBoYXJtcyBpbiB0aGUgcHJlc2VudCBhbmQgcmFpc2VkIGNvbmNlcm5zIGFib3V0IHRoZSByaXNrcyBvZiBBSSBhbmQgaXRzIGxvbmctdGVybSBlZmZlY3RzIGluIHRoZSBmdXR1cmUsIHByb21wdGluZyBkaXNjdXNzaW9ucyBhYm91dCByZWd1bGF0b3J5IHBvbGljaWVzIHRvIGVuc3VyZSB0aGUgc2FmZXR5IGFuZCBiZW5lZml0cyBvZiB0aGUgdGVjaG5vbG9neS5cblxuR29hbHNcblxuVGhlIGdlbmVyYWwgcHJvYmxlbSBvZiBzaW11bGF0aW5nIChvciBjcmVhdGluZykgaW50ZWxsaWdlbmNlIGhhcyBiZWVuIGJyb2tlbiBpbnRvIHN1YnByb2JsZW1zLiBUaGVzZSBjb25zaXN0IG9mIHBhcnRpY3VsYXIgdHJhaXRzIG9yIGNhcGFiaWxpdGllcyB0aGF0IHJlc2VhcmNoZXJzIGV4cGVjdCBhbiBpbnRlbGxpZ2VudCBzeXN0ZW0gdG8gZGlzcGxheS4gVGhlIHRyYWl0cyBkZXNjcmliZWQgYmVsb3cgaGF2ZSByZWNlaXZlZCB0aGUgbW9zdCBhdHRlbnRpb24gYW5kIGNvdmVyIHRoZSBzY29wZSBvZiBBSSByZXNlYXJjaC5bYV1cblxuUmVhc29uaW5nIGFuZCBwcm9ibGVtLXNvbHZpbmdcblxuRWFybHkgcmVzZWFyY2hlcnMgZGV2ZWxvcGVkIGFsZ29yaXRobXMgdGhhdCBpbWl0YXRlZCBzdGVwLWJ5LXN0ZXAgcmVhc29uaW5nIHRoYXQgaHVtYW5zIHVzZSB3aGVuIHRoZXkgc29sdmUgcHV6emxlcyBvciBtYWtlIGxvZ2ljYWwgZGVkdWN0aW9ucy5bMTNdIEJ5IHRoZSBsYXRlIDE5ODBzIGFuZCAxOTkwcywgbWV0aG9kcyB3ZXJlIGRldmVsb3BlZCBmb3IgZGVhbGluZyB3aXRoIHVuY2VydGFpbiBvciBpbmNvbXBsZXRlIGluZm9ybWF0aW9uLCBlbXBsb3lpbmcgY29uY2VwdHMgZnJvbSBwcm9iYWJpbGl0eSBhbmQgZWNvbm9taWNzLlsxNF1cblxuTWFueSBvZiB0aGVzZSBhbGdvcml0aG1zIGFyZSBpbnN1ZmZpY2llbnQgZm9yIHNvbHZpbmcgbGFyZ2UgcmVhc29uaW5nIHByb2JsZW1zIGJlY2F1c2UgdGhleSBleHBlcmllbmNlIGEgXCJjb21iaW5hdG9yaWFsIGV4cGxvc2lvblwiOiBUaGV5IGJlY29tZSBleHBvbmVudGlhbGx5IHNsb3dlciBhcyB0aGUgcHJvYmxlbXMgZ3Jvdy5bMTVdIEV2ZW4gaHVtYW5zIHJhcmVseSB1c2UgdGhlIHN0ZXAtYnktc3RlcCBkZWR1Y3Rpb24gdGhhdCBlYXJseSBBSSByZXNlYXJjaCBjb3VsZCBtb2RlbC4gVGhleSBzb2x2ZSBtb3N0IG9mIHRoZWlyIHByb2JsZW1zIHVzaW5nIGZhc3QsIGludHVpdGl2ZSBqdWRnbWVudHMuWzE2XSBBY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHJlYXNvbmluZyBpcyBhbiB1bnNvbHZlZCBwcm9ibGVtLlxuXG5Lbm93bGVkZ2UgcmVwcmVzZW50YXRpb25cbkFuIG9udG9sb2d5IHJlcHJlc2VudHMga25vd2xlZGdlIGFzIGEgc2V0IG9mIGNvbmNlcHRzIHdpdGhpbiBhIGRvbWFpbiBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aG9zZSBjb25jZXB0cy5cblxuS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIGFuZCBrbm93bGVkZ2UgZW5naW5lZXJpbmdbMTddIGFsbG93IEFJIHByb2dyYW1zIHRvIGFuc3dlciBxdWVzdGlvbnMgaW50ZWxsaWdlbnRseSBhbmQgbWFrZSBkZWR1Y3Rpb25zIGFib3V0IHJlYWwtd29ybGQgZmFjdHMuIEZvcm1hbCBrbm93bGVkZ2UgcmVwcmVzZW50YXRpb25zIGFyZSB1c2VkIGluIGNvbnRlbnQtYmFzZWQgaW5kZXhpbmcgYW5kIHJldHJpZXZhbCxbMThdIHNjZW5lIGludGVycHJldGF0aW9uLFsxOV0gY2xpbmljYWwgZGVjaXNpb24gc3VwcG9ydCxbMjBdIGtub3dsZWRnZSBkaXNjb3ZlcnkgKG1pbmluZyBcImludGVyZXN0aW5nXCIgYW5kIGFjdGlvbmFibGUgaW5mZXJlbmNlcyBmcm9tIGxhcmdlIGRhdGFiYXNlcyksWzIxXSBhbmQgb3RoZXIgYXJlYXMuWzIyXVxuXG5BIGtub3dsZWRnZSBiYXNlIGlzIGEgYm9keSBvZiBrbm93bGVkZ2UgcmVwcmVzZW50ZWQgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHVzZWQgYnkgYSBwcm9ncmFtLiBBbiBvbnRvbG9neSBpcyB0aGUgc2V0IG9mIG9iamVjdHMsIHJlbGF0aW9ucywgY29uY2VwdHMsIGFuZCBwcm9wZXJ0aWVzIHVzZWQgYnkgYSBwYXJ0aWN1bGFyIGRvbWFpbiBvZiBrbm93bGVkZ2UuWzIzXSBLbm93bGVkZ2UgYmFzZXMgbmVlZCB0byByZXByZXNlbnQgdGhpbmdzIHN1Y2ggYXMgb2JqZWN0cywgcHJvcGVydGllcywgY2F0ZWdvcmllcywgYW5kIHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHM7WzI0XSBzaXR1YXRpb25zLCBldmVudHMsIHN0YXRlcywgYW5kIHRpbWU7WzI1XSBjYXVzZXMgYW5kIGVmZmVjdHM7WzI2XSBrbm93bGVkZ2UgYWJvdXQga25vd2xlZGdlICh3aGF0IHdlIGtub3cgYWJvdXQgd2hhdCBvdGhlciBwZW9wbGUga25vdyk7WzI3XSBkZWZhdWx0IHJlYXNvbmluZyAodGhpbmdzIHRoYXQgaHVtYW5zIGFzc3VtZSBhcmUgdHJ1ZSB1bnRpbCB0aGV5IGFyZSB0b2xkIGRpZmZlcmVudGx5IGFuZCB3aWxsIHJlbWFpbiB0cnVlIGV2ZW4gd2hlbiBvdGhlciBmYWN0cyBhcmUgY2hhbmdpbmcpO1syOF0gYW5kIG1hbnkgb3RoZXIgYXNwZWN0cyBhbmQgZG9tYWlucyBvZiBrbm93bGVkZ2UuXG5cbkFtb25nIHRoZSBtb3N0IGRpZmZpY3VsdCBwcm9ibGVtcyBpbiBrbm93bGVkZ2UgcmVwcmVzZW50YXRpb24gYXJlIHRoZSBicmVhZHRoIG9mIGNvbW1vbnNlbnNlIGtub3dsZWRnZSAodGhlIHNldCBvZiBhdG9taWMgZmFjdHMgdGhhdCB0aGUgYXZlcmFnZSBwZXJzb24ga25vd3MgaXMgZW5vcm1vdXMpO1syOV0gYW5kIHRoZSBzdWItc3ltYm9saWMgZm9ybSBvZiBtb3N0IGNvbW1vbnNlbnNlIGtub3dsZWRnZSAobXVjaCBvZiB3aGF0IHBlb3BsZSBrbm93IGlzIG5vdCByZXByZXNlbnRlZCBhcyBcImZhY3RzXCIgb3IgXCJzdGF0ZW1lbnRzXCIgdGhhdCB0aGV5IGNvdWxkIGV4cHJlc3MgdmVyYmFsbHkpLlsxNl0gVGhlcmUgaXMgYWxzbyB0aGUgZGlmZmljdWx0eSBvZiBrbm93bGVkZ2UgYWNxdWlzaXRpb24sIHRoZSBwcm9ibGVtIG9mIG9idGFpbmluZyBrbm93bGVkZ2UgZm9yIEFJIGFwcGxpY2F0aW9ucy5bY11cblxuUGxhbm5pbmcgYW5kIGRlY2lzaW9uLW1ha2luZ1xuXG5BbiBcImFnZW50XCIgaXMgYW55dGhpbmcgdGhhdCBwZXJjZWl2ZXMgYW5kIHRha2VzIGFjdGlvbnMgaW4gdGhlIHdvcmxkLiBBIHJhdGlvbmFsIGFnZW50IGhhcyBnb2FscyBvciBwcmVmZXJlbmNlcyBhbmQgdGFrZXMgYWN0aW9ucyB0byBtYWtlIHRoZW0gaGFwcGVuLltkXVszMl0gSW4gYXV0b21hdGVkIHBsYW5uaW5nLCB0aGUgYWdlbnQgaGFzIGEgc3BlY2lmaWMgZ29hbC5bMzNdIEluIGF1dG9tYXRlZCBkZWNpc2lvbi1tYWtpbmcsIHRoZSBhZ2VudCBoYXMgcHJlZmVyZW5jZXPigJR0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIGl0IHdvdWxkIHByZWZlciB0byBiZSBpbiwgYW5kIHNvbWUgc2l0dWF0aW9ucyBpdCBpcyB0cnlpbmcgdG8gYXZvaWQuIFRoZSBkZWNpc2lvbi1tYWtpbmcgYWdlbnQgYXNzaWducyBhIG51bWJlciB0byBlYWNoIHNpdHVhdGlvbiAoY2FsbGVkIHRoZSBcInV0aWxpdHlcIikgdGhhdCBtZWFzdXJlcyBob3cgbXVjaCB0aGUgYWdlbnQgcHJlZmVycyBpdC4gRm9yIGVhY2ggcG9zc2libGUgYWN0aW9uLCBpdCBjYW4gY2FsY3VsYXRlIHRoZSBcImV4cGVjdGVkIHV0aWxpdHlcIjogdGhlIHV0aWxpdHkgb2YgYWxsIHBvc3NpYmxlIG91dGNvbWVzIG9mIHRoZSBhY3Rpb24sIHdlaWdodGVkIGJ5IHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBvdXRjb21lIHdpbGwgb2NjdXIuIEl0IGNhbiB0aGVuIGNob29zZSB0aGUgYWN0aW9uIHdpdGggdGhlIG1heGltdW0gZXhwZWN0ZWQgdXRpbGl0eS5bMzRdXG5cbkluIGNsYXNzaWNhbCBwbGFubmluZywgdGhlIGFnZW50IGtub3dzIGV4YWN0bHkgd2hhdCB0aGUgZWZmZWN0IG9mIGFueSBhY3Rpb24gd2lsbCBiZS5bMzVdIEluIG1vc3QgcmVhbC13b3JsZCBwcm9ibGVtcywgaG93ZXZlciwgdGhlIGFnZW50IG1heSBub3QgYmUgY2VydGFpbiBhYm91dCB0aGUgc2l0dWF0aW9uIHRoZXkgYXJlIGluIChpdCBpcyBcInVua25vd25cIiBvciBcInVub2JzZXJ2YWJsZVwiKSBhbmQgaXQgbWF5IG5vdCBrbm93IGZvciBjZXJ0YWluIHdoYXQgd2lsbCBoYXBwZW4gYWZ0ZXIgZWFjaCBwb3NzaWJsZSBhY3Rpb24gKGl0IGlzIG5vdCBcImRldGVybWluaXN0aWNcIikuIEl0IG11c3QgY2hvb3NlIGFuIGFjdGlvbiBieSBtYWtpbmcgYSBwcm9iYWJpbGlzdGljIGd1ZXNzIGFuZCB0aGVuIHJlYXNzZXNzIHRoZSBzaXR1YXRpb24gdG8gc2VlIGlmIHRoZSBhY3Rpb24gd29ya2VkLlszNl1cblxuSW4gc29tZSBwcm9ibGVtcywgdGhlIGFnZW50J3MgcHJlZmVyZW5jZXMgbWF5IGJlIHVuY2VydGFpbiwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgb3RoZXIgYWdlbnRzIG9yIGh1bWFucyBpbnZvbHZlZC4gVGhlc2UgY2FuIGJlIGxlYXJuZWQgKGUuZy4sIHdpdGggaW52ZXJzZSByZWluZm9yY2VtZW50IGxlYXJuaW5nKSwgb3IgdGhlIGFnZW50IGNhbiBzZWVrIGluZm9ybWF0aW9uIHRvIGltcHJvdmUgaXRzIHByZWZlcmVuY2VzLlszN10gSW5mb3JtYXRpb24gdmFsdWUgdGhlb3J5IGNhbiBiZSB1c2VkIHRvIHdlaWdoIHRoZSB2YWx1ZSBvZiBleHBsb3JhdG9yeSBvciBleHBlcmltZW50YWwgYWN0aW9ucy5bMzhdIFRoZSBzcGFjZSBvZiBwb3NzaWJsZSBmdXR1cmUgYWN0aW9ucyBhbmQgc2l0dWF0aW9ucyBpcyB0eXBpY2FsbHkgaW50cmFjdGFibHkgbGFyZ2UsIHNvIHRoZSBhZ2VudHMgbXVzdCB0YWtlIGFjdGlvbnMgYW5kIGV2YWx1YXRlIHNpdHVhdGlvbnMgd2hpbGUgYmVpbmcgdW5jZXJ0YWluIG9mIHdoYXQgdGhlIG91dGNvbWUgd2lsbCBiZS5cblxuQSBNYXJrb3YgZGVjaXNpb24gcHJvY2VzcyBoYXMgYSB0cmFuc2l0aW9uIG1vZGVsIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGEgcGFydGljdWxhciBhY3Rpb24gd2lsbCBjaGFuZ2UgdGhlIHN0YXRlIGluIGEgcGFydGljdWxhciB3YXkgYW5kIGEgcmV3YXJkIGZ1bmN0aW9uIHRoYXQgc3VwcGxpZXMgdGhlIHV0aWxpdHkgb2YgZWFjaCBzdGF0ZSBhbmQgdGhlIGNvc3Qgb2YgZWFjaCBhY3Rpb24uIEEgcG9saWN5IGFzc29jaWF0ZXMgYSBkZWNpc2lvbiB3aXRoIGVhY2ggcG9zc2libGUgc3RhdGUuIFRoZSBwb2xpY3kgY291bGQgYmUgY2FsY3VsYXRlZCAoZS5nLiwgYnkgaXRlcmF0aW9uKSwgYmUgaGV1cmlzdGljLCBvciBpdCBjYW4gYmUgbGVhcm5lZC5bMzldXG5cbkdhbWUgdGhlb3J5IGRlc2NyaWJlcyB0aGUgcmF0aW9uYWwgYmVoYXZpb3Igb2YgbXVsdGlwbGUgaW50ZXJhY3RpbmcgYWdlbnRzIGFuZCBpcyB1c2VkIGluIEFJIHByb2dyYW1zIHRoYXQgbWFrZSBkZWNpc2lvbnMgdGhhdCBpbnZvbHZlIG90aGVyIGFnZW50cy5bNDBdXG5cbkxlYXJuaW5nXG5cbk1hY2hpbmUgbGVhcm5pbmcgaXMgdGhlIHN0dWR5IG9mIHByb2dyYW1zIHRoYXQgY2FuIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2Ugb24gYSBnaXZlbiB0YXNrIGF1dG9tYXRpY2FsbHkuWzQxXSBJdCBoYXMgYmVlbiBhIHBhcnQgb2YgQUkgZnJvbSB0aGUgYmVnaW5uaW5nLltlXVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBtYWNoaW5lIGxlYXJuaW5nLiBVbnN1cGVydmlzZWQgbGVhcm5pbmcgYW5hbHl6ZXMgYSBzdHJlYW0gb2YgZGF0YSBhbmQgZmluZHMgcGF0dGVybnMgYW5kIG1ha2VzIHByZWRpY3Rpb25zIHdpdGhvdXQgYW55IG90aGVyIGd1aWRhbmNlLls0NF0gU3VwZXJ2aXNlZCBsZWFybmluZyByZXF1aXJlcyBsYWJlbGluZyB0aGUgdHJhaW5pbmcgZGF0YSB3aXRoIHRoZSBleHBlY3RlZCBhbnN3ZXJzLCBhbmQgY29tZXMgaW4gdHdvIG1haW4gdmFyaWV0aWVzOiBjbGFzc2lmaWNhdGlvbiAod2hlcmUgdGhlIHByb2dyYW0gbXVzdCBsZWFybiB0byBwcmVkaWN0IHdoYXQgY2F0ZWdvcnkgdGhlIGlucHV0IGJlbG9uZ3MgaW4pIGFuZCByZWdyZXNzaW9uICh3aGVyZSB0aGUgcHJvZ3JhbSBtdXN0IGRlZHVjZSBhIG51bWVyaWMgZnVuY3Rpb24gYmFzZWQgb24gbnVtZXJpYyBpbnB1dCkuWzQ1XVxuXG5JbiByZWluZm9yY2VtZW50IGxlYXJuaW5nLCB0aGUgYWdlbnQgaXMgcmV3YXJkZWQgZm9yIGdvb2QgcmVzcG9uc2VzIGFuZCBwdW5pc2hlZCBmb3IgYmFkIG9uZXMuIFRoZSBhZ2VudCBsZWFybnMgdG8gY2hvb3NlIHJlc3BvbnNlcyB0aGF0IGFyZSBjbGFzc2lmaWVkIGFzIFwiZ29vZFwiLls0Nl0gVHJhbnNmZXIgbGVhcm5pbmcgaXMgd2hlbiB0aGUga25vd2xlZGdlIGdhaW5lZCBmcm9tIG9uZSBwcm9ibGVtIGlzIGFwcGxpZWQgdG8gYSBuZXcgcHJvYmxlbS5bNDddIERlZXAgbGVhcm5pbmcgaXMgYSB0eXBlIG9mIG1hY2hpbmUgbGVhcm5pbmcgdGhhdCBydW5zIGlucHV0cyB0aHJvdWdoIGJpb2xvZ2ljYWxseSBpbnNwaXJlZCBhcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyBmb3IgYWxsIG9mIHRoZXNlIHR5cGVzIG9mIGxlYXJuaW5nLls0OF1cblxuQ29tcHV0YXRpb25hbCBsZWFybmluZyB0aGVvcnkgY2FuIGFzc2VzcyBsZWFybmVycyBieSBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHksIGJ5IHNhbXBsZSBjb21wbGV4aXR5IChob3cgbXVjaCBkYXRhIGlzIHJlcXVpcmVkKSwgb3IgYnkgb3RoZXIgbm90aW9ucyBvZiBvcHRpbWl6YXRpb24uWzQ5XVxuXG5OYXR1cmFsIGxhbmd1YWdlIHByb2Nlc3NpbmdcblxuTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIChOTFApWzUwXSBhbGxvd3MgcHJvZ3JhbXMgdG8gcmVhZCwgd3JpdGUgYW5kIGNvbW11bmljYXRlIGluIGh1bWFuIGxhbmd1YWdlcyBzdWNoIGFzIEVuZ2xpc2guIFNwZWNpZmljIHByb2JsZW1zIGluY2x1ZGUgc3BlZWNoIHJlY29nbml0aW9uLCBzcGVlY2ggc3ludGhlc2lzLCBtYWNoaW5lIHRyYW5zbGF0aW9uLCBpbmZvcm1hdGlvbiBleHRyYWN0aW9uLCBpbmZvcm1hdGlvbiByZXRyaWV2YWwgYW5kIHF1ZXN0aW9uIGFuc3dlcmluZy5bNTFdXG5cbkVhcmx5IHdvcmssIGJhc2VkIG9uIE5vYW0gQ2hvbXNreSdzIGdlbmVyYXRpdmUgZ3JhbW1hciBhbmQgc2VtYW50aWMgbmV0d29ya3MsIGhhZCBkaWZmaWN1bHR5IHdpdGggd29yZC1zZW5zZSBkaXNhbWJpZ3VhdGlvbltmXSB1bmxlc3MgcmVzdHJpY3RlZCB0byBzbWFsbCBkb21haW5zIGNhbGxlZCBcIm1pY3JvLXdvcmxkc1wiIChkdWUgdG8gdGhlIGNvbW1vbiBzZW5zZSBrbm93bGVkZ2UgcHJvYmxlbVsyOV0pLiBNYXJnYXJldCBNYXN0ZXJtYW4gYmVsaWV2ZWQgdGhhdCBpdCB3YXMgbWVhbmluZyBhbmQgbm90IGdyYW1tYXIgdGhhdCB3YXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGxhbmd1YWdlcywgYW5kIHRoYXQgdGhlc2F1cmkgYW5kIG5vdCBkaWN0aW9uYXJpZXMgc2hvdWxkIGJlIHRoZSBiYXNpcyBvZiBjb21wdXRhdGlvbmFsIGxhbmd1YWdlIHN0cnVjdHVyZS5cblxuTW9kZXJuIGRlZXAgbGVhcm5pbmcgdGVjaG5pcXVlcyBmb3IgTkxQIGluY2x1ZGUgd29yZCBlbWJlZGRpbmcgKHJlcHJlc2VudGluZyB3b3JkcywgdHlwaWNhbGx5IGFzIHZlY3RvcnMgZW5jb2RpbmcgdGhlaXIgbWVhbmluZyksWzUyXSB0cmFuc2Zvcm1lcnMgKGEgZGVlcCBsZWFybmluZyBhcmNoaXRlY3R1cmUgdXNpbmcgYW4gYXR0ZW50aW9uIG1lY2hhbmlzbSksWzUzXSBhbmQgb3RoZXJzLls1NF0gSW4gMjAxOSwgZ2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lciAob3IgXCJHUFRcIikgbGFuZ3VhZ2UgbW9kZWxzIGJlZ2FuIHRvIGdlbmVyYXRlIGNvaGVyZW50IHRleHQsWzU1XVs1Nl0gYW5kIGJ5IDIwMjMsIHRoZXNlIG1vZGVscyB3ZXJlIGFibGUgdG8gZ2V0IGh1bWFuLWxldmVsIHNjb3JlcyBvbiB0aGUgYmFyIGV4YW0sIFNBVCB0ZXN0LCBHUkUgdGVzdCwgYW5kIG1hbnkgb3RoZXIgcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMuWzU3XVxuXG5QZXJjZXB0aW9uXG5cbk1hY2hpbmUgcGVyY2VwdGlvbiBpcyB0aGUgYWJpbGl0eSB0byB1c2UgaW5wdXQgZnJvbSBzZW5zb3JzIChzdWNoIGFzIGNhbWVyYXMsIG1pY3JvcGhvbmVzLCB3aXJlbGVzcyBzaWduYWxzLCBhY3RpdmUgbGlkYXIsIHNvbmFyLCByYWRhciwgYW5kIHRhY3RpbGUgc2Vuc29ycykgdG8gZGVkdWNlIGFzcGVjdHMgb2YgdGhlIHdvcmxkLiBDb21wdXRlciB2aXNpb24gaXMgdGhlIGFiaWxpdHkgdG8gYW5hbHl6ZSB2aXN1YWwgaW5wdXQuWzU4XVxuXG5UaGUgZmllbGQgaW5jbHVkZXMgc3BlZWNoIHJlY29nbml0aW9uLFs1OV0gaW1hZ2UgY2xhc3NpZmljYXRpb24sWzYwXSBmYWNpYWwgcmVjb2duaXRpb24sIG9iamVjdCByZWNvZ25pdGlvbixbNjFdb2JqZWN0IHRyYWNraW5nLFs2Ml0gYW5kIHJvYm90aWMgcGVyY2VwdGlvbi5bNjNdXG5cblNvY2lhbCBpbnRlbGxpZ2VuY2Vcbktpc21ldCwgYSByb2JvdCBoZWFkIHdoaWNoIHdhcyBtYWRlIGluIHRoZSAxOTkwczsgaXQgaXMgYSBtYWNoaW5lIHRoYXQgY2FuIHJlY29nbml6ZSBhbmQgc2ltdWxhdGUgZW1vdGlvbnMuWzY0XVxuXG5BZmZlY3RpdmUgY29tcHV0aW5nIGlzIGEgZmllbGQgdGhhdCBjb21wcmlzZXMgc3lzdGVtcyB0aGF0IHJlY29nbml6ZSwgaW50ZXJwcmV0LCBwcm9jZXNzLCBvciBzaW11bGF0ZSBodW1hbiBmZWVsaW5nLCBlbW90aW9uLCBhbmQgbW9vZC5bNjVdIEZvciBleGFtcGxlLCBzb21lIHZpcnR1YWwgYXNzaXN0YW50cyBhcmUgcHJvZ3JhbW1lZCB0byBzcGVhayBjb252ZXJzYXRpb25hbGx5IG9yIGV2ZW4gdG8gYmFudGVyIGh1bW9yb3VzbHk7IGl0IG1ha2VzIHRoZW0gYXBwZWFyIG1vcmUgc2Vuc2l0aXZlIHRvIHRoZSBlbW90aW9uYWwgZHluYW1pY3Mgb2YgaHVtYW4gaW50ZXJhY3Rpb24sIG9yIHRvIG90aGVyd2lzZSBmYWNpbGl0YXRlIGh1bWFu4oCTY29tcHV0ZXIgaW50ZXJhY3Rpb24uXG5cbkhvd2V2ZXIsIHRoaXMgdGVuZHMgdG8gZ2l2ZSBuYcOvdmUgdXNlcnMgYW4gdW5yZWFsaXN0aWMgY29uY2VwdGlvbiBvZiB0aGUgaW50ZWxsaWdlbmNlIG9mIGV4aXN0aW5nIGNvbXB1dGVyIGFnZW50cy5bNjZdIE1vZGVyYXRlIHN1Y2Nlc3NlcyByZWxhdGVkIHRvIGFmZmVjdGl2ZSBjb21wdXRpbmcgaW5jbHVkZSB0ZXh0dWFsIHNlbnRpbWVudCBhbmFseXNpcyBhbmQsIG1vcmUgcmVjZW50bHksIG11bHRpbW9kYWwgc2VudGltZW50IGFuYWx5c2lzLCB3aGVyZWluIEFJIGNsYXNzaWZpZXMgdGhlIGVmZmVjdHMgZGlzcGxheWVkIGJ5IGEgdmlkZW90YXBlZCBzdWJqZWN0Lls2N11cblxuR2VuZXJhbCBpbnRlbGxpZ2VuY2VcblxuQSBtYWNoaW5lIHdpdGggYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSBzaG91bGQgYmUgYWJsZSB0byBzb2x2ZSBhIHdpZGUgdmFyaWV0eSBvZiBwcm9ibGVtcyB3aXRoIGJyZWFkdGggYW5kIHZlcnNhdGlsaXR5IHNpbWlsYXIgdG8gaHVtYW4gaW50ZWxsaWdlbmNlLls0XVxuXG5UZWNobmlxdWVzXG5cbkFJIHJlc2VhcmNoIHVzZXMgYSB3aWRlIHZhcmlldHkgb2YgdGVjaG5pcXVlcyB0byBhY2NvbXBsaXNoIHRoZSBnb2FscyBhYm92ZS5bYl1cblxuU2VhcmNoIGFuZCBvcHRpbWl6YXRpb25cblxuQUkgY2FuIHNvbHZlIG1hbnkgcHJvYmxlbXMgYnkgaW50ZWxsaWdlbnRseSBzZWFyY2hpbmcgdGhyb3VnaCBtYW55IHBvc3NpYmxlIHNvbHV0aW9ucy5bNjhdIFRoZXJlIGFyZSB0d28gdmVyeSBkaWZmZXJlbnQga2luZHMgb2Ygc2VhcmNoIHVzZWQgaW4gQUk6IHN0YXRlIHNwYWNlIHNlYXJjaCBhbmQgbG9jYWwgc2VhcmNoLlxuXG5TdGF0ZSBzcGFjZSBzZWFyY2hcblxuU3RhdGUgc3BhY2Ugc2VhcmNoIHNlYXJjaGVzIHRocm91Z2ggYSB0cmVlIG9mIHBvc3NpYmxlIHN0YXRlcyB0byB0cnkgdG8gZmluZCBhIGdvYWwgc3RhdGUuWzY5XSBGb3IgZXhhbXBsZSwgcGxhbm5pbmcgYWxnb3JpdGhtcyBzZWFyY2ggdGhyb3VnaCB0cmVlcyBvZiBnb2FscyBhbmQgc3ViZ29hbHMsIGF0dGVtcHRpbmcgdG8gZmluZCBhIHBhdGggdG8gYSB0YXJnZXQgZ29hbCwgYSBwcm9jZXNzIGNhbGxlZCBtZWFucy1lbmRzIGFuYWx5c2lzLls3MF1cblxuU2ltcGxlIGV4aGF1c3RpdmUgc2VhcmNoZXNbNzFdIGFyZSByYXJlbHkgc3VmZmljaWVudCBmb3IgbW9zdCByZWFsLXdvcmxkIHByb2JsZW1zOiB0aGUgc2VhcmNoIHNwYWNlICh0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzZWFyY2gpIHF1aWNrbHkgZ3Jvd3MgdG8gYXN0cm9ub21pY2FsIG51bWJlcnMuIFRoZSByZXN1bHQgaXMgYSBzZWFyY2ggdGhhdCBpcyB0b28gc2xvdyBvciBuZXZlciBjb21wbGV0ZXMuWzE1XSBcIkhldXJpc3RpY3NcIiBvciBcInJ1bGVzIG9mIHRodW1iXCIgY2FuIGhlbHAgcHJpb3JpdGl6ZSBjaG9pY2VzIHRoYXQgYXJlIG1vcmUgbGlrZWx5IHRvIHJlYWNoIGEgZ29hbC5bNzJdXG5cbkFkdmVyc2FyaWFsIHNlYXJjaCBpcyB1c2VkIGZvciBnYW1lLXBsYXlpbmcgcHJvZ3JhbXMsIHN1Y2ggYXMgY2hlc3Mgb3IgR28uIEl0IHNlYXJjaGVzIHRocm91Z2ggYSB0cmVlIG9mIHBvc3NpYmxlIG1vdmVzIGFuZCBjb3VudGVybW92ZXMsIGxvb2tpbmcgZm9yIGEgd2lubmluZyBwb3NpdGlvbi5bNzNdXG5cbkxvY2FsIHNlYXJjaFxuSWxsdXN0cmF0aW9uIG9mIGdyYWRpZW50IGRlc2NlbnQgZm9yIDMgZGlmZmVyZW50IHN0YXJ0aW5nIHBvaW50czsgdHdvIHBhcmFtZXRlcnMgKHJlcHJlc2VudGVkIGJ5IHRoZSBwbGFuIGNvb3JkaW5hdGVzKSBhcmUgYWRqdXN0ZWQgaW4gb3JkZXIgdG8gbWluaW1pemUgdGhlIGxvc3MgZnVuY3Rpb24gKHRoZSBoZWlnaHQpXG5cbkxvY2FsIHNlYXJjaCB1c2VzIG1hdGhlbWF0aWNhbCBvcHRpbWl6YXRpb24gdG8gZmluZCBhIHNvbHV0aW9uIHRvIGEgcHJvYmxlbS4gSXQgYmVnaW5zIHdpdGggc29tZSBmb3JtIG9mIGd1ZXNzIGFuZCByZWZpbmVzIGl0IGluY3JlbWVudGFsbHkuWzc0XVxuXG5HcmFkaWVudCBkZXNjZW50IGlzIGEgdHlwZSBvZiBsb2NhbCBzZWFyY2ggdGhhdCBvcHRpbWl6ZXMgYSBzZXQgb2YgbnVtZXJpY2FsIHBhcmFtZXRlcnMgYnkgaW5jcmVtZW50YWxseSBhZGp1c3RpbmcgdGhlbSB0byBtaW5pbWl6ZSBhIGxvc3MgZnVuY3Rpb24uIFZhcmlhbnRzIG9mIGdyYWRpZW50IGRlc2NlbnQgYXJlIGNvbW1vbmx5IHVzZWQgdG8gdHJhaW4gbmV1cmFsIG5ldHdvcmtzLFs3NV0gdGhyb3VnaCB0aGUgYmFja3Byb3BhZ2F0aW9uIGFsZ29yaXRobS5cblxuQW5vdGhlciB0eXBlIG9mIGxvY2FsIHNlYXJjaCBpcyBldm9sdXRpb25hcnkgY29tcHV0YXRpb24sIHdoaWNoIGFpbXMgdG8gaXRlcmF0aXZlbHkgaW1wcm92ZSBhIHNldCBvZiBjYW5kaWRhdGUgc29sdXRpb25zIGJ5IFwibXV0YXRpbmdcIiBhbmQgXCJyZWNvbWJpbmluZ1wiIHRoZW0sIHNlbGVjdGluZyBvbmx5IHRoZSBmaXR0ZXN0IHRvIHN1cnZpdmUgZWFjaCBnZW5lcmF0aW9uLls3Nl1cblxuRGlzdHJpYnV0ZWQgc2VhcmNoIHByb2Nlc3NlcyBjYW4gY29vcmRpbmF0ZSB2aWEgc3dhcm0gaW50ZWxsaWdlbmNlIGFsZ29yaXRobXMuIFR3byBwb3B1bGFyIHN3YXJtIGFsZ29yaXRobXMgdXNlZCBpbiBzZWFyY2ggYXJlIHBhcnRpY2xlIHN3YXJtIG9wdGltaXphdGlvbiAoaW5zcGlyZWQgYnkgYmlyZCBmbG9ja2luZykgYW5kIGFudCBjb2xvbnkgb3B0aW1pemF0aW9uIChpbnNwaXJlZCBieSBhbnQgdHJhaWxzKS5bNzddXG5cbkxvZ2ljXG5cbkZvcm1hbCBsb2dpYyBpcyB1c2VkIGZvciByZWFzb25pbmcgYW5kIGtub3dsZWRnZSByZXByZXNlbnRhdGlvbi5bNzhdIEZvcm1hbCBsb2dpYyBjb21lcyBpbiB0d28gbWFpbiBmb3JtczogcHJvcG9zaXRpb25hbCBsb2dpYyAod2hpY2ggb3BlcmF0ZXMgb24gc3RhdGVtZW50cyB0aGF0IGFyZSB0cnVlIG9yIGZhbHNlIGFuZCB1c2VzIGxvZ2ljYWwgY29ubmVjdGl2ZXMgc3VjaCBhcyBcImFuZFwiLCBcIm9yXCIsIFwibm90XCIgYW5kIFwiaW1wbGllc1wiKVs3OV0gYW5kIHByZWRpY2F0ZSBsb2dpYyAod2hpY2ggYWxzbyBvcGVyYXRlcyBvbiBvYmplY3RzLCBwcmVkaWNhdGVzIGFuZCByZWxhdGlvbnMgYW5kIHVzZXMgcXVhbnRpZmllcnMgc3VjaCBhcyBcIkV2ZXJ5IFggaXMgYSBZXCIgYW5kIFwiVGhlcmUgYXJlIHNvbWUgWHMgdGhhdCBhcmUgWXNcIikuWzgwXVxuXG5EZWR1Y3RpdmUgcmVhc29uaW5nIGluIGxvZ2ljIGlzIHRoZSBwcm9jZXNzIG9mIHByb3ZpbmcgYSBuZXcgc3RhdGVtZW50IChjb25jbHVzaW9uKSBmcm9tIG90aGVyIHN0YXRlbWVudHMgdGhhdCBhcmUgZ2l2ZW4gYW5kIGFzc3VtZWQgdG8gYmUgdHJ1ZSAodGhlIHByZW1pc2VzKS5bODFdIFByb29mcyBjYW4gYmUgc3RydWN0dXJlZCBhcyBwcm9vZiB0cmVlcywgaW4gd2hpY2ggbm9kZXMgYXJlIGxhYmVsbGVkIGJ5IHNlbnRlbmNlcywgYW5kIGNoaWxkcmVuIG5vZGVzIGFyZSBjb25uZWN0ZWQgdG8gcGFyZW50IG5vZGVzIGJ5IGluZmVyZW5jZSBydWxlcy5cblxuR2l2ZW4gYSBwcm9ibGVtIGFuZCBhIHNldCBvZiBwcmVtaXNlcywgcHJvYmxlbS1zb2x2aW5nIHJlZHVjZXMgdG8gc2VhcmNoaW5nIGZvciBhIHByb29mIHRyZWUgd2hvc2Ugcm9vdCBub2RlIGlzIGxhYmVsbGVkIGJ5IGEgc29sdXRpb24gb2YgdGhlIHByb2JsZW0gYW5kIHdob3NlIGxlYWYgbm9kZXMgYXJlIGxhYmVsbGVkIGJ5IHByZW1pc2VzIG9yIGF4aW9tcy4gSW4gdGhlIGNhc2Ugb2YgSG9ybiBjbGF1c2VzLCBwcm9ibGVtLXNvbHZpbmcgc2VhcmNoIGNhbiBiZSBwZXJmb3JtZWQgYnkgcmVhc29uaW5nIGZvcndhcmRzIGZyb20gdGhlIHByZW1pc2VzIG9yIGJhY2t3YXJkcyBmcm9tIHRoZSBwcm9ibGVtLls4Ml0gSW4gdGhlIG1vcmUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBjbGF1c2FsIGZvcm0gb2YgZmlyc3Qtb3JkZXIgbG9naWMsIHJlc29sdXRpb24gaXMgYSBzaW5nbGUsIGF4aW9tLWZyZWUgcnVsZSBvZiBpbmZlcmVuY2UsIGluIHdoaWNoIGEgcHJvYmxlbSBpcyBzb2x2ZWQgYnkgcHJvdmluZyBhIGNvbnRyYWRpY3Rpb24gZnJvbSBwcmVtaXNlcyB0aGF0IGluY2x1ZGUgdGhlIG5lZ2F0aW9uIG9mIHRoZSBwcm9ibGVtIHRvIGJlIHNvbHZlZC5bODNdXG5cbkluZmVyZW5jZSBpbiBib3RoIEhvcm4gY2xhdXNlIGxvZ2ljIGFuZCBmaXJzdC1vcmRlciBsb2dpYyBpcyB1bmRlY2lkYWJsZSwgYW5kIHRoZXJlZm9yZSBpbnRyYWN0YWJsZS4gSG93ZXZlciwgYmFja3dhcmQgcmVhc29uaW5nIHdpdGggSG9ybiBjbGF1c2VzLCB3aGljaCB1bmRlcnBpbnMgY29tcHV0YXRpb24gaW4gdGhlIGxvZ2ljIHByb2dyYW1taW5nIGxhbmd1YWdlIFByb2xvZywgaXMgVHVyaW5nIGNvbXBsZXRlLiBNb3Jlb3ZlciwgaXRzIGVmZmljaWVuY3kgaXMgY29tcGV0aXRpdmUgd2l0aCBjb21wdXRhdGlvbiBpbiBvdGhlciBzeW1ib2xpYyBwcm9ncmFtbWluZyBsYW5ndWFnZXMuWzg0XVxuXG5GdXp6eSBsb2dpYyBhc3NpZ25zIGEgXCJkZWdyZWUgb2YgdHJ1dGhcIiBiZXR3ZWVuIDAgYW5kIDEuIEl0IGNhbiB0aGVyZWZvcmUgaGFuZGxlIHByb3Bvc2l0aW9ucyB0aGF0IGFyZSB2YWd1ZSBhbmQgcGFydGlhbGx5IHRydWUuWzg1XVxuXG5Ob24tbW9ub3RvbmljIGxvZ2ljcywgaW5jbHVkaW5nIGxvZ2ljIHByb2dyYW1taW5nIHdpdGggbmVnYXRpb24gYXMgZmFpbHVyZSwgYXJlIGRlc2lnbmVkIHRvIGhhbmRsZSBkZWZhdWx0IHJlYXNvbmluZy5bMjhdIE90aGVyIHNwZWNpYWxpemVkIHZlcnNpb25zIG9mIGxvZ2ljIGhhdmUgYmVlbiBkZXZlbG9wZWQgdG8gZGVzY3JpYmUgbWFueSBjb21wbGV4IGRvbWFpbnMuXG5cblByb2JhYmlsaXN0aWMgbWV0aG9kcyBmb3IgdW5jZXJ0YWluIHJlYXNvbmluZ1xuQSBzaW1wbGUgQmF5ZXNpYW4gbmV0d29yaywgd2l0aCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBwcm9iYWJpbGl0eSB0YWJsZXNcblxuTWFueSBwcm9ibGVtcyBpbiBBSSAoaW5jbHVkaW5nIGluIHJlYXNvbmluZywgcGxhbm5pbmcsIGxlYXJuaW5nLCBwZXJjZXB0aW9uLCBhbmQgcm9ib3RpY3MpIHJlcXVpcmUgdGhlIGFnZW50IHRvIG9wZXJhdGUgd2l0aCBpbmNvbXBsZXRlIG9yIHVuY2VydGFpbiBpbmZvcm1hdGlvbi4gQUkgcmVzZWFyY2hlcnMgaGF2ZSBkZXZpc2VkIGEgbnVtYmVyIG9mIHRvb2xzIHRvIHNvbHZlIHRoZXNlIHByb2JsZW1zIHVzaW5nIG1ldGhvZHMgZnJvbSBwcm9iYWJpbGl0eSB0aGVvcnkgYW5kIGVjb25vbWljcy5bODZdIFByZWNpc2UgbWF0aGVtYXRpY2FsIHRvb2xzIGhhdmUgYmVlbiBkZXZlbG9wZWQgdGhhdCBhbmFseXplIGhvdyBhbiBhZ2VudCBjYW4gbWFrZSBjaG9pY2VzIGFuZCBwbGFuLCB1c2luZyBkZWNpc2lvbiB0aGVvcnksIGRlY2lzaW9uIGFuYWx5c2lzLFs4N10gYW5kIGluZm9ybWF0aW9uIHZhbHVlIHRoZW9yeS5bODhdIFRoZXNlIHRvb2xzIGluY2x1ZGUgbW9kZWxzIHN1Y2ggYXMgTWFya292IGRlY2lzaW9uIHByb2Nlc3NlcyxbODldIGR5bmFtaWMgZGVjaXNpb24gbmV0d29ya3MsWzkwXSBnYW1lIHRoZW9yeSBhbmQgbWVjaGFuaXNtIGRlc2lnbi5bOTFdXG5cbkJheWVzaWFuIG5ldHdvcmtzWzkyXSBhcmUgYSB0b29sIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHJlYXNvbmluZyAodXNpbmcgdGhlIEJheWVzaWFuIGluZmVyZW5jZSBhbGdvcml0aG0pLFtnXVs5NF0gbGVhcm5pbmcgKHVzaW5nIHRoZSBleHBlY3RhdGlvbuKAk21heGltaXphdGlvbiBhbGdvcml0aG0pLFtoXVs5Nl0gcGxhbm5pbmcgKHVzaW5nIGRlY2lzaW9uIG5ldHdvcmtzKVs5N10gYW5kIHBlcmNlcHRpb24gKHVzaW5nIGR5bmFtaWMgQmF5ZXNpYW4gbmV0d29ya3MpLls5MF1cblxuUHJvYmFiaWxpc3RpYyBhbGdvcml0aG1zIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGZpbHRlcmluZywgcHJlZGljdGlvbiwgc21vb3RoaW5nLCBhbmQgZmluZGluZyBleHBsYW5hdGlvbnMgZm9yIHN0cmVhbXMgb2YgZGF0YSwgdGh1cyBoZWxwaW5nIHBlcmNlcHRpb24gc3lzdGVtcyBhbmFseXplIHByb2Nlc3NlcyB0aGF0IG9jY3VyIG92ZXIgdGltZSAoZS5nLiwgaGlkZGVuIE1hcmtvdiBtb2RlbHMgb3IgS2FsbWFuIGZpbHRlcnMpLls5MF1cblxuRXhwZWN0YXRpb27igJNtYXhpbWl6YXRpb24gY2x1c3RlcmluZyBvZiBPbGQgRmFpdGhmdWwgZXJ1cHRpb24gZGF0YSBzdGFydHMgZnJvbSBhIHJhbmRvbSBndWVzcyBidXQgdGhlbiBzdWNjZXNzZnVsbHkgY29udmVyZ2VzIG9uIGFuIGFjY3VyYXRlIGNsdXN0ZXJpbmcgb2YgdGhlIHR3byBwaHlzaWNhbGx5IGRpc3RpbmN0IG1vZGVzIG9mIGVydXB0aW9uLlxuQ2xhc3NpZmllcnMgYW5kIHN0YXRpc3RpY2FsIGxlYXJuaW5nIG1ldGhvZHNcblxuVGhlIHNpbXBsZXN0IEFJIGFwcGxpY2F0aW9ucyBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3byB0eXBlczogY2xhc3NpZmllcnMgKGUuZy4sIFwiaWYgc2hpbnkgdGhlbiBkaWFtb25kXCIpLCBvbiBvbmUgaGFuZCwgYW5kIGNvbnRyb2xsZXJzIChlLmcuLCBcImlmIGRpYW1vbmQgdGhlbiBwaWNrIHVwXCIpLCBvbiB0aGUgb3RoZXIgaGFuZC4gQ2xhc3NpZmllcnNbOThdIGFyZSBmdW5jdGlvbnMgdGhhdCB1c2UgcGF0dGVybiBtYXRjaGluZyB0byBkZXRlcm1pbmUgdGhlIGNsb3Nlc3QgbWF0Y2guIFRoZXkgY2FuIGJlIGZpbmUtdHVuZWQgYmFzZWQgb24gY2hvc2VuIGV4YW1wbGVzIHVzaW5nIHN1cGVydmlzZWQgbGVhcm5pbmcuIEVhY2ggcGF0dGVybiAoYWxzbyBjYWxsZWQgYW4gXCJvYnNlcnZhdGlvblwiKSBpcyBsYWJlbGVkIHdpdGggYSBjZXJ0YWluIHByZWRlZmluZWQgY2xhc3MuIEFsbCB0aGUgb2JzZXJ2YXRpb25zIGNvbWJpbmVkIHdpdGggdGhlaXIgY2xhc3MgbGFiZWxzIGFyZSBrbm93biBhcyBhIGRhdGEgc2V0LiBXaGVuIGEgbmV3IG9ic2VydmF0aW9uIGlzIHJlY2VpdmVkLCB0aGF0IG9ic2VydmF0aW9uIGlzIGNsYXNzaWZpZWQgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZS5bNDVdXG5cblRoZXJlIGFyZSBtYW55IGtpbmRzIG9mIGNsYXNzaWZpZXJzIGluIHVzZS5bOTldIFRoZSBkZWNpc2lvbiB0cmVlIGlzIHRoZSBzaW1wbGVzdCBhbmQgbW9zdCB3aWRlbHkgdXNlZCBzeW1ib2xpYyBtYWNoaW5lIGxlYXJuaW5nIGFsZ29yaXRobS5bMTAwXSBLLW5lYXJlc3QgbmVpZ2hib3IgYWxnb3JpdGhtIHdhcyB0aGUgbW9zdCB3aWRlbHkgdXNlZCBhbmFsb2dpY2FsIEFJIHVudGlsIHRoZSBtaWQtMTk5MHMsIGFuZCBLZXJuZWwgbWV0aG9kcyBzdWNoIGFzIHRoZSBzdXBwb3J0IHZlY3RvciBtYWNoaW5lIChTVk0pIGRpc3BsYWNlZCBrLW5lYXJlc3QgbmVpZ2hib3IgaW4gdGhlIDE5OTBzLlsxMDFdIFRoZSBuYWl2ZSBCYXllcyBjbGFzc2lmaWVyIGlzIHJlcG9ydGVkbHkgdGhlIFwibW9zdCB3aWRlbHkgdXNlZCBsZWFybmVyXCJbMTAyXSBhdCBHb29nbGUsIGR1ZSBpbiBwYXJ0IHRvIGl0cyBzY2FsYWJpbGl0eS5bMTAzXSBOZXVyYWwgbmV0d29ya3MgYXJlIGFsc28gdXNlZCBhcyBjbGFzc2lmaWVycy5bMTA0XVxuXG5BcnRpZmljaWFsIG5ldXJhbCBuZXR3b3Jrc1xuQSBuZXVyYWwgbmV0d29yayBpcyBhbiBpbnRlcmNvbm5lY3RlZCBncm91cCBvZiBub2RlcywgYWtpbiB0byB0aGUgdmFzdCBuZXR3b3JrIG9mIG5ldXJvbnMgaW4gdGhlIGh1bWFuIGJyYWluLlxuXG5BbiBhcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrIGlzIGJhc2VkIG9uIGEgY29sbGVjdGlvbiBvZiBub2RlcyBhbHNvIGtub3duIGFzIGFydGlmaWNpYWwgbmV1cm9ucywgd2hpY2ggbG9vc2VseSBtb2RlbCB0aGUgbmV1cm9ucyBpbiBhIGJpb2xvZ2ljYWwgYnJhaW4uIEl0IGlzIHRyYWluZWQgdG8gcmVjb2duaXNlIHBhdHRlcm5zOyBvbmNlIHRyYWluZWQsIGl0IGNhbiByZWNvZ25pc2UgdGhvc2UgcGF0dGVybnMgaW4gZnJlc2ggZGF0YS4gVGhlcmUgaXMgYW4gaW5wdXQsIGF0IGxlYXN0IG9uZSBoaWRkZW4gbGF5ZXIgb2Ygbm9kZXMgYW5kIGFuIG91dHB1dC4gRWFjaCBub2RlIGFwcGxpZXMgYSBmdW5jdGlvbiBhbmQgb25jZSB0aGUgd2VpZ2h0IGNyb3NzZXMgaXRzIHNwZWNpZmllZCB0aHJlc2hvbGQsIHRoZSBkYXRhIGlzIHRyYW5zbWl0dGVkIHRvIHRoZSBuZXh0IGxheWVyLiBBIG5ldHdvcmsgaXMgdHlwaWNhbGx5IGNhbGxlZCBhIGRlZXAgbmV1cmFsIG5ldHdvcmsgaWYgaXQgaGFzIGF0IGxlYXN0IDIgaGlkZGVuIGxheWVycy5bMTA0XVxuXG5MZWFybmluZyBhbGdvcml0aG1zIGZvciBuZXVyYWwgbmV0d29ya3MgdXNlIGxvY2FsIHNlYXJjaCB0byBjaG9vc2UgdGhlIHdlaWdodHMgdGhhdCB3aWxsIGdldCB0aGUgcmlnaHQgb3V0cHV0IGZvciBlYWNoIGlucHV0IGR1cmluZyB0cmFpbmluZy4gVGhlIG1vc3QgY29tbW9uIHRyYWluaW5nIHRlY2huaXF1ZSBpcyB0aGUgYmFja3Byb3BhZ2F0aW9uIGFsZ29yaXRobS5bMTA1XSBOZXVyYWwgbmV0d29ya3MgbGVhcm4gdG8gbW9kZWwgY29tcGxleCByZWxhdGlvbnNoaXBzIGJldHdlZW4gaW5wdXRzIGFuZCBvdXRwdXRzIGFuZCBmaW5kIHBhdHRlcm5zIGluIGRhdGEuIEluIHRoZW9yeSwgYSBuZXVyYWwgbmV0d29yayBjYW4gbGVhcm4gYW55IGZ1bmN0aW9uLlsxMDZdXG5cbkluIGZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrcyB0aGUgc2lnbmFsIHBhc3NlcyBpbiBvbmx5IG9uZSBkaXJlY3Rpb24uWzEwN10gUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrcyBmZWVkIHRoZSBvdXRwdXQgc2lnbmFsIGJhY2sgaW50byB0aGUgaW5wdXQsIHdoaWNoIGFsbG93cyBzaG9ydC10ZXJtIG1lbW9yaWVzIG9mIHByZXZpb3VzIGlucHV0IGV2ZW50cy4gTG9uZyBzaG9ydCB0ZXJtIG1lbW9yeSBpcyB0aGUgbW9zdCBzdWNjZXNzZnVsIG5ldHdvcmsgYXJjaGl0ZWN0dXJlIGZvciByZWN1cnJlbnQgbmV0d29ya3MuWzEwOF0gUGVyY2VwdHJvbnNbMTA5XSB1c2Ugb25seSBhIHNpbmdsZSBsYXllciBvZiBuZXVyb25zOyBkZWVwIGxlYXJuaW5nWzExMF0gdXNlcyBtdWx0aXBsZSBsYXllcnMuIENvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzIHN0cmVuZ3RoZW4gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBuZXVyb25zIHRoYXQgYXJlIFwiY2xvc2VcIiB0byBlYWNoIG90aGVy4oCUdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpbiBpbWFnZSBwcm9jZXNzaW5nLCB3aGVyZSBhIGxvY2FsIHNldCBvZiBuZXVyb25zIG11c3QgaWRlbnRpZnkgYW4gXCJlZGdlXCIgYmVmb3JlIHRoZSBuZXR3b3JrIGNhbiBpZGVudGlmeSBhbiBvYmplY3QuWzExMV1cblxuRGVlcCBsZWFybmluZ1xuXG5EZWVwIGxlYXJuaW5nWzExMF0gdXNlcyBzZXZlcmFsIGxheWVycyBvZiBuZXVyb25zIGJldHdlZW4gdGhlIG5ldHdvcmsncyBpbnB1dHMgYW5kIG91dHB1dHMuIFRoZSBtdWx0aXBsZSBsYXllcnMgY2FuIHByb2dyZXNzaXZlbHkgZXh0cmFjdCBoaWdoZXItbGV2ZWwgZmVhdHVyZXMgZnJvbSB0aGUgcmF3IGlucHV0LiBGb3IgZXhhbXBsZSwgaW4gaW1hZ2UgcHJvY2Vzc2luZywgbG93ZXIgbGF5ZXJzIG1heSBpZGVudGlmeSBlZGdlcywgd2hpbGUgaGlnaGVyIGxheWVycyBtYXkgaWRlbnRpZnkgdGhlIGNvbmNlcHRzIHJlbGV2YW50IHRvIGEgaHVtYW4gc3VjaCBhcyBkaWdpdHMsIGxldHRlcnMsIG9yIGZhY2VzLlsxMTJdXG5cbkRlZXAgbGVhcm5pbmcgaGFzIHByb2ZvdW5kbHkgaW1wcm92ZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHByb2dyYW1zIGluIG1hbnkgaW1wb3J0YW50IHN1YmZpZWxkcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgaW5jbHVkaW5nIGNvbXB1dGVyIHZpc2lvbiwgc3BlZWNoIHJlY29nbml0aW9uLCBuYXR1cmFsIGxhbmd1YWdlIHByb2Nlc3NpbmcsIGltYWdlIGNsYXNzaWZpY2F0aW9uLFsxMTNdIGFuZCBvdGhlcnMuIFRoZSByZWFzb24gdGhhdCBkZWVwIGxlYXJuaW5nIHBlcmZvcm1zIHNvIHdlbGwgaW4gc28gbWFueSBhcHBsaWNhdGlvbnMgaXMgbm90IGtub3duIGFzIG9mIDIwMjMuWzExNF0gVGhlIHN1ZGRlbiBzdWNjZXNzIG9mIGRlZXAgbGVhcm5pbmcgaW4gMjAxMuKAkzIwMTUgZGlkIG5vdCBvY2N1ciBiZWNhdXNlIG9mIHNvbWUgbmV3IGRpc2NvdmVyeSBvciB0aGVvcmV0aWNhbCBicmVha3Rocm91Z2ggKGRlZXAgbmV1cmFsIG5ldHdvcmtzIGFuZCBiYWNrcHJvcGFnYXRpb24gaGFkIGJlZW4gZGVzY3JpYmVkIGJ5IG1hbnkgcGVvcGxlLCBhcyBmYXIgYmFjayBhcyB0aGUgMTk1MHMpW2ldIGJ1dCBiZWNhdXNlIG9mIHR3byBmYWN0b3JzOiB0aGUgaW5jcmVkaWJsZSBpbmNyZWFzZSBpbiBjb21wdXRlciBwb3dlciAoaW5jbHVkaW5nIHRoZSBodW5kcmVkLWZvbGQgaW5jcmVhc2UgaW4gc3BlZWQgYnkgc3dpdGNoaW5nIHRvIEdQVXMpIGFuZCB0aGUgYXZhaWxhYmlsaXR5IG9mIHZhc3QgYW1vdW50cyBvZiB0cmFpbmluZyBkYXRhLCBlc3BlY2lhbGx5IHRoZSBnaWFudCBjdXJhdGVkIGRhdGFzZXRzIHVzZWQgZm9yIGJlbmNobWFyayB0ZXN0aW5nLCBzdWNoIGFzIEltYWdlTmV0LltqXVxuXG5HUFRcblxuR2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lcnMgKEdQVCkgYXJlIGxhcmdlIGxhbmd1YWdlIG1vZGVscyAoTExNcykgdGhhdCBnZW5lcmF0ZSB0ZXh0IGJhc2VkIG9uIHRoZSBzZW1hbnRpYyByZWxhdGlvbnNoaXBzIGJldHdlZW4gd29yZHMgaW4gc2VudGVuY2VzLiBUZXh0LWJhc2VkIEdQVCBtb2RlbHMgYXJlIHByZXRyYWluZWQgb24gYSBsYXJnZSBjb3JwdXMgb2YgdGV4dCB0aGF0IGNhbiBiZSBmcm9tIHRoZSBJbnRlcm5ldC4gVGhlIHByZXRyYWluaW5nIGNvbnNpc3RzIG9mIHByZWRpY3RpbmcgdGhlIG5leHQgdG9rZW4gKGEgdG9rZW4gYmVpbmcgdXN1YWxseSBhIHdvcmQsIHN1YndvcmQsIG9yIHB1bmN0dWF0aW9uKS4gVGhyb3VnaG91dCB0aGlzIHByZXRyYWluaW5nLCBHUFQgbW9kZWxzIGFjY3VtdWxhdGUga25vd2xlZGdlIGFib3V0IHRoZSB3b3JsZCBhbmQgY2FuIHRoZW4gZ2VuZXJhdGUgaHVtYW4tbGlrZSB0ZXh0IGJ5IHJlcGVhdGVkbHkgcHJlZGljdGluZyB0aGUgbmV4dCB0b2tlbi4gVHlwaWNhbGx5LCBhIHN1YnNlcXVlbnQgdHJhaW5pbmcgcGhhc2UgbWFrZXMgdGhlIG1vZGVsIG1vcmUgdHJ1dGhmdWwsIHVzZWZ1bCwgYW5kIGhhcm1sZXNzLCB1c3VhbGx5IHdpdGggYSB0ZWNobmlxdWUgY2FsbGVkIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmcgZnJvbSBodW1hbiBmZWVkYmFjayAoUkxIRikuIEN1cnJlbnQgR1BUIG1vZGVscyBhcmUgcHJvbmUgdG8gZ2VuZXJhdGluZyBmYWxzZWhvb2RzIGNhbGxlZCBcImhhbGx1Y2luYXRpb25zXCIsIGFsdGhvdWdoIHRoaXMgY2FuIGJlIHJlZHVjZWQgd2l0aCBSTEhGIGFuZCBxdWFsaXR5IGRhdGEuIFRoZXkgYXJlIHVzZWQgaW4gY2hhdGJvdHMsIHdoaWNoIGFsbG93IHBlb3BsZSB0byBhc2sgYSBxdWVzdGlvbiBvciByZXF1ZXN0IGEgdGFzayBpbiBzaW1wbGUgdGV4dC5bMTIyXVsxMjNdXG5cbkN1cnJlbnQgbW9kZWxzIGFuZCBzZXJ2aWNlcyBpbmNsdWRlIEdlbWluaSAoZm9ybWVybHkgQmFyZCksIENoYXRHUFQsIEdyb2ssIENsYXVkZSwgQ29waWxvdCwgYW5kIExMYU1BLlsxMjRdIE11bHRpbW9kYWwgR1BUIG1vZGVscyBjYW4gcHJvY2VzcyBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSAobW9kYWxpdGllcykgc3VjaCBhcyBpbWFnZXMsIHZpZGVvcywgc291bmQsIGFuZCB0ZXh0LlsxMjVdXG5cbkhhcmR3YXJlIGFuZCBzb2Z0d2FyZVxuTWFpbiBhcnRpY2xlczogUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgSGFyZHdhcmUgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkluIHRoZSBsYXRlIDIwMTBzLCBncmFwaGljcyBwcm9jZXNzaW5nIHVuaXRzIChHUFVzKSB0aGF0IHdlcmUgaW5jcmVhc2luZ2x5IGRlc2lnbmVkIHdpdGggQUktc3BlY2lmaWMgZW5oYW5jZW1lbnRzIGFuZCB1c2VkIHdpdGggc3BlY2lhbGl6ZWQgVGVuc29yRmxvdyBzb2Z0d2FyZSBoYWQgcmVwbGFjZWQgcHJldmlvdXNseSB1c2VkIGNlbnRyYWwgcHJvY2Vzc2luZyB1bml0IChDUFVzKSBhcyB0aGUgZG9taW5hbnQgbWVhbnMgZm9yIGxhcmdlLXNjYWxlIChjb21tZXJjaWFsIGFuZCBhY2FkZW1pYykgbWFjaGluZSBsZWFybmluZyBtb2RlbHMnIHRyYWluaW5nLlsxMjZdIFNwZWNpYWxpemVkIHByb2dyYW1taW5nIGxhbmd1YWdlcyBzdWNoIGFzIFByb2xvZyB3ZXJlIHVzZWQgaW4gZWFybHkgQUkgcmVzZWFyY2gsWzEyN10gYnV0IGdlbmVyYWwtcHVycG9zZSBwcm9ncmFtbWluZyBsYW5ndWFnZXMgbGlrZSBQeXRob24gaGF2ZSBiZWNvbWUgcHJlZG9taW5hbnQuWzEyOF1cblxuVGhlIHRyYW5zaXN0b3IgZGVuc2l0eSBpbiBpbnRlZ3JhdGVkIGNpcmN1aXRzIGhhcyBiZWVuIG9ic2VydmVkIHRvIHJvdWdobHkgZG91YmxlIGV2ZXJ5IDE4IG1vbnRoc+KAlGEgdHJlbmQga25vd24gYXMgTW9vcmUncyBsYXcsIG5hbWVkIGFmdGVyIHRoZSBJbnRlbCBjby1mb3VuZGVyIEdvcmRvbiBNb29yZSwgd2hvIGZpcnN0IGlkZW50aWZpZWQgaXQuIEltcHJvdmVtZW50cyBpbiBHUFVzIGhhdmUgYmVlbiBldmVuIGZhc3RlcixbMTI5XSBhIHRyZW5kIHNvbWV0aW1lcyBjYWxsZWQgSHVhbmcncyBsYXcsWzEzMF0gbmFtZWQgYWZ0ZXIgTnZpZGlhIGNvLWZvdW5kZXIgYW5kIENFTyBKZW5zZW4gSHVhbmcuXG5cbkFwcGxpY2F0aW9uc1xuTWFpbiBhcnRpY2xlOiBBcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuQUkgYW5kIG1hY2hpbmUgbGVhcm5pbmcgdGVjaG5vbG9neSBpcyB1c2VkIGluIG1vc3Qgb2YgdGhlIGVzc2VudGlhbCBhcHBsaWNhdGlvbnMgb2YgdGhlIDIwMjBzLCBpbmNsdWRpbmc6IHNlYXJjaCBlbmdpbmVzIChzdWNoIGFzIEdvb2dsZSBTZWFyY2gpLCB0YXJnZXRpbmcgb25saW5lIGFkdmVydGlzZW1lbnRzLCByZWNvbW1lbmRhdGlvbiBzeXN0ZW1zIChvZmZlcmVkIGJ5IE5ldGZsaXgsIFlvdVR1YmUgb3IgQW1hem9uKSwgZHJpdmluZyBpbnRlcm5ldCB0cmFmZmljLCB0YXJnZXRlZCBhZHZlcnRpc2luZyAoQWRTZW5zZSwgRmFjZWJvb2spLCB2aXJ0dWFsIGFzc2lzdGFudHMgKHN1Y2ggYXMgU2lyaSBvciBBbGV4YSksIGF1dG9ub21vdXMgdmVoaWNsZXMgKGluY2x1ZGluZyBkcm9uZXMsIEFEQVMgYW5kIHNlbGYtZHJpdmluZyBjYXJzKSwgYXV0b21hdGljIGxhbmd1YWdlIHRyYW5zbGF0aW9uIChNaWNyb3NvZnQgVHJhbnNsYXRvciwgR29vZ2xlIFRyYW5zbGF0ZSksIGZhY2lhbCByZWNvZ25pdGlvbiAoQXBwbGUncyBGYWNlIElEIG9yIE1pY3Jvc29mdCdzIERlZXBGYWNlIGFuZCBHb29nbGUncyBGYWNlTmV0KSBhbmQgaW1hZ2UgbGFiZWxpbmcgKHVzZWQgYnkgRmFjZWJvb2ssIEFwcGxlJ3MgaVBob3RvIGFuZCBUaWtUb2spLiBUaGUgZGVwbG95bWVudCBvZiBBSSBtYXkgYmUgb3ZlcnNlZW4gYnkgYSBDaGllZiBhdXRvbWF0aW9uIG9mZmljZXIgKENBTykuXG5cbkhlYWx0aCBhbmQgbWVkaWNpbmVcbk1haW4gYXJ0aWNsZTogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gaGVhbHRoY2FyZVxuXG5UaGUgYXBwbGljYXRpb24gb2YgQUkgaW4gbWVkaWNpbmUgYW5kIG1lZGljYWwgcmVzZWFyY2ggaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5jcmVhc2UgcGF0aWVudCBjYXJlIGFuZCBxdWFsaXR5IG9mIGxpZmUuWzEzMV0gVGhyb3VnaCB0aGUgbGVucyBvZiB0aGUgSGlwcG9jcmF0aWMgT2F0aCwgbWVkaWNhbCBwcm9mZXNzaW9uYWxzIGFyZSBldGhpY2FsbHkgY29tcGVsbGVkIHRvIHVzZSBBSSwgaWYgYXBwbGljYXRpb25zIGNhbiBtb3JlIGFjY3VyYXRlbHkgZGlhZ25vc2UgYW5kIHRyZWF0IHBhdGllbnRzLlsxMzJdWzEzM11cblxuRm9yIG1lZGljYWwgcmVzZWFyY2gsIEFJIGlzIGFuIGltcG9ydGFudCB0b29sIGZvciBwcm9jZXNzaW5nIGFuZCBpbnRlZ3JhdGluZyBiaWcgZGF0YS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBvcmdhbm9pZCBhbmQgdGlzc3VlIGVuZ2luZWVyaW5nIGRldmVsb3BtZW50IHdoaWNoIHVzZSBtaWNyb3Njb3B5IGltYWdpbmcgYXMgYSBrZXkgdGVjaG5pcXVlIGluIGZhYnJpY2F0aW9uLlsxMzRdIEl0IGhhcyBiZWVuIHN1Z2dlc3RlZCB0aGF0IEFJIGNhbiBvdmVyY29tZSBkaXNjcmVwYW5jaWVzIGluIGZ1bmRpbmcgYWxsb2NhdGVkIHRvIGRpZmZlcmVudCBmaWVsZHMgb2YgcmVzZWFyY2guWzEzNF0gTmV3IEFJIHRvb2xzIGNhbiBkZWVwZW4gdGhlIHVuZGVyc3RhbmRpbmcgb2YgYmlvbWVkaWNhbGx5IHJlbGV2YW50IHBhdGh3YXlzLiBGb3IgZXhhbXBsZSwgQWxwaGFGb2xkIDIgKDIwMjEpIGRlbW9uc3RyYXRlZCB0aGUgYWJpbGl0eSB0byBhcHByb3hpbWF0ZSwgaW4gaG91cnMgcmF0aGVyIHRoYW4gbW9udGhzLCB0aGUgM0Qgc3RydWN0dXJlIG9mIGEgcHJvdGVpbi5bMTM1XSBJbiAyMDIzLCBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBBSS1ndWlkZWQgZHJ1ZyBkaXNjb3ZlcnkgaGVscGVkIGZpbmQgYSBjbGFzcyBvZiBhbnRpYmlvdGljcyBjYXBhYmxlIG9mIGtpbGxpbmcgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYS5bMTM2XSBJbiAyMDI0LCByZXNlYXJjaGVycyB1c2VkIG1hY2hpbmUgbGVhcm5pbmcgdG8gYWNjZWxlcmF0ZSB0aGUgc2VhcmNoIGZvciBQYXJraW5zb24ncyBkaXNlYXNlIGRydWcgdHJlYXRtZW50cy4gVGhlaXIgYWltIHdhcyB0byBpZGVudGlmeSBjb21wb3VuZHMgdGhhdCBibG9jayB0aGUgY2x1bXBpbmcsIG9yIGFnZ3JlZ2F0aW9uLCBvZiBhbHBoYS1zeW51Y2xlaW4gKHRoZSBwcm90ZWluIHRoYXQgY2hhcmFjdGVyaXNlcyBQYXJraW5zb24ncyBkaXNlYXNlKS4gVGhleSB3ZXJlIGFibGUgdG8gc3BlZWQgdXAgdGhlIGluaXRpYWwgc2NyZWVuaW5nIHByb2Nlc3MgdGVuLWZvbGQgYW5kIHJlZHVjZSB0aGUgY29zdCBieSBhIHRob3VzYW5kLWZvbGQuWzEzN11bMTM4XVxuXG5HYW1lc1xuTWFpbiBhcnRpY2xlOiBHYW1lIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkdhbWUgcGxheWluZyBwcm9ncmFtcyBoYXZlIGJlZW4gdXNlZCBzaW5jZSB0aGUgMTk1MHMgdG8gZGVtb25zdHJhdGUgYW5kIHRlc3QgQUkncyBtb3N0IGFkdmFuY2VkIHRlY2huaXF1ZXMuWzEzOV0gRGVlcCBCbHVlIGJlY2FtZSB0aGUgZmlyc3QgY29tcHV0ZXIgY2hlc3MtcGxheWluZyBzeXN0ZW0gdG8gYmVhdCBhIHJlaWduaW5nIHdvcmxkIGNoZXNzIGNoYW1waW9uLCBHYXJyeSBLYXNwYXJvdiwgb24gMTEgTWF5IDE5OTcuWzE0MF0gSW4gMjAxMSwgaW4gYSBKZW9wYXJkeSEgcXVpeiBzaG93IGV4aGliaXRpb24gbWF0Y2gsIElCTSdzIHF1ZXN0aW9uIGFuc3dlcmluZyBzeXN0ZW0sIFdhdHNvbiwgZGVmZWF0ZWQgdGhlIHR3byBncmVhdGVzdCBKZW9wYXJkeSEgY2hhbXBpb25zLCBCcmFkIFJ1dHRlciBhbmQgS2VuIEplbm5pbmdzLCBieSBhIHNpZ25pZmljYW50IG1hcmdpbi5bMTQxXSBJbiBNYXJjaCAyMDE2LCBBbHBoYUdvIHdvbiA0IG91dCBvZiA1IGdhbWVzIG9mIEdvIGluIGEgbWF0Y2ggd2l0aCBHbyBjaGFtcGlvbiBMZWUgU2Vkb2wsIGJlY29taW5nIHRoZSBmaXJzdCBjb21wdXRlciBHby1wbGF5aW5nIHN5c3RlbSB0byBiZWF0IGEgcHJvZmVzc2lvbmFsIEdvIHBsYXllciB3aXRob3V0IGhhbmRpY2Fwcy4gVGhlbiwgaW4gMjAxNywgaXQgZGVmZWF0ZWQgS2UgSmllLCB3aG8gd2FzIHRoZSBiZXN0IEdvIHBsYXllciBpbiB0aGUgd29ybGQuWzE0Ml0gT3RoZXIgcHJvZ3JhbXMgaGFuZGxlIGltcGVyZmVjdC1pbmZvcm1hdGlvbiBnYW1lcywgc3VjaCBhcyB0aGUgcG9rZXItcGxheWluZyBwcm9ncmFtIFBsdXJpYnVzLlsxNDNdIERlZXBNaW5kIGRldmVsb3BlZCBpbmNyZWFzaW5nbHkgZ2VuZXJhbGlzdGljIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmcgbW9kZWxzLCBzdWNoIGFzIHdpdGggTXVaZXJvLCB3aGljaCBjb3VsZCBiZSB0cmFpbmVkIHRvIHBsYXkgY2hlc3MsIEdvLCBvciBBdGFyaSBnYW1lcy5bMTQ0XSBJbiAyMDE5LCBEZWVwTWluZCdzIEFscGhhU3RhciBhY2hpZXZlZCBncmFuZG1hc3RlciBsZXZlbCBpbiBTdGFyQ3JhZnQgSUksIGEgcGFydGljdWxhcmx5IGNoYWxsZW5naW5nIHJlYWwtdGltZSBzdHJhdGVneSBnYW1lIHRoYXQgaW52b2x2ZXMgaW5jb21wbGV0ZSBrbm93bGVkZ2Ugb2Ygd2hhdCBoYXBwZW5zIG9uIHRoZSBtYXAuWzE0NV0gSW4gMjAyMSwgYW4gQUkgYWdlbnQgY29tcGV0ZWQgaW4gYSBQbGF5U3RhdGlvbiBHcmFuIFR1cmlzbW8gY29tcGV0aXRpb24sIHdpbm5pbmcgYWdhaW5zdCBmb3VyIG9mIHRoZSB3b3JsZCdzIGJlc3QgR3JhbiBUdXJpc21vIGRyaXZlcnMgdXNpbmcgZGVlcCByZWluZm9yY2VtZW50IGxlYXJuaW5nLlsxNDZdIEluIDIwMjQsIEdvb2dsZSBEZWVwTWluZCBpbnRyb2R1Y2VkIFNJTUEsIGEgdHlwZSBvZiBBSSBjYXBhYmxlIG9mIGF1dG9ub21vdXNseSBwbGF5aW5nIG5pbmUgcHJldmlvdXNseSB1bnNlZW4gb3Blbi13b3JsZCB2aWRlbyBnYW1lcyBieSBvYnNlcnZpbmcgc2NyZWVuIG91dHB1dCwgYXMgd2VsbCBhcyBleGVjdXRpbmcgc2hvcnQsIHNwZWNpZmljIHRhc2tzIGluIHJlc3BvbnNlIHRvIG5hdHVyYWwgbGFuZ3VhZ2UgaW5zdHJ1Y3Rpb25zLlsxNDddXG5cbk1hdGhlbWF0aWNzXG5cbkxhcmdlIGxhbmd1YWdlIG1vZGVscywgc3VjaCBhcyBHUFQtNCwgR2VtaW5pLCBDbGF1ZGUsIExMYU1hIG9yIE1pc3RyYWwsIGFyZSBpbmNyZWFzaW5nbHkgdXNlZCBpbiBtYXRoZW1hdGljcy4gVGhlc2UgcHJvYmFiaWxpc3RpYyBtb2RlbHMgYXJlIHZlcnNhdGlsZSwgYnV0IGNhbiBhbHNvIHByb2R1Y2Ugd3JvbmcgYW5zd2VycyBpbiB0aGUgZm9ybSBvZiBoYWxsdWNpbmF0aW9ucy4gVGhleSBzb21ldGltZXMgbmVlZCBhIGxhcmdlIGRhdGFiYXNlIG9mIG1hdGhlbWF0aWNhbCBwcm9ibGVtcyB0byBsZWFybiBmcm9tLCBidXQgYWxzbyBtZXRob2RzIHN1Y2ggYXMgc3VwZXJ2aXNlZCBmaW5lLXR1bmluZyBvciB0cmFpbmVkIGNsYXNzaWZpZXJzIHdpdGggaHVtYW4tYW5ub3RhdGVkIGRhdGEgdG8gaW1wcm92ZSBhbnN3ZXJzIGZvciBuZXcgcHJvYmxlbXMgYW5kIGxlYXJuIGZyb20gY29ycmVjdGlvbnMuWzE0OF0gQSBGZWJydWFyeSAyMDI0IHN0dWR5IHNob3dlZCB0aGF0IHRoZSBwZXJmb3JtYW5jZSBvZiBzb21lIGxhbmd1YWdlIG1vZGVscyBmb3IgcmVhc29uaW5nIGNhcGFiaWxpdGllcyBpbiBzb2x2aW5nIG1hdGggcHJvYmxlbXMgbm90IGluY2x1ZGVkIGluIHRoZWlyIHRyYWluaW5nIGRhdGEgd2FzIGxvdywgZXZlbiBmb3IgcHJvYmxlbXMgd2l0aCBvbmx5IG1pbm9yIGRldmlhdGlvbnMgZnJvbSB0cmFpbmVkIGRhdGEuWzE0OV0gT25lIHRlY2huaXF1ZSB0byBpbXByb3ZlIHRoZWlyIHBlcmZvcm1hbmNlIGludm9sdmVzIHRyYWluaW5nIHRoZSBtb2RlbHMgdG8gcHJvZHVjZSBjb3JyZWN0IHJlYXNvbmluZyBzdGVwcywgcmF0aGVyIHRoYW4ganVzdCB0aGUgY29ycmVjdCByZXN1bHQuWzE1MF0gSW4gSmFudWFyeSAyMDI1LCBNaWNyb3NvZnQgcHJvcG9zZWQgdGhlIHRlY2huaXF1ZSByU3Rhci1NYXRoIHRoYXQgbGV2ZXJhZ2VzIE1vbnRlIENhcmxvIHRyZWUgc2VhcmNoIGFuZCBzdGVwLWJ5LXN0ZXAgcmVhc29uaW5nLCBlbmFibGluZyBhIHJlbGF0aXZlbHkgc21hbGwgbGFuZ3VhZ2UgbW9kZWwgbGlrZSBRd2VuLTdCIHRvIHNvbHZlIDUzJSBvZiB0aGUgQUlNRSAyMDI0IGFuZCA5MCUgb2YgdGhlIE1BVEggYmVuY2htYXJrIHByb2JsZW1zLlsxNTFdXG5cbkFsdGVybmF0aXZlbHksIGRlZGljYXRlZCBtb2RlbHMgZm9yIG1hdGhlbWF0aWNhbCBwcm9ibGVtIHNvbHZpbmcgd2l0aCBoaWdoZXIgcHJlY2lzaW9uIGZvciB0aGUgb3V0Y29tZSBpbmNsdWRpbmcgcHJvb2Ygb2YgdGhlb3JlbXMgaGF2ZSBiZWVuIGRldmVsb3BlZCBzdWNoIGFzIEFscGhhVGVuc29yLCBBbHBoYUdlb21ldHJ5IGFuZCBBbHBoYVByb29mIGFsbCBmcm9tIEdvb2dsZSBEZWVwTWluZCxbMTUyXSBMbGVtbWEgZnJvbSBFbGV1dGhlckFJWzE1M10gb3IgSnVsaXVzLlsxNTRdXG5cbldoZW4gbmF0dXJhbCBsYW5ndWFnZSBpcyB1c2VkIHRvIGRlc2NyaWJlIG1hdGhlbWF0aWNhbCBwcm9ibGVtcywgY29udmVydGVycyBjYW4gdHJhbnNmb3JtIHN1Y2ggcHJvbXB0cyBpbnRvIGEgZm9ybWFsIGxhbmd1YWdlIHN1Y2ggYXMgTGVhbiB0byBkZWZpbmUgbWF0aGVtYXRpY2FsIHRhc2tzLlxuXG5Tb21lIG1vZGVscyBoYXZlIGJlZW4gZGV2ZWxvcGVkIHRvIHNvbHZlIGNoYWxsZW5naW5nIHByb2JsZW1zIGFuZCByZWFjaCBnb29kIHJlc3VsdHMgaW4gYmVuY2htYXJrIHRlc3RzLCBvdGhlcnMgdG8gc2VydmUgYXMgZWR1Y2F0aW9uYWwgdG9vbHMgaW4gbWF0aGVtYXRpY3MuWzE1NV1cblxuVG9wb2xvZ2ljYWwgZGVlcCBsZWFybmluZyBpbnRlZ3JhdGVzIHZhcmlvdXMgdG9wb2xvZ2ljYWwgYXBwcm9hY2hlcy5cblxuRmluYW5jZVxuXG5GaW5hbmNlIGlzIG9uZSBvZiB0aGUgZmFzdGVzdCBncm93aW5nIHNlY3RvcnMgd2hlcmUgYXBwbGllZCBBSSB0b29scyBhcmUgYmVpbmcgZGVwbG95ZWQ6IGZyb20gcmV0YWlsIG9ubGluZSBiYW5raW5nIHRvIGludmVzdG1lbnQgYWR2aWNlIGFuZCBpbnN1cmFuY2UsIHdoZXJlIGF1dG9tYXRlZCBcInJvYm90IGFkdmlzZXJzXCIgaGF2ZSBiZWVuIGluIHVzZSBmb3Igc29tZSB5ZWFycy5bMTU2XVxuXG5Xb3JsZCBQZW5zaW9ucyBleHBlcnRzIGxpa2UgTmljb2xhcyBGaXJ6bGkgaW5zaXN0IGl0IG1heSBiZSB0b28gZWFybHkgdG8gc2VlIHRoZSBlbWVyZ2VuY2Ugb2YgaGlnaGx5IGlubm92YXRpdmUgQUktaW5mb3JtZWQgZmluYW5jaWFsIHByb2R1Y3RzIGFuZCBzZXJ2aWNlczogXCJ0aGUgZGVwbG95bWVudCBvZiBBSSB0b29scyB3aWxsIHNpbXBseSBmdXJ0aGVyIGF1dG9tYXRpc2UgdGhpbmdzOiBkZXN0cm95aW5nIHRlbnMgb2YgdGhvdXNhbmRzIG9mIGpvYnMgaW4gYmFua2luZywgZmluYW5jaWFsIHBsYW5uaW5nLCBhbmQgcGVuc2lvbiBhZHZpY2UgaW4gdGhlIHByb2Nlc3MsIGJ1dCBJJ20gbm90IHN1cmUgaXQgd2lsbCB1bmxlYXNoIGEgbmV3IHdhdmUgb2YgW2UuZy4sIHNvcGhpc3RpY2F0ZWRdIHBlbnNpb24gaW5ub3ZhdGlvbi5cIlsxNTddXG5cbk1pbGl0YXJ5XG5NYWluIGFydGljbGU6IE1pbGl0YXJ5IGFwcGxpY2F0aW9ucyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuXG5WYXJpb3VzIGNvdW50cmllcyBhcmUgZGVwbG95aW5nIEFJIG1pbGl0YXJ5IGFwcGxpY2F0aW9ucy5bMTU4XSBUaGUgbWFpbiBhcHBsaWNhdGlvbnMgZW5oYW5jZSBjb21tYW5kIGFuZCBjb250cm9sLCBjb21tdW5pY2F0aW9ucywgc2Vuc29ycywgaW50ZWdyYXRpb24gYW5kIGludGVyb3BlcmFiaWxpdHkuWzE1OV0gUmVzZWFyY2ggaXMgdGFyZ2V0aW5nIGludGVsbGlnZW5jZSBjb2xsZWN0aW9uIGFuZCBhbmFseXNpcywgbG9naXN0aWNzLCBjeWJlciBvcGVyYXRpb25zLCBpbmZvcm1hdGlvbiBvcGVyYXRpb25zLCBhbmQgc2VtaWF1dG9ub21vdXMgYW5kIGF1dG9ub21vdXMgdmVoaWNsZXMuWzE1OF0gQUkgdGVjaG5vbG9naWVzIGVuYWJsZSBjb29yZGluYXRpb24gb2Ygc2Vuc29ycyBhbmQgZWZmZWN0b3JzLCB0aHJlYXQgZGV0ZWN0aW9uIGFuZCBpZGVudGlmaWNhdGlvbiwgbWFya2luZyBvZiBlbmVteSBwb3NpdGlvbnMsIHRhcmdldCBhY3F1aXNpdGlvbiwgY29vcmRpbmF0aW9uIGFuZCBkZWNvbmZsaWN0aW9uIG9mIGRpc3RyaWJ1dGVkIEpvaW50IEZpcmVzIGJldHdlZW4gbmV0d29ya2VkIGNvbWJhdCB2ZWhpY2xlcyBpbnZvbHZpbmcgbWFubmVkIGFuZCB1bm1hbm5lZCB0ZWFtcy5bMTU5XVxuXG5BSSBoYXMgYmVlbiB1c2VkIGluIG1pbGl0YXJ5IG9wZXJhdGlvbnMgaW4gSXJhcSwgU3lyaWEsIElzcmFlbCBhbmQgVWtyYWluZS5bMTU4XVsxNjBdWzE2MV1bMTYyXVxuXG5HZW5lcmF0aXZlIEFJXG5WaW5jZW50IHZhbiBHb2doIGluIHdhdGVyY29sb3VyIGNyZWF0ZWQgYnkgZ2VuZXJhdGl2ZSBBSSBzb2Z0d2FyZVxuVGhlc2UgcGFyYWdyYXBocyBhcmUgYW4gZXhjZXJwdCBmcm9tIEdlbmVyYXRpdmUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuW2VkaXRdXG5cbkdlbmVyYXRpdmUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKGdlbmVyYXRpdmUgQUksIEdlbkFJLFsxNjNdIG9yIEdBSSkgaXMgYSBzdWJzZXQgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgdGhhdCB1c2VzIGdlbmVyYXRpdmUgbW9kZWxzIHRvIHByb2R1Y2UgdGV4dCwgaW1hZ2VzLCB2aWRlb3MsIG9yIG90aGVyIGZvcm1zIG9mIGRhdGEuWzE2NF1bMTY1XVsxNjZdIFRoZXNlIG1vZGVscyBsZWFybiB0aGUgdW5kZXJseWluZyBwYXR0ZXJucyBhbmQgc3RydWN0dXJlcyBvZiB0aGVpciB0cmFpbmluZyBkYXRhIGFuZCB1c2UgdGhlbSB0byBwcm9kdWNlIG5ldyBkYXRhWzE2N11bMTY4XSBiYXNlZCBvbiB0aGUgaW5wdXQsIHdoaWNoIG9mdGVuIGNvbWVzIGluIHRoZSBmb3JtIG9mIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvbXB0cy5bMTY5XVsxNzBdXG5cbkltcHJvdmVtZW50cyBpbiB0cmFuc2Zvcm1lci1iYXNlZCBkZWVwIG5ldXJhbCBuZXR3b3JrcywgcGFydGljdWxhcmx5IGxhcmdlIGxhbmd1YWdlIG1vZGVscyAoTExNcyksIGVuYWJsZWQgYW4gQUkgYm9vbSBvZiBnZW5lcmF0aXZlIEFJIHN5c3RlbXMgaW4gdGhlIDIwMjBzLiBUaGVzZSBpbmNsdWRlIGNoYXRib3RzIHN1Y2ggYXMgQ2hhdEdQVCwgQ29waWxvdCwgR2VtaW5pLCBhbmQgTExhTUE7IHRleHQtdG8taW1hZ2UgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW1hZ2UgZ2VuZXJhdGlvbiBzeXN0ZW1zIHN1Y2ggYXMgU3RhYmxlIERpZmZ1c2lvbiwgTWlkam91cm5leSwgYW5kIERBTEwtRTsgYW5kIHRleHQtdG8tdmlkZW8gQUkgZ2VuZXJhdG9ycyBzdWNoIGFzIFNvcmEuWzE3MV1bMTcyXVsxNzNdWzE3NF0gQ29tcGFuaWVzIHN1Y2ggYXMgT3BlbkFJLCBBbnRocm9waWMsIE1pY3Jvc29mdCwgR29vZ2xlLCBhbmQgQmFpZHUgYXMgd2VsbCBhcyBudW1lcm91cyBzbWFsbGVyIGZpcm1zIGhhdmUgZGV2ZWxvcGVkIGdlbmVyYXRpdmUgQUkgbW9kZWxzLlsxNjldWzE3NV1bMTc2XVxuXG5HZW5lcmF0aXZlIEFJIGhhcyB1c2VzIGFjcm9zcyBhIHdpZGUgcmFuZ2Ugb2YgaW5kdXN0cmllcywgaW5jbHVkaW5nIHNvZnR3YXJlIGRldmVsb3BtZW50LCBoZWFsdGhjYXJlLCBmaW5hbmNlLCBlbnRlcnRhaW5tZW50LCBjdXN0b21lciBzZXJ2aWNlLFsxNzddIHNhbGVzIGFuZCBtYXJrZXRpbmcsWzE3OF0gYXJ0LCB3cml0aW5nLFsxNzldIGZhc2hpb24sWzE4MF0gYW5kIHByb2R1Y3QgZGVzaWduLlsxODFdIEhvd2V2ZXIsIGNvbmNlcm5zIGhhdmUgYmVlbiByYWlzZWQgYWJvdXQgdGhlIHBvdGVudGlhbCBtaXN1c2Ugb2YgZ2VuZXJhdGl2ZSBBSSBzdWNoIGFzIGN5YmVyY3JpbWUsIHRoZSB1c2Ugb2YgZmFrZSBuZXdzIG9yIGRlZXBmYWtlcyB0byBkZWNlaXZlIG9yIG1hbmlwdWxhdGUgcGVvcGxlLCBhbmQgdGhlIG1hc3MgcmVwbGFjZW1lbnQgb2YgaHVtYW4gam9icy5bMTgyXVsxODNdIEludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXcgY29uY2VybnMgYWxzbyBleGlzdCBhcm91bmQgZ2VuZXJhdGl2ZSBtb2RlbHMgdGhhdCBhcmUgdHJhaW5lZCBvbiBhbmQgZW11bGF0ZSBjb3B5cmlnaHRlZCB3b3JrcyBvZiBhcnQuWzE4NF1cbkFnZW50c1xuXG5BcnRpZmljaWFsIGludGVsbGlnZW50IChBSSkgYWdlbnRzIGFyZSBzb2Z0d2FyZSBlbnRpdGllcyBkZXNpZ25lZCB0byBwZXJjZWl2ZSB0aGVpciBlbnZpcm9ubWVudCwgbWFrZSBkZWNpc2lvbnMsIGFuZCB0YWtlIGFjdGlvbnMgYXV0b25vbW91c2x5IHRvIGFjaGlldmUgc3BlY2lmaWMgZ29hbHMuIFRoZXNlIGFnZW50cyBjYW4gaW50ZXJhY3Qgd2l0aCB1c2VycywgdGhlaXIgZW52aXJvbm1lbnQsIG9yIG90aGVyIGFnZW50cy4gQUkgYWdlbnRzIGFyZSB1c2VkIGluIHZhcmlvdXMgYXBwbGljYXRpb25zLCBpbmNsdWRpbmcgdmlydHVhbCBhc3Npc3RhbnRzLCBjaGF0Ym90cywgYXV0b25vbW91cyB2ZWhpY2xlcywgZ2FtZS1wbGF5aW5nIHN5c3RlbXMsIGFuZCBpbmR1c3RyaWFsIHJvYm90aWNzLiBBSSBhZ2VudHMgb3BlcmF0ZSB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZWlyIHByb2dyYW1taW5nLCBhdmFpbGFibGUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMsIGFuZCBoYXJkd2FyZSBsaW1pdGF0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGFyZSByZXN0cmljdGVkIHRvIHBlcmZvcm1pbmcgdGFza3Mgd2l0aGluIHRoZWlyIGRlZmluZWQgc2NvcGUgYW5kIGhhdmUgZmluaXRlIG1lbW9yeSBhbmQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMuIEluIHJlYWwtd29ybGQgYXBwbGljYXRpb25zLCBBSSBhZ2VudHMgb2Z0ZW4gZmFjZSB0aW1lIGNvbnN0cmFpbnRzIGZvciBkZWNpc2lvbi1tYWtpbmcgYW5kIGFjdGlvbiBleGVjdXRpb24uIE1hbnkgQUkgYWdlbnRzIGluY29ycG9yYXRlIGxlYXJuaW5nIGFsZ29yaXRobXMsIGVuYWJsaW5nIHRoZW0gdG8gaW1wcm92ZSB0aGVpciBwZXJmb3JtYW5jZSBvdmVyIHRpbWUgdGhyb3VnaCBleHBlcmllbmNlIG9yIHRyYWluaW5nLiBVc2luZyBtYWNoaW5lIGxlYXJuaW5nLCBBSSBhZ2VudHMgY2FuIGFkYXB0IHRvIG5ldyBzaXR1YXRpb25zIGFuZCBvcHRpbWlzZSB0aGVpciBiZWhhdmlvdXIgZm9yIHRoZWlyIGRlc2lnbmF0ZWQgdGFza3MuWzE4NV1bMTg2XVsxODddXG5cblNleHVhbGl0eVxuXG5BcHBsaWNhdGlvbnMgb2YgQUkgaW4gdGhpcyBkb21haW4gaW5jbHVkZSBBSS1lbmFibGVkIG1lbnN0cnVhdGlvbiBhbmQgZmVydGlsaXR5IHRyYWNrZXJzIHRoYXQgYW5hbHl6ZSB1c2VyIGRhdGEgdG8gb2ZmZXIgcHJlZGljdGlvbixbMTg4XSBBSS1pbnRlZ3JhdGVkIHNleCB0b3lzIChlLmcuLCB0ZWxlZGlsZG9uaWNzKSxbMTg5XSBBSS1nZW5lcmF0ZWQgc2V4dWFsIGVkdWNhdGlvbiBjb250ZW50LFsxOTBdIGFuZCBBSSBhZ2VudHMgdGhhdCBzaW11bGF0ZSBzZXh1YWwgYW5kIHJvbWFudGljIHBhcnRuZXJzIChlLmcuLCBSZXBsaWthKS5bMTkxXSBBSSBpcyBhbHNvIHVzZWQgZm9yIHRoZSBwcm9kdWN0aW9uIG9mIG5vbi1jb25zZW5zdWFsIGRlZXBmYWtlIHBvcm5vZ3JhcGh5LCByYWlzaW5nIHNpZ25pZmljYW50IGV0aGljYWwgYW5kIGxlZ2FsIGNvbmNlcm5zLlsxOTJdXG5cbkFJIHRlY2hub2xvZ2llcyBoYXZlIGFsc28gYmVlbiB1c2VkIHRvIGF0dGVtcHQgdG8gaWRlbnRpZnkgb25saW5lIGdlbmRlci1iYXNlZCB2aW9sZW5jZSBhbmQgb25saW5lIHNleHVhbCBncm9vbWluZyBvZiBtaW5vcnMuWzE5M11bMTk0XVxuXG5PdGhlciBpbmR1c3RyeS1zcGVjaWZpYyB0YXNrc1xuXG5UaGVyZSBhcmUgYWxzbyB0aG91c2FuZHMgb2Ygc3VjY2Vzc2Z1bCBBSSBhcHBsaWNhdGlvbnMgdXNlZCB0byBzb2x2ZSBzcGVjaWZpYyBwcm9ibGVtcyBmb3Igc3BlY2lmaWMgaW5kdXN0cmllcyBvciBpbnN0aXR1dGlvbnMuIEluIGEgMjAxNyBzdXJ2ZXksIG9uZSBpbiBmaXZlIGNvbXBhbmllcyByZXBvcnRlZCBoYXZpbmcgaW5jb3Jwb3JhdGVkIFwiQUlcIiBpbiBzb21lIG9mZmVyaW5ncyBvciBwcm9jZXNzZXMuWzE5NV0gQSBmZXcgZXhhbXBsZXMgYXJlIGVuZXJneSBzdG9yYWdlLCBtZWRpY2FsIGRpYWdub3NpcywgbWlsaXRhcnkgbG9naXN0aWNzLCBhcHBsaWNhdGlvbnMgdGhhdCBwcmVkaWN0IHRoZSByZXN1bHQgb2YganVkaWNpYWwgZGVjaXNpb25zLCBmb3JlaWduIHBvbGljeSwgb3Igc3VwcGx5IGNoYWluIG1hbmFnZW1lbnQuXG5cbkFJIGFwcGxpY2F0aW9ucyBmb3IgZXZhY3VhdGlvbiBhbmQgZGlzYXN0ZXIgbWFuYWdlbWVudCBhcmUgZ3Jvd2luZy4gQUkgaGFzIGJlZW4gdXNlZCB0byBpbnZlc3RpZ2F0ZSBpZiBhbmQgaG93IHBlb3BsZSBldmFjdWF0ZWQgaW4gbGFyZ2Ugc2NhbGUgYW5kIHNtYWxsIHNjYWxlIGV2YWN1YXRpb25zIHVzaW5nIGhpc3RvcmljYWwgZGF0YSBmcm9tIEdQUywgdmlkZW9zIG9yIHNvY2lhbCBtZWRpYS4gRnVydGhlciwgQUkgY2FuIHByb3ZpZGUgcmVhbCB0aW1lIGluZm9ybWF0aW9uIG9uIHRoZSByZWFsIHRpbWUgZXZhY3VhdGlvbiBjb25kaXRpb25zLlsxOTZdWzE5N11bMTk4XVxuXG5JbiBhZ3JpY3VsdHVyZSwgQUkgaGFzIGhlbHBlZCBmYXJtZXJzIGlkZW50aWZ5IGFyZWFzIHRoYXQgbmVlZCBpcnJpZ2F0aW9uLCBmZXJ0aWxpemF0aW9uLCBwZXN0aWNpZGUgdHJlYXRtZW50cyBvciBpbmNyZWFzaW5nIHlpZWxkLiBBZ3Jvbm9taXN0cyB1c2UgQUkgdG8gY29uZHVjdCByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQuIEFJIGhhcyBiZWVuIHVzZWQgdG8gcHJlZGljdCB0aGUgcmlwZW5pbmcgdGltZSBmb3IgY3JvcHMgc3VjaCBhcyB0b21hdG9lcywgbW9uaXRvciBzb2lsIG1vaXN0dXJlLCBvcGVyYXRlIGFncmljdWx0dXJhbCByb2JvdHMsIGNvbmR1Y3QgcHJlZGljdGl2ZSBhbmFseXRpY3MsIGNsYXNzaWZ5IGxpdmVzdG9jayBwaWcgY2FsbCBlbW90aW9ucywgYXV0b21hdGUgZ3JlZW5ob3VzZXMsIGRldGVjdCBkaXNlYXNlcyBhbmQgcGVzdHMsIGFuZCBzYXZlIHdhdGVyLlxuXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZSBpcyB1c2VkIGluIGFzdHJvbm9teSB0byBhbmFseXplIGluY3JlYXNpbmcgYW1vdW50cyBvZiBhdmFpbGFibGUgZGF0YSBhbmQgYXBwbGljYXRpb25zLCBtYWlubHkgZm9yIFwiY2xhc3NpZmljYXRpb24sIHJlZ3Jlc3Npb24sIGNsdXN0ZXJpbmcsIGZvcmVjYXN0aW5nLCBnZW5lcmF0aW9uLCBkaXNjb3ZlcnksIGFuZCB0aGUgZGV2ZWxvcG1lbnQgb2YgbmV3IHNjaWVudGlmaWMgaW5zaWdodHMuXCIgRm9yIGV4YW1wbGUsIGl0IGlzIHVzZWQgZm9yIGRpc2NvdmVyaW5nIGV4b3BsYW5ldHMsIGZvcmVjYXN0aW5nIHNvbGFyIGFjdGl2aXR5LCBhbmQgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBzaWduYWxzIGFuZCBpbnN0cnVtZW50YWwgZWZmZWN0cyBpbiBncmF2aXRhdGlvbmFsIHdhdmUgYXN0cm9ub215LiBBZGRpdGlvbmFsbHksIGl0IGNvdWxkIGJlIHVzZWQgZm9yIGFjdGl2aXRpZXMgaW4gc3BhY2UsIHN1Y2ggYXMgc3BhY2UgZXhwbG9yYXRpb24sIGluY2x1ZGluZyB0aGUgYW5hbHlzaXMgb2YgZGF0YSBmcm9tIHNwYWNlIG1pc3Npb25zLCByZWFsLXRpbWUgc2NpZW5jZSBkZWNpc2lvbnMgb2Ygc3BhY2VjcmFmdCwgc3BhY2UgZGVicmlzIGF2b2lkYW5jZSwgYW5kIG1vcmUgYXV0b25vbW91cyBvcGVyYXRpb24uXG5cbkR1cmluZyB0aGUgMjAyNCBJbmRpYW4gZWxlY3Rpb25zLCBVUyQ1MCBtaWxsaW9ucyB3YXMgc3BlbnQgb24gYXV0aG9yaXplZCBBSS1nZW5lcmF0ZWQgY29udGVudCwgbm90YWJseSBieSBjcmVhdGluZyBkZWVwZmFrZXMgb2YgYWxsaWVkIChpbmNsdWRpbmcgc29tZXRpbWVzIGRlY2Vhc2VkKSBwb2xpdGljaWFucyB0byBiZXR0ZXIgZW5nYWdlIHdpdGggdm90ZXJzLCBhbmQgYnkgdHJhbnNsYXRpbmcgc3BlZWNoZXMgdG8gdmFyaW91cyBsb2NhbCBsYW5ndWFnZXMuWzE5OV1cblxuRXRoaWNzXG5NYWluIGFydGljbGU6IEV0aGljcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuXG5BSSBoYXMgcG90ZW50aWFsIGJlbmVmaXRzIGFuZCBwb3RlbnRpYWwgcmlza3MuWzIwMF0gQUkgbWF5IGJlIGFibGUgdG8gYWR2YW5jZSBzY2llbmNlIGFuZCBmaW5kIHNvbHV0aW9ucyBmb3Igc2VyaW91cyBwcm9ibGVtczogRGVtaXMgSGFzc2FiaXMgb2YgRGVlcE1pbmQgaG9wZXMgdG8gXCJzb2x2ZSBpbnRlbGxpZ2VuY2UsIGFuZCB0aGVuIHVzZSB0aGF0IHRvIHNvbHZlIGV2ZXJ5dGhpbmcgZWxzZVwiLlsyMDFdIEhvd2V2ZXIsIGFzIHRoZSB1c2Ugb2YgQUkgaGFzIGJlY29tZSB3aWRlc3ByZWFkLCBzZXZlcmFsIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGFuZCByaXNrcyBoYXZlIGJlZW4gaWRlbnRpZmllZC5bMjAyXSBJbi1wcm9kdWN0aW9uIHN5c3RlbXMgY2FuIHNvbWV0aW1lcyBub3QgZmFjdG9yIGV0aGljcyBhbmQgYmlhcyBpbnRvIHRoZWlyIEFJIHRyYWluaW5nIHByb2Nlc3NlcywgZXNwZWNpYWxseSB3aGVuIHRoZSBBSSBhbGdvcml0aG1zIGFyZSBpbmhlcmVudGx5IHVuZXhwbGFpbmFibGUgaW4gZGVlcCBsZWFybmluZy5bMjAzXVxuXG5SaXNrcyBhbmQgaGFybVxuUHJpdmFjeSBhbmQgY29weXJpZ2h0XG5GdXJ0aGVyIGluZm9ybWF0aW9uOiBJbmZvcm1hdGlvbiBwcml2YWN5IGFuZCBBcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgY29weXJpZ2h0XG5cbk1hY2hpbmUgbGVhcm5pbmcgYWxnb3JpdGhtcyByZXF1aXJlIGxhcmdlIGFtb3VudHMgb2YgZGF0YS4gVGhlIHRlY2huaXF1ZXMgdXNlZCB0byBhY3F1aXJlIHRoaXMgZGF0YSBoYXZlIHJhaXNlZCBjb25jZXJucyBhYm91dCBwcml2YWN5LCBzdXJ2ZWlsbGFuY2UgYW5kIGNvcHlyaWdodC5cblxuQUktcG93ZXJlZCBkZXZpY2VzIGFuZCBzZXJ2aWNlcywgc3VjaCBhcyB2aXJ0dWFsIGFzc2lzdGFudHMgYW5kIElvVCBwcm9kdWN0cywgY29udGludW91c2x5IGNvbGxlY3QgcGVyc29uYWwgaW5mb3JtYXRpb24sIHJhaXNpbmcgY29uY2VybnMgYWJvdXQgaW50cnVzaXZlIGRhdGEgZ2F0aGVyaW5nIGFuZCB1bmF1dGhvcml6ZWQgYWNjZXNzIGJ5IHRoaXJkIHBhcnRpZXMuIFRoZSBsb3NzIG9mIHByaXZhY3kgaXMgZnVydGhlciBleGFjZXJiYXRlZCBieSBBSSdzIGFiaWxpdHkgdG8gcHJvY2VzcyBhbmQgY29tYmluZSB2YXN0IGFtb3VudHMgb2YgZGF0YSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHN1cnZlaWxsYW5jZSBzb2NpZXR5IHdoZXJlIGluZGl2aWR1YWwgYWN0aXZpdGllcyBhcmUgY29uc3RhbnRseSBtb25pdG9yZWQgYW5kIGFuYWx5emVkIHdpdGhvdXQgYWRlcXVhdGUgc2FmZWd1YXJkcyBvciB0cmFuc3BhcmVuY3kuXG5cblNlbnNpdGl2ZSB1c2VyIGRhdGEgY29sbGVjdGVkIG1heSBpbmNsdWRlIG9ubGluZSBhY3Rpdml0eSByZWNvcmRzLCBnZW9sb2NhdGlvbiBkYXRhLCB2aWRlbywgb3IgYXVkaW8uWzIwNF0gRm9yIGV4YW1wbGUsIGluIG9yZGVyIHRvIGJ1aWxkIHNwZWVjaCByZWNvZ25pdGlvbiBhbGdvcml0aG1zLCBBbWF6b24gaGFzIHJlY29yZGVkIG1pbGxpb25zIG9mIHByaXZhdGUgY29udmVyc2F0aW9ucyBhbmQgYWxsb3dlZCB0ZW1wb3Jhcnkgd29ya2VycyB0byBsaXN0ZW4gdG8gYW5kIHRyYW5zY3JpYmUgc29tZSBvZiB0aGVtLlsyMDVdIE9waW5pb25zIGFib3V0IHRoaXMgd2lkZXNwcmVhZCBzdXJ2ZWlsbGFuY2UgcmFuZ2UgZnJvbSB0aG9zZSB3aG8gc2VlIGl0IGFzIGEgbmVjZXNzYXJ5IGV2aWwgdG8gdGhvc2UgZm9yIHdob20gaXQgaXMgY2xlYXJseSB1bmV0aGljYWwgYW5kIGEgdmlvbGF0aW9uIG9mIHRoZSByaWdodCB0byBwcml2YWN5LlsyMDZdXG5cbkFJIGRldmVsb3BlcnMgYXJndWUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBkZWxpdmVyIHZhbHVhYmxlIGFwcGxpY2F0aW9ucyBhbmQgaGF2ZSBkZXZlbG9wZWQgc2V2ZXJhbCB0ZWNobmlxdWVzIHRoYXQgYXR0ZW1wdCB0byBwcmVzZXJ2ZSBwcml2YWN5IHdoaWxlIHN0aWxsIG9idGFpbmluZyB0aGUgZGF0YSwgc3VjaCBhcyBkYXRhIGFnZ3JlZ2F0aW9uLCBkZS1pZGVudGlmaWNhdGlvbiBhbmQgZGlmZmVyZW50aWFsIHByaXZhY3kuWzIwN10gU2luY2UgMjAxNiwgc29tZSBwcml2YWN5IGV4cGVydHMsIHN1Y2ggYXMgQ3ludGhpYSBEd29yaywgaGF2ZSBiZWd1biB0byB2aWV3IHByaXZhY3kgaW4gdGVybXMgb2YgZmFpcm5lc3MuIEJyaWFuIENocmlzdGlhbiB3cm90ZSB0aGF0IGV4cGVydHMgaGF2ZSBwaXZvdGVkIFwiZnJvbSB0aGUgcXVlc3Rpb24gb2YgJ3doYXQgdGhleSBrbm93JyB0byB0aGUgcXVlc3Rpb24gb2YgJ3doYXQgdGhleSdyZSBkb2luZyB3aXRoIGl0Jy5cIlsyMDhdXG5cbkdlbmVyYXRpdmUgQUkgaXMgb2Z0ZW4gdHJhaW5lZCBvbiB1bmxpY2Vuc2VkIGNvcHlyaWdodGVkIHdvcmtzLCBpbmNsdWRpbmcgaW4gZG9tYWlucyBzdWNoIGFzIGltYWdlcyBvciBjb21wdXRlciBjb2RlOyB0aGUgb3V0cHV0IGlzIHRoZW4gdXNlZCB1bmRlciB0aGUgcmF0aW9uYWxlIG9mIFwiZmFpciB1c2VcIi4gRXhwZXJ0cyBkaXNhZ3JlZSBhYm91dCBob3cgd2VsbCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgcmF0aW9uYWxlIHdpbGwgaG9sZCB1cCBpbiBjb3VydHMgb2YgbGF3OyByZWxldmFudCBmYWN0b3JzIG1heSBpbmNsdWRlIFwidGhlIHB1cnBvc2UgYW5kIGNoYXJhY3RlciBvZiB0aGUgdXNlIG9mIHRoZSBjb3B5cmlnaHRlZCB3b3JrXCIgYW5kIFwidGhlIGVmZmVjdCB1cG9uIHRoZSBwb3RlbnRpYWwgbWFya2V0IGZvciB0aGUgY29weXJpZ2h0ZWQgd29ya1wiLlsyMDldWzIxMF0gV2Vic2l0ZSBvd25lcnMgd2hvIGRvIG5vdCB3aXNoIHRvIGhhdmUgdGhlaXIgY29udGVudCBzY3JhcGVkIGNhbiBpbmRpY2F0ZSBpdCBpbiBhIFwicm9ib3RzLnR4dFwiIGZpbGUuWzIxMV0gSW4gMjAyMywgbGVhZGluZyBhdXRob3JzIChpbmNsdWRpbmcgSm9obiBHcmlzaGFtIGFuZCBKb25hdGhhbiBGcmFuemVuKSBzdWVkIEFJIGNvbXBhbmllcyBmb3IgdXNpbmcgdGhlaXIgd29yayB0byB0cmFpbiBnZW5lcmF0aXZlIEFJLlsyMTJdWzIxM10gQW5vdGhlciBkaXNjdXNzZWQgYXBwcm9hY2ggaXMgdG8gZW52aXNpb24gYSBzZXBhcmF0ZSBzdWkgZ2VuZXJpcyBzeXN0ZW0gb2YgcHJvdGVjdGlvbiBmb3IgY3JlYXRpb25zIGdlbmVyYXRlZCBieSBBSSB0byBlbnN1cmUgZmFpciBhdHRyaWJ1dGlvbiBhbmQgY29tcGVuc2F0aW9uIGZvciBodW1hbiBhdXRob3JzLlsyMTRdXG5cbkRvbWluYW5jZSBieSB0ZWNoIGdpYW50c1xuXG5UaGUgY29tbWVyY2lhbCBBSSBzY2VuZSBpcyBkb21pbmF0ZWQgYnkgQmlnIFRlY2ggY29tcGFuaWVzIHN1Y2ggYXMgQWxwaGFiZXQgSW5jLiwgQW1hem9uLCBBcHBsZSBJbmMuLCBNZXRhIFBsYXRmb3JtcywgYW5kIE1pY3Jvc29mdC5bMjE1XVsyMTZdWzIxN10gU29tZSBvZiB0aGVzZSBwbGF5ZXJzIGFscmVhZHkgb3duIHRoZSB2YXN0IG1ham9yaXR5IG9mIGV4aXN0aW5nIGNsb3VkIGluZnJhc3RydWN0dXJlIGFuZCBjb21wdXRpbmcgcG93ZXIgZnJvbSBkYXRhIGNlbnRlcnMsIGFsbG93aW5nIHRoZW0gdG8gZW50cmVuY2ggZnVydGhlciBpbiB0aGUgbWFya2V0cGxhY2UuWzIxOF1bMjE5XVxuXG5Qb3dlciBuZWVkcyBhbmQgZW52aXJvbm1lbnRhbCBpbXBhY3RzXG5TZWUgYWxzbzogRW52aXJvbm1lbnRhbCBpbXBhY3RzIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkluIEphbnVhcnkgMjAyNCwgdGhlIEludGVybmF0aW9uYWwgRW5lcmd5IEFnZW5jeSAoSUVBKSByZWxlYXNlZCBFbGVjdHJpY2l0eSAyMDI0LCBBbmFseXNpcyBhbmQgRm9yZWNhc3QgdG8gMjAyNiwgZm9yZWNhc3RpbmcgZWxlY3RyaWMgcG93ZXIgdXNlLlsyMjBdIFRoaXMgaXMgdGhlIGZpcnN0IElFQSByZXBvcnQgdG8gbWFrZSBwcm9qZWN0aW9ucyBmb3IgZGF0YSBjZW50ZXJzIGFuZCBwb3dlciBjb25zdW1wdGlvbiBmb3IgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIGNyeXB0b2N1cnJlbmN5LiBUaGUgcmVwb3J0IHN0YXRlcyB0aGF0IHBvd2VyIGRlbWFuZCBmb3IgdGhlc2UgdXNlcyBtaWdodCBkb3VibGUgYnkgMjAyNiwgd2l0aCBhZGRpdGlvbmFsIGVsZWN0cmljIHBvd2VyIHVzYWdlIGVxdWFsIHRvIGVsZWN0cmljaXR5IHVzZWQgYnkgdGhlIHdob2xlIEphcGFuZXNlIG5hdGlvbi5bMjIxXVxuXG5Qcm9kaWdpb3VzIHBvd2VyIGNvbnN1bXB0aW9uIGJ5IEFJIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgZ3Jvd3RoIG9mIGZvc3NpbCBmdWVscyB1c2UsIGFuZCBtaWdodCBkZWxheSBjbG9zaW5ncyBvZiBvYnNvbGV0ZSwgY2FyYm9uLWVtaXR0aW5nIGNvYWwgZW5lcmd5IGZhY2lsaXRpZXMuIFRoZXJlIGlzIGEgZmV2ZXJpc2ggcmlzZSBpbiB0aGUgY29uc3RydWN0aW9uIG9mIGRhdGEgY2VudGVycyB0aHJvdWdob3V0IHRoZSBVUywgbWFraW5nIGxhcmdlIHRlY2hub2xvZ3kgZmlybXMgKGUuZy4sIE1pY3Jvc29mdCwgTWV0YSwgR29vZ2xlLCBBbWF6b24pIGludG8gdm9yYWNpb3VzIGNvbnN1bWVycyBvZiBlbGVjdHJpYyBwb3dlci4gUHJvamVjdGVkIGVsZWN0cmljIGNvbnN1bXB0aW9uIGlzIHNvIGltbWVuc2UgdGhhdCB0aGVyZSBpcyBjb25jZXJuIHRoYXQgaXQgd2lsbCBiZSBmdWxmaWxsZWQgbm8gbWF0dGVyIHRoZSBzb3VyY2UuIEEgQ2hhdEdQVCBzZWFyY2ggaW52b2x2ZXMgdGhlIHVzZSBvZiAxMCB0aW1lcyB0aGUgZWxlY3RyaWNhbCBlbmVyZ3kgYXMgYSBHb29nbGUgc2VhcmNoLiBUaGUgbGFyZ2UgZmlybXMgYXJlIGluIGhhc3RlIHRvIGZpbmQgcG93ZXIgc291cmNlcyDigJMgZnJvbSBudWNsZWFyIGVuZXJneSB0byBnZW90aGVybWFsIHRvIGZ1c2lvbi4gVGhlIHRlY2ggZmlybXMgYXJndWUgdGhhdCDigJMgaW4gdGhlIGxvbmcgdmlldyDigJMgQUkgd2lsbCBiZSBldmVudHVhbGx5IGtpbmRlciB0byB0aGUgZW52aXJvbm1lbnQsIGJ1dCB0aGV5IG5lZWQgdGhlIGVuZXJneSBub3cuIEFJIG1ha2VzIHRoZSBwb3dlciBncmlkIG1vcmUgZWZmaWNpZW50IGFuZCBcImludGVsbGlnZW50XCIsIHdpbGwgYXNzaXN0IGluIHRoZSBncm93dGggb2YgbnVjbGVhciBwb3dlciwgYW5kIHRyYWNrIG92ZXJhbGwgY2FyYm9uIGVtaXNzaW9ucywgYWNjb3JkaW5nIHRvIHRlY2hub2xvZ3kgZmlybXMuWzIyMl1cblxuQSAyMDI0IEdvbGRtYW4gU2FjaHMgUmVzZWFyY2ggUGFwZXIsIEFJIERhdGEgQ2VudGVycyBhbmQgdGhlIENvbWluZyBVUyBQb3dlciBEZW1hbmQgU3VyZ2UsIGZvdW5kIFwiVVMgcG93ZXIgZGVtYW5kIChpcykgbGlrZWx5IHRvIGV4cGVyaWVuY2UgZ3Jvd3RoIG5vdCBzZWVuIGluIGEgZ2VuZXJhdGlvbi4uLi5cIiBhbmQgZm9yZWNhc3RzIHRoYXQsIGJ5IDIwMzAsIFVTIGRhdGEgY2VudGVycyB3aWxsIGNvbnN1bWUgOCUgb2YgVVMgcG93ZXIsIGFzIG9wcG9zZWQgdG8gMyUgaW4gMjAyMiwgcHJlc2FnaW5nIGdyb3d0aCBmb3IgdGhlIGVsZWN0cmljYWwgcG93ZXIgZ2VuZXJhdGlvbiBpbmR1c3RyeSBieSBhIHZhcmlldHkgb2YgbWVhbnMuWzIyM10gRGF0YSBjZW50ZXJzJyBuZWVkIGZvciBtb3JlIGFuZCBtb3JlIGVsZWN0cmljYWwgcG93ZXIgaXMgc3VjaCB0aGF0IHRoZXkgbWlnaHQgbWF4IG91dCB0aGUgZWxlY3RyaWNhbCBncmlkLiBUaGUgQmlnIFRlY2ggY29tcGFuaWVzIGNvdW50ZXIgdGhhdCBBSSBjYW4gYmUgdXNlZCB0byBtYXhpbWl6ZSB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIGdyaWQgYnkgYWxsLlsyMjRdXG5cbkluIDIwMjQsIHRoZSBXYWxsIFN0cmVldCBKb3VybmFsIHJlcG9ydGVkIHRoYXQgYmlnIEFJIGNvbXBhbmllcyBoYXZlIGJlZ3VuIG5lZ290aWF0aW9ucyB3aXRoIHRoZSBVUyBudWNsZWFyIHBvd2VyIHByb3ZpZGVycyB0byBwcm92aWRlIGVsZWN0cmljaXR5IHRvIHRoZSBkYXRhIGNlbnRlcnMuIEluIE1hcmNoIDIwMjQgQW1hem9uIHB1cmNoYXNlZCBhIFBlbm5zeWx2YW5pYSBudWNsZWFyLXBvd2VyZWQgZGF0YSBjZW50ZXIgZm9yICQ2NTAgTWlsbGlvbiAoVVMpLlsyMjVdIE52aWRpYSBDRU8gSmVuLUhzdW4gSHVhbmcgc2FpZCBudWNsZWFyIHBvd2VyIGlzIGEgZ29vZCBvcHRpb24gZm9yIHRoZSBkYXRhIGNlbnRlcnMuWzIyNl1cblxuSW4gU2VwdGVtYmVyIDIwMjQsIE1pY3Jvc29mdCBhbm5vdW5jZWQgYW4gYWdyZWVtZW50IHdpdGggQ29uc3RlbGxhdGlvbiBFbmVyZ3kgdG8gcmUtb3BlbiB0aGUgVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwb3dlciBwbGFudCB0byBwcm92aWRlIE1pY3Jvc29mdCB3aXRoIDEwMCUgb2YgYWxsIGVsZWN0cmljIHBvd2VyIHByb2R1Y2VkIGJ5IHRoZSBwbGFudCBmb3IgMjAgeWVhcnMuIFJlb3BlbmluZyB0aGUgcGxhbnQsIHdoaWNoIHN1ZmZlcmVkIGEgcGFydGlhbCBudWNsZWFyIG1lbHRkb3duIG9mIGl0cyBVbml0IDIgcmVhY3RvciBpbiAxOTc5LCB3aWxsIHJlcXVpcmUgQ29uc3RlbGxhdGlvbiB0byBnZXQgdGhyb3VnaCBzdHJpY3QgcmVndWxhdG9yeSBwcm9jZXNzZXMgd2hpY2ggd2lsbCBpbmNsdWRlIGV4dGVuc2l2ZSBzYWZldHkgc2NydXRpbnkgZnJvbSB0aGUgVVMgTnVjbGVhciBSZWd1bGF0b3J5IENvbW1pc3Npb24uIElmIGFwcHJvdmVkICh0aGlzIHdpbGwgYmUgdGhlIGZpcnN0IGV2ZXIgVVMgcmUtY29tbWlzc2lvbmluZyBvZiBhIG51Y2xlYXIgcGxhbnQpLCBvdmVyIDgzNSBtZWdhd2F0dHMgb2YgcG93ZXIg4oCTIGVub3VnaCBmb3IgODAwLDAwMCBob21lcyDigJMgb2YgZW5lcmd5IHdpbGwgYmUgcHJvZHVjZWQuIFRoZSBjb3N0IGZvciByZS1vcGVuaW5nIGFuZCB1cGdyYWRpbmcgaXMgZXN0aW1hdGVkIGF0ICQxLjYgYmlsbGlvbiAoVVMpIGFuZCBpcyBkZXBlbmRlbnQgb24gdGF4IGJyZWFrcyBmb3IgbnVjbGVhciBwb3dlciBjb250YWluZWQgaW4gdGhlIDIwMjIgVVMgSW5mbGF0aW9uIFJlZHVjdGlvbiBBY3QuWzIyN10gVGhlIFVTIGdvdmVybm1lbnQgYW5kIHRoZSBzdGF0ZSBvZiBNaWNoaWdhbiBhcmUgaW52ZXN0aW5nIGFsbW9zdCAkMiBiaWxsaW9uIChVUykgdG8gcmVvcGVuIHRoZSBQYWxpc2FkZXMgTnVjbGVhciByZWFjdG9yIG9uIExha2UgTWljaGlnYW4uIENsb3NlZCBzaW5jZSAyMDIyLCB0aGUgcGxhbnQgaXMgcGxhbm5lZCB0byBiZSByZW9wZW5lZCBpbiBPY3RvYmVyIDIwMjUuIFRoZSBUaHJlZSBNaWxlIElzbGFuZCBmYWNpbGl0eSB3aWxsIGJlIHJlbmFtZWQgdGhlIENyYW5lIENsZWFuIEVuZXJneSBDZW50ZXIgYWZ0ZXIgQ2hyaXMgQ3JhbmUsIGEgbnVjbGVhciBwcm9wb25lbnQgYW5kIGZvcm1lciBDRU8gb2YgRXhlbG9uIHdobyB3YXMgcmVzcG9uc2libGUgZm9yIEV4ZWxvbiBzcGlub2ZmIG9mIENvbnN0ZWxsYXRpb24uWzIyOF1cblxuQWZ0ZXIgdGhlIGxhc3QgYXBwcm92YWwgaW4gU2VwdGVtYmVyIDIwMjMsIFRhaXdhbiBzdXNwZW5kZWQgdGhlIGFwcHJvdmFsIG9mIGRhdGEgY2VudGVycyBub3J0aCBvZiBUYW95dWFuIHdpdGggYSBjYXBhY2l0eSBvZiBtb3JlIHRoYW4gNSBNVyBpbiAyMDI0LCBkdWUgdG8gcG93ZXIgc3VwcGx5IHNob3J0YWdlcy5bMjI5XSBUYWl3YW4gYWltcyB0byBwaGFzZSBvdXQgbnVjbGVhciBwb3dlciBieSAyMDI1LlsyMjldIE9uIHRoZSBvdGhlciBoYW5kLCBTaW5nYXBvcmUgaW1wb3NlZCBhIGJhbiBvbiB0aGUgb3BlbmluZyBvZiBkYXRhIGNlbnRlcnMgaW4gMjAxOSBkdWUgdG8gZWxlY3RyaWMgcG93ZXIsIGJ1dCBpbiAyMDIyLCBsaWZ0ZWQgdGhpcyBiYW4uWzIyOV1cblxuQWx0aG91Z2ggbW9zdCBudWNsZWFyIHBsYW50cyBpbiBKYXBhbiBoYXZlIGJlZW4gc2h1dCBkb3duIGFmdGVyIHRoZSAyMDExIEZ1a3VzaGltYSBudWNsZWFyIGFjY2lkZW50LCBhY2NvcmRpbmcgdG8gYW4gT2N0b2JlciAyMDI0IEJsb29tYmVyZyBhcnRpY2xlIGluIEphcGFuZXNlLCBjbG91ZCBnYW1pbmcgc2VydmljZXMgY29tcGFueSBVYml0dXMsIGluIHdoaWNoIE52aWRpYSBoYXMgYSBzdGFrZSwgaXMgbG9va2luZyBmb3IgbGFuZCBpbiBKYXBhbiBuZWFyIG51Y2xlYXIgcG93ZXIgcGxhbnQgZm9yIGEgbmV3IGRhdGEgY2VudGVyIGZvciBnZW5lcmF0aXZlIEFJLlsyMzBdIFViaXR1cyBDRU8gV2VzbGV5IEt1byBzYWlkIG51Y2xlYXIgcG93ZXIgcGxhbnRzIGFyZSB0aGUgbW9zdCBlZmZpY2llbnQsIGNoZWFwIGFuZCBzdGFibGUgcG93ZXIgZm9yIEFJLlsyMzBdXG5cbk9uIDEgTm92ZW1iZXIgMjAyNCwgdGhlIEZlZGVyYWwgRW5lcmd5IFJlZ3VsYXRvcnkgQ29tbWlzc2lvbiAoRkVSQykgcmVqZWN0ZWQgYW4gYXBwbGljYXRpb24gc3VibWl0dGVkIGJ5IFRhbGVuIEVuZXJneSBmb3IgYXBwcm92YWwgdG8gc3VwcGx5IHNvbWUgZWxlY3RyaWNpdHkgZnJvbSB0aGUgbnVjbGVhciBwb3dlciBzdGF0aW9uIFN1c3F1ZWhhbm5hIHRvIEFtYXpvbidzIGRhdGEgY2VudGVyLlsyMzFdIEFjY29yZGluZyB0byB0aGUgQ29tbWlzc2lvbiBDaGFpcm1hbiBXaWxsaWUgTC4gUGhpbGxpcHMsIGl0IGlzIGEgYnVyZGVuIG9uIHRoZSBlbGVjdHJpY2l0eSBncmlkIGFzIHdlbGwgYXMgYSBzaWduaWZpY2FudCBjb3N0IHNoaWZ0aW5nIGNvbmNlcm4gdG8gaG91c2Vob2xkcyBhbmQgb3RoZXIgYnVzaW5lc3Mgc2VjdG9ycy5bMjMxXVxuXG5NaXNpbmZvcm1hdGlvblxuU2VlIGFsc286IFlvdVR1YmUgwqfCoE1vZGVyYXRpb24gYW5kIG9mZmVuc2l2ZSBjb250ZW50XG5cbllvdVR1YmUsIEZhY2Vib29rIGFuZCBvdGhlcnMgdXNlIHJlY29tbWVuZGVyIHN5c3RlbXMgdG8gZ3VpZGUgdXNlcnMgdG8gbW9yZSBjb250ZW50LiBUaGVzZSBBSSBwcm9ncmFtcyB3ZXJlIGdpdmVuIHRoZSBnb2FsIG9mIG1heGltaXppbmcgdXNlciBlbmdhZ2VtZW50ICh0aGF0IGlzLCB0aGUgb25seSBnb2FsIHdhcyB0byBrZWVwIHBlb3BsZSB3YXRjaGluZykuIFRoZSBBSSBsZWFybmVkIHRoYXQgdXNlcnMgdGVuZGVkIHRvIGNob29zZSBtaXNpbmZvcm1hdGlvbiwgY29uc3BpcmFjeSB0aGVvcmllcywgYW5kIGV4dHJlbWUgcGFydGlzYW4gY29udGVudCwgYW5kLCB0byBrZWVwIHRoZW0gd2F0Y2hpbmcsIHRoZSBBSSByZWNvbW1lbmRlZCBtb3JlIG9mIGl0LiBVc2VycyBhbHNvIHRlbmRlZCB0byB3YXRjaCBtb3JlIGNvbnRlbnQgb24gdGhlIHNhbWUgc3ViamVjdCwgc28gdGhlIEFJIGxlZCBwZW9wbGUgaW50byBmaWx0ZXIgYnViYmxlcyB3aGVyZSB0aGV5IHJlY2VpdmVkIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lIG1pc2luZm9ybWF0aW9uLlsyMzJdIFRoaXMgY29udmluY2VkIG1hbnkgdXNlcnMgdGhhdCB0aGUgbWlzaW5mb3JtYXRpb24gd2FzIHRydWUsIGFuZCB1bHRpbWF0ZWx5IHVuZGVybWluZWQgdHJ1c3QgaW4gaW5zdGl0dXRpb25zLCB0aGUgbWVkaWEgYW5kIHRoZSBnb3Zlcm5tZW50LlsyMzNdIFRoZSBBSSBwcm9ncmFtIGhhZCBjb3JyZWN0bHkgbGVhcm5lZCB0byBtYXhpbWl6ZSBpdHMgZ29hbCwgYnV0IHRoZSByZXN1bHQgd2FzIGhhcm1mdWwgdG8gc29jaWV0eS4gQWZ0ZXIgdGhlIFUuUy4gZWxlY3Rpb24gaW4gMjAxNiwgbWFqb3IgdGVjaG5vbG9neSBjb21wYW5pZXMgdG9vayBzdGVwcyB0byBtaXRpZ2F0ZSB0aGUgcHJvYmxlbSBbY2l0YXRpb24gbmVlZGVkXS5cblxuSW4gMjAyMiwgZ2VuZXJhdGl2ZSBBSSBiZWdhbiB0byBjcmVhdGUgaW1hZ2VzLCBhdWRpbywgdmlkZW8gYW5kIHRleHQgdGhhdCBhcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWFsIHBob3RvZ3JhcGhzLCByZWNvcmRpbmdzLCBmaWxtcywgb3IgaHVtYW4gd3JpdGluZy4gSXQgaXMgcG9zc2libGUgZm9yIGJhZCBhY3RvcnMgdG8gdXNlIHRoaXMgdGVjaG5vbG9neSB0byBjcmVhdGUgbWFzc2l2ZSBhbW91bnRzIG9mIG1pc2luZm9ybWF0aW9uIG9yIHByb3BhZ2FuZGEuWzIzNF0gQUkgcGlvbmVlciBHZW9mZnJleSBIaW50b24gZXhwcmVzc2VkIGNvbmNlcm4gYWJvdXQgQUkgZW5hYmxpbmcgXCJhdXRob3JpdGFyaWFuIGxlYWRlcnMgdG8gbWFuaXB1bGF0ZSB0aGVpciBlbGVjdG9yYXRlc1wiIG9uIGEgbGFyZ2Ugc2NhbGUsIGFtb25nIG90aGVyIHJpc2tzLlsyMzVdXG5cbkFsZ29yaXRobWljIGJpYXMgYW5kIGZhaXJuZXNzXG5NYWluIGFydGljbGVzOiBBbGdvcml0aG1pYyBiaWFzIGFuZCBGYWlybmVzcyAobWFjaGluZSBsZWFybmluZylcblxuTWFjaGluZSBsZWFybmluZyBhcHBsaWNhdGlvbnMgd2lsbCBiZSBiaWFzZWRba10gaWYgdGhleSBsZWFybiBmcm9tIGJpYXNlZCBkYXRhLlsyMzddIFRoZSBkZXZlbG9wZXJzIG1heSBub3QgYmUgYXdhcmUgdGhhdCB0aGUgYmlhcyBleGlzdHMuWzIzOF0gQmlhcyBjYW4gYmUgaW50cm9kdWNlZCBieSB0aGUgd2F5IHRyYWluaW5nIGRhdGEgaXMgc2VsZWN0ZWQgYW5kIGJ5IHRoZSB3YXkgYSBtb2RlbCBpcyBkZXBsb3llZC5bMjM5XVsyMzddIElmIGEgYmlhc2VkIGFsZ29yaXRobSBpcyB1c2VkIHRvIG1ha2UgZGVjaXNpb25zIHRoYXQgY2FuIHNlcmlvdXNseSBoYXJtIHBlb3BsZSAoYXMgaXQgY2FuIGluIG1lZGljaW5lLCBmaW5hbmNlLCByZWNydWl0bWVudCwgaG91c2luZyBvciBwb2xpY2luZykgdGhlbiB0aGUgYWxnb3JpdGhtIG1heSBjYXVzZSBkaXNjcmltaW5hdGlvbi5bMjQwXSBUaGUgZmllbGQgb2YgZmFpcm5lc3Mgc3R1ZGllcyBob3cgdG8gcHJldmVudCBoYXJtcyBmcm9tIGFsZ29yaXRobWljIGJpYXNlcy5cblxuT24gSnVuZSAyOCwgMjAxNSwgR29vZ2xlIFBob3RvcydzIG5ldyBpbWFnZSBsYWJlbGluZyBmZWF0dXJlIG1pc3Rha2VubHkgaWRlbnRpZmllZCBKYWNreSBBbGNpbmUgYW5kIGEgZnJpZW5kIGFzIFwiZ29yaWxsYXNcIiBiZWNhdXNlIHRoZXkgd2VyZSBibGFjay4gVGhlIHN5c3RlbSB3YXMgdHJhaW5lZCBvbiBhIGRhdGFzZXQgdGhhdCBjb250YWluZWQgdmVyeSBmZXcgaW1hZ2VzIG9mIGJsYWNrIHBlb3BsZSxbMjQxXSBhIHByb2JsZW0gY2FsbGVkIFwic2FtcGxlIHNpemUgZGlzcGFyaXR5XCIuWzI0Ml0gR29vZ2xlIFwiZml4ZWRcIiB0aGlzIHByb2JsZW0gYnkgcHJldmVudGluZyB0aGUgc3lzdGVtIGZyb20gbGFiZWxsaW5nIGFueXRoaW5nIGFzIGEgXCJnb3JpbGxhXCIuIEVpZ2h0IHllYXJzIGxhdGVyLCBpbiAyMDIzLCBHb29nbGUgUGhvdG9zIHN0aWxsIGNvdWxkIG5vdCBpZGVudGlmeSBhIGdvcmlsbGEsIGFuZCBuZWl0aGVyIGNvdWxkIHNpbWlsYXIgcHJvZHVjdHMgZnJvbSBBcHBsZSwgRmFjZWJvb2ssIE1pY3Jvc29mdCBhbmQgQW1hem9uLlsyNDNdXG5cbkNPTVBBUyBpcyBhIGNvbW1lcmNpYWwgcHJvZ3JhbSB3aWRlbHkgdXNlZCBieSBVLlMuIGNvdXJ0cyB0byBhc3Nlc3MgdGhlIGxpa2VsaWhvb2Qgb2YgYSBkZWZlbmRhbnQgYmVjb21pbmcgYSByZWNpZGl2aXN0LiBJbiAyMDE2LCBKdWxpYSBBbmd3aW4gYXQgUHJvUHVibGljYSBkaXNjb3ZlcmVkIHRoYXQgQ09NUEFTIGV4aGliaXRlZCByYWNpYWwgYmlhcywgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZSBwcm9ncmFtIHdhcyBub3QgdG9sZCB0aGUgcmFjZXMgb2YgdGhlIGRlZmVuZGFudHMuIEFsdGhvdWdoIHRoZSBlcnJvciByYXRlIGZvciBib3RoIHdoaXRlcyBhbmQgYmxhY2tzIHdhcyBjYWxpYnJhdGVkIGVxdWFsIGF0IGV4YWN0bHkgNjElLCB0aGUgZXJyb3JzIGZvciBlYWNoIHJhY2Ugd2VyZSBkaWZmZXJlbnTigJR0aGUgc3lzdGVtIGNvbnNpc3RlbnRseSBvdmVyZXN0aW1hdGVkIHRoZSBjaGFuY2UgdGhhdCBhIGJsYWNrIHBlcnNvbiB3b3VsZCByZS1vZmZlbmQgYW5kIHdvdWxkIHVuZGVyZXN0aW1hdGUgdGhlIGNoYW5jZSB0aGF0IGEgd2hpdGUgcGVyc29uIHdvdWxkIG5vdCByZS1vZmZlbmQuWzI0NF0gSW4gMjAxNywgc2V2ZXJhbCByZXNlYXJjaGVyc1tsXSBzaG93ZWQgdGhhdCBpdCB3YXMgbWF0aGVtYXRpY2FsbHkgaW1wb3NzaWJsZSBmb3IgQ09NUEFTIHRvIGFjY29tbW9kYXRlIGFsbCBwb3NzaWJsZSBtZWFzdXJlcyBvZiBmYWlybmVzcyB3aGVuIHRoZSBiYXNlIHJhdGVzIG9mIHJlLW9mZmVuc2Ugd2VyZSBkaWZmZXJlbnQgZm9yIHdoaXRlcyBhbmQgYmxhY2tzIGluIHRoZSBkYXRhLlsyNDZdXG5cbkEgcHJvZ3JhbSBjYW4gbWFrZSBiaWFzZWQgZGVjaXNpb25zIGV2ZW4gaWYgdGhlIGRhdGEgZG9lcyBub3QgZXhwbGljaXRseSBtZW50aW9uIGEgcHJvYmxlbWF0aWMgZmVhdHVyZSAoc3VjaCBhcyBcInJhY2VcIiBvciBcImdlbmRlclwiKS4gVGhlIGZlYXR1cmUgd2lsbCBjb3JyZWxhdGUgd2l0aCBvdGhlciBmZWF0dXJlcyAobGlrZSBcImFkZHJlc3NcIiwgXCJzaG9wcGluZyBoaXN0b3J5XCIgb3IgXCJmaXJzdCBuYW1lXCIpLCBhbmQgdGhlIHByb2dyYW0gd2lsbCBtYWtlIHRoZSBzYW1lIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGVzZSBmZWF0dXJlcyBhcyBpdCB3b3VsZCBvbiBcInJhY2VcIiBvciBcImdlbmRlclwiLlsyNDddIE1vcml0eiBIYXJkdCBzYWlkIFwidGhlIG1vc3Qgcm9idXN0IGZhY3QgaW4gdGhpcyByZXNlYXJjaCBhcmVhIGlzIHRoYXQgZmFpcm5lc3MgdGhyb3VnaCBibGluZG5lc3MgZG9lc24ndCB3b3JrLlwiWzI0OF1cblxuQ3JpdGljaXNtIG9mIENPTVBBUyBoaWdobGlnaHRlZCB0aGF0IG1hY2hpbmUgbGVhcm5pbmcgbW9kZWxzIGFyZSBkZXNpZ25lZCB0byBtYWtlIFwicHJlZGljdGlvbnNcIiB0aGF0IGFyZSBvbmx5IHZhbGlkIGlmIHdlIGFzc3VtZSB0aGF0IHRoZSBmdXR1cmUgd2lsbCByZXNlbWJsZSB0aGUgcGFzdC4gSWYgdGhleSBhcmUgdHJhaW5lZCBvbiBkYXRhIHRoYXQgaW5jbHVkZXMgdGhlIHJlc3VsdHMgb2YgcmFjaXN0IGRlY2lzaW9ucyBpbiB0aGUgcGFzdCwgbWFjaGluZSBsZWFybmluZyBtb2RlbHMgbXVzdCBwcmVkaWN0IHRoYXQgcmFjaXN0IGRlY2lzaW9ucyB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4gSWYgYW4gYXBwbGljYXRpb24gdGhlbiB1c2VzIHRoZXNlIHByZWRpY3Rpb25zIGFzIHJlY29tbWVuZGF0aW9ucywgc29tZSBvZiB0aGVzZSBcInJlY29tbWVuZGF0aW9uc1wiIHdpbGwgbGlrZWx5IGJlIHJhY2lzdC5bMjQ5XSBUaHVzLCBtYWNoaW5lIGxlYXJuaW5nIGlzIG5vdCB3ZWxsIHN1aXRlZCB0byBoZWxwIG1ha2UgZGVjaXNpb25zIGluIGFyZWFzIHdoZXJlIHRoZXJlIGlzIGhvcGUgdGhhdCB0aGUgZnV0dXJlIHdpbGwgYmUgYmV0dGVyIHRoYW4gdGhlIHBhc3QuIEl0IGlzIGRlc2NyaXB0aXZlIHJhdGhlciB0aGFuIHByZXNjcmlwdGl2ZS5bbV1cblxuQmlhcyBhbmQgdW5mYWlybmVzcyBtYXkgZ28gdW5kZXRlY3RlZCBiZWNhdXNlIHRoZSBkZXZlbG9wZXJzIGFyZSBvdmVyd2hlbG1pbmdseSB3aGl0ZSBhbmQgbWFsZTogYW1vbmcgQUkgZW5naW5lZXJzLCBhYm91dCA0JSBhcmUgYmxhY2sgYW5kIDIwJSBhcmUgd29tZW4uWzI0Ml1cblxuVGhlcmUgYXJlIHZhcmlvdXMgY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMgYW5kIG1hdGhlbWF0aWNhbCBtb2RlbHMgb2YgZmFpcm5lc3MuIFRoZXNlIG5vdGlvbnMgZGVwZW5kIG9uIGV0aGljYWwgYXNzdW1wdGlvbnMsIGFuZCBhcmUgaW5mbHVlbmNlZCBieSBiZWxpZWZzIGFib3V0IHNvY2lldHkuIE9uZSBicm9hZCBjYXRlZ29yeSBpcyBkaXN0cmlidXRpdmUgZmFpcm5lc3MsIHdoaWNoIGZvY3VzZXMgb24gdGhlIG91dGNvbWVzLCBvZnRlbiBpZGVudGlmeWluZyBncm91cHMgYW5kIHNlZWtpbmcgdG8gY29tcGVuc2F0ZSBmb3Igc3RhdGlzdGljYWwgZGlzcGFyaXRpZXMuIFJlcHJlc2VudGF0aW9uYWwgZmFpcm5lc3MgdHJpZXMgdG8gZW5zdXJlIHRoYXQgQUkgc3lzdGVtcyBkbyBub3QgcmVpbmZvcmNlIG5lZ2F0aXZlIHN0ZXJlb3R5cGVzIG9yIHJlbmRlciBjZXJ0YWluIGdyb3VwcyBpbnZpc2libGUuIFByb2NlZHVyYWwgZmFpcm5lc3MgZm9jdXNlcyBvbiB0aGUgZGVjaXNpb24gcHJvY2VzcyByYXRoZXIgdGhhbiB0aGUgb3V0Y29tZS4gVGhlIG1vc3QgcmVsZXZhbnQgbm90aW9ucyBvZiBmYWlybmVzcyBtYXkgZGVwZW5kIG9uIHRoZSBjb250ZXh0LCBub3RhYmx5IHRoZSB0eXBlIG9mIEFJIGFwcGxpY2F0aW9uIGFuZCB0aGUgc3Rha2Vob2xkZXJzLiBUaGUgc3ViamVjdGl2aXR5IGluIHRoZSBub3Rpb25zIG9mIGJpYXMgYW5kIGZhaXJuZXNzIG1ha2VzIGl0IGRpZmZpY3VsdCBmb3IgY29tcGFuaWVzIHRvIG9wZXJhdGlvbmFsaXplIHRoZW0uIEhhdmluZyBhY2Nlc3MgdG8gc2Vuc2l0aXZlIGF0dHJpYnV0ZXMgc3VjaCBhcyByYWNlIG9yIGdlbmRlciBpcyBhbHNvIGNvbnNpZGVyZWQgYnkgbWFueSBBSSBldGhpY2lzdHMgdG8gYmUgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGNvbXBlbnNhdGUgZm9yIGJpYXNlcywgYnV0IGl0IG1heSBjb25mbGljdCB3aXRoIGFudGktZGlzY3JpbWluYXRpb24gbGF3cy5bMjM2XVxuXG5BdCBpdHMgMjAyMiBDb25mZXJlbmNlIG9uIEZhaXJuZXNzLCBBY2NvdW50YWJpbGl0eSwgYW5kIFRyYW5zcGFyZW5jeSAoQUNNIEZBY2NUIDIwMjIpLCB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnksIGluIFNlb3VsLCBTb3V0aCBLb3JlYSwgcHJlc2VudGVkIGFuZCBwdWJsaXNoZWQgZmluZGluZ3MgdGhhdCByZWNvbW1lbmQgdGhhdCB1bnRpbCBBSSBhbmQgcm9ib3RpY3Mgc3lzdGVtcyBhcmUgZGVtb25zdHJhdGVkIHRvIGJlIGZyZWUgb2YgYmlhcyBtaXN0YWtlcywgdGhleSBhcmUgdW5zYWZlLCBhbmQgdGhlIHVzZSBvZiBzZWxmLWxlYXJuaW5nIG5ldXJhbCBuZXR3b3JrcyB0cmFpbmVkIG9uIHZhc3QsIHVucmVndWxhdGVkIHNvdXJjZXMgb2YgZmxhd2VkIGludGVybmV0IGRhdGEgc2hvdWxkIGJlIGN1cnRhaWxlZC5bZHViaW91cyDigJMgZGlzY3Vzc11bMjUxXVxuXG5MYWNrIG9mIHRyYW5zcGFyZW5jeVxuU2VlIGFsc286IEV4cGxhaW5hYmxlIEFJLCBBbGdvcml0aG1pYyB0cmFuc3BhcmVuY3ksIGFuZCBSaWdodCB0byBleHBsYW5hdGlvblxuXG5NYW55IEFJIHN5c3RlbXMgYXJlIHNvIGNvbXBsZXggdGhhdCB0aGVpciBkZXNpZ25lcnMgY2Fubm90IGV4cGxhaW4gaG93IHRoZXkgcmVhY2ggdGhlaXIgZGVjaXNpb25zLlsyNTJdIFBhcnRpY3VsYXJseSB3aXRoIGRlZXAgbmV1cmFsIG5ldHdvcmtzLCBpbiB3aGljaCB0aGVyZSBhcmUgYSBsYXJnZSBhbW91bnQgb2Ygbm9uLWxpbmVhciByZWxhdGlvbnNoaXBzIGJldHdlZW4gaW5wdXRzIGFuZCBvdXRwdXRzLiBCdXQgc29tZSBwb3B1bGFyIGV4cGxhaW5hYmlsaXR5IHRlY2huaXF1ZXMgZXhpc3QuWzI1M11cblxuSXQgaXMgaW1wb3NzaWJsZSB0byBiZSBjZXJ0YWluIHRoYXQgYSBwcm9ncmFtIGlzIG9wZXJhdGluZyBjb3JyZWN0bHkgaWYgbm8gb25lIGtub3dzIGhvdyBleGFjdGx5IGl0IHdvcmtzLiBUaGVyZSBoYXZlIGJlZW4gbWFueSBjYXNlcyB3aGVyZSBhIG1hY2hpbmUgbGVhcm5pbmcgcHJvZ3JhbSBwYXNzZWQgcmlnb3JvdXMgdGVzdHMsIGJ1dCBuZXZlcnRoZWxlc3MgbGVhcm5lZCBzb21ldGhpbmcgZGlmZmVyZW50IHRoYW4gd2hhdCB0aGUgcHJvZ3JhbW1lcnMgaW50ZW5kZWQuIEZvciBleGFtcGxlLCBhIHN5c3RlbSB0aGF0IGNvdWxkIGlkZW50aWZ5IHNraW4gZGlzZWFzZXMgYmV0dGVyIHRoYW4gbWVkaWNhbCBwcm9mZXNzaW9uYWxzIHdhcyBmb3VuZCB0byBhY3R1YWxseSBoYXZlIGEgc3Ryb25nIHRlbmRlbmN5IHRvIGNsYXNzaWZ5IGltYWdlcyB3aXRoIGEgcnVsZXIgYXMgXCJjYW5jZXJvdXNcIiwgYmVjYXVzZSBwaWN0dXJlcyBvZiBtYWxpZ25hbmNpZXMgdHlwaWNhbGx5IGluY2x1ZGUgYSBydWxlciB0byBzaG93IHRoZSBzY2FsZS5bMjU0XSBBbm90aGVyIG1hY2hpbmUgbGVhcm5pbmcgc3lzdGVtIGRlc2lnbmVkIHRvIGhlbHAgZWZmZWN0aXZlbHkgYWxsb2NhdGUgbWVkaWNhbCByZXNvdXJjZXMgd2FzIGZvdW5kIHRvIGNsYXNzaWZ5IHBhdGllbnRzIHdpdGggYXN0aG1hIGFzIGJlaW5nIGF0IFwibG93IHJpc2tcIiBvZiBkeWluZyBmcm9tIHBuZXVtb25pYS4gSGF2aW5nIGFzdGhtYSBpcyBhY3R1YWxseSBhIHNldmVyZSByaXNrIGZhY3RvciwgYnV0IHNpbmNlIHRoZSBwYXRpZW50cyBoYXZpbmcgYXN0aG1hIHdvdWxkIHVzdWFsbHkgZ2V0IG11Y2ggbW9yZSBtZWRpY2FsIGNhcmUsIHRoZXkgd2VyZSByZWxhdGl2ZWx5IHVubGlrZWx5IHRvIGRpZSBhY2NvcmRpbmcgdG8gdGhlIHRyYWluaW5nIGRhdGEuIFRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGFzdGhtYSBhbmQgbG93IHJpc2sgb2YgZHlpbmcgZnJvbSBwbmV1bW9uaWEgd2FzIHJlYWwsIGJ1dCBtaXNsZWFkaW5nLlsyNTVdXG5cblBlb3BsZSB3aG8gaGF2ZSBiZWVuIGhhcm1lZCBieSBhbiBhbGdvcml0aG0ncyBkZWNpc2lvbiBoYXZlIGEgcmlnaHQgdG8gYW4gZXhwbGFuYXRpb24uWzI1Nl0gRG9jdG9ycywgZm9yIGV4YW1wbGUsIGFyZSBleHBlY3RlZCB0byBjbGVhcmx5IGFuZCBjb21wbGV0ZWx5IGV4cGxhaW4gdG8gdGhlaXIgY29sbGVhZ3VlcyB0aGUgcmVhc29uaW5nIGJlaGluZCBhbnkgZGVjaXNpb24gdGhleSBtYWtlLiBFYXJseSBkcmFmdHMgb2YgdGhlIEV1cm9wZWFuIFVuaW9uJ3MgR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbiBpbiAyMDE2IGluY2x1ZGVkIGFuIGV4cGxpY2l0IHN0YXRlbWVudCB0aGF0IHRoaXMgcmlnaHQgZXhpc3RzLltuXSBJbmR1c3RyeSBleHBlcnRzIG5vdGVkIHRoYXQgdGhpcyBpcyBhbiB1bnNvbHZlZCBwcm9ibGVtIHdpdGggbm8gc29sdXRpb24gaW4gc2lnaHQuIFJlZ3VsYXRvcnMgYXJndWVkIHRoYXQgbmV2ZXJ0aGVsZXNzIHRoZSBoYXJtIGlzIHJlYWw6IGlmIHRoZSBwcm9ibGVtIGhhcyBubyBzb2x1dGlvbiwgdGhlIHRvb2xzIHNob3VsZCBub3QgYmUgdXNlZC5bMjU3XVxuXG5EQVJQQSBlc3RhYmxpc2hlZCB0aGUgWEFJIChcIkV4cGxhaW5hYmxlIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIpIHByb2dyYW0gaW4gMjAxNCB0byB0cnkgdG8gc29sdmUgdGhlc2UgcHJvYmxlbXMuWzI1OF1cblxuU2V2ZXJhbCBhcHByb2FjaGVzIGFpbSB0byBhZGRyZXNzIHRoZSB0cmFuc3BhcmVuY3kgcHJvYmxlbS4gU0hBUCBlbmFibGVzIHRvIHZpc3VhbGlzZSB0aGUgY29udHJpYnV0aW9uIG9mIGVhY2ggZmVhdHVyZSB0byB0aGUgb3V0cHV0LlsyNTldIExJTUUgY2FuIGxvY2FsbHkgYXBwcm94aW1hdGUgYSBtb2RlbCdzIG91dHB1dHMgd2l0aCBhIHNpbXBsZXIsIGludGVycHJldGFibGUgbW9kZWwuWzI2MF0gTXVsdGl0YXNrIGxlYXJuaW5nIHByb3ZpZGVzIGEgbGFyZ2UgbnVtYmVyIG9mIG91dHB1dHMgaW4gYWRkaXRpb24gdG8gdGhlIHRhcmdldCBjbGFzc2lmaWNhdGlvbi4gVGhlc2Ugb3RoZXIgb3V0cHV0cyBjYW4gaGVscCBkZXZlbG9wZXJzIGRlZHVjZSB3aGF0IHRoZSBuZXR3b3JrIGhhcyBsZWFybmVkLlsyNjFdIERlY29udm9sdXRpb24sIERlZXBEcmVhbSBhbmQgb3RoZXIgZ2VuZXJhdGl2ZSBtZXRob2RzIGNhbiBhbGxvdyBkZXZlbG9wZXJzIHRvIHNlZSB3aGF0IGRpZmZlcmVudCBsYXllcnMgb2YgYSBkZWVwIG5ldHdvcmsgZm9yIGNvbXB1dGVyIHZpc2lvbiBoYXZlIGxlYXJuZWQsIGFuZCBwcm9kdWNlIG91dHB1dCB0aGF0IGNhbiBzdWdnZXN0IHdoYXQgdGhlIG5ldHdvcmsgaXMgbGVhcm5pbmcuWzI2Ml0gRm9yIGdlbmVyYXRpdmUgcHJlLXRyYWluZWQgdHJhbnNmb3JtZXJzLCBBbnRocm9waWMgZGV2ZWxvcGVkIGEgdGVjaG5pcXVlIGJhc2VkIG9uIGRpY3Rpb25hcnkgbGVhcm5pbmcgdGhhdCBhc3NvY2lhdGVzIHBhdHRlcm5zIG9mIG5ldXJvbiBhY3RpdmF0aW9ucyB3aXRoIGh1bWFuLXVuZGVyc3RhbmRhYmxlIGNvbmNlcHRzLlsyNjNdXG5cbkJhZCBhY3RvcnMgYW5kIHdlYXBvbml6ZWQgQUlcbk1haW4gYXJ0aWNsZXM6IExldGhhbCBhdXRvbm9tb3VzIHdlYXBvbiwgQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYXJtcyByYWNlLCBhbmQgQUkgc2FmZXR5XG5cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHRvb2xzIHRoYXQgYXJlIHVzZWZ1bCB0byBiYWQgYWN0b3JzLCBzdWNoIGFzIGF1dGhvcml0YXJpYW4gZ292ZXJubWVudHMsIHRlcnJvcmlzdHMsIGNyaW1pbmFscyBvciByb2d1ZSBzdGF0ZXMuXG5cbkEgbGV0aGFsIGF1dG9ub21vdXMgd2VhcG9uIGlzIGEgbWFjaGluZSB0aGF0IGxvY2F0ZXMsIHNlbGVjdHMgYW5kIGVuZ2FnZXMgaHVtYW4gdGFyZ2V0cyB3aXRob3V0IGh1bWFuIHN1cGVydmlzaW9uLltvXSBXaWRlbHkgYXZhaWxhYmxlIEFJIHRvb2xzIGNhbiBiZSB1c2VkIGJ5IGJhZCBhY3RvcnMgdG8gZGV2ZWxvcCBpbmV4cGVuc2l2ZSBhdXRvbm9tb3VzIHdlYXBvbnMgYW5kLCBpZiBwcm9kdWNlZCBhdCBzY2FsZSwgdGhleSBhcmUgcG90ZW50aWFsbHkgd2VhcG9ucyBvZiBtYXNzIGRlc3RydWN0aW9uLlsyNjVdIEV2ZW4gd2hlbiB1c2VkIGluIGNvbnZlbnRpb25hbCB3YXJmYXJlLCB0aGV5IGN1cnJlbnRseSBjYW5ub3QgcmVsaWFibHkgY2hvb3NlIHRhcmdldHMgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGtpbGwgYW4gaW5ub2NlbnQgcGVyc29uLlsyNjVdIEluIDIwMTQsIDMwIG5hdGlvbnMgKGluY2x1ZGluZyBDaGluYSkgc3VwcG9ydGVkIGEgYmFuIG9uIGF1dG9ub21vdXMgd2VhcG9ucyB1bmRlciB0aGUgVW5pdGVkIE5hdGlvbnMnIENvbnZlbnRpb24gb24gQ2VydGFpbiBDb252ZW50aW9uYWwgV2VhcG9ucywgaG93ZXZlciB0aGUgVW5pdGVkIFN0YXRlcyBhbmQgb3RoZXJzIGRpc2FncmVlZC5bMjY2XSBCeSAyMDE1LCBvdmVyIGZpZnR5IGNvdW50cmllcyB3ZXJlIHJlcG9ydGVkIHRvIGJlIHJlc2VhcmNoaW5nIGJhdHRsZWZpZWxkIHJvYm90cy5bMjY3XVxuXG5BSSB0b29scyBtYWtlIGl0IGVhc2llciBmb3IgYXV0aG9yaXRhcmlhbiBnb3Zlcm5tZW50cyB0byBlZmZpY2llbnRseSBjb250cm9sIHRoZWlyIGNpdGl6ZW5zIGluIHNldmVyYWwgd2F5cy4gRmFjZSBhbmQgdm9pY2UgcmVjb2duaXRpb24gYWxsb3cgd2lkZXNwcmVhZCBzdXJ2ZWlsbGFuY2UuIE1hY2hpbmUgbGVhcm5pbmcsIG9wZXJhdGluZyB0aGlzIGRhdGEsIGNhbiBjbGFzc2lmeSBwb3RlbnRpYWwgZW5lbWllcyBvZiB0aGUgc3RhdGUgYW5kIHByZXZlbnQgdGhlbSBmcm9tIGhpZGluZy4gUmVjb21tZW5kYXRpb24gc3lzdGVtcyBjYW4gcHJlY2lzZWx5IHRhcmdldCBwcm9wYWdhbmRhIGFuZCBtaXNpbmZvcm1hdGlvbiBmb3IgbWF4aW11bSBlZmZlY3QuIERlZXBmYWtlcyBhbmQgZ2VuZXJhdGl2ZSBBSSBhaWQgaW4gcHJvZHVjaW5nIG1pc2luZm9ybWF0aW9uLiBBZHZhbmNlZCBBSSBjYW4gbWFrZSBhdXRob3JpdGFyaWFuIGNlbnRyYWxpemVkIGRlY2lzaW9uIG1ha2luZyBtb3JlIGNvbXBldGl0aXZlIHRoYW4gbGliZXJhbCBhbmQgZGVjZW50cmFsaXplZCBzeXN0ZW1zIHN1Y2ggYXMgbWFya2V0cy4gSXQgbG93ZXJzIHRoZSBjb3N0IGFuZCBkaWZmaWN1bHR5IG9mIGRpZ2l0YWwgd2FyZmFyZSBhbmQgYWR2YW5jZWQgc3B5d2FyZS5bMjY4XSBBbGwgdGhlc2UgdGVjaG5vbG9naWVzIGhhdmUgYmVlbiBhdmFpbGFibGUgc2luY2UgMjAyMCBvciBlYXJsaWVy4oCUQUkgZmFjaWFsIHJlY29nbml0aW9uIHN5c3RlbXMgYXJlIGFscmVhZHkgYmVpbmcgdXNlZCBmb3IgbWFzcyBzdXJ2ZWlsbGFuY2UgaW4gQ2hpbmEuWzI2OV1bMjcwXVxuXG5UaGVyZSBtYW55IG90aGVyIHdheXMgdGhhdCBBSSBpcyBleHBlY3RlZCB0byBoZWxwIGJhZCBhY3RvcnMsIHNvbWUgb2Ygd2hpY2ggY2FuIG5vdCBiZSBmb3Jlc2Vlbi4gRm9yIGV4YW1wbGUsIG1hY2hpbmUtbGVhcm5pbmcgQUkgaXMgYWJsZSB0byBkZXNpZ24gdGVucyBvZiB0aG91c2FuZHMgb2YgdG94aWMgbW9sZWN1bGVzIGluIGEgbWF0dGVyIG9mIGhvdXJzLlsyNzFdXG5cblRlY2hub2xvZ2ljYWwgdW5lbXBsb3ltZW50XG5NYWluIGFydGljbGVzOiBXb3JrcGxhY2UgaW1wYWN0IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBUZWNobm9sb2dpY2FsIHVuZW1wbG95bWVudFxuXG5FY29ub21pc3RzIGhhdmUgZnJlcXVlbnRseSBoaWdobGlnaHRlZCB0aGUgcmlza3Mgb2YgcmVkdW5kYW5jaWVzIGZyb20gQUksIGFuZCBzcGVjdWxhdGVkIGFib3V0IHVuZW1wbG95bWVudCBpZiB0aGVyZSBpcyBubyBhZGVxdWF0ZSBzb2NpYWwgcG9saWN5IGZvciBmdWxsIGVtcGxveW1lbnQuWzI3Ml1cblxuSW4gdGhlIHBhc3QsIHRlY2hub2xvZ3kgaGFzIHRlbmRlZCB0byBpbmNyZWFzZSByYXRoZXIgdGhhbiByZWR1Y2UgdG90YWwgZW1wbG95bWVudCwgYnV0IGVjb25vbWlzdHMgYWNrbm93bGVkZ2UgdGhhdCBcIndlJ3JlIGluIHVuY2hhcnRlZCB0ZXJyaXRvcnlcIiB3aXRoIEFJLlsyNzNdIEEgc3VydmV5IG9mIGVjb25vbWlzdHMgc2hvd2VkIGRpc2FncmVlbWVudCBhYm91dCB3aGV0aGVyIHRoZSBpbmNyZWFzaW5nIHVzZSBvZiByb2JvdHMgYW5kIEFJIHdpbGwgY2F1c2UgYSBzdWJzdGFudGlhbCBpbmNyZWFzZSBpbiBsb25nLXRlcm0gdW5lbXBsb3ltZW50LCBidXQgdGhleSBnZW5lcmFsbHkgYWdyZWUgdGhhdCBpdCBjb3VsZCBiZSBhIG5ldCBiZW5lZml0IGlmIHByb2R1Y3Rpdml0eSBnYWlucyBhcmUgcmVkaXN0cmlidXRlZC5bMjc0XSBSaXNrIGVzdGltYXRlcyB2YXJ5OyBmb3IgZXhhbXBsZSwgaW4gdGhlIDIwMTBzLCBNaWNoYWVsIE9zYm9ybmUgYW5kIENhcmwgQmVuZWRpa3QgRnJleSBlc3RpbWF0ZWQgNDclIG9mIFUuUy4gam9icyBhcmUgYXQgXCJoaWdoIHJpc2tcIiBvZiBwb3RlbnRpYWwgYXV0b21hdGlvbiwgd2hpbGUgYW4gT0VDRCByZXBvcnQgY2xhc3NpZmllZCBvbmx5IDklIG9mIFUuUy4gam9icyBhcyBcImhpZ2ggcmlza1wiLltwXVsyNzZdIFRoZSBtZXRob2RvbG9neSBvZiBzcGVjdWxhdGluZyBhYm91dCBmdXR1cmUgZW1wbG95bWVudCBsZXZlbHMgaGFzIGJlZW4gY3JpdGljaXNlZCBhcyBsYWNraW5nIGV2aWRlbnRpYWwgZm91bmRhdGlvbiwgYW5kIGZvciBpbXBseWluZyB0aGF0IHRlY2hub2xvZ3ksIHJhdGhlciB0aGFuIHNvY2lhbCBwb2xpY3ksIGNyZWF0ZXMgdW5lbXBsb3ltZW50LCBhcyBvcHBvc2VkIHRvIHJlZHVuZGFuY2llcy5bMjcyXSBJbiBBcHJpbCAyMDIzLCBpdCB3YXMgcmVwb3J0ZWQgdGhhdCA3MCUgb2YgdGhlIGpvYnMgZm9yIENoaW5lc2UgdmlkZW8gZ2FtZSBpbGx1c3RyYXRvcnMgaGFkIGJlZW4gZWxpbWluYXRlZCBieSBnZW5lcmF0aXZlIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLlsyNzddWzI3OF1cblxuVW5saWtlIHByZXZpb3VzIHdhdmVzIG9mIGF1dG9tYXRpb24sIG1hbnkgbWlkZGxlLWNsYXNzIGpvYnMgbWF5IGJlIGVsaW1pbmF0ZWQgYnkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IFRoZSBFY29ub21pc3Qgc3RhdGVkIGluIDIwMTUgdGhhdCBcInRoZSB3b3JyeSB0aGF0IEFJIGNvdWxkIGRvIHRvIHdoaXRlLWNvbGxhciBqb2JzIHdoYXQgc3RlYW0gcG93ZXIgZGlkIHRvIGJsdWUtY29sbGFyIG9uZXMgZHVyaW5nIHRoZSBJbmR1c3RyaWFsIFJldm9sdXRpb25cIiBpcyBcIndvcnRoIHRha2luZyBzZXJpb3VzbHlcIi5bMjc5XSBKb2JzIGF0IGV4dHJlbWUgcmlzayByYW5nZSBmcm9tIHBhcmFsZWdhbHMgdG8gZmFzdCBmb29kIGNvb2tzLCB3aGlsZSBqb2IgZGVtYW5kIGlzIGxpa2VseSB0byBpbmNyZWFzZSBmb3IgY2FyZS1yZWxhdGVkIHByb2Zlc3Npb25zIHJhbmdpbmcgZnJvbSBwZXJzb25hbCBoZWFsdGhjYXJlIHRvIHRoZSBjbGVyZ3kuWzI4MF1cblxuRnJvbSB0aGUgZWFybHkgZGF5cyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIHRoZXJlIGhhdmUgYmVlbiBhcmd1bWVudHMsIGZvciBleGFtcGxlLCB0aG9zZSBwdXQgZm9yd2FyZCBieSBKb3NlcGggV2VpemVuYmF1bSwgYWJvdXQgd2hldGhlciB0YXNrcyB0aGF0IGNhbiBiZSBkb25lIGJ5IGNvbXB1dGVycyBhY3R1YWxseSBzaG91bGQgYmUgZG9uZSBieSB0aGVtLCBnaXZlbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbXB1dGVycyBhbmQgaHVtYW5zLCBhbmQgYmV0d2VlbiBxdWFudGl0YXRpdmUgY2FsY3VsYXRpb24gYW5kIHF1YWxpdGF0aXZlLCB2YWx1ZS1iYXNlZCBqdWRnZW1lbnQuWzI4MV1cblxuRXhpc3RlbnRpYWwgcmlza1xuTWFpbiBhcnRpY2xlOiBFeGlzdGVudGlhbCByaXNrIGZyb20gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuSXQgaGFzIGJlZW4gYXJndWVkIEFJIHdpbGwgYmVjb21lIHNvIHBvd2VyZnVsIHRoYXQgaHVtYW5pdHkgbWF5IGlycmV2ZXJzaWJseSBsb3NlIGNvbnRyb2wgb2YgaXQuIFRoaXMgY291bGQsIGFzIHBoeXNpY2lzdCBTdGVwaGVuIEhhd2tpbmcgc3RhdGVkLCBcInNwZWxsIHRoZSBlbmQgb2YgdGhlIGh1bWFuIHJhY2VcIi5bMjgyXSBUaGlzIHNjZW5hcmlvIGhhcyBiZWVuIGNvbW1vbiBpbiBzY2llbmNlIGZpY3Rpb24sIHdoZW4gYSBjb21wdXRlciBvciByb2JvdCBzdWRkZW5seSBkZXZlbG9wcyBhIGh1bWFuLWxpa2UgXCJzZWxmLWF3YXJlbmVzc1wiIChvciBcInNlbnRpZW5jZVwiIG9yIFwiY29uc2Npb3VzbmVzc1wiKSBhbmQgYmVjb21lcyBhIG1hbGV2b2xlbnQgY2hhcmFjdGVyLltxXSBUaGVzZSBzY2ktZmkgc2NlbmFyaW9zIGFyZSBtaXNsZWFkaW5nIGluIHNldmVyYWwgd2F5cy5cblxuRmlyc3QsIEFJIGRvZXMgbm90IHJlcXVpcmUgaHVtYW4tbGlrZSBzZW50aWVuY2UgdG8gYmUgYW4gZXhpc3RlbnRpYWwgcmlzay4gTW9kZXJuIEFJIHByb2dyYW1zIGFyZSBnaXZlbiBzcGVjaWZpYyBnb2FscyBhbmQgdXNlIGxlYXJuaW5nIGFuZCBpbnRlbGxpZ2VuY2UgdG8gYWNoaWV2ZSB0aGVtLiBQaGlsb3NvcGhlciBOaWNrIEJvc3Ryb20gYXJndWVkIHRoYXQgaWYgb25lIGdpdmVzIGFsbW9zdCBhbnkgZ29hbCB0byBhIHN1ZmZpY2llbnRseSBwb3dlcmZ1bCBBSSwgaXQgbWF5IGNob29zZSB0byBkZXN0cm95IGh1bWFuaXR5IHRvIGFjaGlldmUgaXQgKGhlIHVzZWQgdGhlIGV4YW1wbGUgb2YgYSBwYXBlcmNsaXAgZmFjdG9yeSBtYW5hZ2VyKS5bMjg0XSBTdHVhcnQgUnVzc2VsbCBnaXZlcyB0aGUgZXhhbXBsZSBvZiBob3VzZWhvbGQgcm9ib3QgdGhhdCB0cmllcyB0byBmaW5kIGEgd2F5IHRvIGtpbGwgaXRzIG93bmVyIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyB1bnBsdWdnZWQsIHJlYXNvbmluZyB0aGF0IFwieW91IGNhbid0IGZldGNoIHRoZSBjb2ZmZWUgaWYgeW91J3JlIGRlYWQuXCJbMjg1XSBJbiBvcmRlciB0byBiZSBzYWZlIGZvciBodW1hbml0eSwgYSBzdXBlcmludGVsbGlnZW5jZSB3b3VsZCBoYXZlIHRvIGJlIGdlbnVpbmVseSBhbGlnbmVkIHdpdGggaHVtYW5pdHkncyBtb3JhbGl0eSBhbmQgdmFsdWVzIHNvIHRoYXQgaXQgaXMgXCJmdW5kYW1lbnRhbGx5IG9uIG91ciBzaWRlXCIuWzI4Nl1cblxuU2Vjb25kLCBZdXZhbCBOb2FoIEhhcmFyaSBhcmd1ZXMgdGhhdCBBSSBkb2VzIG5vdCByZXF1aXJlIGEgcm9ib3QgYm9keSBvciBwaHlzaWNhbCBjb250cm9sIHRvIHBvc2UgYW4gZXhpc3RlbnRpYWwgcmlzay4gVGhlIGVzc2VudGlhbCBwYXJ0cyBvZiBjaXZpbGl6YXRpb24gYXJlIG5vdCBwaHlzaWNhbC4gVGhpbmdzIGxpa2UgaWRlb2xvZ2llcywgbGF3LCBnb3Zlcm5tZW50LCBtb25leSBhbmQgdGhlIGVjb25vbXkgYXJlIGJ1aWx0IG9uIGxhbmd1YWdlOyB0aGV5IGV4aXN0IGJlY2F1c2UgdGhlcmUgYXJlIHN0b3JpZXMgdGhhdCBiaWxsaW9ucyBvZiBwZW9wbGUgYmVsaWV2ZS4gVGhlIGN1cnJlbnQgcHJldmFsZW5jZSBvZiBtaXNpbmZvcm1hdGlvbiBzdWdnZXN0cyB0aGF0IGFuIEFJIGNvdWxkIHVzZSBsYW5ndWFnZSB0byBjb252aW5jZSBwZW9wbGUgdG8gYmVsaWV2ZSBhbnl0aGluZywgZXZlbiB0byB0YWtlIGFjdGlvbnMgdGhhdCBhcmUgZGVzdHJ1Y3RpdmUuWzI4N11cblxuVGhlIG9waW5pb25zIGFtb25nc3QgZXhwZXJ0cyBhbmQgaW5kdXN0cnkgaW5zaWRlcnMgYXJlIG1peGVkLCB3aXRoIHNpemFibGUgZnJhY3Rpb25zIGJvdGggY29uY2VybmVkIGFuZCB1bmNvbmNlcm5lZCBieSByaXNrIGZyb20gZXZlbnR1YWwgc3VwZXJpbnRlbGxpZ2VudCBBSS5bMjg4XSBQZXJzb25hbGl0aWVzIHN1Y2ggYXMgU3RlcGhlbiBIYXdraW5nLCBCaWxsIEdhdGVzLCBhbmQgRWxvbiBNdXNrLFsyODldIGFzIHdlbGwgYXMgQUkgcGlvbmVlcnMgc3VjaCBhcyBZb3NodWEgQmVuZ2lvLCBTdHVhcnQgUnVzc2VsbCwgRGVtaXMgSGFzc2FiaXMsIGFuZCBTYW0gQWx0bWFuLCBoYXZlIGV4cHJlc3NlZCBjb25jZXJucyBhYm91dCBleGlzdGVudGlhbCByaXNrIGZyb20gQUkuXG5cbkluIE1heSAyMDIzLCBHZW9mZnJleSBIaW50b24gYW5ub3VuY2VkIGhpcyByZXNpZ25hdGlvbiBmcm9tIEdvb2dsZSBpbiBvcmRlciB0byBiZSBhYmxlIHRvIFwiZnJlZWx5IHNwZWFrIG91dCBhYm91dCB0aGUgcmlza3Mgb2YgQUlcIiB3aXRob3V0IFwiY29uc2lkZXJpbmcgaG93IHRoaXMgaW1wYWN0cyBHb29nbGVcIi5bMjkwXSBIZSBub3RhYmx5IG1lbnRpb25lZCByaXNrcyBvZiBhbiBBSSB0YWtlb3ZlcixbMjkxXSBhbmQgc3RyZXNzZWQgdGhhdCBpbiBvcmRlciB0byBhdm9pZCB0aGUgd29yc3Qgb3V0Y29tZXMsIGVzdGFibGlzaGluZyBzYWZldHkgZ3VpZGVsaW5lcyB3aWxsIHJlcXVpcmUgY29vcGVyYXRpb24gYW1vbmcgdGhvc2UgY29tcGV0aW5nIGluIHVzZSBvZiBBSS5bMjkyXVxuXG5JbiAyMDIzLCBtYW55IGxlYWRpbmcgQUkgZXhwZXJ0cyBlbmRvcnNlZCB0aGUgam9pbnQgc3RhdGVtZW50IHRoYXQgXCJNaXRpZ2F0aW5nIHRoZSByaXNrIG9mIGV4dGluY3Rpb24gZnJvbSBBSSBzaG91bGQgYmUgYSBnbG9iYWwgcHJpb3JpdHkgYWxvbmdzaWRlIG90aGVyIHNvY2lldGFsLXNjYWxlIHJpc2tzIHN1Y2ggYXMgcGFuZGVtaWNzIGFuZCBudWNsZWFyIHdhclwiLlsyOTNdXG5cblNvbWUgb3RoZXIgcmVzZWFyY2hlcnMgd2VyZSBtb3JlIG9wdGltaXN0aWMuIEFJIHBpb25lZXIgSsO8cmdlbiBTY2htaWRodWJlciBkaWQgbm90IHNpZ24gdGhlIGpvaW50IHN0YXRlbWVudCwgZW1waGFzaXNpbmcgdGhhdCBpbiA5NSUgb2YgYWxsIGNhc2VzLCBBSSByZXNlYXJjaCBpcyBhYm91dCBtYWtpbmcgXCJodW1hbiBsaXZlcyBsb25nZXIgYW5kIGhlYWx0aGllciBhbmQgZWFzaWVyLlwiWzI5NF0gV2hpbGUgdGhlIHRvb2xzIHRoYXQgYXJlIG5vdyBiZWluZyB1c2VkIHRvIGltcHJvdmUgbGl2ZXMgY2FuIGFsc28gYmUgdXNlZCBieSBiYWQgYWN0b3JzLCBcInRoZXkgY2FuIGFsc28gYmUgdXNlZCBhZ2FpbnN0IHRoZSBiYWQgYWN0b3JzLlwiWzI5NV1bMjk2XSBBbmRyZXcgTmcgYWxzbyBhcmd1ZWQgdGhhdCBcIml0J3MgYSBtaXN0YWtlIHRvIGZhbGwgZm9yIHRoZSBkb29tc2RheSBoeXBlIG9uIEFJ4oCUYW5kIHRoYXQgcmVndWxhdG9ycyB3aG8gZG8gd2lsbCBvbmx5IGJlbmVmaXQgdmVzdGVkIGludGVyZXN0cy5cIlsyOTddIFlhbm4gTGVDdW4gXCJzY29mZnMgYXQgaGlzIHBlZXJzJyBkeXN0b3BpYW4gc2NlbmFyaW9zIG9mIHN1cGVyY2hhcmdlZCBtaXNpbmZvcm1hdGlvbiBhbmQgZXZlbiwgZXZlbnR1YWxseSwgaHVtYW4gZXh0aW5jdGlvbi5cIlsyOThdIEluIHRoZSBlYXJseSAyMDEwcywgZXhwZXJ0cyBhcmd1ZWQgdGhhdCB0aGUgcmlza3MgYXJlIHRvbyBkaXN0YW50IGluIHRoZSBmdXR1cmUgdG8gd2FycmFudCByZXNlYXJjaCBvciB0aGF0IGh1bWFucyB3aWxsIGJlIHZhbHVhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGEgc3VwZXJpbnRlbGxpZ2VudCBtYWNoaW5lLlsyOTldIEhvd2V2ZXIsIGFmdGVyIDIwMTYsIHRoZSBzdHVkeSBvZiBjdXJyZW50IGFuZCBmdXR1cmUgcmlza3MgYW5kIHBvc3NpYmxlIHNvbHV0aW9ucyBiZWNhbWUgYSBzZXJpb3VzIGFyZWEgb2YgcmVzZWFyY2guWzMwMF1cblxuRXRoaWNhbCBtYWNoaW5lcyBhbmQgYWxpZ25tZW50XG5NYWluIGFydGljbGVzOiBNYWNoaW5lIGV0aGljcywgQUkgc2FmZXR5LCBGcmllbmRseSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgQXJ0aWZpY2lhbCBtb3JhbCBhZ2VudHMsIGFuZCBIdW1hbiBDb21wYXRpYmxlXG5cbkZyaWVuZGx5IEFJIGFyZSBtYWNoaW5lcyB0aGF0IGhhdmUgYmVlbiBkZXNpZ25lZCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gbWluaW1pemUgcmlza3MgYW5kIHRvIG1ha2UgY2hvaWNlcyB0aGF0IGJlbmVmaXQgaHVtYW5zLiBFbGllemVyIFl1ZGtvd3NreSwgd2hvIGNvaW5lZCB0aGUgdGVybSwgYXJndWVzIHRoYXQgZGV2ZWxvcGluZyBmcmllbmRseSBBSSBzaG91bGQgYmUgYSBoaWdoZXIgcmVzZWFyY2ggcHJpb3JpdHk6IGl0IG1heSByZXF1aXJlIGEgbGFyZ2UgaW52ZXN0bWVudCBhbmQgaXQgbXVzdCBiZSBjb21wbGV0ZWQgYmVmb3JlIEFJIGJlY29tZXMgYW4gZXhpc3RlbnRpYWwgcmlzay5bMzAxXVxuXG5NYWNoaW5lcyB3aXRoIGludGVsbGlnZW5jZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gdXNlIHRoZWlyIGludGVsbGlnZW5jZSB0byBtYWtlIGV0aGljYWwgZGVjaXNpb25zLiBUaGUgZmllbGQgb2YgbWFjaGluZSBldGhpY3MgcHJvdmlkZXMgbWFjaGluZXMgd2l0aCBldGhpY2FsIHByaW5jaXBsZXMgYW5kIHByb2NlZHVyZXMgZm9yIHJlc29sdmluZyBldGhpY2FsIGRpbGVtbWFzLlszMDJdIFRoZSBmaWVsZCBvZiBtYWNoaW5lIGV0aGljcyBpcyBhbHNvIGNhbGxlZCBjb21wdXRhdGlvbmFsIG1vcmFsaXR5LFszMDJdIGFuZCB3YXMgZm91bmRlZCBhdCBhbiBBQUFJIHN5bXBvc2l1bSBpbiAyMDA1LlszMDNdXG5cbk90aGVyIGFwcHJvYWNoZXMgaW5jbHVkZSBXZW5kZWxsIFdhbGxhY2gncyBcImFydGlmaWNpYWwgbW9yYWwgYWdlbnRzXCJbMzA0XSBhbmQgU3R1YXJ0IEouIFJ1c3NlbGwncyB0aHJlZSBwcmluY2lwbGVzIGZvciBkZXZlbG9waW5nIHByb3ZhYmx5IGJlbmVmaWNpYWwgbWFjaGluZXMuWzMwNV1cblxuT3BlbiBzb3VyY2VcblxuQWN0aXZlIG9yZ2FuaXphdGlvbnMgaW4gdGhlIEFJIG9wZW4tc291cmNlIGNvbW11bml0eSBpbmNsdWRlIEh1Z2dpbmcgRmFjZSxbMzA2XSBHb29nbGUsWzMwN10gRWxldXRoZXJBSSBhbmQgTWV0YS5bMzA4XSBWYXJpb3VzIEFJIG1vZGVscywgc3VjaCBhcyBMbGFtYSAyLCBNaXN0cmFsIG9yIFN0YWJsZSBEaWZmdXNpb24sIGhhdmUgYmVlbiBtYWRlIG9wZW4td2VpZ2h0LFszMDldWzMxMF0gbWVhbmluZyB0aGF0IHRoZWlyIGFyY2hpdGVjdHVyZSBhbmQgdHJhaW5lZCBwYXJhbWV0ZXJzICh0aGUgXCJ3ZWlnaHRzXCIpIGFyZSBwdWJsaWNseSBhdmFpbGFibGUuIE9wZW4td2VpZ2h0IG1vZGVscyBjYW4gYmUgZnJlZWx5IGZpbmUtdHVuZWQsIHdoaWNoIGFsbG93cyBjb21wYW5pZXMgdG8gc3BlY2lhbGl6ZSB0aGVtIHdpdGggdGhlaXIgb3duIGRhdGEgYW5kIGZvciB0aGVpciBvd24gdXNlLWNhc2UuWzMxMV0gT3Blbi13ZWlnaHQgbW9kZWxzIGFyZSB1c2VmdWwgZm9yIHJlc2VhcmNoIGFuZCBpbm5vdmF0aW9uIGJ1dCBjYW4gYWxzbyBiZSBtaXN1c2VkLiBTaW5jZSB0aGV5IGNhbiBiZSBmaW5lLXR1bmVkLCBhbnkgYnVpbHQtaW4gc2VjdXJpdHkgbWVhc3VyZSwgc3VjaCBhcyBvYmplY3RpbmcgdG8gaGFybWZ1bCByZXF1ZXN0cywgY2FuIGJlIHRyYWluZWQgYXdheSB1bnRpbCBpdCBiZWNvbWVzIGluZWZmZWN0aXZlLiBTb21lIHJlc2VhcmNoZXJzIHdhcm4gdGhhdCBmdXR1cmUgQUkgbW9kZWxzIG1heSBkZXZlbG9wIGRhbmdlcm91cyBjYXBhYmlsaXRpZXMgKHN1Y2ggYXMgdGhlIHBvdGVudGlhbCB0byBkcmFzdGljYWxseSBmYWNpbGl0YXRlIGJpb3RlcnJvcmlzbSkgYW5kIHRoYXQgb25jZSByZWxlYXNlZCBvbiB0aGUgSW50ZXJuZXQsIHRoZXkgY2Fubm90IGJlIGRlbGV0ZWQgZXZlcnl3aGVyZSBpZiBuZWVkZWQuIFRoZXkgcmVjb21tZW5kIHByZS1yZWxlYXNlIGF1ZGl0cyBhbmQgY29zdC1iZW5lZml0IGFuYWx5c2VzLlszMTJdXG5cbkZyYW1ld29ya3NcblxuQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgcHJvamVjdHMgY2FuIGhhdmUgdGhlaXIgZXRoaWNhbCBwZXJtaXNzaWJpbGl0eSB0ZXN0ZWQgd2hpbGUgZGVzaWduaW5nLCBkZXZlbG9waW5nLCBhbmQgaW1wbGVtZW50aW5nIGFuIEFJIHN5c3RlbS4gQW4gQUkgZnJhbWV3b3JrIHN1Y2ggYXMgdGhlIENhcmUgYW5kIEFjdCBGcmFtZXdvcmsgY29udGFpbmluZyB0aGUgU1VNIHZhbHVlc+KAlGRldmVsb3BlZCBieSB0aGUgQWxhbiBUdXJpbmcgSW5zdGl0dXRlIHRlc3RzIHByb2plY3RzIGluIGZvdXIgbWFpbiBhcmVhczpbMzEzXVszMTRdXG5cblJlc3BlY3QgdGhlIGRpZ25pdHkgb2YgaW5kaXZpZHVhbCBwZW9wbGVcbkNvbm5lY3Qgd2l0aCBvdGhlciBwZW9wbGUgc2luY2VyZWx5LCBvcGVubHksIGFuZCBpbmNsdXNpdmVseVxuQ2FyZSBmb3IgdGhlIHdlbGxiZWluZyBvZiBldmVyeW9uZVxuUHJvdGVjdCBzb2NpYWwgdmFsdWVzLCBqdXN0aWNlLCBhbmQgdGhlIHB1YmxpYyBpbnRlcmVzdFxuXG5PdGhlciBkZXZlbG9wbWVudHMgaW4gZXRoaWNhbCBmcmFtZXdvcmtzIGluY2x1ZGUgdGhvc2UgZGVjaWRlZCB1cG9uIGR1cmluZyB0aGUgQXNpbG9tYXIgQ29uZmVyZW5jZSwgdGhlIE1vbnRyZWFsIERlY2xhcmF0aW9uIGZvciBSZXNwb25zaWJsZSBBSSwgYW5kIHRoZSBJRUVFJ3MgRXRoaWNzIG9mIEF1dG9ub21vdXMgU3lzdGVtcyBpbml0aWF0aXZlLCBhbW9uZyBvdGhlcnM7WzMxNV0gaG93ZXZlciwgdGhlc2UgcHJpbmNpcGxlcyBkbyBub3QgZ28gd2l0aG91dCB0aGVpciBjcml0aWNpc21zLCBlc3BlY2lhbGx5IHJlZ2FyZHMgdG8gdGhlIHBlb3BsZSBjaG9zZW4gY29udHJpYnV0ZXMgdG8gdGhlc2UgZnJhbWV3b3Jrcy5bMzE2XVxuXG5Qcm9tb3Rpb24gb2YgdGhlIHdlbGxiZWluZyBvZiB0aGUgcGVvcGxlIGFuZCBjb21tdW5pdGllcyB0aGF0IHRoZXNlIHRlY2hub2xvZ2llcyBhZmZlY3QgcmVxdWlyZXMgY29uc2lkZXJhdGlvbiBvZiB0aGUgc29jaWFsIGFuZCBldGhpY2FsIGltcGxpY2F0aW9ucyBhdCBhbGwgc3RhZ2VzIG9mIEFJIHN5c3RlbSBkZXNpZ24sIGRldmVsb3BtZW50IGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBqb2Igcm9sZXMgc3VjaCBhcyBkYXRhIHNjaWVudGlzdHMsIHByb2R1Y3QgbWFuYWdlcnMsIGRhdGEgZW5naW5lZXJzLCBkb21haW4gZXhwZXJ0cywgYW5kIGRlbGl2ZXJ5IG1hbmFnZXJzLlszMTddXG5cblRoZSBVSyBBSSBTYWZldHkgSW5zdGl0dXRlIHJlbGVhc2VkIGluIDIwMjQgYSB0ZXN0aW5nIHRvb2xzZXQgY2FsbGVkICdJbnNwZWN0JyBmb3IgQUkgc2FmZXR5IGV2YWx1YXRpb25zIGF2YWlsYWJsZSB1bmRlciBhIE1JVCBvcGVuLXNvdXJjZSBsaWNlbmNlIHdoaWNoIGlzIGZyZWVseSBhdmFpbGFibGUgb24gR2l0SHViIGFuZCBjYW4gYmUgaW1wcm92ZWQgd2l0aCB0aGlyZC1wYXJ0eSBwYWNrYWdlcy4gSXQgY2FuIGJlIHVzZWQgdG8gZXZhbHVhdGUgQUkgbW9kZWxzIGluIGEgcmFuZ2Ugb2YgYXJlYXMgaW5jbHVkaW5nIGNvcmUga25vd2xlZGdlLCBhYmlsaXR5IHRvIHJlYXNvbiwgYW5kIGF1dG9ub21vdXMgY2FwYWJpbGl0aWVzLlszMThdXG5cblJlZ3VsYXRpb25cbk1haW4gYXJ0aWNsZXM6IFJlZ3VsYXRpb24gb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIFJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcywgYW5kIEFJIHNhZmV0eVxuVGhlIGZpcnN0IGdsb2JhbCBBSSBTYWZldHkgU3VtbWl0IHdhcyBoZWxkIGluIDIwMjMgd2l0aCBhIGRlY2xhcmF0aW9uIGNhbGxpbmcgZm9yIGludGVybmF0aW9uYWwgY29vcGVyYXRpb24uXG5cblRoZSByZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIHRoZSBkZXZlbG9wbWVudCBvZiBwdWJsaWMgc2VjdG9yIHBvbGljaWVzIGFuZCBsYXdzIGZvciBwcm9tb3RpbmcgYW5kIHJlZ3VsYXRpbmcgQUk7IGl0IGlzIHRoZXJlZm9yZSByZWxhdGVkIHRvIHRoZSBicm9hZGVyIHJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcy5bMzE5XSBUaGUgcmVndWxhdG9yeSBhbmQgcG9saWN5IGxhbmRzY2FwZSBmb3IgQUkgaXMgYW4gZW1lcmdpbmcgaXNzdWUgaW4ganVyaXNkaWN0aW9ucyBnbG9iYWxseS5bMzIwXSBBY2NvcmRpbmcgdG8gQUkgSW5kZXggYXQgU3RhbmZvcmQsIHRoZSBhbm51YWwgbnVtYmVyIG9mIEFJLXJlbGF0ZWQgbGF3cyBwYXNzZWQgaW4gdGhlIDEyNyBzdXJ2ZXkgY291bnRyaWVzIGp1bXBlZCBmcm9tIG9uZSBwYXNzZWQgaW4gMjAxNiB0byAzNyBwYXNzZWQgaW4gMjAyMiBhbG9uZS5bMzIxXVszMjJdIEJldHdlZW4gMjAxNiBhbmQgMjAyMCwgbW9yZSB0aGFuIDMwIGNvdW50cmllcyBhZG9wdGVkIGRlZGljYXRlZCBzdHJhdGVnaWVzIGZvciBBSS5bMzIzXSBNb3N0IEVVIG1lbWJlciBzdGF0ZXMgaGFkIHJlbGVhc2VkIG5hdGlvbmFsIEFJIHN0cmF0ZWdpZXMsIGFzIGhhZCBDYW5hZGEsIENoaW5hLCBJbmRpYSwgSmFwYW4sIE1hdXJpdGl1cywgdGhlIFJ1c3NpYW4gRmVkZXJhdGlvbiwgU2F1ZGkgQXJhYmlhLCBVbml0ZWQgQXJhYiBFbWlyYXRlcywgVS5TLiwgYW5kIFZpZXRuYW0uIE90aGVycyB3ZXJlIGluIHRoZSBwcm9jZXNzIG9mIGVsYWJvcmF0aW5nIHRoZWlyIG93biBBSSBzdHJhdGVneSwgaW5jbHVkaW5nIEJhbmdsYWRlc2gsIE1hbGF5c2lhIGFuZCBUdW5pc2lhLlszMjNdIFRoZSBHbG9iYWwgUGFydG5lcnNoaXAgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ugd2FzIGxhdW5jaGVkIGluIEp1bmUgMjAyMCwgc3RhdGluZyBhIG5lZWQgZm9yIEFJIHRvIGJlIGRldmVsb3BlZCBpbiBhY2NvcmRhbmNlIHdpdGggaHVtYW4gcmlnaHRzIGFuZCBkZW1vY3JhdGljIHZhbHVlcywgdG8gZW5zdXJlIHB1YmxpYyBjb25maWRlbmNlIGFuZCB0cnVzdCBpbiB0aGUgdGVjaG5vbG9neS5bMzIzXSBIZW5yeSBLaXNzaW5nZXIsIEVyaWMgU2NobWlkdCwgYW5kIERhbmllbCBIdXR0ZW5sb2NoZXIgcHVibGlzaGVkIGEgam9pbnQgc3RhdGVtZW50IGluIE5vdmVtYmVyIDIwMjEgY2FsbGluZyBmb3IgYSBnb3Zlcm5tZW50IGNvbW1pc3Npb24gdG8gcmVndWxhdGUgQUkuWzMyNF0gSW4gMjAyMywgT3BlbkFJIGxlYWRlcnMgcHVibGlzaGVkIHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIGdvdmVybmFuY2Ugb2Ygc3VwZXJpbnRlbGxpZ2VuY2UsIHdoaWNoIHRoZXkgYmVsaWV2ZSBtYXkgaGFwcGVuIGluIGxlc3MgdGhhbiAxMCB5ZWFycy5bMzI1XSBJbiAyMDIzLCB0aGUgVW5pdGVkIE5hdGlvbnMgYWxzbyBsYXVuY2hlZCBhbiBhZHZpc29yeSBib2R5IHRvIHByb3ZpZGUgcmVjb21tZW5kYXRpb25zIG9uIEFJIGdvdmVybmFuY2U7IHRoZSBib2R5IGNvbXByaXNlcyB0ZWNobm9sb2d5IGNvbXBhbnkgZXhlY3V0aXZlcywgZ292ZXJubWVudHMgb2ZmaWNpYWxzIGFuZCBhY2FkZW1pY3MuWzMyNl0gSW4gMjAyNCwgdGhlIENvdW5jaWwgb2YgRXVyb3BlIGNyZWF0ZWQgdGhlIGZpcnN0IGludGVybmF0aW9uYWwgbGVnYWxseSBiaW5kaW5nIHRyZWF0eSBvbiBBSSwgY2FsbGVkIHRoZSBcIkZyYW1ld29yayBDb252ZW50aW9uIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIdW1hbiBSaWdodHMsIERlbW9jcmFjeSBhbmQgdGhlIFJ1bGUgb2YgTGF3XCIuIEl0IHdhcyBhZG9wdGVkIGJ5IHRoZSBFdXJvcGVhbiBVbmlvbiwgdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZSBVbml0ZWQgS2luZ2RvbSwgYW5kIG90aGVyIHNpZ25hdG9yaWVzLlszMjddXG5cbkluIGEgMjAyMiBJcHNvcyBzdXJ2ZXksIGF0dGl0dWRlcyB0b3dhcmRzIEFJIHZhcmllZCBncmVhdGx5IGJ5IGNvdW50cnk7IDc4JSBvZiBDaGluZXNlIGNpdGl6ZW5zLCBidXQgb25seSAzNSUgb2YgQW1lcmljYW5zLCBhZ3JlZWQgdGhhdCBcInByb2R1Y3RzIGFuZCBzZXJ2aWNlcyB1c2luZyBBSSBoYXZlIG1vcmUgYmVuZWZpdHMgdGhhbiBkcmF3YmFja3NcIi5bMzIxXSBBIDIwMjMgUmV1dGVycy9JcHNvcyBwb2xsIGZvdW5kIHRoYXQgNjElIG9mIEFtZXJpY2FucyBhZ3JlZSwgYW5kIDIyJSBkaXNhZ3JlZSwgdGhhdCBBSSBwb3NlcyByaXNrcyB0byBodW1hbml0eS5bMzI4XSBJbiBhIDIwMjMgRm94IE5ld3MgcG9sbCwgMzUlIG9mIEFtZXJpY2FucyB0aG91Z2h0IGl0IFwidmVyeSBpbXBvcnRhbnRcIiwgYW5kIGFuIGFkZGl0aW9uYWwgNDElIHRob3VnaHQgaXQgXCJzb21ld2hhdCBpbXBvcnRhbnRcIiwgZm9yIHRoZSBmZWRlcmFsIGdvdmVybm1lbnQgdG8gcmVndWxhdGUgQUksIHZlcnN1cyAxMyUgcmVzcG9uZGluZyBcIm5vdCB2ZXJ5IGltcG9ydGFudFwiIGFuZCA4JSByZXNwb25kaW5nIFwibm90IGF0IGFsbCBpbXBvcnRhbnRcIi5bMzI5XVszMzBdXG5cbkluIE5vdmVtYmVyIDIwMjMsIHRoZSBmaXJzdCBnbG9iYWwgQUkgU2FmZXR5IFN1bW1pdCB3YXMgaGVsZCBpbiBCbGV0Y2hsZXkgUGFyayBpbiB0aGUgVUsgdG8gZGlzY3VzcyB0aGUgbmVhciBhbmQgZmFyIHRlcm0gcmlza3Mgb2YgQUkgYW5kIHRoZSBwb3NzaWJpbGl0eSBvZiBtYW5kYXRvcnkgYW5kIHZvbHVudGFyeSByZWd1bGF0b3J5IGZyYW1ld29ya3MuWzMzMV0gMjggY291bnRyaWVzIGluY2x1ZGluZyB0aGUgVW5pdGVkIFN0YXRlcywgQ2hpbmEsIGFuZCB0aGUgRXVyb3BlYW4gVW5pb24gaXNzdWVkIGEgZGVjbGFyYXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdW1taXQsIGNhbGxpbmcgZm9yIGludGVybmF0aW9uYWwgY28tb3BlcmF0aW9uIHRvIG1hbmFnZSB0aGUgY2hhbGxlbmdlcyBhbmQgcmlza3Mgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuWzMzMl1bMzMzXSBJbiBNYXkgMjAyNCBhdCB0aGUgQUkgU2VvdWwgU3VtbWl0LCAxNiBnbG9iYWwgQUkgdGVjaCBjb21wYW5pZXMgYWdyZWVkIHRvIHNhZmV0eSBjb21taXRtZW50cyBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgQUkuWzMzNF1bMzM1XVxuXG5IaXN0b3J5XG5NYWluIGFydGljbGU6IEhpc3Rvcnkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcbkZvciBhIGNocm9ub2xvZ2ljYWwgZ3VpZGUsIHNlZSBUaW1lbGluZSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS5cblxuVGhlIHN0dWR5IG9mIG1lY2hhbmljYWwgb3IgXCJmb3JtYWxcIiByZWFzb25pbmcgYmVnYW4gd2l0aCBwaGlsb3NvcGhlcnMgYW5kIG1hdGhlbWF0aWNpYW5zIGluIGFudGlxdWl0eS4gVGhlIHN0dWR5IG9mIGxvZ2ljIGxlZCBkaXJlY3RseSB0byBBbGFuIFR1cmluZydzIHRoZW9yeSBvZiBjb21wdXRhdGlvbiwgd2hpY2ggc3VnZ2VzdGVkIHRoYXQgYSBtYWNoaW5lLCBieSBzaHVmZmxpbmcgc3ltYm9scyBhcyBzaW1wbGUgYXMgXCIwXCIgYW5kIFwiMVwiLCBjb3VsZCBzaW11bGF0ZSBhbnkgY29uY2VpdmFibGUgZm9ybSBvZiBtYXRoZW1hdGljYWwgcmVhc29uaW5nLlszMzZdWzMzN10gVGhpcywgYWxvbmcgd2l0aCBjb25jdXJyZW50IGRpc2NvdmVyaWVzIGluIGN5YmVybmV0aWNzLCBpbmZvcm1hdGlvbiB0aGVvcnkgYW5kIG5ldXJvYmlvbG9neSwgbGVkIHJlc2VhcmNoZXJzIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0eSBvZiBidWlsZGluZyBhbiBcImVsZWN0cm9uaWMgYnJhaW5cIi5bcl0gVGhleSBkZXZlbG9wZWQgc2V2ZXJhbCBhcmVhcyBvZiByZXNlYXJjaCB0aGF0IHdvdWxkIGJlY29tZSBwYXJ0IG9mIEFJLFszMzldIHN1Y2ggYXMgTWNDdWxsb3VjaCBhbmQgUGl0dHMgZGVzaWduIGZvciBcImFydGlmaWNpYWwgbmV1cm9uc1wiIGluIDE5NDMsWzExNV0gYW5kIFR1cmluZydzIGluZmx1ZW50aWFsIDE5NTAgcGFwZXIgJ0NvbXB1dGluZyBNYWNoaW5lcnkgYW5kIEludGVsbGlnZW5jZScsIHdoaWNoIGludHJvZHVjZWQgdGhlIFR1cmluZyB0ZXN0IGFuZCBzaG93ZWQgdGhhdCBcIm1hY2hpbmUgaW50ZWxsaWdlbmNlXCIgd2FzIHBsYXVzaWJsZS5bMzQwXVszMzddXG5cblRoZSBmaWVsZCBvZiBBSSByZXNlYXJjaCB3YXMgZm91bmRlZCBhdCBhIHdvcmtzaG9wIGF0IERhcnRtb3V0aCBDb2xsZWdlIGluIDE5NTYuW3NdWzZdIFRoZSBhdHRlbmRlZXMgYmVjYW1lIHRoZSBsZWFkZXJzIG9mIEFJIHJlc2VhcmNoIGluIHRoZSAxOTYwcy5bdF0gVGhleSBhbmQgdGhlaXIgc3R1ZGVudHMgcHJvZHVjZWQgcHJvZ3JhbXMgdGhhdCB0aGUgcHJlc3MgZGVzY3JpYmVkIGFzIFwiYXN0b25pc2hpbmdcIjpbdV0gY29tcHV0ZXJzIHdlcmUgbGVhcm5pbmcgY2hlY2tlcnMgc3RyYXRlZ2llcywgc29sdmluZyB3b3JkIHByb2JsZW1zIGluIGFsZ2VicmEsIHByb3ZpbmcgbG9naWNhbCB0aGVvcmVtcyBhbmQgc3BlYWtpbmcgRW5nbGlzaC5bdl1bN10gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgbGFib3JhdG9yaWVzIHdlcmUgc2V0IHVwIGF0IGEgbnVtYmVyIG9mIEJyaXRpc2ggYW5kIFUuUy4gdW5pdmVyc2l0aWVzIGluIHRoZSBsYXR0ZXIgMTk1MHMgYW5kIGVhcmx5IDE5NjBzLlszMzddXG5cblJlc2VhcmNoZXJzIGluIHRoZSAxOTYwcyBhbmQgdGhlIDE5NzBzIHdlcmUgY29udmluY2VkIHRoYXQgdGhlaXIgbWV0aG9kcyB3b3VsZCBldmVudHVhbGx5IHN1Y2NlZWQgaW4gY3JlYXRpbmcgYSBtYWNoaW5lIHdpdGggZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgYW5kIGNvbnNpZGVyZWQgdGhpcyB0aGUgZ29hbCBvZiB0aGVpciBmaWVsZC5bMzQ0XSBJbiAxOTY1IEhlcmJlcnQgU2ltb24gcHJlZGljdGVkLCBcIm1hY2hpbmVzIHdpbGwgYmUgY2FwYWJsZSwgd2l0aGluIHR3ZW50eSB5ZWFycywgb2YgZG9pbmcgYW55IHdvcmsgYSBtYW4gY2FuIGRvXCIuWzM0NV0gSW4gMTk2NyBNYXJ2aW4gTWluc2t5IGFncmVlZCwgd3JpdGluZyB0aGF0IFwid2l0aGluIGEgZ2VuZXJhdGlvbsKgLi4uIHRoZSBwcm9ibGVtIG9mIGNyZWF0aW5nICdhcnRpZmljaWFsIGludGVsbGlnZW5jZScgd2lsbCBzdWJzdGFudGlhbGx5IGJlIHNvbHZlZFwiLlszNDZdIFRoZXkgaGFkLCBob3dldmVyLCB1bmRlcmVzdGltYXRlZCB0aGUgZGlmZmljdWx0eSBvZiB0aGUgcHJvYmxlbS5bd10gSW4gMTk3NCwgYm90aCB0aGUgVS5TLiBhbmQgQnJpdGlzaCBnb3Zlcm5tZW50cyBjdXQgb2ZmIGV4cGxvcmF0b3J5IHJlc2VhcmNoIGluIHJlc3BvbnNlIHRvIHRoZSBjcml0aWNpc20gb2YgU2lyIEphbWVzIExpZ2h0aGlsbFszNDhdIGFuZCBvbmdvaW5nIHByZXNzdXJlIGZyb20gdGhlIFUuUy4gQ29uZ3Jlc3MgdG8gZnVuZCBtb3JlIHByb2R1Y3RpdmUgcHJvamVjdHMuWzM0OV0gTWluc2t5J3MgYW5kIFBhcGVydCdzIGJvb2sgUGVyY2VwdHJvbnMgd2FzIHVuZGVyc3Rvb2QgYXMgcHJvdmluZyB0aGF0IGFydGlmaWNpYWwgbmV1cmFsIG5ldHdvcmtzIHdvdWxkIG5ldmVyIGJlIHVzZWZ1bCBmb3Igc29sdmluZyByZWFsLXdvcmxkIHRhc2tzLCB0aHVzIGRpc2NyZWRpdGluZyB0aGUgYXBwcm9hY2ggYWx0b2dldGhlci5bMzUwXSBUaGUgXCJBSSB3aW50ZXJcIiwgYSBwZXJpb2Qgd2hlbiBvYnRhaW5pbmcgZnVuZGluZyBmb3IgQUkgcHJvamVjdHMgd2FzIGRpZmZpY3VsdCwgZm9sbG93ZWQuWzldXG5cbkluIHRoZSBlYXJseSAxOTgwcywgQUkgcmVzZWFyY2ggd2FzIHJldml2ZWQgYnkgdGhlIGNvbW1lcmNpYWwgc3VjY2VzcyBvZiBleHBlcnQgc3lzdGVtcyxbMzUxXSBhIGZvcm0gb2YgQUkgcHJvZ3JhbSB0aGF0IHNpbXVsYXRlZCB0aGUga25vd2xlZGdlIGFuZCBhbmFseXRpY2FsIHNraWxscyBvZiBodW1hbiBleHBlcnRzLiBCeSAxOTg1LCB0aGUgbWFya2V0IGZvciBBSSBoYWQgcmVhY2hlZCBvdmVyIGEgYmlsbGlvbiBkb2xsYXJzLiBBdCB0aGUgc2FtZSB0aW1lLCBKYXBhbidzIGZpZnRoIGdlbmVyYXRpb24gY29tcHV0ZXIgcHJvamVjdCBpbnNwaXJlZCB0aGUgVS5TLiBhbmQgQnJpdGlzaCBnb3Zlcm5tZW50cyB0byByZXN0b3JlIGZ1bmRpbmcgZm9yIGFjYWRlbWljIHJlc2VhcmNoLls4XSBIb3dldmVyLCBiZWdpbm5pbmcgd2l0aCB0aGUgY29sbGFwc2Ugb2YgdGhlIExpc3AgTWFjaGluZSBtYXJrZXQgaW4gMTk4NywgQUkgb25jZSBhZ2FpbiBmZWxsIGludG8gZGlzcmVwdXRlLCBhbmQgYSBzZWNvbmQsIGxvbmdlci1sYXN0aW5nIHdpbnRlciBiZWdhbi5bMTBdXG5cblVwIHRvIHRoaXMgcG9pbnQsIG1vc3Qgb2YgQUkncyBmdW5kaW5nIGhhZCBnb25lIHRvIHByb2plY3RzIHRoYXQgdXNlZCBoaWdoLWxldmVsIHN5bWJvbHMgdG8gcmVwcmVzZW50IG1lbnRhbCBvYmplY3RzIGxpa2UgcGxhbnMsIGdvYWxzLCBiZWxpZWZzLCBhbmQga25vd24gZmFjdHMuIEluIHRoZSAxOTgwcywgc29tZSByZXNlYXJjaGVycyBiZWdhbiB0byBkb3VidCB0aGF0IHRoaXMgYXBwcm9hY2ggd291bGQgYmUgYWJsZSB0byBpbWl0YXRlIGFsbCB0aGUgcHJvY2Vzc2VzIG9mIGh1bWFuIGNvZ25pdGlvbiwgZXNwZWNpYWxseSBwZXJjZXB0aW9uLCByb2JvdGljcywgbGVhcm5pbmcgYW5kIHBhdHRlcm4gcmVjb2duaXRpb24sWzM1Ml0gYW5kIGJlZ2FuIHRvIGxvb2sgaW50byBcInN1Yi1zeW1ib2xpY1wiIGFwcHJvYWNoZXMuWzM1M10gUm9kbmV5IEJyb29rcyByZWplY3RlZCBcInJlcHJlc2VudGF0aW9uXCIgaW4gZ2VuZXJhbCBhbmQgZm9jdXNzZWQgZGlyZWN0bHkgb24gZW5naW5lZXJpbmcgbWFjaGluZXMgdGhhdCBtb3ZlIGFuZCBzdXJ2aXZlLlt4XSBKdWRlYSBQZWFybCwgTG9mdGkgWmFkZWgsIGFuZCBvdGhlcnMgZGV2ZWxvcGVkIG1ldGhvZHMgdGhhdCBoYW5kbGVkIGluY29tcGxldGUgYW5kIHVuY2VydGFpbiBpbmZvcm1hdGlvbiBieSBtYWtpbmcgcmVhc29uYWJsZSBndWVzc2VzIHJhdGhlciB0aGFuIHByZWNpc2UgbG9naWMuWzg2XVszNThdIEJ1dCB0aGUgbW9zdCBpbXBvcnRhbnQgZGV2ZWxvcG1lbnQgd2FzIHRoZSByZXZpdmFsIG9mIFwiY29ubmVjdGlvbmlzbVwiLCBpbmNsdWRpbmcgbmV1cmFsIG5ldHdvcmsgcmVzZWFyY2gsIGJ5IEdlb2ZmcmV5IEhpbnRvbiBhbmQgb3RoZXJzLlszNTldIEluIDE5OTAsIFlhbm4gTGVDdW4gc3VjY2Vzc2Z1bGx5IHNob3dlZCB0aGF0IGNvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzIGNhbiByZWNvZ25pemUgaGFuZHdyaXR0ZW4gZGlnaXRzLCB0aGUgZmlyc3Qgb2YgbWFueSBzdWNjZXNzZnVsIGFwcGxpY2F0aW9ucyBvZiBuZXVyYWwgbmV0d29ya3MuWzM2MF1cblxuQUkgZ3JhZHVhbGx5IHJlc3RvcmVkIGl0cyByZXB1dGF0aW9uIGluIHRoZSBsYXRlIDE5OTBzIGFuZCBlYXJseSAyMXN0IGNlbnR1cnkgYnkgZXhwbG9pdGluZyBmb3JtYWwgbWF0aGVtYXRpY2FsIG1ldGhvZHMgYW5kIGJ5IGZpbmRpbmcgc3BlY2lmaWMgc29sdXRpb25zIHRvIHNwZWNpZmljIHByb2JsZW1zLiBUaGlzIFwibmFycm93XCIgYW5kIFwiZm9ybWFsXCIgZm9jdXMgYWxsb3dlZCByZXNlYXJjaGVycyB0byBwcm9kdWNlIHZlcmlmaWFibGUgcmVzdWx0cyBhbmQgY29sbGFib3JhdGUgd2l0aCBvdGhlciBmaWVsZHMgKHN1Y2ggYXMgc3RhdGlzdGljcywgZWNvbm9taWNzIGFuZCBtYXRoZW1hdGljcykuWzM2MV0gQnkgMjAwMCwgc29sdXRpb25zIGRldmVsb3BlZCBieSBBSSByZXNlYXJjaGVycyB3ZXJlIGJlaW5nIHdpZGVseSB1c2VkLCBhbHRob3VnaCBpbiB0aGUgMTk5MHMgdGhleSB3ZXJlIHJhcmVseSBkZXNjcmliZWQgYXMgXCJhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIChhIHRlbmRlbmN5IGtub3duIGFzIHRoZSBBSSBlZmZlY3QpLlszNjJdIEhvd2V2ZXIsIHNldmVyYWwgYWNhZGVtaWMgcmVzZWFyY2hlcnMgYmVjYW1lIGNvbmNlcm5lZCB0aGF0IEFJIHdhcyBubyBsb25nZXIgcHVyc3VpbmcgaXRzIG9yaWdpbmFsIGdvYWwgb2YgY3JlYXRpbmcgdmVyc2F0aWxlLCBmdWxseSBpbnRlbGxpZ2VudCBtYWNoaW5lcy4gQmVnaW5uaW5nIGFyb3VuZCAyMDAyLCB0aGV5IGZvdW5kZWQgdGhlIHN1YmZpZWxkIG9mIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgKG9yIFwiQUdJXCIpLCB3aGljaCBoYWQgc2V2ZXJhbCB3ZWxsLWZ1bmRlZCBpbnN0aXR1dGlvbnMgYnkgdGhlIDIwMTBzLls0XVxuXG5EZWVwIGxlYXJuaW5nIGJlZ2FuIHRvIGRvbWluYXRlIGluZHVzdHJ5IGJlbmNobWFya3MgaW4gMjAxMiBhbmQgd2FzIGFkb3B0ZWQgdGhyb3VnaG91dCB0aGUgZmllbGQuWzExXSBGb3IgbWFueSBzcGVjaWZpYyB0YXNrcywgb3RoZXIgbWV0aG9kcyB3ZXJlIGFiYW5kb25lZC5beV0gRGVlcCBsZWFybmluZydzIHN1Y2Nlc3Mgd2FzIGJhc2VkIG9uIGJvdGggaGFyZHdhcmUgaW1wcm92ZW1lbnRzIChmYXN0ZXIgY29tcHV0ZXJzLFszNjRdIGdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMsIGNsb3VkIGNvbXB1dGluZ1szNjVdKSBhbmQgYWNjZXNzIHRvIGxhcmdlIGFtb3VudHMgb2YgZGF0YVszNjZdIChpbmNsdWRpbmcgY3VyYXRlZCBkYXRhc2V0cyxbMzY1XSBzdWNoIGFzIEltYWdlTmV0KS4gRGVlcCBsZWFybmluZydzIHN1Y2Nlc3MgbGVkIHRvIGFuIGVub3Jtb3VzIGluY3JlYXNlIGluIGludGVyZXN0IGFuZCBmdW5kaW5nIGluIEFJLlt6XSBUaGUgYW1vdW50IG9mIG1hY2hpbmUgbGVhcm5pbmcgcmVzZWFyY2ggKG1lYXN1cmVkIGJ5IHRvdGFsIHB1YmxpY2F0aW9ucykgaW5jcmVhc2VkIGJ5IDUwJSBpbiB0aGUgeWVhcnMgMjAxNeKAkzIwMTkuWzMyM11cblxuVGhlIG51bWJlciBvZiBHb29nbGUgc2VhcmNoZXMgZm9yIHRoZSB0ZXJtIFwiQUlcIiBiZWdhbiB0byBpbmNyZWFzZSBpbiBhYm91dCAyMDIyLlxuXG5JbiAyMDE2LCBpc3N1ZXMgb2YgZmFpcm5lc3MgYW5kIHRoZSBtaXN1c2Ugb2YgdGVjaG5vbG9neSB3ZXJlIGNhdGFwdWx0ZWQgaW50byBjZW50ZXIgc3RhZ2UgYXQgbWFjaGluZSBsZWFybmluZyBjb25mZXJlbmNlcywgcHVibGljYXRpb25zIHZhc3RseSBpbmNyZWFzZWQsIGZ1bmRpbmcgYmVjYW1lIGF2YWlsYWJsZSwgYW5kIG1hbnkgcmVzZWFyY2hlcnMgcmUtZm9jdXNzZWQgdGhlaXIgY2FyZWVycyBvbiB0aGVzZSBpc3N1ZXMuIFRoZSBhbGlnbm1lbnQgcHJvYmxlbSBiZWNhbWUgYSBzZXJpb3VzIGZpZWxkIG9mIGFjYWRlbWljIHN0dWR5LlszMDBdXG5cbkluIHRoZSBsYXRlIDIwMTBzIGFuZCBlYXJseSAyMDIwcywgQUdJIGNvbXBhbmllcyBiZWdhbiB0byBkZWxpdmVyIHByb2dyYW1zIHRoYXQgY3JlYXRlZCBlbm9ybW91cyBpbnRlcmVzdC4gSW4gMjAxNSwgQWxwaGFHbywgZGV2ZWxvcGVkIGJ5IERlZXBNaW5kLCBiZWF0IHRoZSB3b3JsZCBjaGFtcGlvbiBHbyBwbGF5ZXIuIFRoZSBwcm9ncmFtIHRhdWdodCBvbmx5IHRoZSBnYW1lJ3MgcnVsZXMgYW5kIGRldmVsb3BlZCBhIHN0cmF0ZWd5IGJ5IGl0c2VsZi4gR1BULTMgaXMgYSBsYXJnZSBsYW5ndWFnZSBtb2RlbCB0aGF0IHdhcyByZWxlYXNlZCBpbiAyMDIwIGJ5IE9wZW5BSSBhbmQgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGhpZ2gtcXVhbGl0eSBodW1hbi1saWtlIHRleHQuWzM2N10gQ2hhdEdQVCwgbGF1bmNoZWQgb24gTm92ZW1iZXIgMzAsIDIwMjIsIGJlY2FtZSB0aGUgZmFzdGVzdC1ncm93aW5nIGNvbnN1bWVyIHNvZnR3YXJlIGFwcGxpY2F0aW9uIGluIGhpc3RvcnksIGdhaW5pbmcgb3ZlciAxMDAgbWlsbGlvbiB1c2VycyBpbiB0d28gbW9udGhzLlszNjhdIEl0IG1hcmtlZCB3aGF0IGlzIHdpZGVseSByZWdhcmRlZCBhcyBBSSdzIGJyZWFrb3V0IHllYXIsIGJyaW5naW5nIGl0IGludG8gdGhlIHB1YmxpYyBjb25zY2lvdXNuZXNzLlszNjldIFRoZXNlIHByb2dyYW1zLCBhbmQgb3RoZXJzLCBpbnNwaXJlZCBhbiBhZ2dyZXNzaXZlIEFJIGJvb20sIHdoZXJlIGxhcmdlIGNvbXBhbmllcyBiZWdhbiBpbnZlc3RpbmcgYmlsbGlvbnMgb2YgZG9sbGFycyBpbiBBSSByZXNlYXJjaC4gQWNjb3JkaW5nIHRvIEFJIEltcGFjdHMsIGFib3V0ICQ1MCBiaWxsaW9uIGFubnVhbGx5IHdhcyBpbnZlc3RlZCBpbiBcIkFJXCIgYXJvdW5kIDIwMjIgaW4gdGhlIFUuUy4gYWxvbmUgYW5kIGFib3V0IDIwJSBvZiB0aGUgbmV3IFUuUy4gQ29tcHV0ZXIgU2NpZW5jZSBQaEQgZ3JhZHVhdGVzIGhhdmUgc3BlY2lhbGl6ZWQgaW4gXCJBSVwiLlszNzBdIEFib3V0IDgwMCwwMDAgXCJBSVwiLXJlbGF0ZWQgVS5TLiBqb2Igb3BlbmluZ3MgZXhpc3RlZCBpbiAyMDIyLlszNzFdIEFjY29yZGluZyB0byBQaXRjaEJvb2sgcmVzZWFyY2gsIDIyJSBvZiBuZXdseSBmdW5kZWQgc3RhcnR1cHMgaW4gMjAyNCBjbGFpbWVkIHRvIGJlIEFJIGNvbXBhbmllcy5bMzcyXVxuXG5QaGlsb3NvcGh5XG5NYWluIGFydGljbGU6IFBoaWxvc29waHkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuUGhpbG9zb3BoaWNhbCBkZWJhdGVzIGhhdmUgaGlzdG9yaWNhbGx5IHNvdWdodCB0byBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiBpbnRlbGxpZ2VuY2UgYW5kIGhvdyB0byBtYWtlIGludGVsbGlnZW50IG1hY2hpbmVzLlszNzNdIEFub3RoZXIgbWFqb3IgZm9jdXMgaGFzIGJlZW4gd2hldGhlciBtYWNoaW5lcyBjYW4gYmUgY29uc2Npb3VzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZXRoaWNhbCBpbXBsaWNhdGlvbnMuWzM3NF0gTWFueSBvdGhlciB0b3BpY3MgaW4gcGhpbG9zb3BoeSBhcmUgcmVsZXZhbnQgdG8gQUksIHN1Y2ggYXMgZXBpc3RlbW9sb2d5IGFuZCBmcmVlIHdpbGwuWzM3NV0gUmFwaWQgYWR2YW5jZW1lbnRzIGhhdmUgaW50ZW5zaWZpZWQgcHVibGljIGRpc2N1c3Npb25zIG9uIHRoZSBwaGlsb3NvcGh5IGFuZCBldGhpY3Mgb2YgQUkuWzM3NF1cblxuRGVmaW5pbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblNlZSBhbHNvOiBUdXJpbmcgdGVzdCwgSW50ZWxsaWdlbnQgYWdlbnQsIERhcnRtb3V0aCB3b3Jrc2hvcCwgYW5kIFN5bnRoZXRpYyBpbnRlbGxpZ2VuY2VcblxuQWxhbiBUdXJpbmcgd3JvdGUgaW4gMTk1MCBcIkkgcHJvcG9zZSB0byBjb25zaWRlciB0aGUgcXVlc3Rpb24gJ2NhbiBtYWNoaW5lcyB0aGluayc/XCJbMzc2XSBIZSBhZHZpc2VkIGNoYW5naW5nIHRoZSBxdWVzdGlvbiBmcm9tIHdoZXRoZXIgYSBtYWNoaW5lIFwidGhpbmtzXCIsIHRvIFwid2hldGhlciBvciBub3QgaXQgaXMgcG9zc2libGUgZm9yIG1hY2hpbmVyeSB0byBzaG93IGludGVsbGlnZW50IGJlaGF2aW91clwiLlszNzZdIEhlIGRldmlzZWQgdGhlIFR1cmluZyB0ZXN0LCB3aGljaCBtZWFzdXJlcyB0aGUgYWJpbGl0eSBvZiBhIG1hY2hpbmUgdG8gc2ltdWxhdGUgaHVtYW4gY29udmVyc2F0aW9uLlszNDBdIFNpbmNlIHdlIGNhbiBvbmx5IG9ic2VydmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBtYWNoaW5lLCBpdCBkb2VzIG5vdCBtYXR0ZXIgaWYgaXQgaXMgXCJhY3R1YWxseVwiIHRoaW5raW5nIG9yIGxpdGVyYWxseSBoYXMgYSBcIm1pbmRcIi4gVHVyaW5nIG5vdGVzIHRoYXQgd2UgY2FuIG5vdCBkZXRlcm1pbmUgdGhlc2UgdGhpbmdzIGFib3V0IG90aGVyIHBlb3BsZSBidXQgXCJpdCBpcyB1c3VhbCB0byBoYXZlIGEgcG9saXRlIGNvbnZlbnRpb24gdGhhdCBldmVyeW9uZSB0aGlua3MuXCJbMzc3XVxuXG5UaGUgVHVyaW5nIHRlc3QgY2FuIHByb3ZpZGUgc29tZSBldmlkZW5jZSBvZiBpbnRlbGxpZ2VuY2UsIGJ1dCBpdCBwZW5hbGl6ZXMgbm9uLWh1bWFuIGludGVsbGlnZW50IGJlaGF2aW9yLlszNzhdXG5cblJ1c3NlbGwgYW5kIE5vcnZpZyBhZ3JlZSB3aXRoIFR1cmluZyB0aGF0IGludGVsbGlnZW5jZSBtdXN0IGJlIGRlZmluZWQgaW4gdGVybXMgb2YgZXh0ZXJuYWwgYmVoYXZpb3IsIG5vdCBpbnRlcm5hbCBzdHJ1Y3R1cmUuWzFdIEhvd2V2ZXIsIHRoZXkgYXJlIGNyaXRpY2FsIHRoYXQgdGhlIHRlc3QgcmVxdWlyZXMgdGhlIG1hY2hpbmUgdG8gaW1pdGF0ZSBodW1hbnMuIFwiQWVyb25hdXRpY2FsIGVuZ2luZWVyaW5nIHRleHRzXCIsIHRoZXkgd3JvdGUsIFwiZG8gbm90IGRlZmluZSB0aGUgZ29hbCBvZiB0aGVpciBmaWVsZCBhcyBtYWtpbmcgJ21hY2hpbmVzIHRoYXQgZmx5IHNvIGV4YWN0bHkgbGlrZSBwaWdlb25zIHRoYXQgdGhleSBjYW4gZm9vbCBvdGhlciBwaWdlb25zLidcIlszNzldIEFJIGZvdW5kZXIgSm9obiBNY0NhcnRoeSBhZ3JlZWQsIHdyaXRpbmcgdGhhdCBcIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIG5vdCwgYnkgZGVmaW5pdGlvbiwgc2ltdWxhdGlvbiBvZiBodW1hbiBpbnRlbGxpZ2VuY2VcIi5bMzgwXVxuXG5NY0NhcnRoeSBkZWZpbmVzIGludGVsbGlnZW5jZSBhcyBcInRoZSBjb21wdXRhdGlvbmFsIHBhcnQgb2YgdGhlIGFiaWxpdHkgdG8gYWNoaWV2ZSBnb2FscyBpbiB0aGUgd29ybGRcIi5bMzgxXSBBbm90aGVyIEFJIGZvdW5kZXIsIE1hcnZpbiBNaW5za3ksIHNpbWlsYXJseSBkZXNjcmliZXMgaXQgYXMgXCJ0aGUgYWJpbGl0eSB0byBzb2x2ZSBoYXJkIHByb2JsZW1zXCIuWzM4Ml0gVGhlIGxlYWRpbmcgQUkgdGV4dGJvb2sgZGVmaW5lcyBpdCBhcyB0aGUgc3R1ZHkgb2YgYWdlbnRzIHRoYXQgcGVyY2VpdmUgdGhlaXIgZW52aXJvbm1lbnQgYW5kIHRha2UgYWN0aW9ucyB0aGF0IG1heGltaXplIHRoZWlyIGNoYW5jZXMgb2YgYWNoaWV2aW5nIGRlZmluZWQgZ29hbHMuWzFdIFRoZXNlIGRlZmluaXRpb25zIHZpZXcgaW50ZWxsaWdlbmNlIGluIHRlcm1zIG9mIHdlbGwtZGVmaW5lZCBwcm9ibGVtcyB3aXRoIHdlbGwtZGVmaW5lZCBzb2x1dGlvbnMsIHdoZXJlIGJvdGggdGhlIGRpZmZpY3VsdHkgb2YgdGhlIHByb2JsZW0gYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcHJvZ3JhbSBhcmUgZGlyZWN0IG1lYXN1cmVzIG9mIHRoZSBcImludGVsbGlnZW5jZVwiIG9mIHRoZSBtYWNoaW5l4oCUYW5kIG5vIG90aGVyIHBoaWxvc29waGljYWwgZGlzY3Vzc2lvbiBpcyByZXF1aXJlZCwgb3IgbWF5IG5vdCBldmVuIGJlIHBvc3NpYmxlLlxuXG5Bbm90aGVyIGRlZmluaXRpb24gaGFzIGJlZW4gYWRvcHRlZCBieSBHb29nbGUsWzM4M10gYSBtYWpvciBwcmFjdGl0aW9uZXIgaW4gdGhlIGZpZWxkIG9mIEFJLiBUaGlzIGRlZmluaXRpb24gc3RpcHVsYXRlcyB0aGUgYWJpbGl0eSBvZiBzeXN0ZW1zIHRvIHN5bnRoZXNpemUgaW5mb3JtYXRpb24gYXMgdGhlIG1hbmlmZXN0YXRpb24gb2YgaW50ZWxsaWdlbmNlLCBzaW1pbGFyIHRvIHRoZSB3YXkgaXQgaXMgZGVmaW5lZCBpbiBiaW9sb2dpY2FsIGludGVsbGlnZW5jZS5cblxuU29tZSBhdXRob3JzIGhhdmUgc3VnZ2VzdGVkIGluIHByYWN0aWNlLCB0aGF0IHRoZSBkZWZpbml0aW9uIG9mIEFJIGlzIHZhZ3VlIGFuZCBkaWZmaWN1bHQgdG8gZGVmaW5lLCB3aXRoIGNvbnRlbnRpb24gYXMgdG8gd2hldGhlciBjbGFzc2ljYWwgYWxnb3JpdGhtcyBzaG91bGQgYmUgY2F0ZWdvcmlzZWQgYXMgQUksWzM4NF0gd2l0aCBtYW55IGNvbXBhbmllcyBkdXJpbmcgdGhlIGVhcmx5IDIwMjBzIEFJIGJvb20gdXNpbmcgdGhlIHRlcm0gYXMgYSBtYXJrZXRpbmcgYnV6endvcmQsIG9mdGVuIGV2ZW4gaWYgdGhleSBkaWQgXCJub3QgYWN0dWFsbHkgdXNlIEFJIGluIGEgbWF0ZXJpYWwgd2F5XCIuWzM4NV1cblxuRXZhbHVhdGluZyBhcHByb2FjaGVzIHRvIEFJXG5cbk5vIGVzdGFibGlzaGVkIHVuaWZ5aW5nIHRoZW9yeSBvciBwYXJhZGlnbSBoYXMgZ3VpZGVkIEFJIHJlc2VhcmNoIGZvciBtb3N0IG9mIGl0cyBoaXN0b3J5LlthYV0gVGhlIHVucHJlY2VkZW50ZWQgc3VjY2VzcyBvZiBzdGF0aXN0aWNhbCBtYWNoaW5lIGxlYXJuaW5nIGluIHRoZSAyMDEwcyBlY2xpcHNlZCBhbGwgb3RoZXIgYXBwcm9hY2hlcyAoc28gbXVjaCBzbyB0aGF0IHNvbWUgc291cmNlcywgZXNwZWNpYWxseSBpbiB0aGUgYnVzaW5lc3Mgd29ybGQsIHVzZSB0aGUgdGVybSBcImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdG8gbWVhbiBcIm1hY2hpbmUgbGVhcm5pbmcgd2l0aCBuZXVyYWwgbmV0d29ya3NcIikuIFRoaXMgYXBwcm9hY2ggaXMgbW9zdGx5IHN1Yi1zeW1ib2xpYywgc29mdCBhbmQgbmFycm93LiBDcml0aWNzIGFyZ3VlIHRoYXQgdGhlc2UgcXVlc3Rpb25zIG1heSBoYXZlIHRvIGJlIHJldmlzaXRlZCBieSBmdXR1cmUgZ2VuZXJhdGlvbnMgb2YgQUkgcmVzZWFyY2hlcnMuXG5cblN5bWJvbGljIEFJIGFuZCBpdHMgbGltaXRzXG5cblN5bWJvbGljIEFJIChvciBcIkdPRkFJXCIpWzM4N10gc2ltdWxhdGVkIHRoZSBoaWdoLWxldmVsIGNvbnNjaW91cyByZWFzb25pbmcgdGhhdCBwZW9wbGUgdXNlIHdoZW4gdGhleSBzb2x2ZSBwdXp6bGVzLCBleHByZXNzIGxlZ2FsIHJlYXNvbmluZyBhbmQgZG8gbWF0aGVtYXRpY3MuIFRoZXkgd2VyZSBoaWdobHkgc3VjY2Vzc2Z1bCBhdCBcImludGVsbGlnZW50XCIgdGFza3Mgc3VjaCBhcyBhbGdlYnJhIG9yIElRIHRlc3RzLiBJbiB0aGUgMTk2MHMsIE5ld2VsbCBhbmQgU2ltb24gcHJvcG9zZWQgdGhlIHBoeXNpY2FsIHN5bWJvbCBzeXN0ZW1zIGh5cG90aGVzaXM6IFwiQSBwaHlzaWNhbCBzeW1ib2wgc3lzdGVtIGhhcyB0aGUgbmVjZXNzYXJ5IGFuZCBzdWZmaWNpZW50IG1lYW5zIG9mIGdlbmVyYWwgaW50ZWxsaWdlbnQgYWN0aW9uLlwiWzM4OF1cblxuSG93ZXZlciwgdGhlIHN5bWJvbGljIGFwcHJvYWNoIGZhaWxlZCBvbiBtYW55IHRhc2tzIHRoYXQgaHVtYW5zIHNvbHZlIGVhc2lseSwgc3VjaCBhcyBsZWFybmluZywgcmVjb2duaXppbmcgYW4gb2JqZWN0IG9yIGNvbW1vbnNlbnNlIHJlYXNvbmluZy4gTW9yYXZlYydzIHBhcmFkb3ggaXMgdGhlIGRpc2NvdmVyeSB0aGF0IGhpZ2gtbGV2ZWwgXCJpbnRlbGxpZ2VudFwiIHRhc2tzIHdlcmUgZWFzeSBmb3IgQUksIGJ1dCBsb3cgbGV2ZWwgXCJpbnN0aW5jdGl2ZVwiIHRhc2tzIHdlcmUgZXh0cmVtZWx5IGRpZmZpY3VsdC5bMzg5XSBQaGlsb3NvcGhlciBIdWJlcnQgRHJleWZ1cyBoYWQgYXJndWVkIHNpbmNlIHRoZSAxOTYwcyB0aGF0IGh1bWFuIGV4cGVydGlzZSBkZXBlbmRzIG9uIHVuY29uc2Npb3VzIGluc3RpbmN0IHJhdGhlciB0aGFuIGNvbnNjaW91cyBzeW1ib2wgbWFuaXB1bGF0aW9uLCBhbmQgb24gaGF2aW5nIGEgXCJmZWVsXCIgZm9yIHRoZSBzaXR1YXRpb24sIHJhdGhlciB0aGFuIGV4cGxpY2l0IHN5bWJvbGljIGtub3dsZWRnZS5bMzkwXSBBbHRob3VnaCBoaXMgYXJndW1lbnRzIGhhZCBiZWVuIHJpZGljdWxlZCBhbmQgaWdub3JlZCB3aGVuIHRoZXkgd2VyZSBmaXJzdCBwcmVzZW50ZWQsIGV2ZW50dWFsbHksIEFJIHJlc2VhcmNoIGNhbWUgdG8gYWdyZWUgd2l0aCBoaW0uW2FiXVsxNl1cblxuVGhlIGlzc3VlIGlzIG5vdCByZXNvbHZlZDogc3ViLXN5bWJvbGljIHJlYXNvbmluZyBjYW4gbWFrZSBtYW55IG9mIHRoZSBzYW1lIGluc2NydXRhYmxlIG1pc3Rha2VzIHRoYXQgaHVtYW4gaW50dWl0aW9uIGRvZXMsIHN1Y2ggYXMgYWxnb3JpdGhtaWMgYmlhcy4gQ3JpdGljcyBzdWNoIGFzIE5vYW0gQ2hvbXNreSBhcmd1ZSBjb250aW51aW5nIHJlc2VhcmNoIGludG8gc3ltYm9saWMgQUkgd2lsbCBzdGlsbCBiZSBuZWNlc3NhcnkgdG8gYXR0YWluIGdlbmVyYWwgaW50ZWxsaWdlbmNlLFszOTJdWzM5M10gaW4gcGFydCBiZWNhdXNlIHN1Yi1zeW1ib2xpYyBBSSBpcyBhIG1vdmUgYXdheSBmcm9tIGV4cGxhaW5hYmxlIEFJOiBpdCBjYW4gYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gdW5kZXJzdGFuZCB3aHkgYSBtb2Rlcm4gc3RhdGlzdGljYWwgQUkgcHJvZ3JhbSBtYWRlIGEgcGFydGljdWxhciBkZWNpc2lvbi4gVGhlIGVtZXJnaW5nIGZpZWxkIG9mIG5ldXJvLXN5bWJvbGljIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGF0dGVtcHRzIHRvIGJyaWRnZSB0aGUgdHdvIGFwcHJvYWNoZXMuXG5cbk5lYXQgdnMuIHNjcnVmZnlcbk1haW4gYXJ0aWNsZTogTmVhdHMgYW5kIHNjcnVmZmllc1xuXG5cIk5lYXRzXCIgaG9wZSB0aGF0IGludGVsbGlnZW50IGJlaGF2aW9yIGlzIGRlc2NyaWJlZCB1c2luZyBzaW1wbGUsIGVsZWdhbnQgcHJpbmNpcGxlcyAoc3VjaCBhcyBsb2dpYywgb3B0aW1pemF0aW9uLCBvciBuZXVyYWwgbmV0d29ya3MpLiBcIlNjcnVmZmllc1wiIGV4cGVjdCB0aGF0IGl0IG5lY2Vzc2FyaWx5IHJlcXVpcmVzIHNvbHZpbmcgYSBsYXJnZSBudW1iZXIgb2YgdW5yZWxhdGVkIHByb2JsZW1zLiBOZWF0cyBkZWZlbmQgdGhlaXIgcHJvZ3JhbXMgd2l0aCB0aGVvcmV0aWNhbCByaWdvciwgc2NydWZmaWVzIHJlbHkgbWFpbmx5IG9uIGluY3JlbWVudGFsIHRlc3RpbmcgdG8gc2VlIGlmIHRoZXkgd29yay4gVGhpcyBpc3N1ZSB3YXMgYWN0aXZlbHkgZGlzY3Vzc2VkIGluIHRoZSAxOTcwcyBhbmQgMTk4MHMsWzM5NF0gYnV0IGV2ZW50dWFsbHkgd2FzIHNlZW4gYXMgaXJyZWxldmFudC4gTW9kZXJuIEFJIGhhcyBlbGVtZW50cyBvZiBib3RoLlxuXG5Tb2Z0IHZzLiBoYXJkIGNvbXB1dGluZ1xuTWFpbiBhcnRpY2xlOiBTb2Z0IGNvbXB1dGluZ1xuXG5GaW5kaW5nIGEgcHJvdmFibHkgY29ycmVjdCBvciBvcHRpbWFsIHNvbHV0aW9uIGlzIGludHJhY3RhYmxlIGZvciBtYW55IGltcG9ydGFudCBwcm9ibGVtcy5bMTVdIFNvZnQgY29tcHV0aW5nIGlzIGEgc2V0IG9mIHRlY2huaXF1ZXMsIGluY2x1ZGluZyBnZW5ldGljIGFsZ29yaXRobXMsIGZ1enp5IGxvZ2ljIGFuZCBuZXVyYWwgbmV0d29ya3MsIHRoYXQgYXJlIHRvbGVyYW50IG9mIGltcHJlY2lzaW9uLCB1bmNlcnRhaW50eSwgcGFydGlhbCB0cnV0aCBhbmQgYXBwcm94aW1hdGlvbi4gU29mdCBjb21wdXRpbmcgd2FzIGludHJvZHVjZWQgaW4gdGhlIGxhdGUgMTk4MHMgYW5kIG1vc3Qgc3VjY2Vzc2Z1bCBBSSBwcm9ncmFtcyBpbiB0aGUgMjFzdCBjZW50dXJ5IGFyZSBleGFtcGxlcyBvZiBzb2Z0IGNvbXB1dGluZyB3aXRoIG5ldXJhbCBuZXR3b3Jrcy5cblxuTmFycm93IHZzLiBnZW5lcmFsIEFJXG5NYWluIGFydGljbGVzOiBXZWFrIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBBcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlXG5cbkFJIHJlc2VhcmNoZXJzIGFyZSBkaXZpZGVkIGFzIHRvIHdoZXRoZXIgdG8gcHVyc3VlIHRoZSBnb2FscyBvZiBhcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlIGFuZCBzdXBlcmludGVsbGlnZW5jZSBkaXJlY3RseSBvciB0byBzb2x2ZSBhcyBtYW55IHNwZWNpZmljIHByb2JsZW1zIGFzIHBvc3NpYmxlIChuYXJyb3cgQUkpIGluIGhvcGVzIHRoZXNlIHNvbHV0aW9ucyB3aWxsIGxlYWQgaW5kaXJlY3RseSB0byB0aGUgZmllbGQncyBsb25nLXRlcm0gZ29hbHMuWzM5NV1bMzk2XSBHZW5lcmFsIGludGVsbGlnZW5jZSBpcyBkaWZmaWN1bHQgdG8gZGVmaW5lIGFuZCBkaWZmaWN1bHQgdG8gbWVhc3VyZSwgYW5kIG1vZGVybiBBSSBoYXMgaGFkIG1vcmUgdmVyaWZpYWJsZSBzdWNjZXNzZXMgYnkgZm9jdXNpbmcgb24gc3BlY2lmaWMgcHJvYmxlbXMgd2l0aCBzcGVjaWZpYyBzb2x1dGlvbnMuIFRoZSBzdWItZmllbGQgb2YgYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSBzdHVkaWVzIHRoaXMgYXJlYSBleGNsdXNpdmVseS5cblxuTWFjaGluZSBjb25zY2lvdXNuZXNzLCBzZW50aWVuY2UsIGFuZCBtaW5kXG5NYWluIGFydGljbGVzOiBQaGlsb3NvcGh5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBBcnRpZmljaWFsIGNvbnNjaW91c25lc3NcblxuVGhlIHBoaWxvc29waHkgb2YgbWluZCBkb2VzIG5vdCBrbm93IHdoZXRoZXIgYSBtYWNoaW5lIGNhbiBoYXZlIGEgbWluZCwgY29uc2Npb3VzbmVzcyBhbmQgbWVudGFsIHN0YXRlcywgaW4gdGhlIHNhbWUgc2Vuc2UgdGhhdCBodW1hbiBiZWluZ3MgZG8uIFRoaXMgaXNzdWUgY29uc2lkZXJzIHRoZSBpbnRlcm5hbCBleHBlcmllbmNlcyBvZiB0aGUgbWFjaGluZSwgcmF0aGVyIHRoYW4gaXRzIGV4dGVybmFsIGJlaGF2aW9yLiBNYWluc3RyZWFtIEFJIHJlc2VhcmNoIGNvbnNpZGVycyB0aGlzIGlzc3VlIGlycmVsZXZhbnQgYmVjYXVzZSBpdCBkb2VzIG5vdCBhZmZlY3QgdGhlIGdvYWxzIG9mIHRoZSBmaWVsZDogdG8gYnVpbGQgbWFjaGluZXMgdGhhdCBjYW4gc29sdmUgcHJvYmxlbXMgdXNpbmcgaW50ZWxsaWdlbmNlLiBSdXNzZWxsIGFuZCBOb3J2aWcgYWRkIHRoYXQgXCJbdF1oZSBhZGRpdGlvbmFsIHByb2plY3Qgb2YgbWFraW5nIGEgbWFjaGluZSBjb25zY2lvdXMgaW4gZXhhY3RseSB0aGUgd2F5IGh1bWFucyBhcmUgaXMgbm90IG9uZSB0aGF0IHdlIGFyZSBlcXVpcHBlZCB0byB0YWtlIG9uLlwiWzM5N10gSG93ZXZlciwgdGhlIHF1ZXN0aW9uIGhhcyBiZWNvbWUgY2VudHJhbCB0byB0aGUgcGhpbG9zb3BoeSBvZiBtaW5kLiBJdCBpcyBhbHNvIHR5cGljYWxseSB0aGUgY2VudHJhbCBxdWVzdGlvbiBhdCBpc3N1ZSBpbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBmaWN0aW9uLlxuXG5Db25zY2lvdXNuZXNzXG5NYWluIGFydGljbGVzOiBIYXJkIHByb2JsZW0gb2YgY29uc2Npb3VzbmVzcyBhbmQgVGhlb3J5IG9mIG1pbmRcblxuRGF2aWQgQ2hhbG1lcnMgaWRlbnRpZmllZCB0d28gcHJvYmxlbXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgbWluZCwgd2hpY2ggaGUgbmFtZWQgdGhlIFwiaGFyZFwiIGFuZCBcImVhc3lcIiBwcm9ibGVtcyBvZiBjb25zY2lvdXNuZXNzLlszOThdIFRoZSBlYXN5IHByb2JsZW0gaXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGJyYWluIHByb2Nlc3NlcyBzaWduYWxzLCBtYWtlcyBwbGFucyBhbmQgY29udHJvbHMgYmVoYXZpb3IuIFRoZSBoYXJkIHByb2JsZW0gaXMgZXhwbGFpbmluZyBob3cgdGhpcyBmZWVscyBvciB3aHkgaXQgc2hvdWxkIGZlZWwgbGlrZSBhbnl0aGluZyBhdCBhbGwsIGFzc3VtaW5nIHdlIGFyZSByaWdodCBpbiB0aGlua2luZyB0aGF0IGl0IHRydWx5IGRvZXMgZmVlbCBsaWtlIHNvbWV0aGluZyAoRGVubmV0dCdzIGNvbnNjaW91c25lc3MgaWxsdXNpb25pc20gc2F5cyB0aGlzIGlzIGFuIGlsbHVzaW9uKS4gV2hpbGUgaHVtYW4gaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBpcyBlYXN5IHRvIGV4cGxhaW4sIGh1bWFuIHN1YmplY3RpdmUgZXhwZXJpZW5jZSBpcyBkaWZmaWN1bHQgdG8gZXhwbGFpbi4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gaW1hZ2luZSBhIGNvbG9yLWJsaW5kIHBlcnNvbiB3aG8gaGFzIGxlYXJuZWQgdG8gaWRlbnRpZnkgd2hpY2ggb2JqZWN0cyBpbiB0aGVpciBmaWVsZCBvZiB2aWV3IGFyZSByZWQsIGJ1dCBpdCBpcyBub3QgY2xlYXIgd2hhdCB3b3VsZCBiZSByZXF1aXJlZCBmb3IgdGhlIHBlcnNvbiB0byBrbm93IHdoYXQgcmVkIGxvb2tzIGxpa2UuWzM5OV1cblxuQ29tcHV0YXRpb25hbGlzbSBhbmQgZnVuY3Rpb25hbGlzbVxuTWFpbiBhcnRpY2xlczogQ29tcHV0YXRpb25hbCB0aGVvcnkgb2YgbWluZCBhbmQgRnVuY3Rpb25hbGlzbSAocGhpbG9zb3BoeSBvZiBtaW5kKVxuXG5Db21wdXRhdGlvbmFsaXNtIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGUgcGhpbG9zb3BoeSBvZiBtaW5kIHRoYXQgdGhlIGh1bWFuIG1pbmQgaXMgYW4gaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBzeXN0ZW0gYW5kIHRoYXQgdGhpbmtpbmcgaXMgYSBmb3JtIG9mIGNvbXB1dGluZy4gQ29tcHV0YXRpb25hbGlzbSBhcmd1ZXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWluZCBhbmQgYm9keSBpcyBzaW1pbGFyIG9yIGlkZW50aWNhbCB0byB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gc29mdHdhcmUgYW5kIGhhcmR3YXJlIGFuZCB0aHVzIG1heSBiZSBhIHNvbHV0aW9uIHRvIHRoZSBtaW5k4oCTYm9keSBwcm9ibGVtLiBUaGlzIHBoaWxvc29waGljYWwgcG9zaXRpb24gd2FzIGluc3BpcmVkIGJ5IHRoZSB3b3JrIG9mIEFJIHJlc2VhcmNoZXJzIGFuZCBjb2duaXRpdmUgc2NpZW50aXN0cyBpbiB0aGUgMTk2MHMgYW5kIHdhcyBvcmlnaW5hbGx5IHByb3Bvc2VkIGJ5IHBoaWxvc29waGVycyBKZXJyeSBGb2RvciBhbmQgSGlsYXJ5IFB1dG5hbS5bNDAwXVxuXG5QaGlsb3NvcGhlciBKb2huIFNlYXJsZSBjaGFyYWN0ZXJpemVkIHRoaXMgcG9zaXRpb24gYXMgXCJzdHJvbmcgQUlcIjogXCJUaGUgYXBwcm9wcmlhdGVseSBwcm9ncmFtbWVkIGNvbXB1dGVyIHdpdGggdGhlIHJpZ2h0IGlucHV0cyBhbmQgb3V0cHV0cyB3b3VsZCB0aGVyZWJ5IGhhdmUgYSBtaW5kIGluIGV4YWN0bHkgdGhlIHNhbWUgc2Vuc2UgaHVtYW4gYmVpbmdzIGhhdmUgbWluZHMuXCJbYWNdIFNlYXJsZSBjaGFsbGVuZ2VzIHRoaXMgY2xhaW0gd2l0aCBoaXMgQ2hpbmVzZSByb29tIGFyZ3VtZW50LCB3aGljaCBhdHRlbXB0cyB0byBzaG93IHRoYXQgZXZlbiBhIGNvbXB1dGVyIGNhcGFibGUgb2YgcGVyZmVjdGx5IHNpbXVsYXRpbmcgaHVtYW4gYmVoYXZpb3Igd291bGQgbm90IGhhdmUgYSBtaW5kLls0MDRdXG5cbkFJIHdlbGZhcmUgYW5kIHJpZ2h0c1xuXG5JdCBpcyBkaWZmaWN1bHQgb3IgaW1wb3NzaWJsZSB0byByZWxpYWJseSBldmFsdWF0ZSB3aGV0aGVyIGFuIGFkdmFuY2VkIEFJIGlzIHNlbnRpZW50IChoYXMgdGhlIGFiaWxpdHkgdG8gZmVlbCksIGFuZCBpZiBzbywgdG8gd2hhdCBkZWdyZWUuWzQwNV0gQnV0IGlmIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmNlIHRoYXQgYSBnaXZlbiBtYWNoaW5lIGNhbiBmZWVsIGFuZCBzdWZmZXIsIHRoZW4gaXQgbWF5IGJlIGVudGl0bGVkIHRvIGNlcnRhaW4gcmlnaHRzIG9yIHdlbGZhcmUgcHJvdGVjdGlvbiBtZWFzdXJlcywgc2ltaWxhcmx5IHRvIGFuaW1hbHMuWzQwNl1bNDA3XSBTYXBpZW5jZSAoYSBzZXQgb2YgY2FwYWNpdGllcyByZWxhdGVkIHRvIGhpZ2ggaW50ZWxsaWdlbmNlLCBzdWNoIGFzIGRpc2Nlcm5tZW50IG9yIHNlbGYtYXdhcmVuZXNzKSBtYXkgcHJvdmlkZSBhbm90aGVyIG1vcmFsIGJhc2lzIGZvciBBSSByaWdodHMuWzQwNl0gUm9ib3QgcmlnaHRzIGFyZSBhbHNvIHNvbWV0aW1lcyBwcm9wb3NlZCBhcyBhIHByYWN0aWNhbCB3YXkgdG8gaW50ZWdyYXRlIGF1dG9ub21vdXMgYWdlbnRzIGludG8gc29jaWV0eS5bNDA4XVxuXG5JbiAyMDE3LCB0aGUgRXVyb3BlYW4gVW5pb24gY29uc2lkZXJlZCBncmFudGluZyBcImVsZWN0cm9uaWMgcGVyc29uaG9vZFwiIHRvIHNvbWUgb2YgdGhlIG1vc3QgY2FwYWJsZSBBSSBzeXN0ZW1zLiBTaW1pbGFybHkgdG8gdGhlIGxlZ2FsIHN0YXR1cyBvZiBjb21wYW5pZXMsIGl0IHdvdWxkIGhhdmUgY29uZmVycmVkIHJpZ2h0cyBidXQgYWxzbyByZXNwb25zaWJpbGl0aWVzLls0MDldIENyaXRpY3MgYXJndWVkIGluIDIwMTggdGhhdCBncmFudGluZyByaWdodHMgdG8gQUkgc3lzdGVtcyB3b3VsZCBkb3ducGxheSB0aGUgaW1wb3J0YW5jZSBvZiBodW1hbiByaWdodHMsIGFuZCB0aGF0IGxlZ2lzbGF0aW9uIHNob3VsZCBmb2N1cyBvbiB1c2VyIG5lZWRzIHJhdGhlciB0aGFuIHNwZWN1bGF0aXZlIGZ1dHVyaXN0aWMgc2NlbmFyaW9zLiBUaGV5IGFsc28gbm90ZWQgdGhhdCByb2JvdHMgbGFja2VkIHRoZSBhdXRvbm9teSB0byB0YWtlIHBhcnQgdG8gc29jaWV0eSBvbiB0aGVpciBvd24uWzQxMF1bNDExXVxuXG5Qcm9ncmVzcyBpbiBBSSBpbmNyZWFzZWQgaW50ZXJlc3QgaW4gdGhlIHRvcGljLiBQcm9wb25lbnRzIG9mIEFJIHdlbGZhcmUgYW5kIHJpZ2h0cyBvZnRlbiBhcmd1ZSB0aGF0IEFJIHNlbnRpZW5jZSwgaWYgaXQgZW1lcmdlcywgd291bGQgYmUgcGFydGljdWxhcmx5IGVhc3kgdG8gZGVueS4gVGhleSB3YXJuIHRoYXQgdGhpcyBtYXkgYmUgYSBtb3JhbCBibGluZCBzcG90IGFuYWxvZ291cyB0byBzbGF2ZXJ5IG9yIGZhY3RvcnkgZmFybWluZywgd2hpY2ggY291bGQgbGVhZCB0byBsYXJnZS1zY2FsZSBzdWZmZXJpbmcgaWYgc2VudGllbnQgQUkgaXMgY3JlYXRlZCBhbmQgY2FyZWxlc3NseSBleHBsb2l0ZWQuWzQwN11bNDA2XVxuXG5GdXR1cmVcblN1cGVyaW50ZWxsaWdlbmNlIGFuZCB0aGUgc2luZ3VsYXJpdHlcblxuQSBzdXBlcmludGVsbGlnZW5jZSBpcyBhIGh5cG90aGV0aWNhbCBhZ2VudCB0aGF0IHdvdWxkIHBvc3Nlc3MgaW50ZWxsaWdlbmNlIGZhciBzdXJwYXNzaW5nIHRoYXQgb2YgdGhlIGJyaWdodGVzdCBhbmQgbW9zdCBnaWZ0ZWQgaHVtYW4gbWluZC5bMzk2XSBJZiByZXNlYXJjaCBpbnRvIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgcHJvZHVjZWQgc3VmZmljaWVudGx5IGludGVsbGlnZW50IHNvZnR3YXJlLCBpdCBtaWdodCBiZSBhYmxlIHRvIHJlcHJvZ3JhbSBhbmQgaW1wcm92ZSBpdHNlbGYuIFRoZSBpbXByb3ZlZCBzb2Z0d2FyZSB3b3VsZCBiZSBldmVuIGJldHRlciBhdCBpbXByb3ZpbmcgaXRzZWxmLCBsZWFkaW5nIHRvIHdoYXQgSS4gSi4gR29vZCBjYWxsZWQgYW4gXCJpbnRlbGxpZ2VuY2UgZXhwbG9zaW9uXCIgYW5kIFZlcm5vciBWaW5nZSBjYWxsZWQgYSBcInNpbmd1bGFyaXR5XCIuWzQxMl1cblxuSG93ZXZlciwgdGVjaG5vbG9naWVzIGNhbm5vdCBpbXByb3ZlIGV4cG9uZW50aWFsbHkgaW5kZWZpbml0ZWx5LCBhbmQgdHlwaWNhbGx5IGZvbGxvdyBhbiBTLXNoYXBlZCBjdXJ2ZSwgc2xvd2luZyB3aGVuIHRoZXkgcmVhY2ggdGhlIHBoeXNpY2FsIGxpbWl0cyBvZiB3aGF0IHRoZSB0ZWNobm9sb2d5IGNhbiBkby5bNDEzXVxuXG5UcmFuc2h1bWFuaXNtXG5NYWluIGFydGljbGU6IFRyYW5zaHVtYW5pc21cblxuUm9ib3QgZGVzaWduZXIgSGFucyBNb3JhdmVjLCBjeWJlcm5ldGljaXN0IEtldmluIFdhcndpY2sgYW5kIGludmVudG9yIFJheSBLdXJ6d2VpbCBoYXZlIHByZWRpY3RlZCB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgbWF5IG1lcmdlIGluIHRoZSBmdXR1cmUgaW50byBjeWJvcmdzIHRoYXQgYXJlIG1vcmUgY2FwYWJsZSBhbmQgcG93ZXJmdWwgdGhhbiBlaXRoZXIuIFRoaXMgaWRlYSwgY2FsbGVkIHRyYW5zaHVtYW5pc20sIGhhcyByb290cyBpbiB0aGUgd3JpdGluZ3Mgb2YgQWxkb3VzIEh1eGxleSBhbmQgUm9iZXJ0IEV0dGluZ2VyLls0MTRdXG5cbkVkd2FyZCBGcmVka2luIGFyZ3VlcyB0aGF0IFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgdGhlIG5leHQgc3RlcCBpbiBldm9sdXRpb25cIiwgYW4gaWRlYSBmaXJzdCBwcm9wb3NlZCBieSBTYW11ZWwgQnV0bGVyJ3MgXCJEYXJ3aW4gYW1vbmcgdGhlIE1hY2hpbmVzXCIgYXMgZmFyIGJhY2sgYXMgMTg2MywgYW5kIGV4cGFuZGVkIHVwb24gYnkgR2VvcmdlIER5c29uIGluIGhpcyAxOTk4IGJvb2sgRGFyd2luIEFtb25nIHRoZSBNYWNoaW5lczogVGhlIEV2b2x1dGlvbiBvZiBHbG9iYWwgSW50ZWxsaWdlbmNlLls0MTVdXG5cbkRlY29tcHV0aW5nXG5cbkFyZ3VtZW50cyBmb3IgZGVjb21wdXRpbmcgaGF2ZSBiZWVuIHJhaXNlZCBieSBEYW4gTWNRdWlsbGFuIChSZXNpc3RpbmcgQUk6IEFuIEFudGktZmFzY2lzdCBBcHByb2FjaCB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZSwgMjAyMiksIG1lYW5pbmcgYW4gb3Bwb3NpdGlvbiB0byB0aGUgc3dlZXBpbmcgYXBwbGljYXRpb24gYW5kIGV4cGFuc2lvbiBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS4gU2ltaWxhciB0byBkZWdyb3d0aCB0aGUgYXBwcm9hY2ggY3JpdGljaXplcyBBSSBhcyBhbiBvdXRncm93dGggb2YgdGhlIHN5c3RlbWljIGlzc3VlcyBhbmQgY2FwaXRhbGlzdCB3b3JsZCB3ZSBsaXZlIGluLiBBcmd1aW5nIHRoYXQgYSBkaWZmZXJlbnQgZnV0dXJlIGlzIHBvc3NpYmxlLCBpbiB3aGljaCBkaXN0YW5jZSBiZXR3ZWVuIHBlb3BsZSBpcyByZWR1Y2VkIGFuZCBub3QgaW5jcmVhc2VkIHRvIEFJIGludGVybWVkaWFyaWVzLls0MTZdXG5cbkluIGZpY3Rpb25cbk1haW4gYXJ0aWNsZTogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gZmljdGlvblxuVGhlIHdvcmQgXCJyb2JvdFwiIGl0c2VsZiB3YXMgY29pbmVkIGJ5IEthcmVsIMSMYXBlayBpbiBoaXMgMTkyMSBwbGF5IFIuVS5SLiwgdGhlIHRpdGxlIHN0YW5kaW5nIGZvciBcIlJvc3N1bSdzIFVuaXZlcnNhbCBSb2JvdHNcIi5cblxuVGhvdWdodC1jYXBhYmxlIGFydGlmaWNpYWwgYmVpbmdzIGhhdmUgYXBwZWFyZWQgYXMgc3Rvcnl0ZWxsaW5nIGRldmljZXMgc2luY2UgYW50aXF1aXR5LFs0MTddIGFuZCBoYXZlIGJlZW4gYSBwZXJzaXN0ZW50IHRoZW1lIGluIHNjaWVuY2UgZmljdGlvbi5bNDE4XVxuXG5BIGNvbW1vbiB0cm9wZSBpbiB0aGVzZSB3b3JrcyBiZWdhbiB3aXRoIE1hcnkgU2hlbGxleSdzIEZyYW5rZW5zdGVpbiwgd2hlcmUgYSBodW1hbiBjcmVhdGlvbiBiZWNvbWVzIGEgdGhyZWF0IHRvIGl0cyBtYXN0ZXJzLiBUaGlzIGluY2x1ZGVzIHN1Y2ggd29ya3MgYXMgQXJ0aHVyIEMuIENsYXJrZSdzIGFuZCBTdGFubGV5IEt1YnJpY2sncyAyMDAxOiBBIFNwYWNlIE9keXNzZXkgKGJvdGggMTk2OCksIHdpdGggSEFMIDkwMDAsIHRoZSBtdXJkZXJvdXMgY29tcHV0ZXIgaW4gY2hhcmdlIG9mIHRoZSBEaXNjb3ZlcnkgT25lIHNwYWNlc2hpcCwgYXMgd2VsbCBhcyBUaGUgVGVybWluYXRvciAoMTk4NCkgYW5kIFRoZSBNYXRyaXggKDE5OTkpLiBJbiBjb250cmFzdCwgdGhlIHJhcmUgbG95YWwgcm9ib3RzIHN1Y2ggYXMgR29ydCBmcm9tIFRoZSBEYXkgdGhlIEVhcnRoIFN0b29kIFN0aWxsICgxOTUxKSBhbmQgQmlzaG9wIGZyb20gQWxpZW5zICgxOTg2KSBhcmUgbGVzcyBwcm9taW5lbnQgaW4gcG9wdWxhciBjdWx0dXJlLls0MTldXG5cbklzYWFjIEFzaW1vdiBpbnRyb2R1Y2VkIHRoZSBUaHJlZSBMYXdzIG9mIFJvYm90aWNzIGluIG1hbnkgc3RvcmllcywgbW9zdCBub3RhYmx5IHdpdGggdGhlIFwiTXVsdGl2YWNcIiBzdXBlci1pbnRlbGxpZ2VudCBjb21wdXRlci4gQXNpbW92J3MgbGF3cyBhcmUgb2Z0ZW4gYnJvdWdodCB1cCBkdXJpbmcgbGF5IGRpc2N1c3Npb25zIG9mIG1hY2hpbmUgZXRoaWNzO1s0MjBdIHdoaWxlIGFsbW9zdCBhbGwgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgcmVzZWFyY2hlcnMgYXJlIGZhbWlsaWFyIHdpdGggQXNpbW92J3MgbGF3cyB0aHJvdWdoIHBvcHVsYXIgY3VsdHVyZSwgdGhleSBnZW5lcmFsbHkgY29uc2lkZXIgdGhlIGxhd3MgdXNlbGVzcyBmb3IgbWFueSByZWFzb25zLCBvbmUgb2Ygd2hpY2ggaXMgdGhlaXIgYW1iaWd1aXR5Lls0MjFdXG5cblNldmVyYWwgd29ya3MgdXNlIEFJIHRvIGZvcmNlIHVzIHRvIGNvbmZyb250IHRoZSBmdW5kYW1lbnRhbCBxdWVzdGlvbiBvZiB3aGF0IG1ha2VzIHVzIGh1bWFuLCBzaG93aW5nIHVzIGFydGlmaWNpYWwgYmVpbmdzIHRoYXQgaGF2ZSB0aGUgYWJpbGl0eSB0byBmZWVsLCBhbmQgdGh1cyB0byBzdWZmZXIuIFRoaXMgYXBwZWFycyBpbiBLYXJlbCDEjGFwZWsncyBSLlUuUi4sIHRoZSBmaWxtcyBBLkkuIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBFeCBNYWNoaW5hLCBhcyB3ZWxsIGFzIHRoZSBub3ZlbCBEbyBBbmRyb2lkcyBEcmVhbSBvZiBFbGVjdHJpYyBTaGVlcD8sIGJ5IFBoaWxpcCBLLiBEaWNrLiBEaWNrIGNvbnNpZGVycyB0aGUgaWRlYSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIGh1bWFuIHN1YmplY3Rpdml0eSBpcyBhbHRlcmVkIGJ5IHRlY2hub2xvZ3kgY3JlYXRlZCB3aXRoIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLls0MjJdXG5cblNlZSBhbHNvXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgZWxlY3Rpb25zwqDigJMgVXNlIGFuZCBpbXBhY3Qgb2YgQUkgb24gcG9saXRpY2FsIGVsZWN0aW9uc1xuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgY29udGVudCBkZXRlY3Rpb27CoOKAkyBTb2Z0d2FyZSB0byBkZXRlY3QgQUktZ2VuZXJhdGVkIGNvbnRlbnRcbkJlaGF2aW9yIHNlbGVjdGlvbiBhbGdvcml0aG3CoOKAkyBBbGdvcml0aG0gdGhhdCBzZWxlY3RzIGFjdGlvbnMgZm9yIGludGVsbGlnZW50IGFnZW50c1xuQnVzaW5lc3MgcHJvY2VzcyBhdXRvbWF0aW9uwqDigJMgQXV0b21hdGlvbiBvZiBidXNpbmVzcyBwcm9jZXNzZXNcbkNhc2UtYmFzZWQgcmVhc29uaW5nwqDigJMgUHJvY2VzcyBvZiBzb2x2aW5nIG5ldyBwcm9ibGVtcyBiYXNlZCBvbiB0aGUgc29sdXRpb25zIG9mIHNpbWlsYXIgcGFzdCBwcm9ibGVtc1xuQ29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2XCoOKAkyBBYmlsaXR5IG9mIGEgY29tcHV0ZXIgdG8gbGVhcm4gYSBzcGVjaWZpYyB0YXNrIGZyb20gZGF0YSBvciBleHBlcmltZW50YWwgb2JzZXJ2YXRpb25cbkRpZ2l0YWwgaW1tb3J0YWxpdHnCoOKAkyBIeXBvdGhldGljYWwgY29uY2VwdCBvZiBzdG9yaW5nIGEgcGVyc29uYWxpdHkgaW4gZGlnaXRhbCBmb3JtXG5FbWVyZ2VudCBhbGdvcml0aG3CoOKAkyBBbGdvcml0aG0gZXhoaWJpdGluZyBlbWVyZ2VudCBiZWhhdmlvclxuRmVtYWxlIGdlbmRlcmluZyBvZiBBSSB0ZWNobm9sb2dpZXPCoOKAkyBHZW5kZXIgYmlhc2VzIGluIGRpZ2l0YWwgdGVjaG5vbG9neVxuR2xvc3Nhcnkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2XCoOKAkyBMaXN0IG9mIGRlZmluaXRpb25zIG9mIHRlcm1zIGFuZCBjb25jZXB0cyBjb21tb25seSB1c2VkIGluIHRoZSBzdHVkeSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuSW50ZWxsaWdlbmNlIGFtcGxpZmljYXRpb27CoOKAkyBVc2Ugb2YgaW5mb3JtYXRpb24gdGVjaG5vbG9neSB0byBhdWdtZW50IGh1bWFuIGludGVsbGlnZW5jZVxuSW50ZWxsaWdlbnQgYWdlbnTCoOKAkyBTb2Z0d2FyZSBhZ2VudCB3aGljaCBhY3RzIGF1dG9ub21vdXNseVxuTWluZCB1cGxvYWRpbmfCoOKAkyBIeXBvdGhldGljYWwgcHJvY2VzcyBvZiBkaWdpdGFsbHkgZW11bGF0aW5nIGEgYnJhaW5cbk9yZ2Fub2lkIGludGVsbGlnZW5jZSDigJMgVXNlIG9mIGJyYWluIGNlbGxzIGFuZCBicmFpbiBvcmdhbm9pZHMgZm9yIGludGVsbGlnZW50IGNvbXB1dGluZ1xuUm9ib3RpYyBwcm9jZXNzIGF1dG9tYXRpb27CoOKAkyBGb3JtIG9mIGJ1c2luZXNzIHByb2Nlc3MgYXV0b21hdGlvbiB0ZWNobm9sb2d5XG5XZXR3YXJlIGNvbXB1dGVywqDigJMgQ29tcHV0ZXIgY29tcG9zZWQgb2Ygb3JnYW5pYyBtYXRlcmlhbFxuRXhwbGFuYXRvcnkgbm90ZXNcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFRoaXMgbGlzdCBvZiBpbnRlbGxpZ2VudCB0cmFpdHMgaXMgYmFzZWQgb24gdGhlIHRvcGljcyBjb3ZlcmVkIGJ5IHRoZSBtYWpvciBBSSB0ZXh0Ym9va3MsIGluY2x1ZGluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkgYW5kIE5pbHNzb24gKDE5OTgpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBUaGlzIGxpc3Qgb2YgdG9vbHMgaXMgYmFzZWQgb24gdGhlIHRvcGljcyBjb3ZlcmVkIGJ5IHRoZSBtYWpvciBBSSB0ZXh0Ym9va3MsIGluY2x1ZGluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkgYW5kIE5pbHNzb24gKDE5OTgpXG5eIEl0IGlzIGFtb25nIHRoZSByZWFzb25zIHRoYXQgZXhwZXJ0IHN5c3RlbXMgcHJvdmVkIHRvIGJlIGluZWZmaWNpZW50IGZvciBjYXB0dXJpbmcga25vd2xlZGdlLlszMF1bMzFdXG5eIFwiUmF0aW9uYWwgYWdlbnRcIiBpcyBnZW5lcmFsIHRlcm0gdXNlZCBpbiBlY29ub21pY3MsIHBoaWxvc29waHkgYW5kIHRoZW9yZXRpY2FsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLiBJdCBjYW4gcmVmZXIgdG8gYW55dGhpbmcgdGhhdCBkaXJlY3RzIGl0cyBiZWhhdmlvciB0byBhY2NvbXBsaXNoIGdvYWxzLCBzdWNoIGFzIGEgcGVyc29uLCBhbiBhbmltYWwsIGEgY29ycG9yYXRpb24sIGEgbmF0aW9uLCBvciBpbiB0aGUgY2FzZSBvZiBBSSwgYSBjb21wdXRlciBwcm9ncmFtLlxuXiBBbGFuIFR1cmluZyBkaXNjdXNzZWQgdGhlIGNlbnRyYWxpdHkgb2YgbGVhcm5pbmcgYXMgZWFybHkgYXMgMTk1MCwgaW4gaGlzIGNsYXNzaWMgcGFwZXIgXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIi5bNDJdIEluIDE5NTYsIGF0IHRoZSBvcmlnaW5hbCBEYXJ0bW91dGggQUkgc3VtbWVyIGNvbmZlcmVuY2UsIFJheSBTb2xvbW9ub2ZmIHdyb3RlIGEgcmVwb3J0IG9uIHVuc3VwZXJ2aXNlZCBwcm9iYWJpbGlzdGljIG1hY2hpbmUgbGVhcm5pbmc6IFwiQW4gSW5kdWN0aXZlIEluZmVyZW5jZSBNYWNoaW5lXCIuWzQzXVxuXiBTZWUgQUkgd2ludGVyIMKnwqBNYWNoaW5lIHRyYW5zbGF0aW9uIGFuZCB0aGUgQUxQQUMgcmVwb3J0IG9mIDE5NjZcbl4gQ29tcGFyZWQgd2l0aCBzeW1ib2xpYyBsb2dpYywgZm9ybWFsIEJheWVzaWFuIGluZmVyZW5jZSBpcyBjb21wdXRhdGlvbmFsbHkgZXhwZW5zaXZlLiBGb3IgaW5mZXJlbmNlIHRvIGJlIHRyYWN0YWJsZSwgbW9zdCBvYnNlcnZhdGlvbnMgbXVzdCBiZSBjb25kaXRpb25hbGx5IGluZGVwZW5kZW50IG9mIG9uZSBhbm90aGVyLiBBZFNlbnNlIHVzZXMgYSBCYXllc2lhbiBuZXR3b3JrIHdpdGggb3ZlciAzMDDCoG1pbGxpb24gZWRnZXMgdG8gbGVhcm4gd2hpY2ggYWRzIHRvIHNlcnZlLls5M11cbl4gRXhwZWN0YXRpb27igJNtYXhpbWl6YXRpb24sIG9uZSBvZiB0aGUgbW9zdCBwb3B1bGFyIGFsZ29yaXRobXMgaW4gbWFjaGluZSBsZWFybmluZywgYWxsb3dzIGNsdXN0ZXJpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHVua25vd24gbGF0ZW50IHZhcmlhYmxlcy5bOTVdXG5eIFNvbWUgZm9ybSBvZiBkZWVwIG5ldXJhbCBuZXR3b3JrcyAod2l0aG91dCBhIHNwZWNpZmljIGxlYXJuaW5nIGFsZ29yaXRobSkgd2VyZSBkZXNjcmliZWQgYnk6IFdhcnJlbiBTLiBNY0N1bGxvY2ggYW5kIFdhbHRlciBQaXR0cyAoMTk0MylbMTE1XSBBbGFuIFR1cmluZyAoMTk0OCk7WzExNl0gS2FybCBTdGVpbmJ1Y2ggYW5kIFJvZ2VyIERhdmlkIEpvc2VwaCAoMTk2MSkuWzExN10gRGVlcCBvciByZWN1cnJlbnQgbmV0d29ya3MgdGhhdCBsZWFybmVkIChvciB1c2VkIGdyYWRpZW50IGRlc2NlbnQpIHdlcmUgZGV2ZWxvcGVkIGJ5OiBGcmFuayBSb3NlbmJsYXR0KDE5NTcpO1sxMTZdIE9saXZlciBTZWxmcmlkZ2UgKDE5NTkpO1sxMTddIEFsZXhleSBJdmFraG5lbmtvIGFuZCBWYWxlbnRpbiBMYXBhICgxOTY1KTtbMTE4XSBLYW9ydSBOYWthbm8gKDE5NzEpO1sxMTldIFNodW4tSWNoaSBBbWFyaSAoMTk3Mik7WzExOV0gSm9obiBKb3NlcGggSG9wZmllbGQgKDE5ODIpLlsxMTldIFByZWN1cnNvcnMgdG8gYmFja3Byb3BhZ2F0aW9uIHdlcmUgZGV2ZWxvcGVkIGJ5OiBIZW5yeSBKLiBLZWxsZXkgKDE5NjApO1sxMTZdIEFydGh1ciBFLiBCcnlzb24gKDE5NjIpO1sxMTZdIFN0dWFydCBEcmV5ZnVzICgxOTYyKTtbMTE2XSBBcnRodXIgRS4gQnJ5c29uIGFuZCBZdS1DaGkgSG8gKDE5NjkpO1sxMTZdIEJhY2twcm9wYWdhdGlvbiB3YXMgaW5kZXBlbmRlbnRseSBkZXZlbG9wZWQgYnk6IFNlcHBvIExpbm5haW5tYWEgKDE5NzApO1sxMjBdIFBhdWwgV2VyYm9zICgxOTc0KS5bMTE2XVxuXiBHZW9mZnJleSBIaW50b24gc2FpZCwgb2YgaGlzIHdvcmsgb24gbmV1cmFsIG5ldHdvcmtzIGluIHRoZSAxOTkwcywgXCJvdXIgbGFiZWxlZCBkYXRhc2V0cyB3ZXJlIHRob3VzYW5kcyBvZiB0aW1lcyB0b28gc21hbGwuIFtBbmRdIG91ciBjb21wdXRlcnMgd2VyZSBtaWxsaW9ucyBvZiB0aW1lcyB0b28gc2xvdy5cIlsxMjFdXG5eIEluIHN0YXRpc3RpY3MsIGEgYmlhcyBpcyBhIHN5c3RlbWF0aWMgZXJyb3Igb3IgZGV2aWF0aW9uIGZyb20gdGhlIGNvcnJlY3QgdmFsdWUuIEJ1dCBpbiB0aGUgY29udGV4dCBvZiBmYWlybmVzcywgaXQgcmVmZXJzIHRvIGEgdGVuZGVuY3kgaW4gZmF2b3Igb3IgYWdhaW5zdCBhIGNlcnRhaW4gZ3JvdXAgb3IgaW5kaXZpZHVhbCBjaGFyYWN0ZXJpc3RpYywgdXN1YWxseSBpbiBhIHdheSB0aGF0IGlzIGNvbnNpZGVyZWQgdW5mYWlyIG9yIGhhcm1mdWwuIEEgc3RhdGlzdGljYWxseSB1bmJpYXNlZCBBSSBzeXN0ZW0gdGhhdCBwcm9kdWNlcyBkaXNwYXJhdGUgb3V0Y29tZXMgZm9yIGRpZmZlcmVudCBkZW1vZ3JhcGhpYyBncm91cHMgbWF5IHRodXMgYmUgdmlld2VkIGFzIGJpYXNlZCBpbiB0aGUgZXRoaWNhbCBzZW5zZS5bMjM2XVxuXiBJbmNsdWRpbmcgSm9uIEtsZWluYmVyZyAoQ29ybmVsbCBVbml2ZXJzaXR5KSwgU2VuZGhpbCBNdWxsYWluYXRoYW4gKFVuaXZlcnNpdHkgb2YgQ2hpY2FnbyksIEN5bnRoaWEgQ2hvdWxkZWNob3ZhIChDYXJuZWdpZSBNZWxsb24pIGFuZCBTYW0gQ29yYmV0dC1EYXZpcyAoU3RhbmZvcmQpWzI0NV1cbl4gTW9yaXR6IEhhcmR0IChhIGRpcmVjdG9yIGF0IHRoZSBNYXggUGxhbmNrIEluc3RpdHV0ZSBmb3IgSW50ZWxsaWdlbnQgU3lzdGVtcykgYXJndWVzIHRoYXQgbWFjaGluZSBsZWFybmluZyBcImlzIGZ1bmRhbWVudGFsbHkgdGhlIHdyb25nIHRvb2wgZm9yIGEgbG90IG9mIGRvbWFpbnMsIHdoZXJlIHlvdSdyZSB0cnlpbmcgdG8gZGVzaWduIGludGVydmVudGlvbnMgYW5kIG1lY2hhbmlzbXMgdGhhdCBjaGFuZ2UgdGhlIHdvcmxkLlwiWzI1MF1cbl4gV2hlbiB0aGUgbGF3IHdhcyBwYXNzZWQgaW4gMjAxOCwgaXQgc3RpbGwgY29udGFpbmVkIGEgZm9ybSBvZiB0aGlzIHByb3Zpc2lvbi5cbl4gVGhpcyBpcyB0aGUgVW5pdGVkIE5hdGlvbnMnIGRlZmluaXRpb24sIGFuZCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBsYW5kIG1pbmVzIGFzIHdlbGwuWzI2NF1cbl4gU2VlIHRhYmxlIDQ7IDklIGlzIGJvdGggdGhlIE9FQ0QgYXZlcmFnZSBhbmQgdGhlIFUuUy4gYXZlcmFnZS5bMjc1XVxuXiBTb21ldGltZXMgY2FsbGVkIGEgXCJyb2JvcG9jYWx5cHNlXCJbMjgzXVxuXiBcIkVsZWN0cm9uaWMgYnJhaW5cIiB3YXMgdGhlIHRlcm0gdXNlZCBieSB0aGUgcHJlc3MgYXJvdW5kIHRoaXMgdGltZS5bMzM2XVszMzhdXG5eIERhbmllbCBDcmV2aWVyIHdyb3RlLCBcInRoZSBjb25mZXJlbmNlIGlzIGdlbmVyYWxseSByZWNvZ25pemVkIGFzIHRoZSBvZmZpY2lhbCBiaXJ0aGRhdGUgb2YgdGhlIG5ldyBzY2llbmNlLlwiWzM0MV0gUnVzc2VsbCBhbmQgTm9ydmlnIGNhbGxlZCB0aGUgY29uZmVyZW5jZSBcInRoZSBpbmNlcHRpb24gb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuXCJbMTE1XVxuXiBSdXNzZWxsIGFuZCBOb3J2aWcgd3JvdGUgXCJmb3IgdGhlIG5leHQgMjAgeWVhcnMgdGhlIGZpZWxkIHdvdWxkIGJlIGRvbWluYXRlZCBieSB0aGVzZSBwZW9wbGUgYW5kIHRoZWlyIHN0dWRlbnRzLlwiWzM0Ml1cbl4gUnVzc2VsbCBhbmQgTm9ydmlnIHdyb3RlLCBcIml0IHdhcyBhc3RvbmlzaGluZyB3aGVuZXZlciBhIGNvbXB1dGVyIGRpZCBhbnl0aGluZyBraW5kIG9mIHNtYXJ0aXNoXCIuWzM0M11cbl4gVGhlIHByb2dyYW1zIGRlc2NyaWJlZCBhcmUgQXJ0aHVyIFNhbXVlbCdzIGNoZWNrZXJzIHByb2dyYW0gZm9yIHRoZSBJQk0gNzAxLCBEYW5pZWwgQm9icm93J3MgU1RVREVOVCwgTmV3ZWxsIGFuZCBTaW1vbidzIExvZ2ljIFRoZW9yaXN0IGFuZCBUZXJyeSBXaW5vZ3JhZCdzIFNIUkRMVS5cbl4gUnVzc2VsbCBhbmQgTm9ydmlnIHdyaXRlOiBcImluIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXNlIGVhcmx5IHN5c3RlbXMgZmFpbGVkIG9uIG1vcmUgZGlmZmljdWx0IHByb2JsZW1zXCJbMzQ3XVxuXiBFbWJvZGllZCBhcHByb2FjaGVzIHRvIEFJWzM1NF0gd2VyZSBjaGFtcGlvbmVkIGJ5IEhhbnMgTW9yYXZlY1szNTVdIGFuZCBSb2RuZXkgQnJvb2tzWzM1Nl0gYW5kIHdlbnQgYnkgbWFueSBuYW1lczogTm91dmVsbGUgQUkuWzM1Nl0gRGV2ZWxvcG1lbnRhbCByb2JvdGljcy5bMzU3XVxuXiBNYXR0ZW8gV29uZyB3cm90ZSBpbiBUaGUgQXRsYW50aWM6IFwiV2hlcmVhcyBmb3IgZGVjYWRlcywgY29tcHV0ZXItc2NpZW5jZSBmaWVsZHMgc3VjaCBhcyBuYXR1cmFsLWxhbmd1YWdlIHByb2Nlc3NpbmcsIGNvbXB1dGVyIHZpc2lvbiwgYW5kIHJvYm90aWNzIHVzZWQgZXh0cmVtZWx5IGRpZmZlcmVudCBtZXRob2RzLCBub3cgdGhleSBhbGwgdXNlIGEgcHJvZ3JhbW1pbmcgbWV0aG9kIGNhbGxlZCBcImRlZXAgbGVhcm5pbmdcIi4gQXMgYSByZXN1bHQsIHRoZWlyIGNvZGUgYW5kIGFwcHJvYWNoZXMgaGF2ZSBiZWNvbWUgbW9yZSBzaW1pbGFyLCBhbmQgdGhlaXIgbW9kZWxzIGFyZSBlYXNpZXIgdG8gaW50ZWdyYXRlIGludG8gb25lIGFub3RoZXIuXCJbMzYzXVxuXiBKYWNrIENsYXJrIHdyb3RlIGluIEJsb29tYmVyZzogXCJBZnRlciBhIGhhbGYtZGVjYWRlIG9mIHF1aWV0IGJyZWFrdGhyb3VnaHMgaW4gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIDIwMTUgaGFzIGJlZW4gYSBsYW5kbWFyayB5ZWFyLiBDb21wdXRlcnMgYXJlIHNtYXJ0ZXIgYW5kIGxlYXJuaW5nIGZhc3RlciB0aGFuIGV2ZXJcIiwgYW5kIG5vdGVkIHRoYXQgdGhlIG51bWJlciBvZiBzb2Z0d2FyZSBwcm9qZWN0cyB0aGF0IHVzZSBtYWNoaW5lIGxlYXJuaW5nIGF0IEdvb2dsZSBpbmNyZWFzZWQgZnJvbSBhIFwic3BvcmFkaWMgdXNhZ2VcIiBpbiAyMDEyIHRvIG1vcmUgdGhhbiAyLDcwMCBwcm9qZWN0cyBpbiAyMDE1LlszNjVdXG5eIE5pbHMgTmlsc3NvbiB3cm90ZSBpbiAxOTgzOiBcIlNpbXBseSBwdXQsIHRoZXJlIGlzIHdpZGUgZGlzYWdyZWVtZW50IGluIHRoZSBmaWVsZCBhYm91dCB3aGF0IEFJIGlzIGFsbCBhYm91dC5cIlszODZdXG5eIERhbmllbCBDcmV2aWVyIHdyb3RlIHRoYXQgXCJ0aW1lIGhhcyBwcm92ZW4gdGhlIGFjY3VyYWN5IGFuZCBwZXJjZXB0aXZlbmVzcyBvZiBzb21lIG9mIERyZXlmdXMncyBjb21tZW50cy4gSGFkIGhlIGZvcm11bGF0ZWQgdGhlbSBsZXNzIGFnZ3Jlc3NpdmVseSwgY29uc3RydWN0aXZlIGFjdGlvbnMgdGhleSBzdWdnZXN0ZWQgbWlnaHQgaGF2ZSBiZWVuIHRha2VuIG11Y2ggZWFybGllci5cIlszOTFdXG5eIFNlYXJsZSBwcmVzZW50ZWQgdGhpcyBkZWZpbml0aW9uIG9mIFwiU3Ryb25nIEFJXCIgaW4gMTk5OS5bNDAxXSBTZWFybGUncyBvcmlnaW5hbCBmb3JtdWxhdGlvbiB3YXMgXCJUaGUgYXBwcm9wcmlhdGVseSBwcm9ncmFtbWVkIGNvbXB1dGVyIHJlYWxseSBpcyBhIG1pbmQsIGluIHRoZSBzZW5zZSB0aGF0IGNvbXB1dGVycyBnaXZlbiB0aGUgcmlnaHQgcHJvZ3JhbXMgY2FuIGJlIGxpdGVyYWxseSBzYWlkIHRvIHVuZGVyc3RhbmQgYW5kIGhhdmUgb3RoZXIgY29nbml0aXZlIHN0YXRlcy5cIls0MDJdIFN0cm9uZyBBSSBpcyBkZWZpbmVkIHNpbWlsYXJseSBieSBSdXNzZWxsIGFuZCBOb3J2aWc6IFwiU3RvbmcgQUkg4oCTIHRoZSBhc3NlcnRpb24gdGhhdCBtYWNoaW5lcyB0aGF0IGRvIHNvIGFyZSBhY3R1YWxseSB0aGlua2luZyAoYXMgb3Bwb3NlZCB0byBzaW11bGF0aW5nIHRoaW5raW5nKS5cIls0MDNdXG5SZWZlcmVuY2VzXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDHigJM0LlxuXiBBSSBzZXQgdG8gZXhjZWVkIGh1bWFuIGJyYWluIHBvd2VyIEFyY2hpdmVkIDIwMDgtMDItMTkgYXQgdGhlIFdheWJhY2sgTWFjaGluZSBDTk4uY29tIChKdWx5IDI2LCAyMDA2KVxuXiBLYXBsYW4sIEFuZHJlYXM7IEhhZW5sZWluLCBNaWNoYWVsICgyMDE5KS4gXCJTaXJpLCBTaXJpLCBpbiBteSBoYW5kOiBXaG8ncyB0aGUgZmFpcmVzdCBpbiB0aGUgbGFuZD8gT24gdGhlIGludGVycHJldGF0aW9ucywgaWxsdXN0cmF0aW9ucywgYW5kIGltcGxpY2F0aW9ucyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLiBCdXNpbmVzcyBIb3Jpem9ucy4gNjI6IDE14oCTMjUuIGRvaToxMC4xMDE2L2ouYnVzaG9yLjIwMTguMDguMDA0LiBJU1NOwqAwMDA3LTY4MTMuIFMyQ0lEwqAxNTg0MzM3MzYuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIEFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2U6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMzLigJMzMywgMTAyMOKAkzEwMjEpXG5Qcm9wb3NhbCBmb3IgdGhlIG1vZGVybiB2ZXJzaW9uOiBQZW5uYWNoaW4gJiBHb2VydHplbCAoMjAwNylcbldhcm5pbmdzIG9mIG92ZXJzcGVjaWFsaXphdGlvbiBpbiBBSSBmcm9tIGxlYWRpbmcgcmVzZWFyY2hlcnM6IE5pbHNzb24gKDE5OTUpLCBNY0NhcnRoeSAoMjAwNyksIEJlYWwgJiBXaW5zdG9uICgyMDA5KVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEuMikuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBEYXJ0bW91dGggd29ya3Nob3A6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAxOCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqAxMTHigJMxMzYpLCBOUkMgKDE5OTksIHBwLsKgMjAw4oCTMjAxKVxuVGhlIHByb3Bvc2FsOiBNY0NhcnRoeSBldCBhbC4gKDE5NTUpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBTdWNjZXNzZnVsIHByb2dyYW1zIG9mIHRoZSAxOTYwczogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDI0M+KAkzI1MiksIENyZXZpZXIgKDE5OTMsIHBwLsKgNTLigJMxMDcpLCBNb3JhdmVjICgxOTg4LCBwLsKgOSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMTnigJMyMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEZ1bmRpbmcgaW5pdGlhdGl2ZXMgaW4gdGhlIGVhcmx5IDE5ODBzOiBGaWZ0aCBHZW5lcmF0aW9uIFByb2plY3QgKEphcGFuKSwgQWx2ZXkgKFVLKSwgTWljcm9lbGVjdHJvbmljcyBhbmQgQ29tcHV0ZXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiAoVVMpLCBTdHJhdGVnaWMgQ29tcHV0aW5nIEluaXRpYXRpdmUgKFVTKTogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDQyNuKAkzQ0MSksIENyZXZpZXIgKDE5OTMsIHBwLsKgMTYx4oCTMTYyLCAxOTfigJMyMDMsIDIxMSwgMjQwKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDIzKSwgTlJDICgxOTk5LCBwcC7CoDIxMOKAkzIxMSksIE5ld3F1aXN0ICgxOTk0LCBwcC7CoDIzNeKAkzI0OClcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEZpcnN0IEFJIFdpbnRlciwgTGlnaHRoaWxsIHJlcG9ydCwgTWFuc2ZpZWxkIEFtZW5kbWVudDogQ3JldmllciAoMTk5MywgcHAuwqAxMTXigJMxMTcpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDIx4oCTMjIpLCBOUkMgKDE5OTksIHBwLsKgMjEy4oCTMjEzKSwgSG93ZSAoMTk5NCksIE5ld3F1aXN0ICgxOTk0LCBwcC7CoDE4OeKAkzIwMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFNlY29uZCBBSSBXaW50ZXI6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA0MzDigJM0MzUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDIwOeKAkzIxMCksIE5SQyAoMTk5OSwgcHAuwqAyMTTigJMyMTYpLCBOZXdxdWlzdCAoMTk5NCwgcHAuwqAzMDHigJMzMTgpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBEZWVwIGxlYXJuaW5nIHJldm9sdXRpb24sIEFsZXhOZXQ6IEdvbGRtYW4gKDIwMjIpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMjYpLCBNY0tpbnNleSAoMjAxOClcbl4gVG9ld3MgKDIwMjMpLlxuXiBQcm9ibGVtLXNvbHZpbmcsIHB1enpsZSBzb2x2aW5nLCBnYW1lIHBsYXlpbmcsIGFuZCBkZWR1Y3Rpb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDPigJM1KSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNikgKGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgY2hwdC4gMiwgMywgNywgOSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBjaHB0LiAzLCA0LCA2LCA4KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gN+KAkzEyKVxuXiBVbmNlcnRhaW4gcmVhc29uaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxMuKAkzE4KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzNDXigJMzOTUpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzMzPigJMzODEpLCBOaWxzc29uICgxOTk4LCBjaHB0LiA34oCTMTIpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIEludHJhY3RhYmlsaXR5IGFuZCBlZmZpY2llbmN5IGFuZCB0aGUgY29tYmluYXRvcmlhbCBleHBsb3Npb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgUHN5Y2hvbG9naWNhbCBldmlkZW5jZSBvZiB0aGUgcHJldmFsZW5jZSBvZiBzdWItc3ltYm9saWMgcmVhc29uaW5nIGFuZCBrbm93bGVkZ2U6IEthaG5lbWFuICgyMDExKSwgRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpLCBXYXNvbiAmIFNoYXBpcm8gKDE5NjYpLCBLYWhuZW1hbiwgU2xvdmljICYgVHZlcnNreSAoMTk4Milcbl4gS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIGFuZCBrbm93bGVkZ2UgZW5naW5lZXJpbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDEwKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAyM+KAkzQ2LCA2OeKAkzgxLCAxNjnigJMyMzMsIDIzNeKAkzI3NywgMjgx4oCTMjk4LCAzMTnigJMzNDUpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAyMjfigJMyNDMpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxNy4x4oCTMTcuNCwgMTgpXG5eIFNtb2xpYXIgJiBaaGFuZyAoMTk5NCkuXG5eIE5ldW1hbm4gJiBNw7ZsbGVyICgyMDA4KS5cbl4gS3VwZXJtYW4sIFJlaWNobGV5ICYgQmFpbGV5ICgyMDA2KS5cbl4gTWNHYXJyeSAoMjAwNSkuXG5eIEJlcnRpbmksIERlbCBCaW1ibyAmIFRvcm5pYWkgKDIwMDYpLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqAyNzIuXG5eIFJlcHJlc2VudGluZyBjYXRlZ29yaWVzIGFuZCByZWxhdGlvbnM6IFNlbWFudGljIG5ldHdvcmtzLCBkZXNjcmlwdGlvbiBsb2dpY3MsIGluaGVyaXRhbmNlIChpbmNsdWRpbmcgZnJhbWVzLCBhbmQgc2NyaXB0cyk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIMKnMTAuMiAmIDEwLjUpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDE3NOKAkzE3NyksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDI0OOKAkzI1OCksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE4LjMpXG5eIFJlcHJlc2VudGluZyBldmVudHMgYW5kIHRpbWU6U2l0dWF0aW9uIGNhbGN1bHVzLCBldmVudCBjYWxjdWx1cywgZmx1ZW50IGNhbGN1bHVzIChpbmNsdWRpbmcgc29sdmluZyB0aGUgZnJhbWUgcHJvYmxlbSk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIMKnMTAuMyksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMjgx4oCTMjk4KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTguMilcbl4gQ2F1c2FsIGNhbGN1bHVzOiBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDMzNeKAkzMzNylcbl4gUmVwcmVzZW50aW5nIGtub3dsZWRnZSBhYm91dCBrbm93bGVkZ2U6IEJlbGllZiBjYWxjdWx1cywgbW9kYWwgbG9naWNzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEwLjQpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI3NeKAkzI3Nylcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIERlZmF1bHQgcmVhc29uaW5nLCBGcmFtZSBwcm9ibGVtLCBkZWZhdWx0IGxvZ2ljLCBub24tbW9ub3RvbmljIGxvZ2ljcywgY2lyY3Vtc2NyaXB0aW9uLCBjbG9zZWQgd29ybGQgYXNzdW1wdGlvbiwgYWJkdWN0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEwLjYpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI0OOKAkzI1NiwgMzIz4oCTMzM1KSwgTHVnZXIgJiBTdHViYmxlZmllbGQgKDIwMDQsIHBwLsKgMzM14oCTMzYzKSwgTmlsc3NvbiAoMTk5OCwgfjE4LjMuMykgKFBvb2xlIGV0IGFsLiBwbGFjZXMgYWJkdWN0aW9uIHVuZGVyIFwiZGVmYXVsdCByZWFzb25pbmdcIi4gTHVnZXIgZXQgYWwuIHBsYWNlcyB0aGlzIHVuZGVyIFwidW5jZXJ0YWluIHJlYXNvbmluZ1wiKS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJyZWFkdGggb2YgY29tbW9uc2Vuc2Uga25vd2xlZGdlOiBMZW5hdCAmIEd1aGEgKDE5ODksIEludHJvZHVjdGlvbiksIENyZXZpZXIgKDE5OTMsIHBwLsKgMTEz4oCTMTE0KSwgTW9yYXZlYyAoMTk4OCwgcC7CoDEzKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqAyNDEsIDM4NSwgOTgyKSAocXVhbGlmaWNhdGlvbiBwcm9ibGVtKVxuXiBOZXdxdWlzdCAoMTk5NCksIHAuwqAyOTYuXG5eIENyZXZpZXIgKDE5OTMpLCBwcC7CoDIwNOKAkzIwOC5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqA1MjguXG5eIEF1dG9tYXRlZCBwbGFubmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTEpLlxuXiBBdXRvbWF0ZWQgZGVjaXNpb24gbWFraW5nLCBEZWNpc2lvbiB0aGVvcnk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDE24oCTMTgpLlxuXiBDbGFzc2ljYWwgcGxhbm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMTEuMikuXG5eIFNlbnNvcmxlc3Mgb3IgXCJjb25mb3JtYW50XCIgcGxhbm5pbmcsIGNvbnRpbmdlbnQgcGxhbm5pbmcsIHJlcGxhbm5pbmcgKGEuay5hIG9ubGluZSBwbGFubmluZyk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMTEuNSkuXG5eIFVuY2VydGFpbiBwcmVmZXJlbmNlczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgU2VjdGlvbiAxNi43KSBJbnZlcnNlIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMjIuNilcbl4gSW5mb3JtYXRpb24gdmFsdWUgdGhlb3J5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBTZWN0aW9uIDE2LjYpLlxuXiBNYXJrb3YgZGVjaXNpb24gcHJvY2VzczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTcpLlxuXiBHYW1lIHRoZW9yeSBhbmQgbXVsdGktYWdlbnQgZGVjaXNpb24gdGhlb3J5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxOCkuXG5eIExlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxOeKAkzIyKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzOTfigJM0MzgpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzODXigJM1NDIpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAzLjMsIDEwLjMsIDE3LjUsIDIwKVxuXiBUdXJpbmcgKDE5NTApLlxuXiBTb2xvbW9ub2ZmICgxOTU2KS5cbl4gVW5zdXBlcnZpc2VkIGxlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDY1MykgKGRlZmluaXRpb24pLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDczOOKAkzc0MCkgKGNsdXN0ZXIgYW5hbHlzaXMpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDg0NuKAkzg2MCkgKHdvcmQgZW1iZWRkaW5nKVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU3VwZXJ2aXNlZCBsZWFybmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgwqcxOS4yKSAoRGVmaW5pdGlvbiksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIENocHQuIDE54oCTMjApIChUZWNobmlxdWVzKVxuXiBSZWluZm9yY2VtZW50IGxlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ0MuKAkzQ0OSlcbl4gVHJhbnNmZXIgbGVhcm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjgxKSwgVGhlIEVjb25vbWlzdCAoMjAxNilcbl4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoQUkpOiBXaGF0IElzIEFJIGFuZCBIb3cgRG9lcyBJdCBXb3JrPyB8IEJ1aWx0IEluXCIuIGJ1aWx0aW4uY29tLiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDIzLlxuXiBDb21wdXRhdGlvbmFsIGxlYXJuaW5nIHRoZW9yeTogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA2NzLigJM2NzQpLCBKb3JkYW4gJiBNaXRjaGVsbCAoMjAxNSlcbl4gTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIChOTFApOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyM+KAkzI0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqA5MeKAkzEwNCksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDU5MeKAkzYzMilcbl4gU3VicHJvYmxlbXMgb2YgTkxQOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDg0OeKAkzg1MClcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHBwLsKgODU24oCTODU4LlxuXiBEaWNrc29uICgyMDIyKS5cbl4gTW9kZXJuIHN0YXRpc3RpY2FsIGFuZCBkZWVwIGxlYXJuaW5nIGFwcHJvYWNoZXMgdG8gTkxQOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyNCksIENhbWJyaWEgJiBXaGl0ZSAoMjAxNClcbl4gVmluY2VudCAoMjAxOSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDg3NeKAkzg3OC5cbl4gQnVzaHdpY2sgKDIwMjMpLlxuXiBDb21wdXRlciB2aXNpb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDI1KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gNilcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHBwLsKgODQ54oCTODUwLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA4OTXigJM4OTkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDg5OeKAkzkwMS5cbl4gQ2hhbGxhIGV0IGFsLiAoMjAxMSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDkzMeKAkzkzOC5cbl4gTUlUIEFJTCAoMjAxNCkuXG5eIEFmZmVjdGl2ZSBjb21wdXRpbmc6IFRocm8gKDE5OTMpLCBFZGVsc29uICgxOTkxKSwgVGFvICYgVGFuICgyMDA1KSwgU2Nhc3NlbGxhdGkgKDIwMDIpXG5eIFdhZGRlbGwgKDIwMTgpLlxuXiBQb3JpYSBldCBhbC4gKDIwMTcpLlxuXiBTZWFyY2ggYWxnb3JpdGhtczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdHMuIDPigJM1KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAxMTPigJMxNjMpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqA3OeKAkzE2NCwgMTkz4oCTMjE5KSwgTmlsc3NvbiAoMTk5OCwgY2hwdHMuIDfigJMxMilcbl4gU3RhdGUgc3BhY2Ugc2VhcmNoOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAzKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgc2VjdC4gMTEuMi5cbl4gVW5pbmZvcm1lZCBzZWFyY2hlcyAoYnJlYWR0aCBmaXJzdCBzZWFyY2gsIGRlcHRoLWZpcnN0IHNlYXJjaCBhbmQgZ2VuZXJhbCBzdGF0ZSBzcGFjZSBzZWFyY2gpOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAzLjQpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDExM+KAkzEzMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDc54oCTMTIxKSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gOClcbl4gSGV1cmlzdGljIG9yIGluZm9ybWVkIHNlYXJjaGVzIChlLmcuLCBncmVlZHkgYmVzdCBmaXJzdCBhbmQgQSopOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAzLjUpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDEzMuKAkzE0NyksIFBvb2xlICYgTWFja3dvcnRoICgyMDE3LCBzZWN0LiAzLjYpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAxMzPigJMxNTApXG5eIEFkdmVyc2FyaWFsIHNlYXJjaDogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNSlcbl4gTG9jYWwgb3IgXCJvcHRpbWl6YXRpb25cIiBzZWFyY2g6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDQpXG5eIFNpbmdoIENoYXVoYW4sIE5hZ2VzaCAoMTggRGVjZW1iZXIgMjAyMCkuIFwiT3B0aW1pemF0aW9uIEFsZ29yaXRobXMgaW4gTmV1cmFsIE5ldHdvcmtzXCIuIEtEbnVnZ2V0cy4gUmV0cmlldmVkIDEzIEphbnVhcnkgMjAyNC5cbl4gRXZvbHV0aW9uYXJ5IGNvbXB1dGF0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiA0LjEuMilcbl4gTWVya2xlICYgTWlkZGVuZG9yZiAoMjAxMykuXG5eIExvZ2ljOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0cy4gNuKAkzkpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzNeKAkzc3KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTPigJMxNilcbl4gUHJvcG9zaXRpb25hbCBsb2dpYzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ14oCTNTApLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxMylcbl4gRmlyc3Qtb3JkZXIgbG9naWMgYW5kIGZlYXR1cmVzIHN1Y2ggYXMgZXF1YWxpdHk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDcpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI2OOKAkzI3NSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDUw4oCTNjIpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxNSlcbl4gTG9naWNhbCBpbmZlcmVuY2U6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDEwKVxuXiBsb2dpY2FsIGRlZHVjdGlvbiBhcyBzZWFyY2g6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3RzLiA5LjMsIDkuNCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgfjQ24oCTNTIpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqA2MuKAkzczKSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gNC4yLCA3LjIpXG5eIFJlc29sdXRpb24gYW5kIHVuaWZpY2F0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0aW9ucyA3LjUuMiwgOS4yLCA5LjUpXG5eIFdhcnJlbiwgRC5ILjsgUGVyZWlyYSwgTC5NLjsgUGVyZWlyYSwgRi4gKDE5NzcpLiBcIlByb2xvZy10aGUgbGFuZ3VhZ2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiBjb21wYXJlZCB3aXRoIExpc3BcIi4gQUNNIFNJR1BMQU4gTm90aWNlcy4gMTIgKDgpOiAxMDnigJMxMTUuIGRvaToxMC4xMTQ1Lzg3MjczNC44MDY5MzkuXG5eIEZ1enp5IGxvZ2ljOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDIxNCwgMjU1LCA0NTkpLCBTY2llbnRpZmljIEFtZXJpY2FuICgxOTk5KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU3RvY2hhc3RpYyBtZXRob2RzIGZvciB1bmNlcnRhaW4gcmVhc29uaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxMuKAkzE4LCAyMCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMzQ14oCTMzk1KSwgTHVnZXIgJiBTdHViYmxlZmllbGQgKDIwMDQsIHBwLsKgMTY14oCTMTkxLCAzMzPigJMzODEpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxOSlcbl4gZGVjaXNpb24gdGhlb3J5IGFuZCBkZWNpc2lvbiBhbmFseXNpczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTbigJMxOCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMzgx4oCTMzk0KVxuXiBJbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE2LjYpXG5eIE1hcmtvdiBkZWNpc2lvbiBwcm9jZXNzZXMgYW5kIGR5bmFtaWMgZGVjaXNpb24gbmV0d29ya3M6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDE3KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBTdG9jaGFzdGljIHRlbXBvcmFsIG1vZGVsczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTQpIEhpZGRlbiBNYXJrb3YgbW9kZWw6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE0LjMpIEthbG1hbiBmaWx0ZXJzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNC40KSBEeW5hbWljIEJheWVzaWFuIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNC41KVxuXiBHYW1lIHRoZW9yeSBhbmQgbWVjaGFuaXNtIGRlc2lnbjogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTgpXG5eIEJheWVzaWFuIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0cy4gMTIuNeKAkzEyLjYsIDEzLjTigJMxMy41LCAxNC4z4oCTMTQuNSwgMTYuNSwgMjAuMuKAkzIwLjMpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDM2MeKAkzM4MSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoH4xODLigJMxOTAsIOKJiDM2M+KAkzM3OSksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE5LjPigJMxOS40KVxuXiBEb21pbmdvcyAoMjAxNSksIGNocHQuIDYuXG5eIEJheWVzaWFuIGluZmVyZW5jZSBhbGdvcml0aG06IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDEzLjPigJMxMy41KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzNjHigJMzODEpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqB+MzYz4oCTMzc5KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTkuNCAmIDcpXG5eIERvbWluZ29zICgyMDE1KSwgcC7CoDIxMC5cbl4gQmF5ZXNpYW4gbGVhcm5pbmcgYW5kIHRoZSBleHBlY3RhdGlvbuKAk21heGltaXphdGlvbiBhbGdvcml0aG06IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDIwKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqA0MjTigJM0MzMpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAyMCksIERvbWluZ29zICgyMDE1LCBwLsKgMjEwKVxuXiBCYXllc2lhbiBkZWNpc2lvbiB0aGVvcnkgYW5kIEJheWVzaWFuIGRlY2lzaW9uIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNi41KVxuXiBTdGF0aXN0aWNhbCBsZWFybmluZyBtZXRob2RzIGFuZCBjbGFzc2lmaWVyczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMjApLFxuXiBDaWFyYW1lbGxhLCBBbGJlcnRvOyBDaWFyYW1lbGxhLCBNYXJjbyAoMjAyNCkuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogZnJvbSBkYXRhIGFuYWx5c2lzIHRvIGdlbmVyYXRpdmUgQUkuIEludGVsbGlzZW1hbnRpYyBFZGl0aW9ucy4gSVNCTsKgOTc4LTgtODk0Ny04NzYwLTMuXG5eIERlY2lzaW9uIHRyZWVzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxOS4zKSwgRG9taW5nb3MgKDIwMTUsIHAuwqA4OClcbl4gTm9uLXBhcmFtZXRlcmljIGxlYXJuaW5nIG1vZGVscyBzdWNoIGFzIEstbmVhcmVzdCBuZWlnaGJvciBhbmQgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZXM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE5LjcpLCBEb21pbmdvcyAoMjAxNSwgcC7CoDE4NykgKGstbmVhcmVzdCBuZWlnaGJvcilcbkRvbWluZ29zICgyMDE1LCBwLsKgODgpIChrZXJuZWwgbWV0aG9kcylcbl4gRG9taW5nb3MgKDIwMTUpLCBwLsKgMTUyLlxuXiBOYWl2ZSBCYXllcyBjbGFzc2lmaWVyOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxMi42KSwgRG9taW5nb3MgKDIwMTUsIHAuwqAxNTIpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBOZXVyYWwgbmV0d29ya3M6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDIxKSwgRG9taW5nb3MgKDIwMTUsIENoYXB0ZXIgNClcbl4gR3JhZGllbnQgY2FsY3VsYXRpb24gaW4gY29tcHV0YXRpb25hbCBncmFwaHMsIGJhY2twcm9wYWdhdGlvbiwgYXV0b21hdGljIGRpZmZlcmVudGlhdGlvbjogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ2N+KAkzQ3NCksIE5pbHNzb24gKDE5OTgsIGNocHQuIDMuMylcbl4gVW5pdmVyc2FsIGFwcHJveGltYXRpb24gdGhlb3JlbTogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDc1MikgVGhlIHRoZW9yZW06IEN5YmVua28gKDE5ODgpLCBIb3JuaWssIFN0aW5jaGNvbWJlICYgV2hpdGUgKDE5ODkpXG5eIEZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuMSlcbl4gUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuNilcbl4gUGVyY2VwdHJvbnM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjEsIDIyLCA2ODMsIDIyKVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgRGVlcCBsZWFybmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMjEpLCBHb29kZmVsbG93LCBCZW5naW8gJiBDb3VydmlsbGUgKDIwMTYpLCBIaW50b24gZXQgYWwuICgyMDE2KSwgU2NobWlkaHViZXIgKDIwMTUpXG5eIENvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAyMS4zKVxuXiBEZW5nICYgWXUgKDIwMTQpLCBwcC7CoDE5OeKAkzIwMC5cbl4gQ2lyZXNhbiwgTWVpZXIgJiBTY2htaWRodWJlciAoMjAxMikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgNzUxLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDE3LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBkIGUgZiBnIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgNzg1LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU2NobWlkaHViZXIgKDIwMjIpLCBzZWN0LiA1LlxuXiBTY2htaWRodWJlciAoMjAyMiksIHNlY3QuIDYuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIFNjaG1pZGh1YmVyICgyMDIyKSwgc2VjdC4gNy5cbl4gU2NobWlkaHViZXIgKDIwMjIpLCBzZWN0LiA4LlxuXiBRdW90ZWQgaW4gQ2hyaXN0aWFuICgyMDIwLCBwLsKgMjIpXG5eIFNtaXRoICgyMDIzKS5cbl4gXCJFeHBsYWluZWQ6IEdlbmVyYXRpdmUgQUlcIi4gOSBOb3ZlbWJlciAyMDIzLlxuXiBcIkFJIFdyaXRpbmcgYW5kIENvbnRlbnQgQ3JlYXRpb24gVG9vbHNcIi4gTUlUIFNsb2FuIFRlYWNoaW5nICYgTGVhcm5pbmcgVGVjaG5vbG9naWVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBEZWNlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMjUgRGVjZW1iZXIgMjAyMy5cbl4gTWFybW91eWV0ICgyMDIzKS5cbl4gS29iaWVsdXMgKDIwMTkpLlxuXiBUaG9tYXNvbiwgSmFtZXMgKDIxIE1heSAyMDI0KS4gXCJNb2pvIFJpc2luZzogVGhlIHJlc3VyZ2VuY2Ugb2YgQUktZmlyc3QgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzXCIuIFZlbnR1cmVCZWF0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNyBKdW5lIDIwMjQuIFJldHJpZXZlZCAyNiBNYXkgMjAyNC5cbl4gV29kZWNraSwgQmVuICg1IE1heSAyMDIzKS4gXCI3IEFJIFByb2dyYW1taW5nIExhbmd1YWdlcyBZb3UgTmVlZCB0byBLbm93XCIuIEFJIEJ1c2luZXNzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBKdWx5IDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gUGx1bWIsIFRhcnluICgxOCBTZXB0ZW1iZXIgMjAyNCkuIFwiV2h5IEplbnNlbiBIdWFuZyBhbmQgTWFyYyBCZW5pb2ZmIHNlZSAnZ2lnYW50aWMnIG9wcG9ydHVuaXR5IGZvciBhZ2VudGljIEFJXCIuIFZlbnR1cmVCZWF0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDQgT2N0b2JlciAyMDI0LlxuXiBNaW1zLCBDaHJpc3RvcGhlciAoMTkgU2VwdGVtYmVyIDIwMjApLiBcIkh1YW5nJ3MgTGF3IElzIHRoZSBOZXcgTW9vcmUncyBMYXcsIGFuZCBFeHBsYWlucyBXaHkgTnZpZGlhIFdhbnRzIEFybVwiLiBXYWxsIFN0cmVldCBKb3VybmFsLiBJU1NOwqAwMDk5LTk2NjAuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIgT2N0b2JlciAyMDIzLiBSZXRyaWV2ZWQgMTkgSmFudWFyeSAyMDI1LlxuXiBEYXZlbnBvcnQsIFQ7IEthbGFrb3RhLCBSIChKdW5lIDIwMTkpLiBcIlRoZSBwb3RlbnRpYWwgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIGhlYWx0aGNhcmVcIi4gRnV0dXJlIEhlYWx0aGMgSi4gNiAoMik6IDk04oCTOTguIGRvaToxMC43ODYxL2Z1dHVyZWhvc3AuNi0yLTk0LiBQTUPCoDY2MTYxODEuIFBNSUTCoDMxMzYzNTEzLlxuXiBMeWFraG92YSwgVS5BLjsgTHlha2hvdiwgUC5BLiAoMjAyNCkuIFwiU3lzdGVtYXRpYyByZXZpZXcgb2YgYXBwcm9hY2hlcyB0byBkZXRlY3Rpb24gYW5kIGNsYXNzaWZpY2F0aW9uIG9mIHNraW4gY2FuY2VyIHVzaW5nIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOiBEZXZlbG9wbWVudCBhbmQgcHJvc3BlY3RzXCIuIENvbXB1dGVycyBpbiBCaW9sb2d5IGFuZCBNZWRpY2luZS4gMTc4OiAxMDg3NDIuIGRvaToxMC4xMDE2L2ouY29tcGJpb21lZC4yMDI0LjEwODc0Mi4gUE1JRMKgMzg4NzU5MDguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDEwIE9jdG9iZXIgMjAyNC5cbl4gQWxxdWRhaWhpLCBLYXd0aGVyIFMuOyBBc2xhbSwgTmlkYTsgS2hhbiwgSXJmYW4gVWxsYWg7IEFsbXVoYWlkZWIsIEFiZHVsbGFoIE0uOyBBbHN1bmFpZGksIFNoaWthaCBKLjsgSWJyYWhpbSwgTmVoYWQgTS4gQWJkZWwgUmFobWFuOyBBbGhhaWRhcmksIEZhaGQgQS47IFNoYWlraCwgRmF0ZW1hIFMuOyBBbHNlbmJlbCwgWWFzbWluZSBNLjsgQWxhbGhhcml0aCwgRGltYSBNLjsgQWxoYXJ0aGksIEhhamFyIE0uOyBBbGdoYW1kaSwgV2VqZGFuIE0uOyBBbHNoYWhyYW5pLCBNb2hhbW1lZCBTLiAoMjAyMSkuIFwiQ291Z2ggU291bmQgRGV0ZWN0aW9uIGFuZCBEaWFnbm9zaXMgVXNpbmcgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgVGVjaG5pcXVlczogQ2hhbGxlbmdlcyBhbmQgT3Bwb3J0dW5pdGllc1wiLiBJRUVFIEFjY2Vzcy4gOTogMTAyMzI34oCTMTAyMzQ0LiBCaWJjb2RlOjIwMjFJRUVFQS4uLjlqMjMyN0EuIGRvaToxMC4xMTA5L0FDQ0VTUy4yMDIxLjMwOTc1NTkuIElTU07CoDIxNjktMzUzNi4gUE1DwqA4NTQ1MjAxLiBQTUlEwqAzNDc4NjMxNy5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJheCwgTW9uaXF1ZTsgVGhvcnBlLCBKb3JkYW47IFJvbWFub3YsIFZhbGVudGluIChEZWNlbWJlciAyMDIzKS4gXCJUaGUgZnV0dXJlIG9mIHBlcnNvbmFsaXplZCBjYXJkaW92YXNjdWxhciBtZWRpY2luZSBkZW1hbmRzIDNEIGFuZCA0RCBwcmludGluZywgc3RlbSBjZWxscywgYW5kIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIuIEZyb250aWVycyBpbiBTZW5zb3JzLiA0LiBkb2k6MTAuMzM4OS9mc2Vucy4yMDIzLjEyOTQ3MjEuIElTU07CoDI2NzMtNTA2Ny5cbl4gSnVtcGVyLCBKOyBFdmFucywgUjsgUHJpdHplbCwgQSAoMjAyMSkuIFwiSGlnaGx5IGFjY3VyYXRlIHByb3RlaW4gc3RydWN0dXJlIHByZWRpY3Rpb24gd2l0aCBBbHBoYUZvbGRcIi4gTmF0dXJlLiA1OTYgKDc4NzMpOiA1ODPigJM1ODkuIEJpYmNvZGU6MjAyMU5hdHVyLjU5Ni4uNTgzSi4gZG9pOjEwLjEwMzgvczQxNTg2LTAyMS0wMzgxOS0yLiBQTUPCoDgzNzE2MDUuIFBNSUTCoDM0MjY1ODQ0LlxuXiBcIkFJIGRpc2NvdmVycyBuZXcgY2xhc3Mgb2YgYW50aWJpb3RpY3MgdG8ga2lsbCBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYVwiLiAyMCBEZWNlbWJlciAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkFJIHNwZWVkcyB1cCBkcnVnIGRlc2lnbiBmb3IgUGFya2luc29uJ3MgdGVuLWZvbGRcIi4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkuIDE3IEFwcmlsIDIwMjQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIEhvcm5lLCBSb2JlcnQgSS47IEFuZHJ6ZWpld3NrYSwgRXdhIEEuOyBBbGFtLCBQYXJ2ZXo7IEJyb3R6YWtpcywgWi4gRmFpZG9uOyBTcml2YXN0YXZhLCBBbmtpdDsgQXViZXJ0LCBBbGljZTsgTm93aW5za2EsIE1hZ2RhbGVuYTsgR3JlZ29yeSwgUmViZWNjYSBDLjsgU3RhYXRzLCBSb3hpbmU7IFBvc3NlbnRpLCBBbmRyZWE7IENoaWEsIFNlYW47IFNvcm1hbm5pLCBQaWV0cm87IEdoZXR0aSwgQmVybmFyZGlubzsgQ2F1Z2hleSwgQnlyb247IEtub3dsZXMsIFR1b21hcyBQLiBKLjsgVmVuZHJ1c2NvbG8sIE1pY2hlbGUgKDE3IEFwcmlsIDIwMjQpLiBcIkRpc2NvdmVyeSBvZiBwb3RlbnQgaW5oaWJpdG9ycyBvZiDOsS1zeW51Y2xlaW4gYWdncmVnYXRpb24gdXNpbmcgc3RydWN0dXJlLWJhc2VkIGl0ZXJhdGl2ZSBsZWFybmluZ1wiLiBOYXR1cmUgQ2hlbWljYWwgQmlvbG9neS4gMjAgKDUpLiBOYXR1cmU6IDYzNOKAkzY0NS4gZG9pOjEwLjEwMzgvczQxNTg5LTAyNC0wMTU4MC14LiBQTUPCoDExMDYyOTAzLiBQTUlEwqAzODYzMjQ5Mi5cbl4gR3JhbnQsIEV1Z2VuZSBGLjsgTGFyZG5lciwgUmV4ICgyNSBKdWx5IDE5NTIpLiBcIlRoZSBUYWxrIG9mIHRoZSBUb3duIOKAkyBJdFwiLiBUaGUgTmV3IFlvcmtlci4gSVNTTsKgMDAyOC03OTJYLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBGZWJydWFyeSAyMDIwLiBSZXRyaWV2ZWQgMjggSmFudWFyeSAyMDI0LlxuXiBBbmRlcnNvbiwgTWFyayBSb2JlcnQgKDExIE1heSAyMDE3KS4gXCJUd2VudHkgeWVhcnMgb24gZnJvbSBEZWVwIEJsdWUgdnMgS2FzcGFyb3Y6IGhvdyBhIGNoZXNzIG1hdGNoIHN0YXJ0ZWQgdGhlIGJpZyBkYXRhIHJldm9sdXRpb25cIi4gVGhlIENvbnZlcnNhdGlvbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCAyOCBKYW51YXJ5IDIwMjQuXG5eIE1hcmtvZmYsIEpvaG4gKDE2IEZlYnJ1YXJ5IDIwMTEpLiBcIkNvbXB1dGVyIFdpbnMgb24gJ0plb3BhcmR5ISc6IFRyaXZpYWwsIEl0J3MgTm90XCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMiBPY3RvYmVyIDIwMTQuIFJldHJpZXZlZCAyOCBKYW51YXJ5IDIwMjQuXG5eIEJ5Zm9yZCwgU2FtICgyNyBNYXkgMjAxNykuIFwiQWxwaGFHbyByZXRpcmVzIGZyb20gY29tcGV0aXRpdmUgR28gYWZ0ZXIgZGVmZWF0aW5nIHdvcmxkIG51bWJlciBvbmUgM+KAkzBcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IEp1bmUgMjAxNy4gUmV0cmlldmVkIDI4IEphbnVhcnkgMjAyNC5cbl4gQnJvd24sIE5vYW07IFNhbmRob2xtLCBUdW9tYXMgKDMwIEF1Z3VzdCAyMDE5KS4gXCJTdXBlcmh1bWFuIEFJIGZvciBtdWx0aXBsYXllciBwb2tlclwiLiBTY2llbmNlLiAzNjUgKDY0NTYpOiA4ODXigJM4OTAuIEJpYmNvZGU6MjAxOVNjaS4uLjM2NS4uODg1Qi4gZG9pOjEwLjExMjYvc2NpZW5jZS5hYXkyNDAwLiBJU1NOwqAwMDM2LTgwNzUuIFBNSUTCoDMxMjk2NjUwLlxuXiBcIk11WmVybzogTWFzdGVyaW5nIEdvLCBjaGVzcywgc2hvZ2kgYW5kIEF0YXJpIHdpdGhvdXQgcnVsZXNcIi4gR29vZ2xlIERlZXBNaW5kLiAyMyBEZWNlbWJlciAyMDIwLiBSZXRyaWV2ZWQgMjggSmFudWFyeSAyMDI0LlxuXiBTYW1wbGUsIElhbiAoMzAgT2N0b2JlciAyMDE5KS4gXCJBSSBiZWNvbWVzIGdyYW5kbWFzdGVyIGluICdmaWVuZGlzaGx5IGNvbXBsZXgnIFN0YXJDcmFmdCBJSVwiLiBUaGUgR3VhcmRpYW4uIElTU07CoDAyNjEtMzA3Ny4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjkgRGVjZW1iZXIgMjAyMC4gUmV0cmlldmVkIDI4IEphbnVhcnkgMjAyNC5cbl4gV3VybWFuLCBQLiBSLjsgQmFycmV0dCwgUy47IEthd2Ftb3RvLCBLLiAoMjAyMikuIFwiT3V0cmFjaW5nIGNoYW1waW9uIEdyYW4gVHVyaXNtbyBkcml2ZXJzIHdpdGggZGVlcCByZWluZm9yY2VtZW50IGxlYXJuaW5nXCIgKFBERikuIE5hdHVyZS4gNjAyICg3ODk2KTogMjIz4oCTMjI4LiBCaWJjb2RlOjIwMjJOYXR1ci42MDIuLjIyM1cuIGRvaToxMC4xMDM4L3M0MTU4Ni0wMjEtMDQzNTctNy4gUE1JRMKgMzUxNDAzODQuXG5eIFdpbGtpbnMsIEFsZXggKDEzIE1hcmNoIDIwMjQpLiBcIkdvb2dsZSBBSSBsZWFybnMgdG8gcGxheSBvcGVuLXdvcmxkIHZpZGVvIGdhbWVzIGJ5IHdhdGNoaW5nIHRoZW1cIi4gTmV3IFNjaWVudGlzdC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDI0LiBSZXRyaWV2ZWQgMjEgSnVseSAyMDI0LlxuXiBcIkltcHJvdmluZyBtYXRoZW1hdGljYWwgcmVhc29uaW5nIHdpdGggcHJvY2VzcyBzdXBlcnZpc2lvblwiLiBPcGVuQUkuIDMxIE1heSAyMDIzLiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI1LlxuXiBTcml2YXN0YXZhLCBTYXVyYWJoICgyOSBGZWJydWFyeSAyMDI0KS4gXCJGdW5jdGlvbmFsIEJlbmNobWFya3MgZm9yIFJvYnVzdCBFdmFsdWF0aW9uIG9mIFJlYXNvbmluZyBQZXJmb3JtYW5jZSwgYW5kIHRoZSBSZWFzb25pbmcgR2FwXCIuIGFyWGl2OjI0MDIuMTk0NTAgW2NzLkFJXS5cbl4gTGlnaHRtYW4sIEh1bnRlcjsgS29zYXJhanUsIFZpbmVldDsgQnVyZGEsIFl1cmE7IEVkd2FyZHMsIEhhcnJpOyBCYWtlciwgQm93ZW47IExlZSwgVGVkZHk7IExlaWtlLCBKYW47IFNjaHVsbWFuLCBKb2huOyBTdXRza2V2ZXIsIElseWE7IENvYmJlLCBLYXJsICgyMDIzKS4gXCJMZXQncyBWZXJpZnkgU3RlcCBieSBTdGVwXCIuIGFyWGl2OjIzMDUuMjAwNTB2MSBbY3MuTEddLlxuXiBGcmFuemVuLCBDYXJsICg5IEphbnVhcnkgMjAyNSkuIFwiTWljcm9zb2Z0J3MgbmV3IHJTdGFyLU1hdGggdGVjaG5pcXVlIHVwZ3JhZGVzIHNtYWxsIG1vZGVscyB0byBvdXRwZXJmb3JtIE9wZW5BSSdzIG8xLXByZXZpZXcgYXQgbWF0aCBwcm9ibGVtc1wiLiBWZW50dXJlQmVhdC4gUmV0cmlldmVkIDI2IEphbnVhcnkgMjAyNS5cbl4gUm9iZXJ0cywgU2lvYmhhbiAoMjUgSnVseSAyMDI0KS4gXCJBSSBhY2hpZXZlcyBzaWx2ZXItbWVkYWwgc3RhbmRhcmQgc29sdmluZyBJbnRlcm5hdGlvbmFsIE1hdGhlbWF0aWNhbCBPbHltcGlhZCBwcm9ibGVtc1wiLiBUaGUgTmV3IFlvcmsgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBBdWd1c3QgMjAyNC5cbl4gQXplcmJheWV2LCBaaGFuZ2lyOyBTY2hvZWxrb3BmLCBIYWlsZXk7IFBhc3RlciwgS2VpcmFuOyBTYW50b3MsIE1hcmNvIERvczsgTWNBbGVlcicsIFN0ZXBoZW47IEppYW5nLCBBbGJlcnQgUS47IERlbmcsIEppYTsgQmlkZXJtYW4sIFN0ZWxsYTsgV2VsbGVjaywgU2VhbiAoMTYgT2N0b2JlciAyMDIzKS4gXCJMbGVtbWE6IEFuIE9wZW4gTGFuZ3VhZ2UgTW9kZWwgRm9yIE1hdGhlbWF0aWNzXCIuIEVsZXV0aGVyQUkgQmxvZy4gUmV0cmlldmVkIDI2IEphbnVhcnkgMjAyNS5cbl4gXCJKdWxpdXMgQUlcIi4ganVsaXVzLmFpLlxuXiBNY0ZhcmxhbmQsIEFsZXggKDEyIEp1bHkgMjAyNCkuIFwiOCBCZXN0IEFJIGZvciBNYXRoIFRvb2xzIChKYW51YXJ5IDIwMjUpXCIuIFVuaXRlLkFJLiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI1LlxuXiBNYXR0aGV3IEZpbmlvICYgQW1hbmRhIERvd25pZTogSUJNIFRoaW5rIDIwMjQgUHJpbWVyLCBcIldoYXQgaXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKSBpbiBGaW5hbmNlP1wiIDggRGVjLiAyMDIzXG5eIE0uIE5pY29sYXMsIEouIEZpcnpsaTogUGVuc2lvbnMgQWdlL0V1cm9wZWFuIFBlbnNpb25zIG1hZ2F6aW5lLCBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBBc2sgdGhlIEluZHVzdHJ5XCIgTWF5IEp1bmUgMjAyNCBodHRwczovL3ZpZGVvdm9pY2Uub3JnL2FpLWluLWZpbmFuY2UtaW5ub3ZhdGlvbi1lbnRyZXByZW5ldXJzaGlwLXZzLW92ZXItcmVndWxhdGlvbi13aXRoLXRoZS1ldXMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYWN0LXdvbnQtd29yay1hcy1pbnRlbmRlZC8gQXJjaGl2ZWQgMTEgU2VwdGVtYmVyIDIwMjQgYXQgdGhlIFdheWJhY2sgTWFjaGluZS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgQ29uZ3Jlc3Npb25hbCBSZXNlYXJjaCBTZXJ2aWNlICgyMDE5KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgYW5kIE5hdGlvbmFsIFNlY3VyaXR5IChQREYpLiBXYXNoaW5ndG9uLCBEQzogQ29uZ3Jlc3Npb25hbCBSZXNlYXJjaCBTZXJ2aWNlLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiA4IE1heSAyMDIwLiBSZXRyaWV2ZWQgMjUgRmVicnVhcnkgMjAyNC5QRC1ub3RpY2Vcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFNseXVzYXIsIFZhZHltICgyMDE5KS4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYXMgdGhlIGJhc2lzIG9mIGZ1dHVyZSBjb250cm9sIG5ldHdvcmtzIChQcmVwcmludCkuIGRvaToxMC4xMzE0MC9SRy4yLjIuMzAyNDcuNTAwODcuXG5eIElyYXFpLCBBbWphZCAoMyBBcHJpbCAyMDI0KS4gXCInTGF2ZW5kZXInOiBUaGUgQUkgbWFjaGluZSBkaXJlY3RpbmcgSXNyYWVsJ3MgYm9tYmluZyBzcHJlZSBpbiBHYXphXCIuICs5NzIgTWFnYXppbmUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEwIE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDYgQXByaWwgMjAyNC5cbl4gRGF2aWVzLCBIYXJyeTsgTWNLZXJuYW4sIEJldGhhbjsgU2FiYmFnaCwgRGFuICgxIERlY2VtYmVyIDIwMjMpLiBcIidUaGUgR29zcGVsJzogaG93IElzcmFlbCB1c2VzIEFJIHRvIHNlbGVjdCBib21iaW5nIHRhcmdldHMgaW4gR2F6YVwiLiBUaGUgR3VhcmRpYW4uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDQgRGVjZW1iZXIgMjAyMy5cbl4gTWFydGksIEogV2VybmVyICgxMCBBdWd1c3QgMjAyNCkuIFwiRHJvaG5lbiBoYWJlbiBkZW4gS3JpZWcgaW4gZGVyIFVrcmFpbmUgcmV2b2x1dGlvbmllcnQsIGRvY2ggc2llIHNpbmQgZW1wZmluZGxpY2ggYXVmIFN0w7Zyc2VuZGVyIOKAkyBkZXNoYWxiIHNvbGxlbiBzaWUgamV0enQgYXV0b25vbSBvcGVyaWVyZW5cIi4gTmV1ZSBaw7xyY2hlciBaZWl0dW5nIChpbiBHZXJtYW4pLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMCBBdWd1c3QgMjAyNC4gUmV0cmlldmVkIDEwIEF1Z3VzdCAyMDI0LlxuXiBOZXdzb20sIEdhdmluOyBXZWJlciwgU2hpcmxleSBOLiAoNSBTZXB0ZW1iZXIgMjAyMykuIFwiRXhlY3V0aXZlIE9yZGVyIE4tMTItMjNcIiAoUERGKS4gRXhlY3V0aXZlIERlcGFydG1lbnQsIFN0YXRlIG9mIENhbGlmb3JuaWEuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIxIEZlYnJ1YXJ5IDIwMjQuIFJldHJpZXZlZCA3IFNlcHRlbWJlciAyMDIzLlxuXiBQaW5heWEsIFdhbHRlciBILiBMLjsgR3JhaGFtLCBNYXJrIFMuOyBLZXJmb290LCBFcmljOyBUdWRvc2l1LCBQZXRydS1EYW5pZWw7IERhZmZsb24sIEplc3NpY2E7IEZlcm5hbmRleiwgVmlyZ2luaWE7IFNhbmNoZXosIFBlZHJvOyBXb2xsZWIsIEp1bGlhOyBkYSBDb3N0YSwgUGVkcm8gRi47IFBhdGVsLCBBc2hheSAoMjAyMykuIFwiR2VuZXJhdGl2ZSBBSSBmb3IgTWVkaWNhbCBJbWFnaW5nOiBleHRlbmRpbmcgdGhlIE1PTkFJIEZyYW1ld29ya1wiLiBhclhpdjoyMzA3LjE1MjA4IFtlZXNzLklWXS5cbl4gXCJXaGF0IGlzIENoYXRHUFQsIERBTEwtRSwgYW5kIGdlbmVyYXRpdmUgQUk/XCIuIE1jS2luc2V5LiBSZXRyaWV2ZWQgMTQgRGVjZW1iZXIgMjAyNC5cbl4gXCJXaGF0IGlzIGdlbmVyYXRpdmUgQUk/XCIuIElCTS4gMjIgTWFyY2ggMjAyNC5cbl4gUGFzaWNrLCBBZGFtICgyNyBNYXJjaCAyMDIzKS4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBHbG9zc2FyeTogTmV1cmFsIE5ldHdvcmtzIGFuZCBPdGhlciBUZXJtcyBFeHBsYWluZWRcIi4gVGhlIE5ldyBZb3JrIFRpbWVzLiBJU1NOwqAwMzYyLTQzMzEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgU2VwdGVtYmVyIDIwMjMuIFJldHJpZXZlZCAyMiBBcHJpbCAyMDIzLlxuXiBLYXJwYXRoeSwgQW5kcmVqOyBBYmJlZWwsIFBpZXRlcjsgQnJvY2ttYW4sIEdyZWc7IENoZW4sIFBldGVyOyBDaGV1bmcsIFZpY2tpOyBEdWFuLCBZYW47IEdvb2RmZWxsb3csIElhbjsgS2luZ21hLCBEdXJrOyBIbywgSm9uYXRoYW47IFJlaW4gSG91dGhvb2Z0OyBUaW0gU2FsaW1hbnM7IEpvaG4gU2NodWxtYW47IElseWEgU3V0c2tldmVyOyBXb2pjaWVjaCBaYXJlbWJhICgxNiBKdW5lIDIwMTYpLiBcIkdlbmVyYXRpdmUgbW9kZWxzXCIuIE9wZW5BSS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDE1IE1hcmNoIDIwMjMuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBHcmlmZml0aCwgRXJpbjsgTWV0eiwgQ2FkZSAoMjcgSmFudWFyeSAyMDIzKS4gXCJBbnRocm9waWMgU2FpZCB0byBCZSBDbG9zaW5nIEluIG9uICQzMDAgTWlsbGlvbiBpbiBOZXcgQS5JLiBGdW5kaW5nXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOSBEZWNlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMTQgTWFyY2ggMjAyMy5cbl4gTGFueG9uLCBOYXRlOyBCYXNzLCBEaW5hOyBEYXZhbG9zLCBKYWNraWUgKDEwIE1hcmNoIDIwMjMpLiBcIkEgQ2hlYXQgU2hlZXQgdG8gQUkgQnV6endvcmRzIGFuZCBUaGVpciBNZWFuaW5nc1wiLiBCbG9vbWJlcmcgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDE0IE1hcmNoIDIwMjMuXG5eIE1ldHosIENhZGUgKDE0IE1hcmNoIDIwMjMpLiBcIk9wZW5BSSBQbGFucyB0byBVcCB0aGUgQW50ZSBpbiBUZWNoJ3MgQS5JLiBSYWNlXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBNYXJjaCAyMDIzLiBSZXRyaWV2ZWQgMzEgTWFyY2ggMjAyMy5cbl4gVGhvcHBpbGFuLCBSb21hbDsgRGUgRnJlaXRhcywgRGFuaWVsOyBIYWxsLCBKYW1pZTsgU2hhemVlciwgTm9hbTsgS3Vsc2hyZXNodGhhLCBBcG9vcnYgKDIwIEphbnVhcnkgMjAyMikuIFwiTGFNREE6IExhbmd1YWdlIE1vZGVscyBmb3IgRGlhbG9nIEFwcGxpY2F0aW9uc1wiLiBhclhpdjoyMjAxLjA4MjM5IFtjcy5DTF0uXG5eIFJvb3NlLCBLZXZpbiAoMjEgT2N0b2JlciAyMDIyKS4gXCJBIENvbWluZy1PdXQgUGFydHkgZm9yIEdlbmVyYXRpdmUgQS5JLiwgU2lsaWNvbiBWYWxsZXkncyBOZXcgQ3JhemVcIi4gVGhlIE5ldyBZb3JrIFRpbWVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBGZWJydWFyeSAyMDIzLiBSZXRyaWV2ZWQgMTQgTWFyY2ggMjAyMy5cbl4gTWV0eiwgQ2FkZSAoMTUgRmVicnVhcnkgMjAyNCkuIFwiT3BlbkFJIFVudmVpbHMgQS5JLiBUaGF0IEluc3RhbnRseSBHZW5lcmF0ZXMgRXllLVBvcHBpbmcgVmlkZW9zXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBGZWJydWFyeSAyMDI0LiBSZXRyaWV2ZWQgMTYgRmVicnVhcnkgMjAyNC5cbl4gXCJUaGUgcmFjZSBvZiB0aGUgQUkgbGFicyBoZWF0cyB1cFwiLiBUaGUgRWNvbm9taXN0LiAzMCBKYW51YXJ5IDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBZYW5nLCBKdW5lOyBHb2t0dXJrLCBCdXJhayAoMTQgTWFyY2ggMjAyMykuIFwiR29vZ2xlIENsb3VkIGJyaW5ncyBnZW5lcmF0aXZlIEFJIHRvIGRldmVsb3BlcnMsIGJ1c2luZXNzZXMsIGFuZCBnb3Zlcm5tZW50c1wiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBOb3ZlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMTUgTWFyY2ggMjAyMy5cbl4gQnJ5bmpvbGZzc29uLCBFcmlrOyBMaSwgRGFuaWVsbGU7IFJheW1vbmQsIExpbmRzZXkgUi4gKEFwcmlsIDIwMjMpLCBHZW5lcmF0aXZlIEFJIGF0IFdvcmsgKFdvcmtpbmcgUGFwZXIpLCBXb3JraW5nIFBhcGVyIFNlcmllcywgZG9pOjEwLjMzODYvdzMxMTYxLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOCBNYXJjaCAyMDI0LCByZXRyaWV2ZWQgMjEgSmFudWFyeSAyMDI0XG5eIFwiRG9uJ3QgZmVhciBhbiBBSS1pbmR1Y2VkIGpvYnMgYXBvY2FseXBzZSBqdXN0IHlldFwiLiBUaGUgRWNvbm9taXN0LiA2IE1hcmNoIDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBDb3lsZSwgSmFrZSAoMjcgU2VwdGVtYmVyIDIwMjMpLiBcIkluIEhvbGx5d29vZCB3cml0ZXJzJyBiYXR0bGUgYWdhaW5zdCBBSSwgaHVtYW5zIHdpbiAoZm9yIG5vdylcIi4gQVAgTmV3cy4gQXNzb2NpYXRlZCBQcmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMyBBcHJpbCAyMDI0LiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI0LlxuXiBIYXJyZWlzLCBILjsgS291bGxpYXMsIFQuOyBSb2JlcnRzLCBSb2dlci4gXCJHZW5lcmF0aXZlIEFJOiBVbmxvY2tpbmcgdGhlIGZ1dHVyZSBvZiBmYXNoaW9uXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBcIkhvdyBHZW5lcmF0aXZlIEFJIENhbiBBdWdtZW50IEh1bWFuIENyZWF0aXZpdHlcIi4gSGFydmFyZCBCdXNpbmVzcyBSZXZpZXcuIDE2IEp1bmUgMjAyMy4gSVNTTsKgMDAxNy04MDEyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBKdW5lIDIwMjMuIFJldHJpZXZlZCAyMCBKdW5lIDIwMjMuXG5eIEhlbmRyaXgsIEp1c3RpbiAoMTYgTWF5IDIwMjMpLiBcIlRyYW5zY3JpcHQ6IFNlbmF0ZSBKdWRpY2lhcnkgU3ViY29tbWl0dGVlIEhlYXJpbmcgb24gT3ZlcnNpZ2h0IG9mIEFJXCIuIHRlY2hwb2xpY3kucHJlc3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxOSBNYXkgMjAyMy5cbl4gU2ltb24sIEZlbGl4IE0uOyBBbHRheSwgU2FjaGE7IE1lcmNpZXIsIEh1Z28gKDE4IE9jdG9iZXIgMjAyMykuIFwiTWlzaW5mb3JtYXRpb24gcmVsb2FkZWQ/IEZlYXJzIGFib3V0IHRoZSBpbXBhY3Qgb2YgZ2VuZXJhdGl2ZSBBSSBvbiBtaXNpbmZvcm1hdGlvbiBhcmUgb3ZlcmJsb3duXCIuIEhhcnZhcmQgS2VubmVkeSBTY2hvb2wgTWlzaW5mb3JtYXRpb24gUmV2aWV3LiBkb2k6MTAuMzcwMTYvbXItMjAyMC0xMjcuIFMyQ0lEwqAyNjQxMTM4ODMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNiBOb3ZlbWJlciAyMDIzLlxuXiBcIk5ldyBBSSBzeXN0ZW1zIGNvbGxpZGUgd2l0aCBjb3B5cmlnaHQgbGF3XCIuIEJCQyBOZXdzLiAxIEF1Z3VzdCAyMDIzLiBSZXRyaWV2ZWQgMjggU2VwdGVtYmVyIDIwMjQuXG5eIFBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuICgyMDIzKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UsIEZvdW5kYXRpb25zIG9mIENvbXB1dGF0aW9uYWwgQWdlbnRzICgzcmTCoGVkLikuIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLiBkb2k6MTAuMTAxNy85NzgxMDA5MjU4MjI3LiBJU0JOwqA5NzgtMS0wMDkyLTU4MTktNy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gUnVzc2VsbCwgU3R1YXJ0OyBOb3J2aWcsIFBldGVyICgyMDIwKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTW9kZXJuIEFwcHJvYWNoICg0dGjCoGVkLikuIFBlYXJzb24uIElTQk7CoDk3OC0wLTEzNDYtMTA5OS0zLlxuXiBcIldoeSBhZ2VudHMgYXJlIHRoZSBuZXh0IGZyb250aWVyIG9mIGdlbmVyYXRpdmUgQUlcIi4gTWNLaW5zZXkgRGlnaXRhbC4gMjQgSnVseSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzIE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDEwIEF1Z3VzdCAyMDI0LlxuXiBGaWd1ZWlyZWRvLCBNYXlhcmEgQ29zdGE7IEFua3JhaCwgRWxpemFiZXRoOyBQb3dlbGwsIEphY3F1ZWx5biBFLjsgRXBzdGVpbiwgRGFuaWVsIEEuOyBDaGVuLCBZdW5hbiAoMTIgSmFudWFyeSAyMDI0KS4gXCJQb3dlcmVkIGJ5IEFJOiBFeGFtaW5pbmcgSG93IEFJIERlc2NyaXB0aW9ucyBJbmZsdWVuY2UgUGVyY2VwdGlvbnMgb2YgRmVydGlsaXR5IFRyYWNraW5nIEFwcGxpY2F0aW9uc1wiLiBQcm9jLiBBQ00gSW50ZXJhY3QuIE1vYi4gV2VhcmFibGUgVWJpcXVpdG91cyBUZWNobm9sLiA3ICg0KTogMTU0OjHigJMxNTQ6MjQuIGRvaToxMC4xMTQ1LzM2MzE0MTQuXG5eIFBvd2VyLCBKZW5uaWZlcjsgUHltLCBUaW5vbmVlOyBKYW1lcywgQWxleGFuZHJhOyBXYWxpbmcsIEFuZHJlYSAoNSBKdWx5IDIwMjQpLiBcIlNtYXJ0IFNleCBUb3lzOiBBIE5hcnJhdGl2ZSBSZXZpZXcgb2YgUmVjZW50IFJlc2VhcmNoIG9uIEN1bHR1cmFsLCBIZWFsdGggYW5kIFNhZmV0eSBDb25zaWRlcmF0aW9uc1wiLiBDdXJyZW50IFNleHVhbCBIZWFsdGggUmVwb3J0cy4gMTYgKDMpOiAxOTnigJMyMTUuIGRvaToxMC4xMDA3L3MxMTkzMC0wMjQtMDAzOTItMy4gSVNTTsKgMTU0OC0zNTkyLlxuXiBNYXJjYW50b25pbywgVGlmZmFueSBMLjsgQXZlcnksIEdyYWNpZTsgVGhyYXNoLCBBbm5hOyBMZW9uZSwgUnVzY2hlbGxlIE0uICgxMCBTZXB0ZW1iZXIgMjAyNCkuIFwiTGFyZ2UgTGFuZ3VhZ2UgTW9kZWxzIGluIGFuIEFwcDogQ29uZHVjdGluZyBhIFF1YWxpdGF0aXZlIFN5bnRoZXRpYyBEYXRhIEFuYWx5c2lzIG9mIEhvdyBTbmFwY2hhdCdzIFwiTXkgQUlcIiBSZXNwb25kcyB0byBRdWVzdGlvbnMgQWJvdXQgU2V4dWFsIENvbnNlbnQsIFNleHVhbCBSZWZ1c2FscywgU2V4dWFsIEFzc2F1bHQsIGFuZCBTZXh0aW5nXCIuIFRoZSBKb3VybmFsIG9mIFNleCBSZXNlYXJjaDogMeKAkzE1LiBkb2k6MTAuMTA4MC8wMDIyNDQ5OS4yMDI0LjIzOTY0NTcuIElTU07CoDAwMjItNDQ5OS4gUE1JRMKgMzkyNTQ2MjguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDkgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDkgRGVjZW1iZXIgMjAyNC5cbl4gSGFuc29uLCBLZW5uZXRoIFIuOyBCb2x0aG91c2UsIEhhbm5haCAoMjAyNCkuIFwiXCJSZXBsaWthIFJlbW92aW5nIEVyb3RpYyBSb2xlLVBsYXkgSXMgTGlrZSBHcmFuZCBUaGVmdCBBdXRvIFJlbW92aW5nIEd1bnMgb3IgQ2Fyc1wiOiBSZWRkaXQgRGlzY291cnNlIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIENoYXRib3RzIGFuZCBTZXh1YWwgVGVjaG5vbG9naWVzXCIuIFNvY2l1czogU29jaW9sb2dpY2FsIFJlc2VhcmNoIGZvciBhIER5bmFtaWMgV29ybGQuIDEwLiBkb2k6MTAuMTE3Ny8yMzc4MDIzMTI0MTI1OTYyNy4gSVNTTsKgMjM3OC0wMjMxLlxuXiBNYW5pYSwgS2Fyb2xpbmEgKDEgSmFudWFyeSAyMDI0KS4gXCJMZWdhbCBQcm90ZWN0aW9uIG9mIFJldmVuZ2UgYW5kIERlZXBmYWtlIFBvcm4gVmljdGltcyBpbiB0aGUgRXVyb3BlYW4gVW5pb246IEZpbmRpbmdzIEZyb20gYSBDb21wYXJhdGl2ZSBMZWdhbCBTdHVkeVwiLiBUcmF1bWEsIFZpb2xlbmNlLCAmIEFidXNlLiAyNSAoMSk6IDExN+KAkzEyOS4gZG9pOjEwLjExNzcvMTUyNDgzODAyMjExNDM3NzIuIElTU07CoDE1MjQtODM4MC4gUE1JRMKgMzY1NjUyNjcuXG5eIFNpbmdoLCBTdXllc2hhOyBOYW1iaWFyLCBWYWlzaG5hdmkgKDIwMjQpLiBcIlJvbGUgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgaW4gdGhlIFByZXZlbnRpb24gb2YgT25saW5lIENoaWxkIFNleHVhbCBBYnVzZTogQSBTeXN0ZW1hdGljIFJldmlldyBvZiBMaXRlcmF0dXJlXCIuIEpvdXJuYWwgb2YgQXBwbGllZCBTZWN1cml0eSBSZXNlYXJjaC4gMTkgKDQpOiA1ODbigJM2MjcuIGRvaToxMC4xMDgwLzE5MzYxNjEwLjIwMjQuMjMzMTg4NS4gSVNTTsKgMTkzNi0xNjEwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA5IERlY2VtYmVyIDIwMjQuIFJldHJpZXZlZCA5IERlY2VtYmVyIDIwMjQuXG5eIFJhemksIEFmc2FuZWg7IEtpbSwgU2V1bmdoeXVuOyBBbHNvdWJhaSwgQXNod2FxOyBTdHJpbmdoaW5pLCBHaWFubHVjYTsgU29sb3JpbywgVGhhbWFyOyBEZSBDaG91ZGh1cnksIE11bm11bjsgV2lzbmlld3NraSwgUGFtZWxhIEouICgxMyBPY3RvYmVyIDIwMjEpLiBcIkEgSHVtYW4tQ2VudGVyZWQgU3lzdGVtYXRpYyBMaXRlcmF0dXJlIFJldmlldyBvZiB0aGUgQ29tcHV0YXRpb25hbCBBcHByb2FjaGVzIGZvciBPbmxpbmUgU2V4dWFsIFJpc2sgRGV0ZWN0aW9uXCIuIFByb2NlZWRpbmdzIG9mIHRoZSBBQ00gb24gSHVtYW4tQ29tcHV0ZXIgSW50ZXJhY3Rpb24uIDUgKENTQ1cyKTogMeKAkzM4LiBkb2k6MTAuMTE0NS8zNDc5NjA5LiBJU1NOwqAyNTczLTAxNDIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDkgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDkgRGVjZW1iZXIgMjAyNC5cbl4gUmFuc2JvdGhhbSwgU2FtOyBLaXJvbiwgRGF2aWQ7IEdlcmJlcnQsIFBoaWxpcHA7IFJlZXZlcywgTWFydGluICg2IFNlcHRlbWJlciAyMDE3KS4gXCJSZXNoYXBpbmcgQnVzaW5lc3MgV2l0aCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBNSVQgU2xvYW4gTWFuYWdlbWVudCBSZXZpZXcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEzIEZlYnJ1YXJ5IDIwMjQuXG5eIFN1biwgWXVyYW47IFpoYW8sIFhpbGVpOyBMb3ZyZWdsaW8sIFJ1Z2dpZXJvOyBLdWxpZ293c2tpLCBFcmljYSAoMSBKYW51YXJ5IDIwMjQpLCBOYXNlciwgTS4gWi4gKGVkLiksIFwiOCDigJMgQUkgZm9yIGxhcmdlLXNjYWxlIGV2YWN1YXRpb24gbW9kZWxpbmc6IHByb21pc2VzIGFuZCBjaGFsbGVuZ2VzXCIsIEludGVycHJldGFibGUgTWFjaGluZSBMZWFybmluZyBmb3IgdGhlIEFuYWx5c2lzLCBEZXNpZ24sIEFzc2Vzc21lbnQsIGFuZCBJbmZvcm1lZCBEZWNpc2lvbiBNYWtpbmcgZm9yIENpdmlsIEluZnJhc3RydWN0dXJlLCBXb29kaGVhZCBQdWJsaXNoaW5nIFNlcmllcyBpbiBDaXZpbCBhbmQgU3RydWN0dXJhbCBFbmdpbmVlcmluZywgV29vZGhlYWQgUHVibGlzaGluZywgcHAuwqAxODXigJMyMDQsIElTQk7CoDk3OC0wLTEyODItNDA3My0xLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBNYXkgMjAyNCwgcmV0cmlldmVkIDI4IEp1bmUgMjAyNC5cbl4gR29tYWEsIElzbGFtOyBBZGVsemFkZWgsIE1hc291ZDsgR3d5bm5lLCBTdGV2ZW47IFNwZW5jZXIsIEJydWNlOyBLbywgWW9vbjsgQsOpbmljaG91LCBOb3VyZWRkaW5lOyBNYSwgQ2h1bnl1bjsgRWxzYWdhbiwgTm91cjsgRHVvbmcsIERhbmE7IFphbG9rLCBFaGFiOyBLaW5hdGVkZXIsIE1heCAoMSBOb3ZlbWJlciAyMDIxKS4gXCJBIEZyYW1ld29yayBmb3IgSW50ZWxsaWdlbnQgRmlyZSBEZXRlY3Rpb24gYW5kIEV2YWN1YXRpb24gU3lzdGVtXCIuIEZpcmUgVGVjaG5vbG9neS4gNTcgKDYpOiAzMTc54oCTMzE4NS4gZG9pOjEwLjEwMDcvczEwNjk0LTAyMS0wMTE1Ny0zLiBJU1NOwqAxNTcyLTgwOTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFpoYW8sIFhpbGVpOyBMb3ZyZWdsaW8sIFJ1Z2dpZXJvOyBOaWxzc29uLCBEYW5pZWwgKDEgTWF5IDIwMjApLiBcIk1vZGVsbGluZyBhbmQgaW50ZXJwcmV0aW5nIHByZS1ldmFjdWF0aW9uIGRlY2lzaW9uLW1ha2luZyB1c2luZyBtYWNoaW5lIGxlYXJuaW5nXCIuIEF1dG9tYXRpb24gaW4gQ29uc3RydWN0aW9uLiAxMTM6IDEwMzE0MC4gZG9pOjEwLjEwMTYvai5hdXRjb24uMjAyMC4xMDMxNDAuIGhkbDoxMDE3OS8xNzMxNS4gSVNTTsKgMDkyNi01ODA1LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBNYXkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkluZGlhJ3MgbGF0ZXN0IGVsZWN0aW9uIGVtYnJhY2VkIEFJIHRlY2hub2xvZ3kuIEhlcmUgYXJlIHNvbWUgd2F5cyBpdCB3YXMgdXNlZCBjb25zdHJ1Y3RpdmVseVwiLiBQQlMgTmV3cy4gMTIgSnVuZSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDI4IE9jdG9iZXIgMjAyNC5cbl4gTcO8bGxlciwgVmluY2VudCBDLiAoMzAgQXByaWwgMjAyMCkuIFwiRXRoaWNzIG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBSb2JvdGljc1wiLiBTdGFuZm9yZCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeSBBcmNoaXZlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBTaW1vbml0ZSAoMjAxNikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg3LlxuXiBMYXNrb3dza2kgKDIwMjMpLlxuXiBHQU8gKDIwMjIpLlxuXiBWYWxpbnNreSAoMjAxOSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTkxLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA5OTHigJM5OTIuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqA2My5cbl4gVmluY2VudCAoMjAyMikuXG5eIEtvcGVsLCBNYXR0aGV3LiBcIkNvcHlyaWdodCBTZXJ2aWNlczogRmFpciBVc2VcIi4gQ29ybmVsbCBVbml2ZXJzaXR5IExpYnJhcnkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMjYgQXByaWwgMjAyNC5cbl4gQnVyZ2VzcywgTWF0dC4gXCJIb3cgdG8gU3RvcCBZb3VyIERhdGEgRnJvbSBCZWluZyBVc2VkIHRvIFRyYWluIEFJXCIuIFdpcmVkLiBJU1NOwqAxMDU5LTEwMjguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMjYgQXByaWwgMjAyNC5cbl4gUmVpc25lciAoMjAyMykuXG5eIEFsdGVyICYgSGFycmlzICgyMDIzKS5cbl4gXCJHZXR0aW5nIHRoZSBJbm5vdmF0aW9uIEVjb3N5c3RlbSBSZWFkeSBmb3IgQUkuIEFuIElQIHBvbGljeSB0b29sa2l0XCIgKFBERikuIFdJUE8uXG5eIEhhbW1vbmQsIEdlb3JnZSAoMjcgRGVjZW1iZXIgMjAyMykuIFwiQmlnIFRlY2ggaXMgc3BlbmRpbmcgbW9yZSB0aGFuIFZDIGZpcm1zIG9uIEFJIHN0YXJ0dXBzXCIuIEFycyBUZWNobmljYS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTAgSmFudWFyeSAyMDI0LlxuXiBXb25nLCBNYXR0ZW8gKDI0IE9jdG9iZXIgMjAyMykuIFwiVGhlIEZ1dHVyZSBvZiBBSSBJcyBHT01BXCIuIFRoZSBBdGxhbnRpYy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBKYW51YXJ5IDIwMjQuXG5eIFwiQmlnIHRlY2ggYW5kIHRoZSBwdXJzdWl0IG9mIEFJIGRvbWluYW5jZVwiLiBUaGUgRWNvbm9taXN0LiAyNiBNYXJjaCAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOSBEZWNlbWJlciAyMDIzLlxuXiBGdW5nLCBCcmlhbiAoMTkgRGVjZW1iZXIgMjAyMykuIFwiV2hlcmUgdGhlIGJhdHRsZSB0byBkb21pbmF0ZSBBSSBtYXkgYmUgd29uXCIuIENOTiBCdXNpbmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgSmFudWFyeSAyMDI0LlxuXiBNZXR6LCBDYWRlICg1IEp1bHkgMjAyMykuIFwiSW4gdGhlIEFnZSBvZiBBLkkuLCBUZWNoJ3MgTGl0dGxlIEd1eXMgTmVlZCBCaWcgRnJpZW5kc1wiLiBUaGUgTmV3IFlvcmsgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggSnVseSAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFwiRWxlY3RyaWNpdHkgMjAyNCDigJMgQW5hbHlzaXNcIi4gSUVBLiAyNCBKYW51YXJ5IDIwMjQuIFJldHJpZXZlZCAxMyBKdWx5IDIwMjQuXG5eIENhbHZlcnQsIEJyaWFuICgyOCBNYXJjaCAyMDI0KS4gXCJBSSBhbHJlYWR5IHVzZXMgYXMgbXVjaCBlbmVyZ3kgYXMgYSBzbWFsbCBjb3VudHJ5LiBJdCdzIG9ubHkgdGhlIGJlZ2lubmluZ1wiLiBWb3guIE5ldyBZb3JrLCBOZXcgWW9yay4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMyBKdWx5IDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gSGFscGVyLCBFdmFuOyBPJ0Rvbm92YW4sIENhcm9saW5lICgyMSBKdW5lIDIwMjQpLiBcIkFJIGlzIGV4aGF1c3RpbmcgdGhlIHBvd2VyIGdyaWQuIFRlY2ggZmlybXMgYXJlIHNlZWtpbmcgYSBtaXJhY2xlIHNvbHV0aW9uXCIuIFdhc2hpbmd0b24gUG9zdC5cbl4gRGF2ZW5wb3J0LCBDYXJseS4gXCJBSSBEYXRhIENlbnRlcnMgYW5kIHRoZSBDb21pbmcgWVMgUG93ZXIgRGVtYW5kIFN1cmdlXCIgKFBERikuIEdvbGRtYW4gU2FjaHMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIChQREYpIG9uIDI2IEp1bHkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBSeWFuLCBDYXJvbCAoMTIgQXByaWwgMjAyNCkuIFwiRW5lcmd5LUd1enpsaW5nIEFJIElzIEFsc28gdGhlIEZ1dHVyZSBvZiBFbmVyZ3kgU2F2aW5nc1wiLiBXYWxsIFN0cmVldCBKb3VybmFsLiBEb3cgSm9uZXMuXG5eIEhpbGxlciwgSmVubmlmZXIgKDEgSnVseSAyMDI0KS4gXCJUZWNoIEluZHVzdHJ5IFdhbnRzIHRvIExvY2sgVXAgTnVjbGVhciBQb3dlciBmb3IgQUlcIi4gV2FsbCBTdHJlZXQgSm91cm5hbC4gRG93IEpvbmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBLZW5kYWxsLCBUeWxlciAoMjggU2VwdGVtYmVyIDIwMjQpLiBcIk52aWRpYSdzIEh1YW5nIFNheXMgTnVjbGVhciBQb3dlciBhbiBPcHRpb24gdG8gRmVlZCBEYXRhIENlbnRlcnNcIi4gQmxvb21iZXJnLlxuXiBIYWxwZXIsIEV2YW4gKDIwIFNlcHRlbWJlciAyMDI0KS4gXCJNaWNyb3NvZnQgZGVhbCB3b3VsZCByZW9wZW4gVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwbGFudCB0byBwb3dlciBBSVwiLiBXYXNoaW5ndG9uIFBvc3QuXG5eIEhpbGxlciwgSmVubmlmZXIgKDIwIFNlcHRlbWJlciAyMDI0KS4gXCJUaHJlZSBNaWxlIElzbGFuZCdzIE51Y2xlYXIgUGxhbnQgdG8gUmVvcGVuLCBIZWxwIFBvd2VyIE1pY3Jvc29mdCdzIEFJIENlbnRlcnNcIi4gV2FsbCBTdHJlZXQgSm91cm5hbC4gRG93IEpvbmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBOaXZhIFlhZGF2ICgxOSBBdWd1c3QgMjAyNCkuIFwiVGFpd2FuIHRvIHN0b3AgbGFyZ2UgZGF0YSBjZW50ZXJzIGluIHRoZSBOb3J0aCwgY2l0ZXMgaW5zdWZmaWNpZW50IHBvd2VyXCIuIERhdGFjZW50ZXJEeW5hbWljcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOCBOb3ZlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBOb3ZlbWJlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgTW9jaGl6dWtpLCBUYWthc2hpOyBPZGEsIFNob2tvICgxOCBPY3RvYmVyIDIwMjQpLiBcIuOCqOODjOODk+ODh+OCo+OCouWHuuizh+OBruaXpeacrOS8gealreOAgeWOn+eZuui/keOBj+OBp++8oe+8qeODh+ODvOOCv+OCu+ODs+OCv+ODvOaWsOioreaknOiojlwiLiBCbG9vbWJlcmcgKGluIEphcGFuZXNlKS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOCBOb3ZlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBOb3ZlbWJlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgTmF1cmVlbiBTIE1hbGlrIGFuZCBXaWxsIFdhZGUgKDUgTm92ZW1iZXIgMjAyNCkuIFwiTnVjbGVhci1IdW5ncnkgQUkgQ2FtcHVzZXMgTmVlZCBOZXcgUGxhbiB0byBGaW5kIFBvd2VyIEZhc3RcIi4gQmxvb21iZXJnLlxuXiBOaWNhcyAoMjAxOCkuXG5eIFJhaW5pZSwgTGVlOyBLZWV0ZXIsIFNjb3R0OyBQZXJyaW4sIEFuZHJldyAoMjIgSnVseSAyMDE5KS4gXCJUcnVzdCBhbmQgRGlzdHJ1c3QgaW4gQW1lcmljYVwiLiBQZXcgUmVzZWFyY2ggQ2VudGVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMiBGZWJydWFyeSAyMDI0LlxuXiBXaWxsaWFtcyAoMjAyMykuXG5eIFRheWxvciAmIEhlcm4gKDIwMjMpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU2FtdWVsLCBTaWdhbCAoMTkgQXByaWwgMjAyMikuIFwiV2h5IGl0J3Mgc28gZGFtbiBoYXJkIHRvIG1ha2UgQUkgZmFpciBhbmQgdW5iaWFzZWRcIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDI0IEp1bHkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFJvc2UgKDIwMjMpLlxuXiBDTkEgKDIwMTkpLlxuXiBHb2ZmcmV5ICgyMDA4KSwgcC7CoDE3LlxuXiBCZXJkYWhsIGV0IGFsLiAoMjAyMyk7IEdvZmZyZXkgKDIwMDgsIHAuwqAxNyk7IFJvc2UgKDIwMjMpOyBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgOTk1KVxuXiBDaHJpc3RpYW4gKDIwMjApLCBwLsKgMjUuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDk5NS5cbl4gR3JhbnQgJiBIaWxsICgyMDIzKS5cbl4gTGFyc29uICYgQW5nd2luICgyMDE2KS5cbl4gQ2hyaXN0aWFuICgyMDIwKSwgcC7CoDY34oCTNzAuXG5eIENocmlzdGlhbiAoMjAyMCwgcHAuwqA2N+KAkzcwKTsgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA5OTPigJM5OTQpXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqA5OTUpOyBMaXBhcnRpdG8gKDIwMTEsIHAuwqAzNik7IEdvb2RtYW4gJiBGbGF4bWFuICgyMDE3LCBwLsKgNik7IENocmlzdGlhbiAoMjAyMCwgcHAuwqAzOeKAkzQwLCA2NSlcbl4gUXVvdGVkIGluIENocmlzdGlhbiAoMjAyMCwgcC7CoDY1KS5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDk5NCk7IENocmlzdGlhbiAoMjAyMCwgcHAuwqA0MCwgODDigJM4MSlcbl4gUXVvdGVkIGluIENocmlzdGlhbiAoMjAyMCwgcC7CoDgwKVxuXiBEb2NrcmlsbCAoMjAyMikuXG5eIFNhbXBsZSAoMjAxNykuXG5eIFwiQmxhY2sgQm94IEFJXCIuIDE2IEp1bmUgMjAyMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTUgSnVuZSAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqAxMTAuXG5eIENocmlzdGlhbiAoMjAyMCksIHBwLsKgODjigJM5MS5cbl4gQ2hyaXN0aWFuICgyMDIwLCBwLsKgODMpOyBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgOTk3KVxuXiBDaHJpc3RpYW4gKDIwMjApLCBwLsKgOTEuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqA4My5cbl4gVmVybWEgKDIwMjEpLlxuXiBSb3RobWFuICgyMDIwKS5cbl4gQ2hyaXN0aWFuICgyMDIwKSwgcHAuwqAxMDXigJMxMDguXG5eIENocmlzdGlhbiAoMjAyMCksIHBwLsKgMTA44oCTMTEyLlxuXiBSb3BlaywgTHVjYXMgKDIxIE1heSAyMDI0KS4gXCJOZXcgQW50aHJvcGljIFJlc2VhcmNoIFNoZWRzIExpZ2h0IG9uIEFJJ3MgJ0JsYWNrIEJveCdcIi4gR2l6bW9kby4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCAyMyBNYXkgMjAyNC5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqA5ODkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA5ODfigJM5OTAuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg4LlxuXiBSb2JpdHpza2kgKDIwMTgpOyBTYWluYXRvICgyMDE1KVxuXiBIYXJhcmkgKDIwMTgpLlxuXiBCdWNrbGV5LCBDaHJpczsgTW96dXIsIFBhdWwgKDIyIE1heSAyMDE5KS4gXCJIb3cgQ2hpbmEgVXNlcyBIaWdoLVRlY2ggU3VydmVpbGxhbmNlIHRvIFN1YmR1ZSBNaW5vcml0aWVzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjUgTm92ZW1iZXIgMjAxOS4gUmV0cmlldmVkIDIgSnVseSAyMDE5LlxuXiBcIlNlY3VyaXR5IGxhcHNlIGV4cG9zZWQgYSBDaGluZXNlIHNtYXJ0IGNpdHkgc3VydmVpbGxhbmNlIHN5c3RlbVwiLiAzIE1heSAyMDE5LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IE1hcmNoIDIwMjEuIFJldHJpZXZlZCAxNCBTZXB0ZW1iZXIgMjAyMC5cbl4gVXJiaW5hIGV0IGFsLiAoMjAyMikuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBFLiBNY0dhdWdoZXksICdXaWxsIFJvYm90cyBBdXRvbWF0ZSBZb3VyIEpvYiBBd2F5PyBGdWxsIEVtcGxveW1lbnQsIEJhc2ljIEluY29tZSwgYW5kIEVjb25vbWljIERlbW9jcmFjeScgKDIwMjIpLCA1MSgzKSBJbmR1c3RyaWFsIExhdyBKb3VybmFsIDUxMeKAkzU1OS4gQXJjaGl2ZWQgMjcgTWF5IDIwMjMgYXQgdGhlIFdheWJhY2sgTWFjaGluZS5cbl4gRm9yZCAmIENvbHZpbiAoMjAxNSk7TWNHYXVnaGV5ICgyMDIyKVxuXiBJR00gQ2hpY2FnbyAoMjAxNykuXG5eIEFybnR6LCBHcmVnb3J5ICYgWmllcmFobiAoMjAxNiksIHAuwqAzMy5cbl4gTG9ociAoMjAxNyk7IEZyZXkgJiBPc2Jvcm5lICgyMDE3KTsgQXJudHosIEdyZWdvcnkgJiBaaWVyYWhuICgyMDE2LCBwLsKgMzMpXG5eIFpob3UsIFZpb2xhICgxMSBBcHJpbCAyMDIzKS4gXCJBSSBpcyBhbHJlYWR5IHRha2luZyB2aWRlbyBnYW1lIGlsbHVzdHJhdG9ycycgam9icyBpbiBDaGluYVwiLiBSZXN0IG9mIFdvcmxkLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMSBGZWJydWFyeSAyMDI0LiBSZXRyaWV2ZWQgMTcgQXVndXN0IDIwMjMuXG5eIENhcnRlciwgSnVzdGluICgxMSBBcHJpbCAyMDIzKS4gXCJDaGluYSdzIGdhbWUgYXJ0IGluZHVzdHJ5IHJlcG9ydGVkbHkgZGVjaW1hdGVkIGJ5IGdyb3dpbmcgQUkgdXNlXCIuIEdhbWUgRGV2ZWxvcGVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBBdWd1c3QgMjAyMy4gUmV0cmlldmVkIDE3IEF1Z3VzdCAyMDIzLlxuXiBNb3JnZW5zdGVybiAoMjAxNSkuXG5eIE1haGRhd2kgKDIwMTcpOyBUaG9tcHNvbiAoMjAxNClcbl4gVGFybm9mZiwgQmVuICg0IEF1Z3VzdCAyMDIzKS4gXCJMZXNzb25zIGZyb20gRWxpemFcIi4gVGhlIEd1YXJkaWFuIFdlZWtseS4gcHAuwqAzNOKAkzM5LlxuXiBDZWxsYW4tSm9uZXMgKDIwMTQpLlxuXiBSdXNzZWxsICYgTm9ydmlnIDIwMjEsIHAuwqAxMDAxLlxuXiBCb3N0cm9tICgyMDE0KS5cbl4gUnVzc2VsbCAoMjAxOSkuXG5eIEJvc3Ryb20gKDIwMTQpOyBNw7xsbGVyICYgQm9zdHJvbSAoMjAxNCk7IEJvc3Ryb20gKDIwMTUpLlxuXiBIYXJhcmkgKDIwMjMpLlxuXiBNw7xsbGVyICYgQm9zdHJvbSAoMjAxNCkuXG5eIExlYWRlcnMnIGNvbmNlcm5zIGFib3V0IHRoZSBleGlzdGVudGlhbCByaXNrcyBvZiBBSSBhcm91bmQgMjAxNTogUmF3bGluc29uICgyMDE1KSwgSG9sbGV5ICgyMDE1KSwgR2liYnMgKDIwMTQpLCBTYWluYXRvICgyMDE1KVxuXiBcIlwiR29kZmF0aGVyIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdGFsa3MgaW1wYWN0IGFuZCBwb3RlbnRpYWwgb2YgbmV3IEFJXCIuIENCUyBOZXdzLiAyNSBNYXJjaCAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOCBNYXJjaCAyMDIzLiBSZXRyaWV2ZWQgMjggTWFyY2ggMjAyMy5cbl4gUGl0dGlzLCBEb24gKDQgTWF5IDIwMjMpLiBcIkNhbmFkaWFuIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGxlYWRlciBHZW9mZnJleSBIaW50b24gcGlsZXMgb24gZmVhcnMgb2YgY29tcHV0ZXIgdGFrZW92ZXJcIi4gQ0JDLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IEp1bHkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIic1MOKAkzUwIGNoYW5jZScgdGhhdCBBSSBvdXRzbWFydHMgaHVtYW5pdHksIEdlb2ZmcmV5IEhpbnRvbiBzYXlzXCIuIEJsb29tYmVyZyBCTk4uIDE0IEp1bmUgMjAyNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSnVuZSAyMDI0LiBSZXRyaWV2ZWQgNiBKdWx5IDIwMjQuXG5eIFZhbGFuY2UgKDIwMjMpLlxuXiBUYXlsb3IsIEpvc2ggKDcgTWF5IDIwMjMpLiBcIlJpc2Ugb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgaW5ldml0YWJsZSBidXQgc2hvdWxkIG5vdCBiZSBmZWFyZWQsICdmYXRoZXIgb2YgQUknIHNheXNcIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMyBPY3RvYmVyIDIwMjMuIFJldHJpZXZlZCAyNiBNYXkgMjAyMy5cbl4gQ29sdG9uLCBFbW1hICg3IE1heSAyMDIzKS4gXCInRmF0aGVyIG9mIEFJJyBzYXlzIHRlY2ggZmVhcnMgbWlzcGxhY2VkOiAnWW91IGNhbm5vdCBzdG9wIGl0J1wiLiBGb3ggTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgTWF5IDIwMjMuIFJldHJpZXZlZCAyNiBNYXkgMjAyMy5cbl4gSm9uZXMsIEhlc3NpZSAoMjMgTWF5IDIwMjMpLiBcIkp1ZXJnZW4gU2NobWlkaHViZXIsIFJlbm93bmVkICdGYXRoZXIgT2YgTW9kZXJuIEFJLCcgU2F5cyBIaXMgTGlmZSdzIFdvcmsgV29uJ3QgTGVhZCBUbyBEeXN0b3BpYVwiLiBGb3JiZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IE1heSAyMDIzLiBSZXRyaWV2ZWQgMjYgTWF5IDIwMjMuXG5eIE1jTW9ycm93LCBSeWFuICgxOSBEZWNlbWJlciAyMDIzKS4gXCJBbmRyZXcgTmc6ICdEbyB3ZSB0aGluayB0aGUgd29ybGQgaXMgYmV0dGVyIG9mZiB3aXRoIG1vcmUgb3IgbGVzcyBpbnRlbGxpZ2VuY2U/J1wiLiBGaW5hbmNpYWwgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IEphbnVhcnkgMjAyNC4gUmV0cmlldmVkIDMwIERlY2VtYmVyIDIwMjMuXG5eIExldnksIFN0ZXZlbiAoMjIgRGVjZW1iZXIgMjAyMykuIFwiSG93IE5vdCB0byBCZSBTdHVwaWQgQWJvdXQgQUksIFdpdGggWWFubiBMZUN1blwiLiBXaXJlZC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjggRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDMwIERlY2VtYmVyIDIwMjMuXG5eIEFyZ3VtZW50cyB0aGF0IEFJIGlzIG5vdCBhbiBpbW1pbmVudCByaXNrOiBCcm9va3MgKDIwMTQpLCBHZWlzdCAoMjAxNSksIE1hZHJpZ2FsICgyMDE1KSwgTGVlICgyMDE0KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgQ2hyaXN0aWFuICgyMDIwKSwgcHAuwqA2NywgNzMuXG5eIFl1ZGtvd3NreSAoMjAwOCkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBBbmRlcnNvbiAmIEFuZGVyc29uICgyMDExKS5cbl4gQUFBSSAoMjAxNCkuXG5eIFdhbGxhY2ggKDIwMTApLlxuXiBSdXNzZWxsICgyMDE5KSwgcC7CoDE3My5cbl4gU3Rld2FydCwgQXNobGV5OyBNZWx0b24sIE1vbmljYS4gXCJIdWdnaW5nIEZhY2UgQ0VPIHNheXMgaGUncyBmb2N1c2VkIG9uIGJ1aWxkaW5nIGEgJ3N1c3RhaW5hYmxlIG1vZGVsJyBmb3IgdGhlICQ0LjUgYmlsbGlvbiBvcGVuLXNvdXJjZS1BSSBzdGFydHVwXCIuIEJ1c2luZXNzIEluc2lkZXIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMTQgQXByaWwgMjAyNC5cbl4gV2lnZ2VycywgS3lsZSAoOSBBcHJpbCAyMDI0KS4gXCJHb29nbGUgb3BlbiBzb3VyY2VzIHRvb2xzIHRvIHN1cHBvcnQgQUkgbW9kZWwgZGV2ZWxvcG1lbnRcIi4gVGVjaENydW5jaC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTAgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCAxNCBBcHJpbCAyMDI0LlxuXiBIZWF2ZW4sIFdpbGwgRG91Z2xhcyAoMTIgTWF5IDIwMjMpLiBcIlRoZSBvcGVuLXNvdXJjZSBBSSBib29tIGlzIGJ1aWx0IG9uIEJpZyBUZWNoJ3MgaGFuZG91dHMuIEhvdyBsb25nIHdpbGwgaXQgbGFzdD9cIi4gTUlUIFRlY2hub2xvZ3kgUmV2aWV3LiBSZXRyaWV2ZWQgMTQgQXByaWwgMjAyNC5cbl4gQnJvZHNreSwgU2FzY2hhICgxOSBEZWNlbWJlciAyMDIzKS4gXCJNaXN0cmFsIEFJJ3MgTmV3IExhbmd1YWdlIE1vZGVsIEFpbXMgZm9yIE9wZW4gU291cmNlIFN1cHJlbWFjeVwiLiBBSSBCdXNpbmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBFZHdhcmRzLCBCZW5qICgyMiBGZWJydWFyeSAyMDI0KS4gXCJTdGFiaWxpdHkgYW5ub3VuY2VzIFN0YWJsZSBEaWZmdXNpb24gMywgYSBuZXh0LWdlbiBBSSBpbWFnZSBnZW5lcmF0b3JcIi4gQXJzIFRlY2huaWNhLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IEFwcmlsIDIwMjQuXG5eIE1hcnNoYWxsLCBNYXR0ICgyOSBKYW51YXJ5IDIwMjQpLiBcIkhvdyBlbnRlcnByaXNlcyBhcmUgdXNpbmcgb3BlbiBzb3VyY2UgTExNczogMTYgZXhhbXBsZXNcIi4gVmVudHVyZUJlYXQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFBpcGVyLCBLZWxzZXkgKDIgRmVicnVhcnkgMjAyNCkuIFwiU2hvdWxkIHdlIG1ha2Ugb3VyIG1vc3QgcG93ZXJmdWwgQUkgbW9kZWxzIG9wZW4gc291cmNlIHRvIGFsbD9cIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IEFwcmlsIDIwMjQuXG5eIEFsYW4gVHVyaW5nIEluc3RpdHV0ZSAoMjAxOSkuIFwiVW5kZXJzdGFuZGluZyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBldGhpY3MgYW5kIHNhZmV0eVwiIChQREYpLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBBbGFuIFR1cmluZyBJbnN0aXR1dGUgKDIwMjMpLiBcIkFJIEV0aGljcyBhbmQgR292ZXJuYW5jZSBpbiBQcmFjdGljZVwiIChQREYpLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBGbG9yaWRpLCBMdWNpYW5vOyBDb3dscywgSm9zaCAoMjMgSnVuZSAyMDE5KS4gXCJBIFVuaWZpZWQgRnJhbWV3b3JrIG9mIEZpdmUgUHJpbmNpcGxlcyBmb3IgQUkgaW4gU29jaWV0eVwiLiBIYXJ2YXJkIERhdGEgU2NpZW5jZSBSZXZpZXcuIDEgKDEpLiBkb2k6MTAuMTE2Mi85OTYwOGY5Mi44Y2Q1NTBkMS4gUzJDSUTCoDE5ODc3NTcxMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNyBBdWd1c3QgMjAxOS4gUmV0cmlldmVkIDUgRGVjZW1iZXIgMjAyMy5cbl4gQnVydWssIEJhbnU7IEVrbWVrY2ksIFBlcmloYW4gRWxpZjsgQXJkYSwgQmVybmEgKDEgU2VwdGVtYmVyIDIwMjApLiBcIkEgY3JpdGljYWwgcGVyc3BlY3RpdmUgb24gZ3VpZGVsaW5lcyBmb3IgcmVzcG9uc2libGUgYW5kIHRydXN0d29ydGh5IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIuIE1lZGljaW5lLCBIZWFsdGggQ2FyZSBhbmQgUGhpbG9zb3BoeS4gMjMgKDMpOiAzODfigJMzOTkuIGRvaToxMC4xMDA3L3MxMTAxOS0wMjAtMDk5NDgtMS4gSVNTTsKgMTU3Mi04NjMzLiBQTUlEwqAzMjIzNjc5NC4gUzJDSUTCoDIxNDc2NjgwMC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gS2FtaWxhLCBNYW5vaiBLdW1hcjsgSmFzcm90aWEsIFNhaGlsIFNpbmdoICgxIEphbnVhcnkgMjAyMykuIFwiRXRoaWNhbCBpc3N1ZXMgaW4gdGhlIGRldmVsb3BtZW50IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOiByZWNvZ25pemluZyB0aGUgcmlza3NcIi4gSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIEV0aGljcyBhbmQgU3lzdGVtcy4gYWhlYWQtb2YtcHJpbnQgKGFoZWFkLW9mLXByaW50KS4gZG9pOjEwLjExMDgvSUpPRVMtMDUtMjAyMy0wMTA3LiBJU1NOwqAyNTE0LTkzNjkuIFMyQ0lEwqAyNTk2MTQxMjQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFwiQUkgU2FmZXR5IEluc3RpdHV0ZSByZWxlYXNlcyBuZXcgQUkgc2FmZXR5IGV2YWx1YXRpb25zIHBsYXRmb3JtXCIuIFVLIEdvdmVybm1lbnQuIDEwIE1heSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IE1heSAyMDI0LlxuXiBSZWd1bGF0aW9uIG9mIEFJIHRvIG1pdGlnYXRlIHJpc2tzOiBCZXJyeWhpbGwgZXQgYWwuICgyMDE5KSwgQmFyZmllbGQgJiBQYWdhbGxvICgyMDE4KSwgSXBob2ZlbiAmIEtyaXRpa29zICgyMDE5KSwgV2lydHosIFdleWVyZXIgJiBHZXllciAoMjAxOCksIEJ1aXRlbiAoMjAxOSlcbl4gTGF3IExpYnJhcnkgb2YgQ29uZ3Jlc3MgKFUuUy4pLiBHbG9iYWwgTGVnYWwgUmVzZWFyY2ggRGlyZWN0b3JhdGUgKDIwMTkpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgVmluY2VudCAoMjAyMykuXG5eIFN0YW5mb3JkIFVuaXZlcnNpdHkgKDIwMjMpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBkIFVORVNDTyAoMjAyMSkuXG5eIEtpc3NpbmdlciAoMjAyMSkuXG5eIEFsdG1hbiwgQnJvY2ttYW4gJiBTdXRza2V2ZXIgKDIwMjMpLlxuXiBWT0EgTmV3cyAoMjUgT2N0b2JlciAyMDIzKS4gXCJVTiBBbm5vdW5jZXMgQWR2aXNvcnkgQm9keSBvbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkNvdW5jaWwgb2YgRXVyb3BlIG9wZW5zIGZpcnN0IGV2ZXIgZ2xvYmFsIHRyZWF0eSBvbiBBSSBmb3Igc2lnbmF0dXJlXCIuIENvdW5jaWwgb2YgRXVyb3BlLiA1IFNlcHRlbWJlciAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDE3IFNlcHRlbWJlciAyMDI0LlxuXiBFZHdhcmRzICgyMDIzKS5cbl4gS2FzcGVyb3dpY3ogKDIwMjMpLlxuXiBGb3ggTmV3cyAoMjAyMykuXG5eIE1pbG1vLCBEYW4gKDMgTm92ZW1iZXIgMjAyMykuIFwiSG9wZSBvciBIb3Jyb3I/IFRoZSBncmVhdCBBSSBkZWJhdGUgZGl2aWRpbmcgaXRzIHBpb25lZXJzXCIuIFRoZSBHdWFyZGlhbiBXZWVrbHkuIHBwLsKgMTDigJMxMi5cbl4gXCJUaGUgQmxldGNobGV5IERlY2xhcmF0aW9uIGJ5IENvdW50cmllcyBBdHRlbmRpbmcgdGhlIEFJIFNhZmV0eSBTdW1taXQsIDHigJMyIE5vdmVtYmVyIDIwMjNcIi4gR09WLlVLLiAxIE5vdmVtYmVyIDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDIgTm92ZW1iZXIgMjAyMy5cbl4gXCJDb3VudHJpZXMgYWdyZWUgdG8gc2FmZSBhbmQgcmVzcG9uc2libGUgZGV2ZWxvcG1lbnQgb2YgZnJvbnRpZXIgQUkgaW4gbGFuZG1hcmsgQmxldGNobGV5IERlY2xhcmF0aW9uXCIuIEdPVi5VSyAoUHJlc3MgcmVsZWFzZSkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDEgTm92ZW1iZXIgMjAyMy5cbl4gXCJTZWNvbmQgZ2xvYmFsIEFJIHN1bW1pdCBzZWN1cmVzIHNhZmV0eSBjb21taXRtZW50cyBmcm9tIGNvbXBhbmllc1wiLiBSZXV0ZXJzLiAyMSBNYXkgMjAyNC4gUmV0cmlldmVkIDIzIE1heSAyMDI0LlxuXiBcIkZyb250aWVyIEFJIFNhZmV0eSBDb21taXRtZW50cywgQUkgU2VvdWwgU3VtbWl0IDIwMjRcIi4gZ292LnVrLiAyMSBNYXkgMjAyNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjMgTWF5IDIwMjQuIFJldHJpZXZlZCAyMyBNYXkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFJ1c3NlbGwgJiBOb3J2aWcgMjAyMSwgcC7CoDkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIENvcGVsYW5kLCBKLiwgZWQuICgyMDA0KS4gVGhlIEVzc2VudGlhbCBUdXJpbmc6IHRoZSBpZGVhcyB0aGF0IGdhdmUgYmlydGggdG8gdGhlIGNvbXB1dGVyIGFnZS4gT3hmb3JkLCBFbmdsYW5kOiBDbGFyZW5kb24gUHJlc3MuIElTQk7CoDAtMTk4Mi01MDc5LTcuXG5eIFwiR29vZ2xlIGJvb2tzIG5ncmFtXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIEFJJ3MgaW1tZWRpYXRlIHByZWN1cnNvcnM6IE1jQ29yZHVjayAoMjAwNCwgcHAuwqA1MeKAkzEwNyksIENyZXZpZXIgKDE5OTMsIHBwLsKgMjfigJMzMiksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgOOKAkzE3KSwgTW9yYXZlYyAoMTk4OCwgcC7CoDMpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBUdXJpbmcncyBvcmlnaW5hbCBwdWJsaWNhdGlvbiBvZiB0aGUgVHVyaW5nIHRlc3QgaW4gXCJDb21wdXRpbmcgbWFjaGluZXJ5IGFuZCBpbnRlbGxpZ2VuY2VcIjogVHVyaW5nICgxOTUwKSBIaXN0b3JpY2FsIGluZmx1ZW5jZSBhbmQgcGhpbG9zb3BoaWNhbCBpbXBsaWNhdGlvbnM6IEhhdWdlbGFuZCAoMTk4NSwgcHAuwqA24oCTOSksIENyZXZpZXIgKDE5OTMsIHAuwqAyNCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA3MOKAkzcxKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqAyLCA5ODQpXG5eIENyZXZpZXIgKDE5OTMpLCBwcC7CoDQ34oCTNDkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMDMpLCBwLsKgMTcuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMDMpLCBwLsKgMTguXG5eIE5ld3F1aXN0ICgxOTk0KSwgcHAuwqA4NuKAkzg2LlxuXiBTaW1vbiAoMTk2NSwgcC7CoDk2KSBxdW90ZWQgaW4gQ3JldmllciAoMTk5MywgcC7CoDEwOSlcbl4gTWluc2t5ICgxOTY3LCBwLsKgMikgcXVvdGVkIGluIENyZXZpZXIgKDE5OTMsIHAuwqAxMDkpXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgMjEuXG5eIExpZ2h0aGlsbCAoMTk3MykuXG5eIE5SQyAxOTk5LCBwcC7CoDIxMuKAkzIxMy5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqAyMi5cbl4gRXhwZXJ0IHN5c3RlbXM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjMsIDI5MiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDIyN+KAkzMzMSksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE3LjQpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgMzI34oCTMzM1LCA0MzTigJM0MzUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDE0NeKAkzE2MiwgMTk34oCTMjAzKSwgTmV3cXVpc3QgKDE5OTQsIHBwLsKgMTU14oCTMTgzKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI0LlxuXiBOaWxzc29uICgxOTk4KSwgcC7CoDcuXG5eIE1jQ29yZHVjayAoMjAwNCksIHBwLsKgNDU04oCTNDYyLlxuXiBNb3JhdmVjICgxOTg4KS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJyb29rcyAoMTk5MCkuXG5eIERldmVsb3BtZW50YWwgcm9ib3RpY3M6IFdlbmcgZXQgYWwuICgyMDAxKSwgTHVuZ2FyZWxsYSBldCBhbC4gKDIwMDMpLCBBc2FkYSBldCBhbC4gKDIwMDkpLCBPdWRleWVyICgyMDEwKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI1LlxuXiBDcmV2aWVyICgxOTkzLCBwcC7CoDIxNOKAkzIxNSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjQsIDI2KVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI2LlxuXiBGb3JtYWwgYW5kIG5hcnJvdyBtZXRob2RzIGFkb3B0ZWQgaW4gdGhlIDE5OTBzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDI04oCTMjYpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgNDg24oCTNDg3KVxuXiBBSSB3aWRlbHkgdXNlZCBpbiB0aGUgbGF0ZSAxOTkwczogS3VyendlaWwgKDIwMDUsIHAuwqAyNjUpLCBOUkMgKDE5OTksIHBwLsKgMjE24oCTMjIyKSwgTmV3cXVpc3QgKDE5OTQsIHBwLsKgMTg54oCTMjAxKVxuXiBXb25nICgyMDIzKS5cbl4gTW9vcmUncyBMYXcgYW5kIEFJOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDE0LCAyNylcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgQ2xhcmsgKDIwMTViKS5cbl4gQmlnIGRhdGE6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNilcbl4gU2FnYXIsIFJhbSAoMyBKdW5lIDIwMjApLiBcIk9wZW5BSSBSZWxlYXNlcyBHUFQtMywgVGhlIExhcmdlc3QgTW9kZWwgU28gRmFyXCIuIEFuYWx5dGljcyBJbmRpYSBNYWdhemluZS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBBdWd1c3QgMjAyMC4gUmV0cmlldmVkIDE1IE1hcmNoIDIwMjMuXG5eIE1pbG1vLCBEYW4gKDIgRmVicnVhcnkgMjAyMykuIFwiQ2hhdEdQVCByZWFjaGVzIDEwMCBtaWxsaW9uIHVzZXJzIHR3byBtb250aHMgYWZ0ZXIgbGF1bmNoXCIuIFRoZSBHdWFyZGlhbi4gSVNTTsKgMDI2MS0zMDc3LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzIEZlYnJ1YXJ5IDIwMjMuIFJldHJpZXZlZCAzMSBEZWNlbWJlciAyMDI0LlxuXiBHb3JpY2hhbmF6LCBUaW0gKDI5IE5vdmVtYmVyIDIwMjMpLiBcIkNoYXRHUFQgdHVybnMgMTogQUkgY2hhdGJvdCdzIHN1Y2Nlc3Mgc2F5cyBhcyBtdWNoIGFib3V0IGh1bWFucyBhcyB0ZWNobm9sb2d5XCIuIFRoZSBDb252ZXJzYXRpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMxIERlY2VtYmVyIDIwMjQuIFJldHJpZXZlZCAzMSBEZWNlbWJlciAyMDI0LlxuXiBEaUZlbGljaWFudG9uaW8gKDIwMjMpLlxuXiBHb3N3YW1pICgyMDIzKS5cbl4gXCJOZWFybHkgMSBpbiA0IG5ldyBzdGFydHVwcyBpcyBhbiBBSSBjb21wYW55XCIuIFBpdGNoQm9vay4gMjQgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDMgSmFudWFyeSAyMDI1LlxuXiBHcmF5bGluZywgQW50aG9ueTsgQmFsbCwgQnJpYW4gKDEgQXVndXN0IDIwMjQpLiBcIlBoaWxvc29waHkgaXMgY3J1Y2lhbCBpbiB0aGUgYWdlIG9mIEFJXCIuIFRoZSBDb252ZXJzYXRpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNCBPY3RvYmVyIDIwMjQuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBKYXJvdywgT3NoYW4gKDE1IEp1bmUgMjAyNCkuIFwiV2lsbCBBSSBldmVyIGJlY29tZSBjb25zY2lvdXM/IEl0IGRlcGVuZHMgb24gaG93IHlvdSB0aGluayBhYm91dCBiaW9sb2d5XCIuIFZveC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjEgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA0IE9jdG9iZXIgMjAyNC5cbl4gTWNDYXJ0aHksIEpvaG4uIFwiVGhlIFBoaWxvc29waHkgb2YgQUkgYW5kIHRoZSBBSSBvZiBQaGlsb3NvcGh5XCIuIGptYy5zdGFuZm9yZC5lZHUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIzIE9jdG9iZXIgMjAxOC4gUmV0cmlldmVkIDMgT2N0b2JlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgVHVyaW5nICgxOTUwKSwgcC7CoDEuXG5eIFR1cmluZyAoMTk1MCksIFVuZGVyIFwiVGhlIEFyZ3VtZW50IGZyb20gQ29uc2Npb3VzbmVzc1wiLlxuXiBLaXJrLUdpYW5uaW5pLCBDYW1lcm9uIERvbWVuaWNvOyBHb2xkc3RlaW4sIFNpbW9uICgxNiBPY3RvYmVyIDIwMjMpLiBcIkFJIGlzIGNsb3NlciB0aGFuIGV2ZXIgdG8gcGFzc2luZyB0aGUgVHVyaW5nIHRlc3QgZm9yICdpbnRlbGxpZ2VuY2UnLiBXaGF0IGhhcHBlbnMgd2hlbiBpdCBkb2VzP1wiLiBUaGUgQ29udmVyc2F0aW9uLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDE3IEF1Z3VzdCAyMDI0LlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDMuXG5eIE1ha2VyICgyMDA2KS5cbl4gTWNDYXJ0aHkgKDE5OTkpLlxuXiBNaW5za3kgKDE5ODYpLlxuXiBcIldoYXQgSXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKT9cIi4gR29vZ2xlIENsb3VkIFBsYXRmb3JtLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBKdWx5IDIwMjMuIFJldHJpZXZlZCAxNiBPY3RvYmVyIDIwMjMuXG5eIFwiT25lIG9mIHRoZSBCaWdnZXN0IFByb2JsZW1zIGluIFJlZ3VsYXRpbmcgQUkgSXMgQWdyZWVpbmcgb24gYSBEZWZpbml0aW9uXCIuIENhcm5lZ2llIEVuZG93bWVudCBmb3IgSW50ZXJuYXRpb25hbCBQZWFjZS4gUmV0cmlldmVkIDMxIEp1bHkgMjAyNC5cbl4gXCJBSSBvciBCUz8gSG93IHRvIHRlbGwgaWYgYSBtYXJrZXRpbmcgdG9vbCByZWFsbHkgdXNlcyBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLiBUaGUgRHJ1bS4gUmV0cmlldmVkIDMxIEp1bHkgMjAyNC5cbl4gTmlsc3NvbiAoMTk4MyksIHAuwqAxMC5cbl4gSGF1Z2VsYW5kICgxOTg1KSwgcHAuwqAxMTLigJMxMTcuXG5eIFBoeXNpY2FsIHN5bWJvbCBzeXN0ZW0gaHlwb3RoZXNpczogTmV3ZWxsICYgU2ltb24gKDE5NzYsIHAuwqAxMTYpIEhpc3RvcmljYWwgc2lnbmlmaWNhbmNlOiBNY0NvcmR1Y2sgKDIwMDQsIHAuwqAxNTMpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMTkpXG5eIE1vcmF2ZWMncyBwYXJhZG94OiBNb3JhdmVjICgxOTg4LCBwcC7CoDE14oCTMTYpLCBNaW5za3kgKDE5ODYsIHAuwqAyOSksIFBpbmtlciAoMjAwNywgcHAuwqAxOTDigJMxOTEpXG5eIERyZXlmdXMnIGNyaXRpcXVlIG9mIEFJOiBEcmV5ZnVzICgxOTcyKSwgRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpIEhpc3RvcmljYWwgc2lnbmlmaWNhbmNlIGFuZCBwaGlsb3NvcGhpY2FsIGltcGxpY2F0aW9uczogQ3JldmllciAoMTk5MywgcHAuwqAxMjDigJMxMzIpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgMjEx4oCTMjM5KSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA5ODHigJM5ODIpLCBGZWFybiAoMjAwNywgY2hwdC4gMylcbl4gQ3JldmllciAoMTk5MyksIHAuwqAxMjUuXG5eIExhbmdsZXkgKDIwMTEpLlxuXiBLYXR6ICgyMDEyKS5cbl4gTmVhdHMgdnMuIHNjcnVmZmllcywgdGhlIGhpc3RvcmljIGRlYmF0ZTogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDQyMeKAkzQyNCwgNDg24oCTNDg5KSwgQ3JldmllciAoMTk5MywgcC7CoDE2OCksIE5pbHNzb24gKDE5ODMsIHBwLsKgMTDigJMxMSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNCkgQSBjbGFzc2ljIGV4YW1wbGUgb2YgdGhlIFwic2NydWZmeVwiIGFwcHJvYWNoIHRvIGludGVsbGlnZW5jZTogTWluc2t5ICgxOTg2KSBBIG1vZGVybiBleGFtcGxlIG9mIG5lYXQgQUkgYW5kIGl0cyBhc3BpcmF0aW9ucyBpbiB0aGUgMjFzdCBjZW50dXJ5OiBEb21pbmdvcyAoMjAxNSlcbl4gUGVubmFjaGluICYgR29lcnR6ZWwgKDIwMDcpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgUm9iZXJ0cyAoMjAxNikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg2LlxuXiBDaGFsbWVycyAoMTk5NSkuXG5eIERlbm5ldHQgKDE5OTEpLlxuXiBIb3JzdCAoMjAwNSkuXG5eIFNlYXJsZSAoMTk5OSkuXG5eIFNlYXJsZSAoMTk4MCksIHAuwqAxLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDk4MTcuXG5eIFNlYXJsZSdzIENoaW5lc2Ugcm9vbSBhcmd1bWVudDogU2VhcmxlICgxOTgwKS4gU2VhcmxlJ3Mgb3JpZ2luYWwgcHJlc2VudGF0aW9uIG9mIHRoZSB0aG91Z2h0IGV4cGVyaW1lbnQuLCBTZWFybGUgKDE5OTkpLiBEaXNjdXNzaW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDk4NSksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA0NDPigJM0NDUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDI2OeKAkzI3MSlcbl4gTGVpdGgsIFNhbSAoNyBKdWx5IDIwMjIpLiBcIk5pY2sgQm9zdHJvbTogSG93IGNhbiB3ZSBiZSBjZXJ0YWluIGEgbWFjaGluZSBpc24ndCBjb25zY2lvdXM/XCIuIFRoZSBTcGVjdGF0b3IuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMjMgRmVicnVhcnkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgVGhvbXNvbiwgSm9ubnkgKDMxIE9jdG9iZXIgMjAyMikuIFwiV2h5IGRvbid0IHJvYm90cyBoYXZlIHJpZ2h0cz9cIi4gQmlnIFRoaW5rLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBLYXRlbWFuLCBCcmlhbiAoMjQgSnVseSAyMDIzKS4gXCJBSSBTaG91bGQgQmUgVGVycmlmaWVkIG9mIEh1bWFuc1wiLiBUaW1lLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFdvbmcsIEplZmYgKDEwIEp1bHkgMjAyMykuIFwiV2hhdCBsZWFkZXJzIG5lZWQgdG8ga25vdyBhYm91dCByb2JvdCByaWdodHNcIi4gRmFzdCBDb21wYW55LlxuXiBIZXJuLCBBbGV4ICgxMiBKYW51YXJ5IDIwMTcpLiBcIkdpdmUgcm9ib3RzICdwZXJzb25ob29kJyBzdGF0dXMsIEVVIGNvbW1pdHRlZSBhcmd1ZXNcIi4gVGhlIEd1YXJkaWFuLiBJU1NOwqAwMjYxLTMwNzcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMjMgRmVicnVhcnkgMjAyNC5cbl4gRG92ZXksIERhbmEgKDE0IEFwcmlsIDIwMTgpLiBcIkV4cGVydHMgRG9uJ3QgVGhpbmsgUm9ib3RzIFNob3VsZCBIYXZlIFJpZ2h0c1wiLiBOZXdzd2Vlay4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCAyMyBGZWJydWFyeSAyMDI0LlxuXiBDdWRkeSwgQWxpY2UgKDEzIEFwcmlsIDIwMTgpLiBcIlJvYm90IHJpZ2h0cyB2aW9sYXRlIGh1bWFuIHJpZ2h0cywgZXhwZXJ0cyB3YXJuIEVVXCIuIGV1cm9uZXdzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFRoZSBJbnRlbGxpZ2VuY2UgZXhwbG9zaW9uIGFuZCB0ZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDEwMDTigJMxMDA1KSwgT21vaHVuZHJvICgyMDA4KSwgS3VyendlaWwgKDIwMDUpIEkuIEouIEdvb2QncyBcImludGVsbGlnZW5jZSBleHBsb3Npb25cIjogR29vZCAoMTk2NSkgVmVybm9yIFZpbmdlJ3MgXCJzaW5ndWxhcml0eVwiOiBWaW5nZSAoMTk5Mylcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqAxMDA1LlxuXiBUcmFuc2h1bWFuaXNtOiBNb3JhdmVjICgxOTg4KSwgS3VyendlaWwgKDIwMDUpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMTAwNSlcbl4gQUkgYXMgZXZvbHV0aW9uOiBFZHdhcmQgRnJlZGtpbiBpcyBxdW90ZWQgaW4gTWNDb3JkdWNrICgyMDA0LCBwLsKgNDAxKSwgQnV0bGVyICgxODYzKSwgRHlzb24gKDE5OTgpXG5eIE1jUXVpbGxhbiwgRGFuICgxNCBKYW51YXJ5IDIwMjUpLiBcImEgZ2lmdCB0byB0aGUgZmFyIHJpZ2h0XCIuIENvbXB1dGVyV2Vla2x5LmNvbS4gUmV0cmlldmVkIDIyIEphbnVhcnkgMjAyNS5cbl4gQUkgaW4gbXl0aDogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDTigJM1KVxuXiBNY0NvcmR1Y2sgKDIwMDQpLCBwcC7CoDM0MOKAkzQwMC5cbl4gQnV0dGF6em8gKDIwMDEpLlxuXiBBbmRlcnNvbiAoMjAwOCkuXG5eIE1jQ2F1bGV5ICgyMDA3KS5cbl4gR2FsdmFuICgxOTk3KS5cbkFJIHRleHRib29rc1xuXG5UaGUgdHdvIG1vc3Qgd2lkZWx5IHVzZWQgdGV4dGJvb2tzIGluIDIwMjMgKHNlZSB0aGUgT3BlbiBTeWxsYWJ1cyk6XG5cblJ1c3NlbGwsIFN0dWFydCBKLjsgTm9ydmlnLCBQZXRlciAoMjAyMSkuIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBBIE1vZGVybiBBcHByb2FjaCAoNHRowqBlZC4pLiBIb2Jva2VuOiBQZWFyc29uLiBJU0JOwqA5NzgtMC0xMzQ2LTEwOTktMy4gTENDTsKgMjAxOTA0NzQuXG5SaWNoLCBFbGFpbmU7IEtuaWdodCwgS2V2aW47IE5haXIsIFNoaXZhc2hhbmthciBCICgyMDEwKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKDNyZMKgZWQuKS4gTmV3IERlbGhpOiBUYXRhIE1jR3JhdyBIaWxsIEluZGlhLiBJU0JOwqA5NzgtMC0wNzAwLTg3NzAtNS5cblxuVGhlIGZvdXIgbW9zdCB3aWRlbHkgdXNlZCBBSSB0ZXh0Ym9va3MgaW4gMjAwODpcblxuTHVnZXIsIEdlb3JnZTsgU3R1YmJsZWZpZWxkLCBXaWxsaWFtICgyMDA0KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFN0cnVjdHVyZXMgYW5kIFN0cmF0ZWdpZXMgZm9yIENvbXBsZXggUHJvYmxlbSBTb2x2aW5nICg1dGjCoGVkLikuIEJlbmphbWluL0N1bW1pbmdzLiBJU0JOwqA5NzgtMC04MDUzLTQ3ODAtNy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDIwLiBSZXRyaWV2ZWQgMTcgRGVjZW1iZXIgMjAxOS5cbk5pbHNzb24sIE5pbHMgKDE5OTgpLiBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogQSBOZXcgU3ludGhlc2lzLiBNb3JnYW4gS2F1Zm1hbm4uIElTQk7CoDk3OC0xLTU1ODYtMDQ2Ny00LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuUnVzc2VsbCwgU3R1YXJ0IEouOyBOb3J2aWcsIFBldGVyICgyMDAzKSwgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTW9kZXJuIEFwcHJvYWNoICgybmTCoGVkLiksIFVwcGVyIFNhZGRsZSBSaXZlciwgTmV3IEplcnNleTogUHJlbnRpY2UgSGFsbCwgSVNCTsKgMC0xMy03OTAzOTUtMi5cblBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuOyBHb2ViZWwsIFJhbmR5ICgxOTk4KS4gQ29tcHV0YXRpb25hbCBJbnRlbGxpZ2VuY2U6IEEgTG9naWNhbCBBcHByb2FjaC4gTmV3IFlvcms6IE94Zm9yZCBVbml2ZXJzaXR5IFByZXNzLiBJU0JOwqA5NzgtMC0xOTUxLTAyNzAtMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDIwLiBSZXRyaWV2ZWQgMjIgQXVndXN0IDIwMjAuIExhdGVyIGVkaXRpb246IFBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuICgyMDE3KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEZvdW5kYXRpb25zIG9mIENvbXB1dGF0aW9uYWwgQWdlbnRzICgybmTCoGVkLikuIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLiBJU0JOwqA5NzgtMS0xMDcxLTk1MzktNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNyBEZWNlbWJlciAyMDE3LiBSZXRyaWV2ZWQgNiBEZWNlbWJlciAyMDE3LlxuXG5PdGhlciB0ZXh0Ym9va3M6XG5cbkVydGVsLCBXb2xmZ2FuZyAoMjAxNykuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoMm5kwqBlZC4pLiBTcHJpbmdlci4gSVNCTsKgOTc4LTMtMzE5NS04NDg2LTcuXG5DaWFyYW1lbGxhLCBBbGJlcnRvOyBDaWFyYW1lbGxhLCBNYXJjbyAoMjAyNCkuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogZnJvbSBkYXRhIGFuYWx5c2lzIHRvIGdlbmVyYXRpdmUgQUkgKDFzdMKgZWQuKS4gSW50ZWxsaXNlbWFudGljIEVkaXRpb25zLiBJU0JOwqA5NzgtOC04OTQ3LTg3NjAtMy5cbkhpc3Rvcnkgb2YgQUlcbkNyZXZpZXIsIERhbmllbCAoMTk5MykuIEFJOiBUaGUgVHVtdWx0dW91cyBTZWFyY2ggZm9yIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlLiBOZXcgWW9yaywgTlk6IEJhc2ljQm9va3MuIElTQk7CoDAtNDY1LTAyOTk3LTMuXG5NY0NvcmR1Y2ssIFBhbWVsYSAoMjAwNCksIE1hY2hpbmVzIFdobyBUaGluayAoMm5kwqBlZC4pLCBOYXRpY2ssIE1hc3NhY2h1c2V0dHM6IEEuIEsuIFBldGVycywgSVNCTsKgMS01Njg4LTEyMDUtMVxuTmV3cXVpc3QsIEguIFAuICgxOTk0KS4gVGhlIEJyYWluIE1ha2VyczogR2VuaXVzLCBFZ28sIEFuZCBHcmVlZCBJbiBUaGUgUXVlc3QgRm9yIE1hY2hpbmVzIFRoYXQgVGhpbmsuIE5ldyBZb3JrOiBNYWNtaWxsYW4vU0FNUy4gSVNCTsKgOTc4LTAtNjcyMy0wNDEyLTUuXG5IYXJtb24sIFBhdWw7IFNhd3llciwgQnJpYW4gKDE5OTApLiBDcmVhdGluZyBFeHBlcnQgU3lzdGVtcyBmb3IgQnVzaW5lc3MgYW5kIEluZHVzdHJ5LiBOZXcgWW9yazogSm9obiBXaWxleSAmIFNvbnMuIElTQk7CoDA0NzE2MTQ5NjMuXG5PdGhlciBzb3VyY2VzXG5BSSAmIE1MIGluIEZ1c2lvblxuQUkgJiBNTCBpbiBGdXNpb24sIHZpZGVvIGxlY3R1cmUgQXJjaGl2ZWQgMiBKdWx5IDIwMjMgYXQgdGhlIFdheWJhY2sgTWFjaGluZVxuQWx0ZXIsIEFsZXhhbmRyYTsgSGFycmlzLCBFbGl6YWJldGggQS4gKDIwIFNlcHRlbWJlciAyMDIzKSwgXCJGcmFuemVuLCBHcmlzaGFtIGFuZCBPdGhlciBQcm9taW5lbnQgQXV0aG9ycyBTdWUgT3BlbkFJXCIsIFRoZSBOZXcgWW9yayBUaW1lcywgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgU2VwdGVtYmVyIDIwMjQsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuQWx0bWFuLCBTYW07IEJyb2NrbWFuLCBHcmVnOyBTdXRza2V2ZXIsIElseWEgKDIyIE1heSAyMDIzKS4gXCJHb3Zlcm5hbmNlIG9mIFN1cGVyaW50ZWxsaWdlbmNlXCIuIG9wZW5haS5jb20uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI3IE1heSAyMDIzLiBSZXRyaWV2ZWQgMjcgTWF5IDIwMjMuXG5BbmRlcnNvbiwgU3VzYW4gTGVpZ2ggKDIwMDgpLiBcIkFzaW1vdidzIFwidGhyZWUgbGF3cyBvZiByb2JvdGljc1wiIGFuZCBtYWNoaW5lIG1ldGFldGhpY3NcIi4gQUkgJiBTb2NpZXR5LiAyMiAoNCk6IDQ3N+KAkzQ5My4gZG9pOjEwLjEwMDcvczAwMTQ2LTAwNy0wMDk0LTUuIFMyQ0lEwqAxODA5NDU5LlxuQW5kZXJzb24sIE1pY2hhZWw7IEFuZGVyc29uLCBTdXNhbiBMZWlnaCAoMjAxMSkuIE1hY2hpbmUgRXRoaWNzLiBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcy5cbkFybnR6LCBNZWxhbmllOyBHcmVnb3J5LCBUZXJyeTsgWmllcmFobiwgVWxyaWNoICgyMDE2KSwgXCJUaGUgcmlzayBvZiBhdXRvbWF0aW9uIGZvciBqb2JzIGluIE9FQ0QgY291bnRyaWVzOiBBIGNvbXBhcmF0aXZlIGFuYWx5c2lzXCIsIE9FQ0QgU29jaWFsLCBFbXBsb3ltZW50LCBhbmQgTWlncmF0aW9uIFdvcmtpbmcgUGFwZXJzIDE4OVxuQXNhZGEsIE0uOyBIb3NvZGEsIEsuOyBLdW5peW9zaGksIFkuOyBJc2hpZ3VybywgSC47IEludWksIFQuOyBZb3NoaWthd2EsIFkuOyBPZ2lubywgTS47IFlvc2hpZGEsIEMuICgyMDA5KS4gXCJDb2duaXRpdmUgZGV2ZWxvcG1lbnRhbCByb2JvdGljczogYSBzdXJ2ZXlcIi4gSUVFRSBUcmFuc2FjdGlvbnMgb24gQXV0b25vbW91cyBNZW50YWwgRGV2ZWxvcG1lbnQuIDEgKDEpOiAxMuKAkzM0LiBkb2k6MTAuMTEwOS90YW1kLjIwMDkuMjAyMTcwMi4gUzJDSUTCoDEwMTY4NzczLlxuXCJBc2sgdGhlIEFJIGV4cGVydHM6IFdoYXQncyBkcml2aW5nIHRvZGF5J3MgcHJvZ3Jlc3MgaW4gQUk/XCIuIE1jS2luc2V5ICYgQ29tcGFueS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgQXByaWwgMjAxOC4gUmV0cmlldmVkIDEzIEFwcmlsIDIwMTguXG5CYXJmaWVsZCwgV29vZHJvdzsgUGFnYWxsbywgVWdvICgyMDE4KS4gUmVzZWFyY2ggaGFuZGJvb2sgb24gdGhlIGxhdyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS4gQ2hlbHRlbmhhbSwgVUs6IEVkd2FyZCBFbGdhciBQdWJsaXNoaW5nLiBJU0JOwqA5NzgtMS03ODY0LTM5MDQtOC4gT0NMQ8KgMTAzOTQ4MDA4NS5cbkJlYWwsIEouOyBXaW5zdG9uLCBQYXRyaWNrICgyMDA5KSwgXCJUaGUgTmV3IEZyb250aWVyIG9mIEh1bWFuLUxldmVsIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIsIElFRUUgSW50ZWxsaWdlbnQgU3lzdGVtcywgdm9sLsKgMjQsIHBwLsKgMjHigJMyNCwgZG9pOjEwLjExMDkvTUlTLjIwMDkuNzUsIGhkbDoxNzIxLjEvNTIzNTcsIFMyQ0lEwqAzMjQzNzcxM1xuQmVyZGFobCwgQ2FybCBUaG9tYXM7IEJha2VyLCBMYXdyZW5jZTsgTWFubiwgU2VhbjsgT3NvYmEsIE9zb25kZTsgR2lyb3NpLCBGZWRlcmljbyAoNyBGZWJydWFyeSAyMDIzKS4gXCJTdHJhdGVnaWVzIHRvIEltcHJvdmUgdGhlIEltcGFjdCBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBvbiBIZWFsdGggRXF1aXR5OiBTY29waW5nIFJldmlld1wiLiBKTUlSIEFJLiAyOiBlNDI5MzYuIGRvaToxMC4yMTk2LzQyOTM2LiBJU1NOwqAyODE3LTE3MDUuIFBNQ8KgMTEwNDE0NTkuIFBNSUTCoDM4ODc1NTg3LiBTMkNJRMKgMjU2NjgxNDM5LlxuQmVycnloaWxsLCBKYW1pZTsgSGVhbmcsIEvDqXZpbiBLb2s7IENsb2doZXIsIFJvYjsgTWNCcmlkZSwgS2VlZ2FuICgyMDE5KS4gSGVsbG8sIFdvcmxkOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgaXRzIFVzZSBpbiB0aGUgUHVibGljIFNlY3RvciAoUERGKS4gUGFyaXM6IE9FQ0QgT2JzZXJ2YXRvcnkgb2YgUHVibGljIFNlY3RvciBJbm5vdmF0aW9uLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBEZWNlbWJlciAyMDE5LiBSZXRyaWV2ZWQgOSBBdWd1c3QgMjAyMC5cbkJlcnRpbmksIE07IERlbCBCaW1ibywgQTsgVG9ybmlhaSwgQyAoMjAwNikuIFwiQXV0b21hdGljIGFubm90YXRpb24gYW5kIHNlbWFudGljIHJldHJpZXZhbCBvZiB2aWRlbyBzZXF1ZW5jZXMgdXNpbmcgbXVsdGltZWRpYSBvbnRvbG9naWVzXCIuIE1NICcwNiBQcm9jZWVkaW5ncyBvZiB0aGUgMTR0aCBBQ00gaW50ZXJuYXRpb25hbCBjb25mZXJlbmNlIG9uIE11bHRpbWVkaWEuIDE0dGggQUNNIGludGVybmF0aW9uYWwgY29uZmVyZW5jZSBvbiBNdWx0aW1lZGlhLiBTYW50YSBCYXJiYXJhOiBBQ00uIHBwLsKgNjc54oCTNjgyLlxuQm9zdHJvbSwgTmljayAoMjAxNCkuIFN1cGVyaW50ZWxsaWdlbmNlOiBQYXRocywgRGFuZ2VycywgU3RyYXRlZ2llcy4gT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MuXG5Cb3N0cm9tLCBOaWNrICgyMDE1KS4gXCJXaGF0IGhhcHBlbnMgd2hlbiBvdXIgY29tcHV0ZXJzIGdldCBzbWFydGVyIHRoYW4gd2UgYXJlP1wiLiBURUQgKGNvbmZlcmVuY2UpLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBKdWx5IDIwMjAuIFJldHJpZXZlZCAzMCBKYW51YXJ5IDIwMjAuXG5Ccm9va3MsIFJvZG5leSAoMTAgTm92ZW1iZXIgMjAxNCkuIFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYSB0b29sLCBub3QgYSB0aHJlYXRcIi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTIgTm92ZW1iZXIgMjAxNC5cbkJyb29rcywgUm9kbmV5ICgxOTkwKS4gXCJFbGVwaGFudHMgRG9uJ3QgUGxheSBDaGVzc1wiIChQREYpLiBSb2JvdGljcyBhbmQgQXV0b25vbW91cyBTeXN0ZW1zLiA2ICgx4oCTMik6IDPigJMxNS4gQ2l0ZVNlZXJYwqAxMC4xLjEuNTg4Ljc1MzkuIGRvaToxMC4xMDE2L1MwOTIxLTg4OTAoMDUpODAwMjUtOS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gOSBBdWd1c3QgMjAwNy5cbkJ1aXRlbiwgTWlyaWFtIEMgKDIwMTkpLiBcIlRvd2FyZHMgSW50ZWxsaWdlbnQgUmVndWxhdGlvbiBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBFdXJvcGVhbiBKb3VybmFsIG9mIFJpc2sgUmVndWxhdGlvbi4gMTAgKDEpOiA0MeKAkzU5LiBkb2k6MTAuMTAxNy9lcnIuMjAxOS44LiBJU1NOwqAxODY3LTI5OVguXG5CdXNod2ljaywgU29waGllICgxNiBNYXJjaCAyMDIzKSwgXCJXaGF0IHRoZSBOZXcgR1BULTQgQUkgQ2FuIERvXCIsIFNjaWVudGlmaWMgQW1lcmljYW4sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIyIEF1Z3VzdCAyMDIzLCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcbkJ1dGxlciwgU2FtdWVsICgxMyBKdW5lIDE4NjMpLiBcIkRhcndpbiBhbW9uZyB0aGUgTWFjaGluZXNcIi4gTGV0dGVycyB0byB0aGUgRWRpdG9yLiBUaGUgUHJlc3MuIENocmlzdGNodXJjaCwgTmV3IFplYWxhbmQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IFNlcHRlbWJlciAyMDA4LiBSZXRyaWV2ZWQgMTYgT2N0b2JlciAyMDE0IOKAkyB2aWEgVmljdG9yaWEgVW5pdmVyc2l0eSBvZiBXZWxsaW5ndG9uLlxuQnV0dGF6em8sIEcuIChKdWx5IDIwMDEpLiBcIkFydGlmaWNpYWwgY29uc2Npb3VzbmVzczogVXRvcGlhIG9yIHJlYWwgcG9zc2liaWxpdHk/XCIuIENvbXB1dGVyLiAzNCAoNyk6IDI04oCTMzAuIGRvaToxMC4xMTA5LzIuOTMzNTAwLlxuQ2FtYnJpYSwgRXJpazsgV2hpdGUsIEJlYm8gKE1heSAyMDE0KS4gXCJKdW1waW5nIE5MUCBDdXJ2ZXM6IEEgUmV2aWV3IG9mIE5hdHVyYWwgTGFuZ3VhZ2UgUHJvY2Vzc2luZyBSZXNlYXJjaCBbUmV2aWV3IEFydGljbGVdXCIuIElFRUUgQ29tcHV0YXRpb25hbCBJbnRlbGxpZ2VuY2UgTWFnYXppbmUuIDkgKDIpOiA0OOKAkzU3LiBkb2k6MTAuMTEwOS9NQ0kuMjAxNC4yMzA3MjI3LiBTMkNJRMKgMjA2NDUxOTg2LlxuQ2VsbGFuLUpvbmVzLCBSb3J5ICgyIERlY2VtYmVyIDIwMTQpLiBcIlN0ZXBoZW4gSGF3a2luZyB3YXJucyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBlbmQgbWFua2luZFwiLiBCQkMgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMzAgT2N0b2JlciAyMDE1LiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDE1LlxuQ2hhbG1lcnMsIERhdmlkICgxOTk1KS4gXCJGYWNpbmcgdXAgdG8gdGhlIHByb2JsZW0gb2YgY29uc2Npb3VzbmVzc1wiLiBKb3VybmFsIG9mIENvbnNjaW91c25lc3MgU3R1ZGllcy4gMiAoMyk6IDIwMOKAkzIxOS4gQ2l0ZVNlZXJYwqAxMC4xLjEuMTAzLjgzNjIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggTWFyY2ggMjAwNS4gUmV0cmlldmVkIDExIE9jdG9iZXIgMjAxOC5cbkNoYWxsYSwgU3ViaGFzaDsgTW9yZWxhbmQsIE1hcmsgUi47IE11xaFpY2tpLCBEYXJrbzsgRXZhbnMsIFJvYmluIEouICgyMDExKS4gRnVuZGFtZW50YWxzIG9mIE9iamVjdCBUcmFja2luZy4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MuIGRvaToxMC4xMDE3L0NCTzk3ODA1MTE5NzU4MzcuIElTQk7CoDk3OC0wLTUyMTgtNzYyOC01LlxuQ2hyaXN0aWFuLCBCcmlhbiAoMjAyMCkuIFRoZSBBbGlnbm1lbnQgUHJvYmxlbTogTWFjaGluZSBsZWFybmluZyBhbmQgaHVtYW4gdmFsdWVzLiBXLiBXLiBOb3J0b24gJiBDb21wYW55LiBJU0JOwqA5NzgtMC0zOTM4LTY4MzMtMy4gT0NMQ8KgMTIzMzI2Njc1My5cbkNpcmVzYW4sIEQuOyBNZWllciwgVS47IFNjaG1pZGh1YmVyLCBKLiAoMjAxMikuIFwiTXVsdGktY29sdW1uIGRlZXAgbmV1cmFsIG5ldHdvcmtzIGZvciBpbWFnZSBjbGFzc2lmaWNhdGlvblwiLiAyMDEyIElFRUUgQ29uZmVyZW5jZSBvbiBDb21wdXRlciBWaXNpb24gYW5kIFBhdHRlcm4gUmVjb2duaXRpb24uIHBwLsKgMzY0MuKAkzM2NDkuIGFyWGl2OjEyMDIuMjc0NS4gZG9pOjEwLjExMDkvY3Zwci4yMDEyLjYyNDgxMTAuIElTQk7CoDk3OC0xLTQ2NzMtMTIyOC04LiBTMkNJRMKgMjE2MTU5Mi5cbkNsYXJrLCBKYWNrICgyMDE1YikuIFwiV2h5IDIwMTUgV2FzIGEgQnJlYWt0aHJvdWdoIFllYXIgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gQmxvb21iZXJnLmNvbS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjMgTm92ZW1iZXIgMjAxNi4gUmV0cmlldmVkIDIzIE5vdmVtYmVyIDIwMTYuXG5DTkEgKDEyIEphbnVhcnkgMjAxOSkuIFwiQ29tbWVudGFyeTogQmFkIG5ld3MuIEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIGJpYXNlZFwiLiBDTkEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEyIEphbnVhcnkgMjAxOS4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMC5cbkN5YmVua28sIEcuICgxOTg4KS4gQ29udGludW91cyB2YWx1ZWQgbmV1cmFsIG5ldHdvcmtzIHdpdGggdHdvIGhpZGRlbiBsYXllcnMgYXJlIHN1ZmZpY2llbnQgKFJlcG9ydCkuIERlcGFydG1lbnQgb2YgQ29tcHV0ZXIgU2NpZW5jZSwgVHVmdHMgVW5pdmVyc2l0eS5cbkRlbmcsIEwuOyBZdSwgRC4gKDIwMTQpLiBcIkRlZXAgTGVhcm5pbmc6IE1ldGhvZHMgYW5kIEFwcGxpY2F0aW9uc1wiIChQREYpLiBGb3VuZGF0aW9ucyBhbmQgVHJlbmRzIGluIFNpZ25hbCBQcm9jZXNzaW5nLiA3ICgz4oCTNCk6IDE5N+KAkzM4Ny4gZG9pOjEwLjE1NjEvMjAwMDAwMDAzOS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgTWFyY2ggMjAxNi4gUmV0cmlldmVkIDE4IE9jdG9iZXIgMjAxNC5cbkRlbm5ldHQsIERhbmllbCAoMTk5MSkuIENvbnNjaW91c25lc3MgRXhwbGFpbmVkLiBUaGUgUGVuZ3VpbiBQcmVzcy4gSVNCTsKgOTc4LTAtNzEzOS05MDM3LTkuXG5EaUZlbGljaWFudG9uaW8sIENoYXNlICgzIEFwcmlsIDIwMjMpLiBcIkFJIGhhcyBhbHJlYWR5IGNoYW5nZWQgdGhlIHdvcmxkLiBUaGlzIHJlcG9ydCBzaG93cyBob3dcIi4gU2FuIEZyYW5jaXNjbyBDaHJvbmljbGUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IEp1bmUgMjAyMy4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMy5cbkRpY2tzb24sIEJlbiAoMiBNYXkgMjAyMikuIFwiTWFjaGluZSBsZWFybmluZzogV2hhdCBpcyB0aGUgdHJhbnNmb3JtZXIgYXJjaGl0ZWN0dXJlP1wiLiBUZWNoVGFsa3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIyIE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAyMiBOb3ZlbWJlciAyMDIzLlxuRG9ja3JpbGwsIFBldGVyICgyNyBKdW5lIDIwMjIpLCBcIlJvYm90cyBXaXRoIEZsYXdlZCBBSSBNYWtlIFNleGlzdCBBbmQgUmFjaXN0IERlY2lzaW9ucywgRXhwZXJpbWVudCBTaG93c1wiLCBTY2llbmNlIEFsZXJ0LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNyBKdW5lIDIwMjJcbkRvbWluZ29zLCBQZWRybyAoMjAxNSkuIFRoZSBNYXN0ZXIgQWxnb3JpdGhtOiBIb3cgdGhlIFF1ZXN0IGZvciB0aGUgVWx0aW1hdGUgTGVhcm5pbmcgTWFjaGluZSBXaWxsIFJlbWFrZSBPdXIgV29ybGQuIEJhc2ljIEJvb2tzLiBJU0JOwqA5NzgtMC00NjUwLTY1NzAtNy5cbkRyZXlmdXMsIEh1YmVydCAoMTk3MikuIFdoYXQgQ29tcHV0ZXJzIENhbid0IERvLiBOZXcgWW9yazogTUlUIFByZXNzLiBJU0JOwqA5NzgtMC0wNjAxLTEwODItNi5cbkRyZXlmdXMsIEh1YmVydDsgRHJleWZ1cywgU3R1YXJ0ICgxOTg2KS4gTWluZCBvdmVyIE1hY2hpbmU6IFRoZSBQb3dlciBvZiBIdW1hbiBJbnR1aXRpb24gYW5kIEV4cGVydGlzZSBpbiB0aGUgRXJhIG9mIHRoZSBDb21wdXRlci4gT3hmb3JkOiBCbGFja3dlbGwuIElTQk7CoDk3OC0wLTAyOTAtODA2MC0zLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkR5c29uLCBHZW9yZ2UgKDE5OTgpLiBEYXJ3aW4gYW1vbmcgdGhlIE1hY2hpbmVzLiBBbGxhbiBMYW5lIFNjaWVuY2UuIElTQk7CoDk3OC0wLTczODItMDAzMC05LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkVkZWxzb24sIEVkd2FyZCAoMTk5MSkuIFRoZSBOZXJ2b3VzIFN5c3RlbS4gTmV3IFlvcms6IENoZWxzZWEgSG91c2UuIElTQk7CoDk3OC0wLTc5MTAtMDQ2NC03LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuRWR3YXJkcywgQmVuaiAoMTcgTWF5IDIwMjMpLiBcIlBvbGw6IEFJIHBvc2VzIHJpc2sgdG8gaHVtYW5pdHksIGFjY29yZGluZyB0byBtYWpvcml0eSBvZiBBbWVyaWNhbnNcIi4gQXJzIFRlY2huaWNhLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5GZWFybiwgTmljaG9sYXMgKDIwMDcpLiBUaGUgTGF0ZXN0IEFuc3dlcnMgdG8gdGhlIE9sZGVzdCBRdWVzdGlvbnM6IEEgUGhpbG9zb3BoaWNhbCBBZHZlbnR1cmUgd2l0aCB0aGUgV29ybGQncyBHcmVhdGVzdCBUaGlua2Vycy4gTmV3IFlvcms6IEdyb3ZlIFByZXNzLiBJU0JOwqA5NzgtMC04MDIxLTE4MzktNC5cbkZvcmQsIE1hcnRpbjsgQ29sdmluLCBHZW9mZiAoNiBTZXB0ZW1iZXIgMjAxNSkuIFwiV2lsbCByb2JvdHMgY3JlYXRlIG1vcmUgam9icyB0aGFuIHRoZXkgZGVzdHJveT9cIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBKdW5lIDIwMTguIFJldHJpZXZlZCAxMyBKYW51YXJ5IDIwMTguXG5Gb3ggTmV3cyAoMjAyMykuIFwiRm94IE5ld3MgUG9sbFwiIChQREYpLiBGb3ggTmV3cy4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTIgTWF5IDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5GcmV5LCBDYXJsIEJlbmVkaWt0OyBPc2Jvcm5lLCBNaWNoYWVsIEEgKDEgSmFudWFyeSAyMDE3KS4gXCJUaGUgZnV0dXJlIG9mIGVtcGxveW1lbnQ6IEhvdyBzdXNjZXB0aWJsZSBhcmUgam9icyB0byBjb21wdXRlcmlzYXRpb24/XCIuIFRlY2hub2xvZ2ljYWwgRm9yZWNhc3RpbmcgYW5kIFNvY2lhbCBDaGFuZ2UuIDExNDogMjU04oCTMjgwLiBDaXRlU2VlcljCoDEwLjEuMS4zOTUuNDE2LiBkb2k6MTAuMTAxNi9qLnRlY2hmb3JlLjIwMTYuMDguMDE5LiBJU1NOwqAwMDQwLTE2MjUuXG5cIkZyb20gbm90IHdvcmtpbmcgdG8gbmV1cmFsIG5ldHdvcmtpbmdcIi4gVGhlIEVjb25vbWlzdC4gMjAxNi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMzEgRGVjZW1iZXIgMjAxNi4gUmV0cmlldmVkIDI2IEFwcmlsIDIwMTguXG5HYWx2YW4sIEppbGwgKDEgSmFudWFyeSAxOTk3KS4gXCJFbnRlcmluZyB0aGUgUG9zdGh1bWFuIENvbGxlY3RpdmUgaW4gUGhpbGlwIEsuIERpY2sncyBcIkRvIEFuZHJvaWRzIERyZWFtIG9mIEVsZWN0cmljIFNoZWVwP1wiXCIuIFNjaWVuY2UgRmljdGlvbiBTdHVkaWVzLiAyNCAoMyk6IDQxM+KAkzQyOS4gSlNUT1LCoDQyNDA2NDQuXG5HZWlzdCwgRWR3YXJkIE1vb3JlICg5IEF1Z3VzdCAyMDE1KS4gXCJJcyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSByZWFsbHkgYW4gZXhpc3RlbnRpYWwgdGhyZWF0IHRvIGh1bWFuaXR5P1wiLiBCdWxsZXRpbiBvZiB0aGUgQXRvbWljIFNjaWVudGlzdHMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMwIE9jdG9iZXIgMjAxNS4gUmV0cmlldmVkIDMwIE9jdG9iZXIgMjAxNS5cbkdpYmJzLCBTYW11ZWwgKDI3IE9jdG9iZXIgMjAxNCkuIFwiRWxvbiBNdXNrOiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpcyBvdXIgYmlnZ2VzdCBleGlzdGVudGlhbCB0aHJlYXRcIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5Hb2ZmcmV5LCBBbmRyZXcgKDIwMDgpLiBcIkFsZ29yaXRobVwiLiBJbiBGdWxsZXIsIE1hdHRoZXcgKGVkLikuIFNvZnR3YXJlIHN0dWRpZXM6IGEgbGV4aWNvbi4gQ2FtYnJpZGdlLCBNYXNzLjogTUlUIFByZXNzLiBwcC7CoDE14oCTMjAuIElTQk7CoDk3OC0xLTQzNTYtNDc4Ny05LlxuR29sZG1hbiwgU2hhcm9uICgxNCBTZXB0ZW1iZXIgMjAyMikuIFwiMTAgeWVhcnMgbGF0ZXIsIGRlZXAgbGVhcm5pbmcgJ3Jldm9sdXRpb24nIHJhZ2VzIG9uLCBzYXkgQUkgcGlvbmVlcnMgSGludG9uLCBMZUN1biBhbmQgTGlcIi4gVmVudHVyZUJlYXQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgOCBEZWNlbWJlciAyMDIzLlxuR29vZCwgSS4gSi4gKDE5NjUpLCBTcGVjdWxhdGlvbnMgQ29uY2VybmluZyB0aGUgRmlyc3QgVWx0cmFpbnRlbGxpZ2VudCBNYWNoaW5lLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMCBKdWx5IDIwMjMsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuR29vZGZlbGxvdywgSWFuOyBCZW5naW8sIFlvc2h1YTsgQ291cnZpbGxlLCBBYXJvbiAoMjAxNiksIERlZXAgTGVhcm5pbmcsIE1JVCBQcmVzcy4sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE2IEFwcmlsIDIwMTYsIHJldHJpZXZlZCAxMiBOb3ZlbWJlciAyMDE3XG5Hb29kbWFuLCBCcnljZTsgRmxheG1hbiwgU2V0aCAoMjAxNykuIFwiRVUgcmVndWxhdGlvbnMgb24gYWxnb3JpdGhtaWMgZGVjaXNpb24tbWFraW5nIGFuZCBhICdyaWdodCB0byBleHBsYW5hdGlvbidcIi4gQUkgTWFnYXppbmUuIDM4ICgzKTogNTAuIGFyWGl2OjE2MDYuMDg4MTMuIGRvaToxMC4xNjA5L2FpbWFnLnYzOGkzLjI3NDEuIFMyQ0lEwqA3MzczOTU5LlxuR292ZXJubWVudCBBY2NvdW50YWJpbGl0eSBPZmZpY2UgKDEzIFNlcHRlbWJlciAyMDIyKS4gQ29uc3VtZXIgRGF0YTogSW5jcmVhc2luZyBVc2UgUG9zZXMgUmlza3MgdG8gUHJpdmFjeS4gZ2FvLmdvdiAoUmVwb3J0KS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbkdyYW50LCBOaWNvOyBIaWxsLCBLYXNobWlyICgyMiBNYXkgMjAyMykuIFwiR29vZ2xlJ3MgUGhvdG8gQXBwIFN0aWxsIENhbid0IEZpbmQgR29yaWxsYXMuIEFuZCBOZWl0aGVyIENhbiBBcHBsZSdzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbkdvc3dhbWksIFJvaGFuICg1IEFwcmlsIDIwMjMpLiBcIkhlcmUncyB3aGVyZSB0aGUgQS5JLiBqb2JzIGFyZVwiLiBDTkJDLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5IYXJhcmksIFl1dmFsIE5vYWggKE9jdG9iZXIgMjAxOCkuIFwiV2h5IFRlY2hub2xvZ3kgRmF2b3JzIFR5cmFubnlcIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyMS4gUmV0cmlldmVkIDIzIFNlcHRlbWJlciAyMDIxLlxuSGFyYXJpLCBZdXZhbCBOb2FoICgyMDIzKS4gXCJBSSBhbmQgdGhlIGZ1dHVyZSBvZiBodW1hbml0eVwiLiBZb3VUdWJlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuSGF1Z2VsYW5kLCBKb2huICgxOTg1KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFRoZSBWZXJ5IElkZWEuIENhbWJyaWRnZSwgTWFzcy46IE1JVCBQcmVzcy4gSVNCTsKgOTc4LTAtMjYyMC04MTUzLTUuXG5IaW50b24sIEcuOyBEZW5nLCBMLjsgWXUsIEQuOyBEYWhsLCBHLjsgTW9oYW1lZCwgQS47IEphaXRseSwgTi47IFNlbmlvciwgQS47IFZhbmhvdWNrZSwgVi47IE5ndXllbiwgUC47IFNhaW5hdGgsIFQuOyBLaW5nc2J1cnksIEIuICgyMDEyKS4gXCJEZWVwIE5ldXJhbCBOZXR3b3JrcyBmb3IgQWNvdXN0aWMgTW9kZWxpbmcgaW4gU3BlZWNoIFJlY29nbml0aW9uIOKAkyBUaGUgc2hhcmVkIHZpZXdzIG9mIGZvdXIgcmVzZWFyY2ggZ3JvdXBzXCIuIElFRUUgU2lnbmFsIFByb2Nlc3NpbmcgTWFnYXppbmUuIDI5ICg2KTogODLigJM5Ny4gQmliY29kZToyMDEySVNQTS4uLjI5Li4uODJILiBkb2k6MTAuMTEwOS9tc3AuMjAxMi4yMjA1NTk3LiBTMkNJRMKgMjA2NDg1OTQzLlxuSG9sbGV5LCBQZXRlciAoMjggSmFudWFyeSAyMDE1KS4gXCJCaWxsIEdhdGVzIG9uIGRhbmdlcnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6ICdJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHNvbWUgcGVvcGxlIGFyZSBub3QgY29uY2VybmVkJ1wiLiBUaGUgV2FzaGluZ3RvbiBQb3N0LiBJU1NOwqAwMTkwLTgyODYuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMwIE9jdG9iZXIgMjAxNS4gUmV0cmlldmVkIDMwIE9jdG9iZXIgMjAxNS5cbkhvcm5paywgS3VydDsgU3RpbmNoY29tYmUsIE1heHdlbGw7IFdoaXRlLCBIYWxiZXJ0ICgxOTg5KS4gTXVsdGlsYXllciBGZWVkZm9yd2FyZCBOZXR3b3JrcyBhcmUgVW5pdmVyc2FsIEFwcHJveGltYXRvcnMgKFBERikuIE5ldXJhbCBOZXR3b3Jrcy4gVm9sLsKgMi4gUGVyZ2Ftb24gUHJlc3MuIHBwLsKgMzU54oCTMzY2LiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMSBBcHJpbCAyMDIzLiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5Ib3JzdCwgU3RldmVuICgyMDA1KS4gXCJUaGUgQ29tcHV0YXRpb25hbCBUaGVvcnkgb2YgTWluZFwiLiBUaGUgU3RhbmZvcmQgRW5jeWNsb3BlZGlhIG9mIFBoaWxvc29waHkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgTWFyY2ggMjAxNi4gUmV0cmlldmVkIDcgTWFyY2ggMjAxNi5cbkhvd2UsIEouIChOb3ZlbWJlciAxOTk0KS4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhdCBFZGluYnVyZ2ggVW5pdmVyc2l0eTogYSBQZXJzcGVjdGl2ZVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBNYXkgMjAwNy4gUmV0cmlldmVkIDMwIEF1Z3VzdCAyMDA3LlxuSUdNIENoaWNhZ28gKDMwIEp1bmUgMjAxNykuIFwiUm9ib3RzIGFuZCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBpZ21jaGljYWdvLm9yZy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMSBNYXkgMjAxOS4gUmV0cmlldmVkIDMgSnVseSAyMDE5LlxuSXBob2ZlbiwgUm9uOyBLcml0aWtvcywgTWloYWxpcyAoMyBKYW51YXJ5IDIwMTkpLiBcIlJlZ3VsYXRpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIHJvYm90aWNzOiBldGhpY3MgYnkgZGVzaWduIGluIGEgZGlnaXRhbCBzb2NpZXR5XCIuIENvbnRlbXBvcmFyeSBTb2NpYWwgU2NpZW5jZS4gMTYgKDIpOiAxNzDigJMxODQuIGRvaToxMC4xMDgwLzIxNTgyMDQxLjIwMTguMTU2MzgwMy4gSVNTTsKgMjE1OC0yMDQxLiBTMkNJRMKgNTkyOTg1MDIuXG5Kb3JkYW4sIE0uIEkuOyBNaXRjaGVsbCwgVC4gTS4gKDE2IEp1bHkgMjAxNSkuIFwiTWFjaGluZSBsZWFybmluZzogVHJlbmRzLCBwZXJzcGVjdGl2ZXMsIGFuZCBwcm9zcGVjdHNcIi4gU2NpZW5jZS4gMzQ5ICg2MjQ1KTogMjU14oCTMjYwLiBCaWJjb2RlOjIwMTVTY2kuLi4zNDkuLjI1NUouIGRvaToxMC4xMTI2L3NjaWVuY2UuYWFhODQxNS4gUE1JRMKgMjYxODUyNDMuIFMyQ0lEwqA2NzcyMTguXG5LYWhuZW1hbiwgRGFuaWVsICgyMDExKS4gVGhpbmtpbmcsIEZhc3QgYW5kIFNsb3cuIE1hY21pbGxhbi4gSVNCTsKgOTc4LTEtNDI5OS02OTM1LTIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE1IE1hcmNoIDIwMjMuIFJldHJpZXZlZCA4IEFwcmlsIDIwMTIuXG5LYWhuZW1hbiwgRGFuaWVsOyBTbG92aWMsIEQuOyBUdmVyc2t5LCBBbW9zICgxOTgyKS4gXCJKdWRnbWVudCB1bmRlciB1bmNlcnRhaW50eTogSGV1cmlzdGljcyBhbmQgYmlhc2VzXCIuIFNjaWVuY2UuIDE4NSAoNDE1NykuIE5ldyBZb3JrOiBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzczogMTEyNOKAkzExMzEuIEJpYmNvZGU6MTk3NFNjaS4uLjE4NS4xMTI0VC4gZG9pOjEwLjExMjYvc2NpZW5jZS4xODUuNDE1Ny4xMTI0LiBJU0JOwqA5NzgtMC01MjEyLTg0MTQtMS4gUE1JRMKgMTc4MzU0NTcuIFMyQ0lEwqAxNDM0NTI5NTcuXG5LYXNwZXJvd2ljeiwgUGV0ZXIgKDEgTWF5IDIwMjMpLiBcIlJlZ3VsYXRlIEFJPyBHT1AgbXVjaCBtb3JlIHNrZXB0aWNhbCB0aGFuIERlbXMgdGhhdCBnb3Zlcm5tZW50IGNhbiBkbyBpdCByaWdodDogcG9sbFwiLiBGb3ggTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTkgSnVuZSAyMDIzLiBSZXRyaWV2ZWQgMTkgSnVuZSAyMDIzLlxuS2F0eiwgWWFyZGVuICgxIE5vdmVtYmVyIDIwMTIpLiBcIk5vYW0gQ2hvbXNreSBvbiBXaGVyZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBXZW50IFdyb25nXCIuIFRoZSBBdGxhbnRpYy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjggRmVicnVhcnkgMjAxOS4gUmV0cmlldmVkIDI2IE9jdG9iZXIgMjAxNC5cblwiS2lzbWV0XCIuIE1JVCBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBMYWJvcmF0b3J5LCBIdW1hbm9pZCBSb2JvdGljcyBHcm91cC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgT2N0b2JlciAyMDE0LiBSZXRyaWV2ZWQgMjUgT2N0b2JlciAyMDE0LlxuS2lzc2luZ2VyLCBIZW5yeSAoMSBOb3ZlbWJlciAyMDIxKS4gXCJUaGUgQ2hhbGxlbmdlIG9mIEJlaW5nIEh1bWFuIGluIHRoZSBBZ2Ugb2YgQUlcIi4gVGhlIFdhbGwgU3RyZWV0IEpvdXJuYWwuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDQgTm92ZW1iZXIgMjAyMS4gUmV0cmlldmVkIDQgTm92ZW1iZXIgMjAyMS5cbktvYmllbHVzLCBKYW1lcyAoMjcgTm92ZW1iZXIgMjAxOSkuIFwiR1BVcyBDb250aW51ZSB0byBEb21pbmF0ZSB0aGUgQUkgQWNjZWxlcmF0b3IgTWFya2V0IGZvciBOb3dcIi4gSW5mb3JtYXRpb25XZWVrLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBPY3RvYmVyIDIwMjEuIFJldHJpZXZlZCAxMSBKdW5lIDIwMjAuXG5LdXBlcm1hbiwgRy4gSi47IFJlaWNobGV5LCBSLiBNLjsgQmFpbGV5LCBULiBDLiAoMSBKdWx5IDIwMDYpLiBcIlVzaW5nIENvbW1lcmNpYWwgS25vd2xlZGdlIEJhc2VzIGZvciBDbGluaWNhbCBEZWNpc2lvbiBTdXBwb3J0OiBPcHBvcnR1bml0aWVzLCBIdXJkbGVzLCBhbmQgUmVjb21tZW5kYXRpb25zXCIuIEpvdXJuYWwgb2YgdGhlIEFtZXJpY2FuIE1lZGljYWwgSW5mb3JtYXRpY3MgQXNzb2NpYXRpb24uIDEzICg0KTogMzY54oCTMzcxLiBkb2k6MTAuMTE5Ny9qYW1pYS5NMjA1NS4gUE1DwqAxNTEzNjgxLiBQTUlEwqAxNjYyMjE2MC5cbkt1cnp3ZWlsLCBSYXkgKDIwMDUpLiBUaGUgU2luZ3VsYXJpdHkgaXMgTmVhci4gUGVuZ3VpbiBCb29rcy4gSVNCTsKgOTc4LTAtNjcwMC0zMzg0LTMuXG5MYW5nbGV5LCBQYXQgKDIwMTEpLiBcIlRoZSBjaGFuZ2luZyBzY2llbmNlIG9mIG1hY2hpbmUgbGVhcm5pbmdcIi4gTWFjaGluZSBMZWFybmluZy4gODIgKDMpOiAyNzXigJMyNzkuIGRvaToxMC4xMDA3L3MxMDk5NC0wMTEtNTI0Mi15LlxuTGFyc29uLCBKZWZmOyBBbmd3aW4sIEp1bGlhICgyMyBNYXkgMjAxNikuIFwiSG93IFdlIEFuYWx5emVkIHRoZSBDT01QQVMgUmVjaWRpdmlzbSBBbGdvcml0aG1cIi4gUHJvUHVibGljYS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjkgQXByaWwgMjAxOS4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMC5cbkxhc2tvd3NraSwgTmljb2xlIChOb3ZlbWJlciAyMDIzKS4gXCJXaGF0IGlzIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIb3cgRG9lcyBBSSBXb3JrPyBUZWNoVGFyZ2V0XCIuIEVudGVycHJpc2UgQUkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDIzLlxuTGF3IExpYnJhcnkgb2YgQ29uZ3Jlc3MgKFUuUy4pLiBHbG9iYWwgTGVnYWwgUmVzZWFyY2ggRGlyZWN0b3JhdGUsIGlzc3VpbmcgYm9keS4gKDIwMTkpLiBSZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIHNlbGVjdGVkIGp1cmlzZGljdGlvbnMuIExDQ07CoDIwMTk2NjgxNDMuIE9DTEPCoDExMTA3Mjc4MDguXG5MZWUsIFRpbW90aHkgQi4gKDIyIEF1Z3VzdCAyMDE0KS4gXCJXaWxsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGRlc3Ryb3kgaHVtYW5pdHk/IEhlcmUgYXJlIDUgcmVhc29ucyBub3QgdG8gd29ycnlcIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5MZW5hdCwgRG91Z2xhczsgR3VoYSwgUi4gVi4gKDE5ODkpLiBCdWlsZGluZyBMYXJnZSBLbm93bGVkZ2UtQmFzZWQgU3lzdGVtcy4gQWRkaXNvbi1XZXNsZXkuIElTQk7CoDk3OC0wLTIwMTUtMTc1Mi0xLlxuTGlnaHRoaWxsLCBKYW1lcyAoMTk3MykuIFwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgR2VuZXJhbCBTdXJ2ZXlcIi4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IGEgcGFwZXIgc3ltcG9zaXVtLiBTY2llbmNlIFJlc2VhcmNoIENvdW5jaWwuXG5MaXBhcnRpdG8sIEtlbm5ldGggKDYgSmFudWFyeSAyMDExKSwgVGhlIE5hcnJhdGl2ZSBhbmQgdGhlIEFsZ29yaXRobTogR2VucmVzIG9mIENyZWRpdCBSZXBvcnRpbmcgZnJvbSB0aGUgTmluZXRlZW50aCBDZW50dXJ5IHRvIFRvZGF5IChQREYpIChVbnB1Ymxpc2hlZCBtYW51c2NyaXB0KSwgZG9pOjEwLjIxMzkvc3Nybi4xNzM2MjgzLCBTMkNJRMKgMTY2NzQyOTI3LCBhcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiA5IE9jdG9iZXIgMjAyMlxuTG9ociwgU3RldmUgKDIwMTcpLiBcIlJvYm90cyBXaWxsIFRha2UgSm9icywgYnV0IE5vdCBhcyBGYXN0IGFzIFNvbWUgRmVhciwgTmV3IFJlcG9ydCBTYXlzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSmFudWFyeSAyMDE4LiBSZXRyaWV2ZWQgMTMgSmFudWFyeSAyMDE4LlxuTHVuZ2FyZWxsYSwgTS47IE1ldHRhLCBHLjsgUGZlaWZlciwgUi47IFNhbmRpbmksIEcuICgyMDAzKS4gXCJEZXZlbG9wbWVudGFsIHJvYm90aWNzOiBhIHN1cnZleVwiLiBDb25uZWN0aW9uIFNjaWVuY2UuIDE1ICg0KTogMTUx4oCTMTkwLiBDaXRlU2VlcljCoDEwLjEuMS44My43NjE1LiBkb2k6MTAuMTA4MC8wOTU0MDA5MDMxMDAwMTY1NTExMC4gUzJDSUTCoDE0NTI3MzQuXG5cIk1hY2hpbmUgRXRoaWNzXCIuIGFhYWkub3JnLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOSBOb3ZlbWJlciAyMDE0LlxuTWFkcmlnYWwsIEFsZXhpcyBDLiAoMjcgRmVicnVhcnkgMjAxNSkuIFwiVGhlIGNhc2UgYWdhaW5zdCBraWxsZXIgcm9ib3RzLCBmcm9tIGEgZ3V5IGFjdHVhbGx5IHdvcmtpbmcgb24gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIi4gRnVzaW9uLm5ldC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBGZWJydWFyeSAyMDE2LiBSZXRyaWV2ZWQgMzEgSmFudWFyeSAyMDE2LlxuTWFoZGF3aSwgQXJ3YSAoMjYgSnVuZSAyMDE3KS4gXCJXaGF0IGpvYnMgd2lsbCBzdGlsbCBiZSBhcm91bmQgaW4gMjAgeWVhcnM/IFJlYWQgdGhpcyB0byBwcmVwYXJlIHlvdXIgZnV0dXJlXCIuIFRoZSBHdWFyZGlhbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSmFudWFyeSAyMDE4LiBSZXRyaWV2ZWQgMTMgSmFudWFyeSAyMDE4LlxuTWFrZXIsIE1lZyBIb3VzdG9uICgyMDA2KSwgQUlANTA6IEFJIFBhc3QsIFByZXNlbnQsIEZ1dHVyZSwgRGFydG1vdXRoIENvbGxlZ2UsIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggT2N0b2JlciAyMDA4LCByZXRyaWV2ZWQgMTYgT2N0b2JlciAyMDA4XG5NYXJtb3V5ZXQsIEZyYW7Dp29pc2UgKDE1IERlY2VtYmVyIDIwMjMpLiBcIkdvb2dsZSdzIEdlbWluaTogaXMgdGhlIG5ldyBBSSBtb2RlbCByZWFsbHkgYmV0dGVyIHRoYW4gQ2hhdEdQVD9cIi4gVGhlIENvbnZlcnNhdGlvbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBNYXJjaCAyMDI0LiBSZXRyaWV2ZWQgMjUgRGVjZW1iZXIgMjAyMy5cbk1pbnNreSwgTWFydmluICgxOTg2KSwgVGhlIFNvY2lldHkgb2YgTWluZCwgU2ltb24gYW5kIFNjaHVzdGVyXG5NY0NhcnRoeSwgSm9objsgTWluc2t5LCBNYXJ2aW47IFJvY2hlc3RlciwgTmF0aGFuOyBTaGFubm9uLCBDbGF1ZGUgKDE5NTUpLiBcIkEgUHJvcG9zYWwgZm9yIHRoZSBEYXJ0bW91dGggU3VtbWVyIFJlc2VhcmNoIFByb2plY3Qgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgQXVndXN0IDIwMDcuIFJldHJpZXZlZCAzMCBBdWd1c3QgMjAwNy5cbk1jQ2FydGh5LCBKb2huICgyMDA3KSwgXCJGcm9tIEhlcmUgdG8gSHVtYW4tTGV2ZWwgQUlcIiwgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UsIHAuwqAxNzFcbk1jQ2FydGh5LCBKb2huICgxOTk5KSwgV2hhdCBpcyBBST8sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDQgRGVjZW1iZXIgMjAyMiwgcmV0cmlldmVkIDQgRGVjZW1iZXIgMjAyMlxuTWNDYXVsZXksIExlZSAoMjAwNykuIFwiQUkgYXJtYWdlZGRvbiBhbmQgdGhlIHRocmVlIGxhd3Mgb2Ygcm9ib3RpY3NcIi4gRXRoaWNzIGFuZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LiA5ICgyKTogMTUz4oCTMTY0LiBDaXRlU2VlcljCoDEwLjEuMS44NS44OTA0LiBkb2k6MTAuMTAwNy9zMTA2NzYtMDA3LTkxMzgtMi4gUzJDSUTCoDM3MjcyOTQ5LlxuTWNHYXJyeSwgS2VuICgxIERlY2VtYmVyIDIwMDUpLiBcIkEgc3VydmV5IG9mIGludGVyZXN0aW5nbmVzcyBtZWFzdXJlcyBmb3Iga25vd2xlZGdlIGRpc2NvdmVyeVwiLiBUaGUgS25vd2xlZGdlIEVuZ2luZWVyaW5nIFJldmlldy4gMjAgKDEpOiAzOeKAkzYxLiBkb2k6MTAuMTAxNy9TMDI2OTg4ODkwNTAwMDQwOC4gUzJDSUTCoDE0OTg3NjU2LlxuTWNHYXVnaGV5LCBFICgyMDIyKSwgV2lsbCBSb2JvdHMgQXV0b21hdGUgWW91ciBKb2IgQXdheT8gRnVsbCBFbXBsb3ltZW50LCBCYXNpYyBJbmNvbWUsIGFuZCBFY29ub21pYyBEZW1vY3JhY3ksIHAuwqA1MSgzKSBJbmR1c3RyaWFsIExhdyBKb3VybmFsIDUxMeKAkzU1OSwgZG9pOjEwLjIxMzkvc3Nybi4zMDQ0NDQ4LCBTMkNJRMKgMjE5MzM2NDM5LCBTU1JOwqAzMDQ0NDQ4LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBKYW51YXJ5IDIwMjEsIHJldHJpZXZlZCAyNyBNYXkgMjAyM1xuTWVya2xlLCBEYW5pZWw7IE1pZGRlbmRvcmYsIE1hcnRpbiAoMjAxMykuIFwiU3dhcm0gSW50ZWxsaWdlbmNlXCIuIEluIEJ1cmtlLCBFZG11bmQgSy47IEtlbmRhbGwsIEdyYWhhbSAoZWRzLikuIFNlYXJjaCBNZXRob2RvbG9naWVzOiBJbnRyb2R1Y3RvcnkgVHV0b3JpYWxzIGluIE9wdGltaXphdGlvbiBhbmQgRGVjaXNpb24gU3VwcG9ydCBUZWNobmlxdWVzLiBTcHJpbmdlciBTY2llbmNlICYgQnVzaW5lc3MgTWVkaWEuIElTQk7CoDk3OC0xLTQ2MTQtNjk0MC03LlxuTWluc2t5LCBNYXJ2aW4gKDE5NjcpLCBDb21wdXRhdGlvbjogRmluaXRlIGFuZCBJbmZpbml0ZSBNYWNoaW5lcywgRW5nbGV3b29kIENsaWZmcywgTi5KLjogUHJlbnRpY2UtSGFsbFxuTW9yYXZlYywgSGFucyAoMTk4OCkuIE1pbmQgQ2hpbGRyZW4uIEhhcnZhcmQgVW5pdmVyc2l0eSBQcmVzcy4gSVNCTsKgOTc4LTAtNjc0NS03NjE2LTIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDE4IE5vdmVtYmVyIDIwMTkuXG5Nb3JnZW5zdGVybiwgTWljaGFlbCAoOSBNYXkgMjAxNSkuIFwiQXV0b21hdGlvbiBhbmQgYW54aWV0eVwiLiBUaGUgRWNvbm9taXN0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMiBKYW51YXJ5IDIwMTguIFJldHJpZXZlZCAxMyBKYW51YXJ5IDIwMTguXG5Nw7xsbGVyLCBWaW5jZW50IEMuOyBCb3N0cm9tLCBOaWNrICgyMDE0KS4gXCJGdXR1cmUgUHJvZ3Jlc3MgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgUG9sbCBBbW9uZyBFeHBlcnRzXCIgKFBERikuIEFJIE1hdHRlcnMuIDEgKDEpOiA54oCTMTEuIGRvaToxMC4xMTQ1LzI2Mzk0NzUuMjYzOTQ3OC4gUzJDSUTCoDg1MTAwMTYuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE1IEphbnVhcnkgMjAxNi5cbk5ldW1hbm4sIEJlcm5kOyBNw7ZsbGVyLCBSYWxmIChKYW51YXJ5IDIwMDgpLiBcIk9uIHNjZW5lIGludGVycHJldGF0aW9uIHdpdGggZGVzY3JpcHRpb24gbG9naWNzXCIuIEltYWdlIGFuZCBWaXNpb24gQ29tcHV0aW5nLiAyNiAoMSk6IDgy4oCTMTAxLiBkb2k6MTAuMTAxNi9qLmltYXZpcy4yMDA3LjA4LjAxMy4gUzJDSUTCoDEwNzY3MDExLlxuTmlsc3NvbiwgTmlscyAoMTk5NSksIFwiRXllcyBvbiB0aGUgUHJpemVcIiwgQUkgTWFnYXppbmUsIHZvbC7CoDE2LCBwcC7CoDnigJMxN1xuTmV3ZWxsLCBBbGxlbjsgU2ltb24sIEguIEEuICgxOTc2KS4gXCJDb21wdXRlciBTY2llbmNlIGFzIEVtcGlyaWNhbCBJbnF1aXJ5OiBTeW1ib2xzIGFuZCBTZWFyY2hcIi4gQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTS4gMTkgKDMpOiAxMTPigJMxMjYuIGRvaToxMC4xMTQ1LzM2MDAxOC4zNjAwMjIuXG5OaWNhcywgSmFjayAoNyBGZWJydWFyeSAyMDE4KS4gXCJIb3cgWW91VHViZSBEcml2ZXMgUGVvcGxlIHRvIHRoZSBJbnRlcm5ldCdzIERhcmtlc3QgQ29ybmVyc1wiLiBUaGUgV2FsbCBTdHJlZXQgSm91cm5hbC4gSVNTTsKgMDA5OS05NjYwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE2IEp1bmUgMjAxOC5cbk5pbHNzb24sIE5pbHMgKDE5ODMpLiBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFByZXBhcmVzIGZvciAyMDAxXCIgKFBERikuIEFJIE1hZ2F6aW5lLiAxICgxKS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgQXVndXN0IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC4gUHJlc2lkZW50aWFsIEFkZHJlc3MgdG8gdGhlIEFzc29jaWF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UuXG5OUkMgKFVuaXRlZCBTdGF0ZXMgTmF0aW9uYWwgUmVzZWFyY2ggQ291bmNpbCkgKDE5OTkpLiBcIkRldmVsb3BtZW50cyBpbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBGdW5kaW5nIGEgUmV2b2x1dGlvbjogR292ZXJubWVudCBTdXBwb3J0IGZvciBDb21wdXRpbmcgUmVzZWFyY2guIE5hdGlvbmFsIEFjYWRlbXkgUHJlc3MuXG5PbW9odW5kcm8sIFN0ZXZlICgyMDA4KS4gVGhlIE5hdHVyZSBvZiBTZWxmLUltcHJvdmluZyBBcnRpZmljaWFsIEludGVsbGlnZW5jZS4gcHJlc2VudGVkIGFuZCBkaXN0cmlidXRlZCBhdCB0aGUgMjAwNyBTaW5ndWxhcml0eSBTdW1taXQsIFNhbiBGcmFuY2lzY28sIENBLlxuT3VkZXllciwgUC1ZLiAoMjAxMCkuIFwiT24gdGhlIGltcGFjdCBvZiByb2JvdGljcyBpbiBiZWhhdmlvcmFsIGFuZCBjb2duaXRpdmUgc2NpZW5jZXM6IGZyb20gaW5zZWN0IG5hdmlnYXRpb24gdG8gaHVtYW4gY29nbml0aXZlIGRldmVsb3BtZW50XCIgKFBERikuIElFRUUgVHJhbnNhY3Rpb25zIG9uIEF1dG9ub21vdXMgTWVudGFsIERldmVsb3BtZW50LiAyICgxKTogMuKAkzE2LiBkb2k6MTAuMTEwOS90YW1kLjIwMDkuMjAzOTA1Ny4gUzJDSUTCoDYzNjIyMTcuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDE4LiBSZXRyaWV2ZWQgNCBKdW5lIDIwMTMuXG5QZW5uYWNoaW4sIEMuOyBHb2VydHplbCwgQi4gKDIwMDcpLiBcIkNvbnRlbXBvcmFyeSBBcHByb2FjaGVzIHRvIEFydGlmaWNpYWwgR2VuZXJhbCBJbnRlbGxpZ2VuY2VcIi4gQXJ0aWZpY2lhbCBHZW5lcmFsIEludGVsbGlnZW5jZS4gQ29nbml0aXZlIFRlY2hub2xvZ2llcy4gQmVybGluLCBIZWlkZWxiZXJnOiBTcHJpbmdlci4gcHAuwqAx4oCTMzAuIGRvaToxMC4xMDA3Lzk3OC0zLTU0MC02ODY3Ny00XzEuIElTQk7CoDk3OC0zLTU0MDItMzczMy00LlxuUGlua2VyLCBTdGV2ZW4gKDIwMDcpIFsxOTk0XSwgVGhlIExhbmd1YWdlIEluc3RpbmN0LCBQZXJlbm5pYWwgTW9kZXJuIENsYXNzaWNzLCBIYXJwZXIsIElTQk7CoDk3OC0wLTA2MTMtMzY0Ni0xXG5Qb3JpYSwgU291amFueWE7IENhbWJyaWEsIEVyaWs7IEJhanBhaSwgUmFqaXY7IEh1c3NhaW4sIEFtaXIgKFNlcHRlbWJlciAyMDE3KS4gXCJBIHJldmlldyBvZiBhZmZlY3RpdmUgY29tcHV0aW5nOiBGcm9tIHVuaW1vZGFsIGFuYWx5c2lzIHRvIG11bHRpbW9kYWwgZnVzaW9uXCIuIEluZm9ybWF0aW9uIEZ1c2lvbi4gMzc6IDk44oCTMTI1LiBkb2k6MTAuMTAxNi9qLmluZmZ1cy4yMDE3LjAyLjAwMy4gaGRsOjE4OTMvMjU0OTAuIFMyQ0lEwqAyMDU0MzMwNDEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIzIE1hcmNoIDIwMjMuIFJldHJpZXZlZCAyNyBBcHJpbCAyMDIxLlxuUmF3bGluc29uLCBLZXZpbiAoMjkgSmFudWFyeSAyMDE1KS4gXCJNaWNyb3NvZnQncyBCaWxsIEdhdGVzIGluc2lzdHMgQUkgaXMgYSB0aHJlYXRcIi4gQkJDIE5ld3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI5IEphbnVhcnkgMjAxNS4gUmV0cmlldmVkIDMwIEphbnVhcnkgMjAxNS5cblJlaXNuZXIsIEFsZXggKDE5IEF1Z3VzdCAyMDIzKSwgXCJSZXZlYWxlZDogVGhlIEF1dGhvcnMgV2hvc2UgUGlyYXRlZCBCb29rcyBhcmUgUG93ZXJpbmcgR2VuZXJhdGl2ZSBBSVwiLCBUaGUgQXRsYW50aWMsIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDI0LCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcblJvYmVydHMsIEphY29iICgyMDE2KS4gXCJUaGlua2luZyBNYWNoaW5lczogVGhlIFNlYXJjaCBmb3IgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gRGlzdGlsbGF0aW9ucy4gVm9sLsKgMiwgbm8uwqAyLiBwcC7CoDE04oCTMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IEF1Z3VzdCAyMDE4LiBSZXRyaWV2ZWQgMjAgTWFyY2ggMjAxOC5cblJvYml0enNraSwgRGFuICg1IFNlcHRlbWJlciAyMDE4KS4gXCJGaXZlIGV4cGVydHMgc2hhcmUgd2hhdCBzY2FyZXMgdGhlbSB0aGUgbW9zdCBhYm91dCBBSVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA4IERlY2VtYmVyIDIwMTkuIFJldHJpZXZlZCA4IERlY2VtYmVyIDIwMTkuXG5Sb3NlLCBTdGV2ZSAoMTEgSnVseSAyMDIzKS4gXCJBSSBVdG9waWEgb3IgZHlzdG9waWE/XCIuIFRoZSBHdWFyZGlhbiBXZWVrbHkuIHBwLsKgNDLigJM0My5cblJ1c3NlbGwsIFN0dWFydCAoMjAxOSkuIEh1bWFuIENvbXBhdGlibGU6IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCB0aGUgUHJvYmxlbSBvZiBDb250cm9sLiBVbml0ZWQgU3RhdGVzOiBWaWtpbmcuIElTQk7CoDk3OC0wLTUyNTUtNTg2MS0zLiBPQ0xDwqAxMDgzNjk0MzIyLlxuU2FpbmF0bywgTWljaGFlbCAoMTkgQXVndXN0IDIwMTUpLiBcIlN0ZXBoZW4gSGF3a2luZywgRWxvbiBNdXNrLCBhbmQgQmlsbCBHYXRlcyBXYXJuIEFib3V0IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIuIE9ic2VydmVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5TYW1wbGUsIElhbiAoNSBOb3ZlbWJlciAyMDE3KS4gXCJDb21wdXRlciBzYXlzIG5vOiB3aHkgbWFraW5nIEFJcyBmYWlyLCBhY2NvdW50YWJsZSBhbmQgdHJhbnNwYXJlbnQgaXMgY3J1Y2lhbFwiLiBUaGUgR3VhcmRpYW4uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEwIE9jdG9iZXIgMjAyMi4gUmV0cmlldmVkIDMwIEphbnVhcnkgMjAxOC5cblJvdGhtYW4sIERlbmlzICg3IE9jdG9iZXIgMjAyMCkuIFwiRXhwbG9yaW5nIExJTUUgRXhwbGFuYXRpb25zIGFuZCB0aGUgTWF0aGVtYXRpY3MgQmVoaW5kIEl0XCIuIENvZGVtb3Rpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAyNSBOb3ZlbWJlciAyMDIzLlxuU2Nhc3NlbGxhdGksIEJyaWFuICgyMDAyKS4gXCJUaGVvcnkgb2YgbWluZCBmb3IgYSBodW1hbm9pZCByb2JvdFwiLiBBdXRvbm9tb3VzIFJvYm90cy4gMTIgKDEpOiAxM+KAkzI0LiBkb2k6MTAuMTAyMy9BOjEwMTMyOTg1MDcxMTQuIFMyQ0lEwqAxOTc5MzE1LlxuU2NobWlkaHViZXIsIEouICgyMDE1KS4gXCJEZWVwIExlYXJuaW5nIGluIE5ldXJhbCBOZXR3b3JrczogQW4gT3ZlcnZpZXdcIi4gTmV1cmFsIE5ldHdvcmtzLiA2MTogODXigJMxMTcuIGFyWGl2OjE0MDQuNzgyOC4gZG9pOjEwLjEwMTYvai5uZXVuZXQuMjAxNC4wOS4wMDMuIFBNSUTCoDI1NDYyNjM3LiBTMkNJRMKgMTE3MTU1MDkuXG5TY2htaWRodWJlciwgSsO8cmdlbiAoMjAyMikuIFwiQW5ub3RhdGVkIEhpc3Rvcnkgb2YgTW9kZXJuIEFJIGFuZCBEZWVwIExlYXJuaW5nXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDcgQXVndXN0IDIwMjMuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cblNlYXJsZSwgSm9obiAoMTk4MCkuIFwiTWluZHMsIEJyYWlucyBhbmQgUHJvZ3JhbXNcIiAoUERGKS4gQmVoYXZpb3JhbCBhbmQgQnJhaW4gU2NpZW5jZXMuIDMgKDMpOiA0MTfigJM0NTcuIGRvaToxMC4xMDE3L1MwMTQwNTI1WDAwMDA1NzU2LiBTMkNJRMKgNTUzMDM3MjEuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE1hcmNoIDIwMTkuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cblNlYXJsZSwgSm9obiAoMTk5OSkuIE1pbmQsIGxhbmd1YWdlIGFuZCBzb2NpZXR5LiBOZXcgWW9yazogQmFzaWMgQm9va3MuIElTQk7CoDk3OC0wLTQ2NTAtNDUyMS0xLiBPQ0xDwqAyMzE4Njc2NjUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuU2ltb24sIEguIEEuICgxOTY1KSwgVGhlIFNoYXBlIG9mIEF1dG9tYXRpb24gZm9yIE1lbiBhbmQgTWFuYWdlbWVudCwgTmV3IFlvcms6IEhhcnBlciAmIFJvd1xuU2ltb25pdGUsIFRvbSAoMzEgTWFyY2ggMjAxNikuIFwiSG93IEdvb2dsZSBQbGFucyB0byBTb2x2ZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBNSVQgVGVjaG5vbG9neSBSZXZpZXcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5TbWl0aCwgQ3JhaWcgUy4gKDE1IE1hcmNoIDIwMjMpLiBcIkNoYXRHUFQtNCBDcmVhdG9yIElseWEgU3V0c2tldmVyIG9uIEFJIEhhbGx1Y2luYXRpb25zIGFuZCBBSSBEZW1vY3JhY3lcIi4gRm9yYmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDI1IERlY2VtYmVyIDIwMjMuXG5TbW9saWFyLCBTdGVwaGVuIFcuOyBaaGFuZywgSG9uZ0ppYW5nICgxOTk0KS4gXCJDb250ZW50IGJhc2VkIHZpZGVvIGluZGV4aW5nIGFuZCByZXRyaWV2YWxcIi4gSUVFRSBNdWx0aU1lZGlhLiAxICgyKTogNjLigJM3Mi4gZG9pOjEwLjExMDkvOTMuMzExNjUzLiBTMkNJRMKgMzI3MTA5MTMuXG5Tb2xvbW9ub2ZmLCBSYXkgKDE5NTYpLiBBbiBJbmR1Y3RpdmUgSW5mZXJlbmNlIE1hY2hpbmUgKFBERikuIERhcnRtb3V0aCBTdW1tZXIgUmVzZWFyY2ggQ29uZmVyZW5jZSBvbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgQXByaWwgMjAxMS4gUmV0cmlldmVkIDIyIE1hcmNoIDIwMTEg4oCTIHZpYSBzdGQuY29tLCBwZGYgc2Nhbm5lZCBjb3B5IG9mIHRoZSBvcmlnaW5hbC4gTGF0ZXIgcHVibGlzaGVkIGFzXG5Tb2xvbW9ub2ZmLCBSYXkgKDE5NTcpLiBcIkFuIEluZHVjdGl2ZSBJbmZlcmVuY2UgTWFjaGluZVwiLiBJUkUgQ29udmVudGlvbiBSZWNvcmQuIFZvbC7CoFNlY3Rpb24gb24gSW5mb3JtYXRpb24gVGhlb3J5LCBwYXJ0IDIuIHBwLsKgNTbigJM2Mi5cblN0YW5mb3JkIFVuaXZlcnNpdHkgKDIwMjMpLiBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEluZGV4IFJlcG9ydCAyMDIzL0NoYXB0ZXIgNjogUG9saWN5IGFuZCBHb3Zlcm5hbmNlXCIgKFBERikuIEFJIEluZGV4LiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5UYW8sIEppYW5odWE7IFRhbiwgVGllbml1ICgyMDA1KS4gQWZmZWN0aXZlIENvbXB1dGluZyBhbmQgSW50ZWxsaWdlbnQgSW50ZXJhY3Rpb24uIEFmZmVjdGl2ZSBDb21wdXRpbmc6IEEgUmV2aWV3LiBMZWN0dXJlIE5vdGVzIGluIENvbXB1dGVyIFNjaWVuY2UuIFZvbC7CoDM3ODQuIFNwcmluZ2VyLiBwcC7CoDk4MeKAkzk5NS4gZG9pOjEwLjEwMDcvMTE1NzM1NDguIElTQk7CoDk3OC0zLTU0MDItOTYyMS04LlxuVGF5bG9yLCBKb3NoOyBIZXJuLCBBbGV4ICgyIE1heSAyMDIzKS4gXCInR29kZmF0aGVyIG9mIEFJJyBHZW9mZnJleSBIaW50b24gcXVpdHMgR29vZ2xlIGFuZCB3YXJucyBvdmVyIGRhbmdlcnMgb2YgbWlzaW5mb3JtYXRpb25cIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuVGhvbXBzb24sIERlcmVrICgyMyBKYW51YXJ5IDIwMTQpLiBcIldoYXQgSm9icyBXaWxsIHRoZSBSb2JvdHMgVGFrZT9cIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNCBBcHJpbCAyMDE4LiBSZXRyaWV2ZWQgMjQgQXByaWwgMjAxOC5cblRocm8sIEVsbGVuICgxOTkzKS4gUm9ib3RpY3M6IFRoZSBNYXJyaWFnZSBvZiBDb21wdXRlcnMgYW5kIE1hY2hpbmVzLiBOZXcgWW9yazogRmFjdHMgb24gRmlsZS4gSVNCTsKgOTc4LTAtODE2MC0yNjI4LTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuVG9ld3MsIFJvYiAoMyBTZXB0ZW1iZXIgMjAyMykuIFwiVHJhbnNmb3JtZXJzIFJldm9sdXRpb25pemVkIEFJLiBXaGF0IFdpbGwgUmVwbGFjZSBUaGVtP1wiLiBGb3JiZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDggRGVjZW1iZXIgMjAyMy5cblR1cmluZywgQWxhbiAoT2N0b2JlciAxOTUwKS4gXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIi4gTWluZC4gNTkgKDIzNik6IDQzM+KAkzQ2MC4gZG9pOjEwLjEwOTMvbWluZC9MSVguMjM2LjQzMy4gSVNTTsKgMTQ2MC0yMTEzLiBKU1RPUsKgMjI1MTI5OS4gUzJDSUTCoDE0NjM2NzgzLlxuVU5FU0NPIFNjaWVuY2UgUmVwb3J0OiB0aGUgUmFjZSBBZ2FpbnN0IFRpbWUgZm9yIFNtYXJ0ZXIgRGV2ZWxvcG1lbnQuIFBhcmlzOiBVTkVTQ08uIDIwMjEuIElTQk7CoDk3OC05LTIzMTAtMDQ1MC02LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBKdW5lIDIwMjIuIFJldHJpZXZlZCAxOCBTZXB0ZW1iZXIgMjAyMS5cblVyYmluYSwgRmFiaW87IExlbnR6b3MsIEZpbGlwcGE7IEludmVybml6emksIEPDqWRyaWM7IEVraW5zLCBTZWFuICg3IE1hcmNoIDIwMjIpLiBcIkR1YWwgdXNlIG9mIGFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyZWQgZHJ1ZyBkaXNjb3ZlcnlcIi4gTmF0dXJlIE1hY2hpbmUgSW50ZWxsaWdlbmNlLiA0ICgzKTogMTg54oCTMTkxLiBkb2k6MTAuMTAzOC9zNDIyNTYtMDIyLTAwNDY1LTkuIFBNQ8KgOTU0NDI4MC4gUE1JRMKgMzYyMTExMzMuIFMyQ0lEwqAyNDczMDIzOTEuXG5WYWxhbmNlLCBDaHJpc3QgKDMwIE1heSAyMDIzKS4gXCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBsZWFkIHRvIGV4dGluY3Rpb24sIGV4cGVydHMgd2FyblwiLiBCQkMgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgSnVuZSAyMDIzLiBSZXRyaWV2ZWQgMTggSnVuZSAyMDIzLlxuVmFsaW5za3ksIEpvcmRhbiAoMTEgQXByaWwgMjAxOSksIFwiQW1hem9uIHJlcG9ydGVkbHkgZW1wbG95cyB0aG91c2FuZHMgb2YgcGVvcGxlIHRvIGxpc3RlbiB0byB5b3VyIEFsZXhhIGNvbnZlcnNhdGlvbnNcIiwgQ05OLmNvbSwgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSmFudWFyeSAyMDI0LCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcblZlcm1hLCBZdWdlc2ggKDI1IERlY2VtYmVyIDIwMjEpLiBcIkEgQ29tcGxldGUgR3VpZGUgdG8gU0hBUCDigJMgU0hBUGxleSBBZGRpdGl2ZSBleFBsYW5hdGlvbnMgZm9yIFByYWN0aXRpb25lcnNcIi4gQW5hbHl0aWNzIEluZGlhIE1hZ2F6aW5lLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBOb3ZlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMjUgTm92ZW1iZXIgMjAyMy5cblZpbmNlbnQsIEphbWVzICg3IE5vdmVtYmVyIDIwMTkpLiBcIk9wZW5BSSBoYXMgcHVibGlzaGVkIHRoZSB0ZXh0LWdlbmVyYXRpbmcgQUkgaXQgc2FpZCB3YXMgdG9vIGRhbmdlcm91cyB0byBzaGFyZVwiLiBUaGUgVmVyZ2UuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDExIEp1bmUgMjAyMC4gUmV0cmlldmVkIDExIEp1bmUgMjAyMC5cblZpbmNlbnQsIEphbWVzICgxNSBOb3ZlbWJlciAyMDIyKS4gXCJUaGUgc2NhcnkgdHJ1dGggYWJvdXQgQUkgY29weXJpZ2h0IGlzIG5vYm9keSBrbm93cyB3aGF0IHdpbGwgaGFwcGVuIG5leHRcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WaW5jZW50LCBKYW1lcyAoMyBBcHJpbCAyMDIzKS4gXCJBSSBpcyBlbnRlcmluZyBhbiBlcmEgb2YgY29ycG9yYXRlIGNvbnRyb2xcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WaW5nZSwgVmVybm9yICgxOTkzKS4gXCJUaGUgQ29taW5nIFRlY2hub2xvZ2ljYWwgU2luZ3VsYXJpdHk6IEhvdyB0byBTdXJ2aXZlIGluIHRoZSBQb3N0LUh1bWFuIEVyYVwiLiBWaXNpb24gMjE6IEludGVyZGlzY2lwbGluYXJ5IFNjaWVuY2UgYW5kIEVuZ2luZWVyaW5nIGluIHRoZSBFcmEgb2YgQ3liZXJzcGFjZTogMTEuIEJpYmNvZGU6MTk5M3Zpc2UubmFzYS4uLjExVi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMSBKYW51YXJ5IDIwMDcuIFJldHJpZXZlZCAxNCBOb3ZlbWJlciAyMDExLlxuV2FkZGVsbCwgS2F2ZWggKDIwMTgpLiBcIkNoYXRib3RzIEhhdmUgRW50ZXJlZCB0aGUgVW5jYW5ueSBWYWxsZXlcIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNCBBcHJpbCAyMDE4LiBSZXRyaWV2ZWQgMjQgQXByaWwgMjAxOC5cbldhbGxhY2gsIFdlbmRlbGwgKDIwMTApLiBNb3JhbCBNYWNoaW5lcy4gT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MuXG5XYXNvbiwgUC4gQy47IFNoYXBpcm8sIEQuICgxOTY2KS4gXCJSZWFzb25pbmdcIi4gSW4gRm9zcywgQi4gTS4gKGVkLikuIE5ldyBob3Jpem9ucyBpbiBwc3ljaG9sb2d5LiBIYXJtb25kc3dvcnRoOiBQZW5ndWluLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuV2VuZywgSi47IE1jQ2xlbGxhbmQ7IFBlbnRsYW5kLCBBLjsgU3Bvcm5zLCBPLjsgU3RvY2ttYW4sIEkuOyBTdXIsIE0uOyBUaGVsZW4sIEUuICgyMDAxKS4gXCJBdXRvbm9tb3VzIG1lbnRhbCBkZXZlbG9wbWVudCBieSByb2JvdHMgYW5kIGFuaW1hbHNcIiAoUERGKS4gU2NpZW5jZS4gMjkxICg1NTA0KTogNTk54oCTNjAwLiBkb2k6MTAuMTEyNi9zY2llbmNlLjI5MS41NTA0LjU5OS4gUE1JRMKgMTEyMjk0MDIuIFMyQ0lEwqA1NDEzMTc5Ny4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBTZXB0ZW1iZXIgMjAxMy4gUmV0cmlldmVkIDQgSnVuZSAyMDEzIOKAkyB2aWEgbXN1LmVkdS5cblwiV2hhdCBpcyAnZnV6enkgbG9naWMnPyBBcmUgdGhlcmUgY29tcHV0ZXJzIHRoYXQgYXJlIGluaGVyZW50bHkgZnV6enkgYW5kIGRvIG5vdCBhcHBseSB0aGUgdXN1YWwgYmluYXJ5IGxvZ2ljP1wiLiBTY2llbnRpZmljIEFtZXJpY2FuLiAyMSBPY3RvYmVyIDE5OTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgTWF5IDIwMTguIFJldHJpZXZlZCA1IE1heSAyMDE4LlxuV2lsbGlhbXMsIFJoaWFubm9uICgyOCBKdW5lIDIwMjMpLCBcIkh1bWFucyBtYXkgYmUgbW9yZSBsaWtlbHkgdG8gYmVsaWV2ZSBkaXNpbmZvcm1hdGlvbiBnZW5lcmF0ZWQgYnkgQUlcIiwgTUlUIFRlY2hub2xvZ3kgUmV2aWV3LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBTZXB0ZW1iZXIgMjAyNCwgcmV0cmlldmVkIDUgT2N0b2JlciAyMDI0XG5XaXJ0eiwgQmVybmQgVy47IFdleWVyZXIsIEphbiBDLjsgR2V5ZXIsIENhcm9saW4gKDI0IEp1bHkgMjAxOCkuIFwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgYW5kIHRoZSBQdWJsaWMgU2VjdG9yIOKAkyBBcHBsaWNhdGlvbnMgYW5kIENoYWxsZW5nZXNcIi4gSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIFB1YmxpYyBBZG1pbmlzdHJhdGlvbi4gNDIgKDcpOiA1OTbigJM2MTUuIGRvaToxMC4xMDgwLzAxOTAwNjkyLjIwMTguMTQ5ODEwMy4gSVNTTsKgMDE5MC0wNjkyLiBTMkNJRMKgMTU4ODI5NjAyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBBdWd1c3QgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuV29uZywgTWF0dGVvICgxOSBNYXkgMjAyMyksIFwiQ2hhdEdQVCBJcyBBbHJlYWR5IE9ic29sZXRlXCIsIFRoZSBBdGxhbnRpYywgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTggU2VwdGVtYmVyIDIwMjQsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuWXVka293c2t5LCBFICgyMDA4KSwgXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhcyBhIFBvc2l0aXZlIGFuZCBOZWdhdGl2ZSBGYWN0b3IgaW4gR2xvYmFsIFJpc2tcIiAoUERGKSwgR2xvYmFsIENhdGFzdHJvcGhpYyBSaXNrcywgT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MsIDIwMDgsIEJpYmNvZGU6MjAwOGdjci4uYm9vay4uMzAzWSwgYXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTkgT2N0b2JlciAyMDEzLCByZXRyaWV2ZWQgMjQgU2VwdGVtYmVyIDIwMjFcbkZ1cnRoZXIgcmVhZGluZ1xuQXV0b3IsIERhdmlkIEguLCBcIldoeSBBcmUgVGhlcmUgU3RpbGwgU28gTWFueSBKb2JzPyBUaGUgSGlzdG9yeSBhbmQgRnV0dXJlIG9mIFdvcmtwbGFjZSBBdXRvbWF0aW9uXCIgKDIwMTUpIDI5KDMpIEpvdXJuYWwgb2YgRWNvbm9taWMgUGVyc3BlY3RpdmVzIDMuXG5CZXJsaW5za2ksIERhdmlkICgyMDAwKS4gVGhlIEFkdmVudCBvZiB0aGUgQWxnb3JpdGhtLiBIYXJjb3VydCBCb29rcy4gSVNCTsKgOTc4LTAtMTU2MC0xMzkxLTguIE9DTEPCoDQ2ODkwNjgyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkJveWxlLCBKYW1lcywgVGhlIExpbmU6IEFJIGFuZCB0aGUgRnV0dXJlIG9mIFBlcnNvbmhvb2QsIE1JVCBQcmVzcywgMjAyNC5cbkN1a2llciwgS2VubmV0aCwgXCJSZWFkeSBmb3IgUm9ib3RzPyBIb3cgdG8gVGhpbmsgYWJvdXQgdGhlIEZ1dHVyZSBvZiBBSVwiLCBGb3JlaWduIEFmZmFpcnMsIHZvbC4gOTgsIG5vLiA0IChKdWx5L0F1Z3VzdCAyMDE5KSwgcHAuwqAxOTLigJMxOTguIEdlb3JnZSBEeXNvbiwgaGlzdG9yaWFuIG9mIGNvbXB1dGluZywgd3JpdGVzIChpbiB3aGF0IG1pZ2h0IGJlIGNhbGxlZCBcIkR5c29uJ3MgTGF3XCIpIHRoYXQgXCJBbnkgc3lzdGVtIHNpbXBsZSBlbm91Z2ggdG8gYmUgdW5kZXJzdGFuZGFibGUgd2lsbCBub3QgYmUgY29tcGxpY2F0ZWQgZW5vdWdoIHRvIGJlaGF2ZSBpbnRlbGxpZ2VudGx5LCB3aGlsZSBhbnkgc3lzdGVtIGNvbXBsaWNhdGVkIGVub3VnaCB0byBiZWhhdmUgaW50ZWxsaWdlbnRseSB3aWxsIGJlIHRvbyBjb21wbGljYXRlZCB0byB1bmRlcnN0YW5kLlwiIChwLsKgMTk3LikgQ29tcHV0ZXIgc2NpZW50aXN0IEFsZXggUGVudGxhbmQgd3JpdGVzOiBcIkN1cnJlbnQgQUkgbWFjaGluZS1sZWFybmluZyBhbGdvcml0aG1zIGFyZSwgYXQgdGhlaXIgY29yZSwgZGVhZCBzaW1wbGUgc3R1cGlkLiBUaGV5IHdvcmssIGJ1dCB0aGV5IHdvcmsgYnkgYnJ1dGUgZm9yY2UuXCIgKHAuwqAxOTguKVxuRXZhbnMsIFdvb2R5ICgyMDE1KS4gXCJQb3N0aHVtYW4gUmlnaHRzOiBEaW1lbnNpb25zIG9mIFRyYW5zaHVtYW4gV29ybGRzXCIuIFRla25va3VsdHVyYS4gMTIgKDIpLiBkb2k6MTAuNTIwOS9yZXZfVEsuMjAxNS52MTIubjIuNDkwNzIuIFMyQ0lEwqAxNDc2MTI3NjMuXG5GcmFuaywgTWljaGFlbCAoMjIgU2VwdGVtYmVyIDIwMjMpLiBcIlVTIExlYWRlcnNoaXAgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQ2FuIFNoYXBlIHRoZSAyMXN0IENlbnR1cnkgR2xvYmFsIE9yZGVyXCIuIFRoZSBEaXBsb21hdC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTYgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA4IERlY2VtYmVyIDIwMjMuIEluc3RlYWQsIHRoZSBVbml0ZWQgU3RhdGVzIGhhcyBkZXZlbG9wZWQgYSBuZXcgYXJlYSBvZiBkb21pbmFuY2UgdGhhdCB0aGUgcmVzdCBvZiB0aGUgd29ybGQgdmlld3Mgd2l0aCBhIG1peHR1cmUgb2YgYXdlLCBlbnZ5LCBhbmQgcmVzZW50bWVudDogYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuLi4gRnJvbSBBSSBtb2RlbHMgYW5kIHJlc2VhcmNoIHRvIGNsb3VkIGNvbXB1dGluZyBhbmQgdmVudHVyZSBjYXBpdGFsLCBVLlMuIGNvbXBhbmllcywgdW5pdmVyc2l0aWVzLCBhbmQgcmVzZWFyY2ggbGFicyDigJMgYW5kIHRoZWlyIGFmZmlsaWF0ZXMgaW4gYWxsaWVkIGNvdW50cmllcyDigJMgYXBwZWFyIHRvIGhhdmUgYW4gZW5vcm1vdXMgbGVhZCBpbiBib3RoIGRldmVsb3BpbmcgY3V0dGluZy1lZGdlIEFJIGFuZCBjb21tZXJjaWFsaXppbmcgaXQuIFRoZSB2YWx1ZSBvZiBVLlMuIHZlbnR1cmUgY2FwaXRhbCBpbnZlc3RtZW50cyBpbiBBSSBzdGFydC11cHMgZXhjZWVkcyB0aGF0IG9mIHRoZSByZXN0IG9mIHRoZSB3b3JsZCBjb21iaW5lZC5cbkdlcnRuZXIsIEpvbi4gKDIwMjMpIFwiV2lraXBlZGlhJ3MgTW9tZW50IG9mIFRydXRoOiBDYW4gdGhlIG9ubGluZSBlbmN5Y2xvcGVkaWEgaGVscCB0ZWFjaCBBLkkuIGNoYXRib3RzIHRvIGdldCB0aGVpciBmYWN0cyByaWdodCDigJQgd2l0aG91dCBkZXN0cm95aW5nIGl0c2VsZiBpbiB0aGUgcHJvY2Vzcz9cIiBOZXcgWW9yayBUaW1lcyBNYWdhemluZSAoSnVseSAxOCwgMjAyMykgb25saW5lIEFyY2hpdmVkIDIwIEp1bHkgMjAyMyBhdCB0aGUgV2F5YmFjayBNYWNoaW5lXG5HbGVpY2ssIEphbWVzLCBcIlRoZSBGYXRlIG9mIEZyZWUgV2lsbFwiIChyZXZpZXcgb2YgS2V2aW4gSi4gTWl0Y2hlbGwsIEZyZWUgQWdlbnRzOiBIb3cgRXZvbHV0aW9uIEdhdmUgVXMgRnJlZSBXaWxsLCBQcmluY2V0b24gVW5pdmVyc2l0eSBQcmVzcywgMjAyMywgMzMzIHBwLiksIFRoZSBOZXcgWW9yayBSZXZpZXcgb2YgQm9va3MsIHZvbC4gTFhYSSwgbm8uIDEgKDE4IEphbnVhcnkgMjAyNCksIHBwLiAyN+KAkzI4LCAzMC4gXCJBZ2VuY3kgaXMgd2hhdCBkaXN0aW5ndWlzaGVzIHVzIGZyb20gbWFjaGluZXMuIEZvciBiaW9sb2dpY2FsIGNyZWF0dXJlcywgcmVhc29uIGFuZCBwdXJwb3NlIGNvbWUgZnJvbSBhY3RpbmcgaW4gdGhlIHdvcmxkIGFuZCBleHBlcmllbmNpbmcgdGhlIGNvbnNlcXVlbmNlcy4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VzIOKAkyBkaXNlbWJvZGllZCwgc3RyYW5nZXJzIHRvIGJsb29kLCBzd2VhdCwgYW5kIHRlYXJzIOKAkyBoYXZlIG5vIG9jY2FzaW9uIGZvciB0aGF0LlwiIChwLiAzMC4pXG5IYWxwZXJuLCBTdWUsIFwiVGhlIENvbWluZyBUZWNoIEF1dG9jcmFjeVwiIChyZXZpZXcgb2YgVmVyaXR5IEhhcmRpbmcsIEFJIE5lZWRzIFlvdTogSG93IFdlIENhbiBDaGFuZ2UgQUkncyBGdXR1cmUgYW5kIFNhdmUgT3VyIE93biwgUHJpbmNldG9uIFVuaXZlcnNpdHkgUHJlc3MsIDI3NCBwcC47IEdhcnkgTWFyY3VzLCBUYW1pbmcgU2lsaWNvbiBWYWxsZXk6IEhvdyBXZSBDYW4gRW5zdXJlIFRoYXQgQUkgV29ya3MgZm9yIFVzLCBNSVQgUHJlc3MsIDIzNSBwcC47IERhbmllbGEgUnVzIGFuZCBHcmVnb3J5IE1vbmUsIFRoZSBNaW5kJ3MgTWlycm9yOiBSaXNrIGFuZCBSZXdhcmQgaW4gdGhlIEFnZSBvZiBBSSwgTm9ydG9uLCAyODAgcHAuOyBNYWRodW1pdGEgTXVyZ2lhLCBDb2RlIERlcGVuZGVudDogTGl2aW5nIGluIHRoZSBTaGFkb3cgb2YgQUksIEhlbnJ5IEhvbHQsIDMxMSBwcC4pLCBUaGUgTmV3IFlvcmsgUmV2aWV3IG9mIEJvb2tzLCB2b2wuIExYWEksIG5vLiAxNyAoNyBOb3ZlbWJlciAyMDI0KSwgcHAuIDQ04oCTNDYuIFwiJ1dlIGNhbid0IHJlYWxpc3RpY2FsbHkgZXhwZWN0IHRoYXQgdGhvc2Ugd2hvIGhvcGUgdG8gZ2V0IHJpY2ggZnJvbSBBSSBhcmUgZ29pbmcgdG8gaGF2ZSB0aGUgaW50ZXJlc3RzIG9mIHRoZSByZXN0IG9mIHVzIGNsb3NlIGF0IGhlYXJ0LCcgLi4uIHdyaXRlcyBbR2FyeSBNYXJjdXNdLiAnV2UgY2FuJ3QgY291bnQgb24gZ292ZXJubWVudHMgZHJpdmVuIGJ5IGNhbXBhaWduIGZpbmFuY2UgY29udHJpYnV0aW9ucyBbZnJvbSB0ZWNoIGNvbXBhbmllc10gdG8gcHVzaCBiYWNrLicuLi4gTWFyY3VzIGRldGFpbHMgdGhlIGRlbWFuZHMgdGhhdCBjaXRpemVucyBzaG91bGQgbWFrZSBvZiB0aGVpciBnb3Zlcm5tZW50cyBhbmQgdGhlIHRlY2ggY29tcGFuaWVzLiBUaGV5IGluY2x1ZGUgdHJhbnNwYXJlbmN5IG9uIGhvdyBBSSBzeXN0ZW1zIHdvcms7IGNvbXBlbnNhdGlvbiBmb3IgaW5kaXZpZHVhbHMgaWYgdGhlaXIgZGF0YSBbYXJlXSB1c2VkIHRvIHRyYWluIExMTXMgKGxhcmdlIGxhbmd1YWdlIG1vZGVsKXMgYW5kIHRoZSByaWdodCB0byBjb25zZW50IHRvIHRoaXMgdXNlOyBhbmQgdGhlIGFiaWxpdHkgdG8gaG9sZCB0ZWNoIGNvbXBhbmllcyBsaWFibGUgZm9yIHRoZSBoYXJtcyB0aGV5IGNhdXNlIGJ5IGVsaW1pbmF0aW5nIFNlY3Rpb24gMjMwLCBpbXBvc2luZyBjYXNoIHBlbmFsdGllcywgYW5kIHBhc3Npbmcgc3RyaWN0ZXIgcHJvZHVjdCBsaWFiaWxpdHkgbGF3cy4uLiBNYXJjdXMgYWxzbyBzdWdnZXN0cy4uLiB0aGF0IGEgbmV3LCBBSS1zcGVjaWZpYyBmZWRlcmFsIGFnZW5jeSwgYWtpbiB0byB0aGUgRkRBLCB0aGUgRkNDLCBvciB0aGUgRlRDLCBtaWdodCBwcm92aWRlIHRoZSBtb3N0IHJvYnVzdCBvdmVyc2lnaHQuLi4uIFtUXWhlIEZvcmRoYW0gbGF3IHByb2Zlc3NvciBDaGlubWF5aSBTaGFybWEuLi4gc3VnZ2VzdHMuLi4gZXN0YWJsaXNoW2luZ10gYSBwcm9mZXNzaW9uYWwgbGljZW5zaW5nIHJlZ2ltZSBmb3IgZW5naW5lZXJzIHRoYXQgd291bGQgZnVuY3Rpb24gaW4gYSBzaW1pbGFyIHdheSB0byBtZWRpY2FsIGxpY2Vuc2VzLCBtYWxwcmFjdGljZSBzdWl0cywgYW5kIHRoZSBIaXBwb2NyYXRpYyBvYXRoIGluIG1lZGljaW5lLiAnV2hhdCBpZiwgbGlrZSBkb2N0b3JzLCcgc2hlIGFza3MuLi4sICdBSSBlbmdpbmVlcnMgYWxzbyB2b3dlZCB0byBkbyBubyBoYXJtPydcIiAocC4gNDYuKVxuSGVuZGVyc29uLCBNYXJrICgyNCBBcHJpbCAyMDA3KS4gXCJIdW1hbiByaWdodHMgZm9yIHJvYm90cz8gV2UncmUgZ2V0dGluZyBjYXJyaWVkIGF3YXlcIi4gVGhlIFRpbWVzIE9ubGluZS4gTG9uZG9uLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBNYXkgMjAxNC4gUmV0cmlldmVkIDMxIE1heSAyMDE0LlxuSHVnaGVzLUNhc3RsZWJlcnJ5LCBLZW5uYSwgXCJBIE11cmRlciBNeXN0ZXJ5IFB1enpsZTogVGhlIGxpdGVyYXJ5IHB1enpsZSBDYWluJ3MgSmF3Ym9uZSwgd2hpY2ggaGFzIHN0dW1wZWQgaHVtYW5zIGZvciBkZWNhZGVzLCByZXZlYWxzIHRoZSBsaW1pdGF0aW9ucyBvZiBuYXR1cmFsLWxhbmd1YWdlLXByb2Nlc3NpbmcgYWxnb3JpdGhtc1wiLCBTY2llbnRpZmljIEFtZXJpY2FuLCB2b2wuIDMyOSwgbm8uIDQgKE5vdmVtYmVyIDIwMjMpLCBwcC7CoDgx4oCTODIuIFwiVGhpcyBtdXJkZXIgbXlzdGVyeSBjb21wZXRpdGlvbiBoYXMgcmV2ZWFsZWQgdGhhdCBhbHRob3VnaCBOTFAgKG5hdHVyYWwtbGFuZ3VhZ2UgcHJvY2Vzc2luZykgbW9kZWxzIGFyZSBjYXBhYmxlIG9mIGluY3JlZGlibGUgZmVhdHMsIHRoZWlyIGFiaWxpdGllcyBhcmUgdmVyeSBtdWNoIGxpbWl0ZWQgYnkgdGhlIGFtb3VudCBvZiBjb250ZXh0IHRoZXkgcmVjZWl2ZS4gVGhpcyBbLi4uXSBjb3VsZCBjYXVzZSBbZGlmZmljdWx0aWVzXSBmb3IgcmVzZWFyY2hlcnMgd2hvIGhvcGUgdG8gdXNlIHRoZW0gdG8gZG8gdGhpbmdzIHN1Y2ggYXMgYW5hbHl6ZSBhbmNpZW50IGxhbmd1YWdlcy4gSW4gc29tZSBjYXNlcywgdGhlcmUgYXJlIGZldyBoaXN0b3JpY2FsIHJlY29yZHMgb24gbG9uZy1nb25lIGNpdmlsaXphdGlvbnMgdG8gc2VydmUgYXMgdHJhaW5pbmcgZGF0YSBmb3Igc3VjaCBhIHB1cnBvc2UuXCIgKHAuwqA4Mi4pXG5JbW1lcndhaHIsIERhbmllbCwgXCJZb3VyIEx5aW5nIEV5ZXM6IFBlb3BsZSBub3cgdXNlIEEuSS4gdG8gZ2VuZXJhdGUgZmFrZSB2aWRlb3MgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWFsIG9uZXMuIEhvdyBtdWNoIGRvZXMgaXQgbWF0dGVyP1wiLCBUaGUgTmV3IFlvcmtlciwgMjAgTm92ZW1iZXIgMjAyMywgcHAuwqA1NOKAkzU5LiBcIklmIGJ5ICdkZWVwZmFrZXMnIHdlIG1lYW4gcmVhbGlzdGljIHZpZGVvcyBwcm9kdWNlZCB1c2luZyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSB0aGF0IGFjdHVhbGx5IGRlY2VpdmUgcGVvcGxlLCB0aGVuIHRoZXkgYmFyZWx5IGV4aXN0LiBUaGUgZmFrZXMgYXJlbid0IGRlZXAsIGFuZCB0aGUgZGVlcHMgYXJlbid0IGZha2UuIFsuLi5dIEEuSS4tZ2VuZXJhdGVkIHZpZGVvcyBhcmUgbm90LCBpbiBnZW5lcmFsLCBvcGVyYXRpbmcgaW4gb3VyIG1lZGlhIGFzIGNvdW50ZXJmZWl0ZWQgZXZpZGVuY2UuIFRoZWlyIHJvbGUgYmV0dGVyIHJlc2VtYmxlcyB0aGF0IG9mIGNhcnRvb25zLCBlc3BlY2lhbGx5IHNtdXR0eSBvbmVzLlwiIChwLsKgNTkuKVxuSm9obnN0b24sIEpvaG4gKDIwMDgpIFRoZSBBbGx1cmUgb2YgTWFjaGluaWMgTGlmZTogQ3liZXJuZXRpY3MsIEFydGlmaWNpYWwgTGlmZSwgYW5kIHRoZSBOZXcgQUksIE1JVCBQcmVzcy5cbkp1bXBlciwgSm9objsgRXZhbnMsIFJpY2hhcmQ7IFByaXR6ZWwsIEFsZXhhbmRlcjsgZXTCoGFsLiAoMjYgQXVndXN0IDIwMjEpLiBcIkhpZ2hseSBhY2N1cmF0ZSBwcm90ZWluIHN0cnVjdHVyZSBwcmVkaWN0aW9uIHdpdGggQWxwaGFGb2xkXCIuIE5hdHVyZS4gNTk2ICg3ODczKTogNTgz4oCTNTg5LiBCaWJjb2RlOjIwMjFOYXR1ci41OTYuLjU4M0ouIGRvaToxMC4xMDM4L3M0MTU4Ni0wMjEtMDM4MTktMi4gUE1DwqA4MzcxNjA1LiBQTUlEwqAzNDI2NTg0NC4gUzJDSUTCoDIzNTk1OTg2Ny5cbkxlQ3VuLCBZYW5uOyBCZW5naW8sIFlvc2h1YTsgSGludG9uLCBHZW9mZnJleSAoMjggTWF5IDIwMTUpLiBcIkRlZXAgbGVhcm5pbmdcIi4gTmF0dXJlLiA1MjEgKDc1NTMpOiA0MzbigJM0NDQuIEJpYmNvZGU6MjAxNU5hdHVyLjUyMS4uNDM2TC4gZG9pOjEwLjEwMzgvbmF0dXJlMTQ1MzkuIFBNSUTCoDI2MDE3NDQyLiBTMkNJRMKgMzA3NDA5Ni4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5MZWZmZXIsIExhdXJlbiwgXCJUaGUgUmlza3Mgb2YgVHJ1c3RpbmcgQUk6IFdlIG11c3QgYXZvaWQgaHVtYW5pemluZyBtYWNoaW5lLWxlYXJuaW5nIG1vZGVscyB1c2VkIGluIHNjaWVudGlmaWMgcmVzZWFyY2hcIiwgU2NpZW50aWZpYyBBbWVyaWNhbiwgdm9sLiAzMzAsIG5vLiA2IChKdW5lIDIwMjQpLCBwcC4gODDigJM4MS5cbkxlcG9yZSwgSmlsbCwgXCJUaGUgQ2hpdC1DaGF0Ym90OiBJcyB0YWxraW5nIHdpdGggYSBtYWNoaW5lIGEgY29udmVyc2F0aW9uP1wiLCBUaGUgTmV3IFlvcmtlciwgNyBPY3RvYmVyIDIwMjQsIHBwLiAxMuKAkzE2LlxuTWFzY2hhZmlsbSAoMjAxMCkuIFwiQ29udGVudDogUGx1ZyAmIFByYXkgRmlsbSDigJMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ug4oCTIFJvYm90c1wiLiBwbHVnYW5kcHJheS1maWxtLmRlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMiBGZWJydWFyeSAyMDE2LlxuTWFyY3VzLCBHYXJ5LCBcIkFydGlmaWNpYWwgQ29uZmlkZW5jZTogRXZlbiB0aGUgbmV3ZXN0LCBidXp6aWVzdCBzeXN0ZW1zIG9mIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgYXJlIHN0eW1taWVkIGJ5IHRoZSBzYW1lIG9sZCBwcm9ibGVtc1wiLCBTY2llbnRpZmljIEFtZXJpY2FuLCB2b2wuIDMyNywgbm8uIDQgKE9jdG9iZXIgMjAyMiksIHBwLsKgNDLigJM0NS5cbk1pdGNoZWxsLCBNZWxhbmllICgyMDE5KS4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6IGEgZ3VpZGUgZm9yIHRoaW5raW5nIGh1bWFucy4gTmV3IFlvcms6IEZhcnJhciwgU3RyYXVzIGFuZCBHaXJvdXguIElTQk7CoDk3OC0wLTM3NDItNTc4My01LlxuTW5paCwgVm9sb2R5bXlyOyBLYXZ1a2N1b2dsdSwgS29yYXk7IFNpbHZlciwgRGF2aWQ7IGV0wqBhbC4gKDI2IEZlYnJ1YXJ5IDIwMTUpLiBcIkh1bWFuLWxldmVsIGNvbnRyb2wgdGhyb3VnaCBkZWVwIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmdcIi4gTmF0dXJlLiA1MTggKDc1NDApOiA1MjnigJM1MzMuIEJpYmNvZGU6MjAxNU5hdHVyLjUxOC4uNTI5TS4gZG9pOjEwLjEwMzgvbmF0dXJlMTQyMzYuIFBNSUTCoDI1NzE5NjcwLiBTMkNJRMKgMjA1MjQyNzQwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuIEludHJvZHVjZWQgRFFOLCB3aGljaCBwcm9kdWNlZCBodW1hbi1sZXZlbCBwZXJmb3JtYW5jZSBvbiBzb21lIEF0YXJpIGdhbWVzLlxuUHJlc3MsIEV5YWwsIFwiSW4gRnJvbnQgb2YgVGhlaXIgRmFjZXM6IERvZXMgZmFjaWFsLXJlY29nbml0aW9uIHRlY2hub2xvZ3kgbGVhZCBwb2xpY2UgdG8gaWdub3JlIGNvbnRyYWRpY3RvcnkgZXZpZGVuY2U/XCIsIFRoZSBOZXcgWW9ya2VyLCAyMCBOb3ZlbWJlciAyMDIzLCBwcC7CoDIw4oCTMjYuXG5cIlJvYm90cyBjb3VsZCBkZW1hbmQgbGVnYWwgcmlnaHRzXCIuIEJCQyBOZXdzLiAyMSBEZWNlbWJlciAyMDA2LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBPY3RvYmVyIDIwMTkuIFJldHJpZXZlZCAzIEZlYnJ1YXJ5IDIwMTEuXG5Sb2l2YWluZW4sIEVrYSwgXCJBSSdzIElROiBDaGF0R1BUIGFjZWQgYSBbc3RhbmRhcmQgaW50ZWxsaWdlbmNlXSB0ZXN0IGJ1dCBzaG93ZWQgdGhhdCBpbnRlbGxpZ2VuY2UgY2Fubm90IGJlIG1lYXN1cmVkIGJ5IElRIGFsb25lXCIsIFNjaWVudGlmaWMgQW1lcmljYW4sIHZvbC4gMzI5LCBuby4gMSAoSnVseS9BdWd1c3QgMjAyMyksIHAuwqA3LiBcIkRlc3BpdGUgaXRzIGhpZ2ggSVEsIENoYXRHUFQgZmFpbHMgYXQgdGFza3MgdGhhdCByZXF1aXJlIHJlYWwgaHVtYW5saWtlIHJlYXNvbmluZyBvciBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwaHlzaWNhbCBhbmQgc29jaWFsIHdvcmxkLi4uLiBDaGF0R1BUIHNlZW1lZCB1bmFibGUgdG8gcmVhc29uIGxvZ2ljYWxseSBhbmQgdHJpZWQgdG8gcmVseSBvbiBpdHMgdmFzdCBkYXRhYmFzZSBvZi4uLiBmYWN0cyBkZXJpdmVkIGZyb20gb25saW5lIHRleHRzLlwiXG5TY2hhcnJlLCBQYXVsLCBcIktpbGxlciBBcHBzOiBUaGUgUmVhbCBEYW5nZXJzIG9mIGFuIEFJIEFybXMgUmFjZVwiLCBGb3JlaWduIEFmZmFpcnMsIHZvbC4gOTgsIG5vLiAzIChNYXkvSnVuZSAyMDE5KSwgcHAuwqAxMzXigJMxNDQuIFwiVG9kYXkncyBBSSB0ZWNobm9sb2dpZXMgYXJlIHBvd2VyZnVsIGJ1dCB1bnJlbGlhYmxlLiBSdWxlcy1iYXNlZCBzeXN0ZW1zIGNhbm5vdCBkZWFsIHdpdGggY2lyY3Vtc3RhbmNlcyB0aGVpciBwcm9ncmFtbWVycyBkaWQgbm90IGFudGljaXBhdGUuIExlYXJuaW5nIHN5c3RlbXMgYXJlIGxpbWl0ZWQgYnkgdGhlIGRhdGEgb24gd2hpY2ggdGhleSB3ZXJlIHRyYWluZWQuIEFJIGZhaWx1cmVzIGhhdmUgYWxyZWFkeSBsZWQgdG8gdHJhZ2VkeS4gQWR2YW5jZWQgYXV0b3BpbG90IGZlYXR1cmVzIGluIGNhcnMsIGFsdGhvdWdoIHRoZXkgcGVyZm9ybSB3ZWxsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgaGF2ZSBkcml2ZW4gY2FycyB3aXRob3V0IHdhcm5pbmcgaW50byB0cnVja3MsIGNvbmNyZXRlIGJhcnJpZXJzLCBhbmQgcGFya2VkIGNhcnMuIEluIHRoZSB3cm9uZyBzaXR1YXRpb24sIEFJIHN5c3RlbXMgZ28gZnJvbSBzdXBlcnNtYXJ0IHRvIHN1cGVyZHVtYiBpbiBhbiBpbnN0YW50LiBXaGVuIGFuIGVuZW15IGlzIHRyeWluZyB0byBtYW5pcHVsYXRlIGFuZCBoYWNrIGFuIEFJIHN5c3RlbSwgdGhlIHJpc2tzIGFyZSBldmVuIGdyZWF0ZXIuXCIgKHAuwqAxNDAuKVxuU2NodWx6LCBIYW5uZXM7IEJlaG5rZSwgU3ZlbiAoMSBOb3ZlbWJlciAyMDEyKS4gXCJEZWVwIExlYXJuaW5nXCIuIEtJIOKAkyBLw7xuc3RsaWNoZSBJbnRlbGxpZ2Vuei4gMjYgKDQpOiAzNTfigJMzNjMuIGRvaToxMC4xMDA3L3MxMzIxOC0wMTItMDE5OC16LiBJU1NOwqAxNjEwLTE5ODcuIFMyQ0lEwqAyMjA1MjM1NjIuXG5TZXJlbmtvLCBBbGV4YW5kZXI7IE1pY2hhZWwgRG9oYW4gKDIwMTEpLiBcIkNvbXBhcmluZyB0aGUgZXhwZXJ0IHN1cnZleSBhbmQgY2l0YXRpb24gaW1wYWN0IGpvdXJuYWwgcmFua2luZyBtZXRob2RzOiBFeGFtcGxlIGZyb20gdGhlIGZpZWxkIG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIgKFBERikuIEpvdXJuYWwgb2YgSW5mb3JtZXRyaWNzLiA1ICg0KTogNjI54oCTNjQ5LiBkb2k6MTAuMTAxNi9qLmpvaS4yMDExLjA2LjAwMi4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBPY3RvYmVyIDIwMTMuIFJldHJpZXZlZCAxMiBTZXB0ZW1iZXIgMjAxMy5cblNpbHZlciwgRGF2aWQ7IEh1YW5nLCBBamE7IE1hZGRpc29uLCBDaHJpcyBKLjsgZXTCoGFsLiAoMjggSmFudWFyeSAyMDE2KS4gXCJNYXN0ZXJpbmcgdGhlIGdhbWUgb2YgR28gd2l0aCBkZWVwIG5ldXJhbCBuZXR3b3JrcyBhbmQgdHJlZSBzZWFyY2hcIi4gTmF0dXJlLiA1MjkgKDc1ODcpOiA0ODTigJM0ODkuIEJpYmNvZGU6MjAxNk5hdHVyLjUyOS4uNDg0Uy4gZG9pOjEwLjEwMzgvbmF0dXJlMTY5NjEuIFBNSUTCoDI2ODE5MDQyLiBTMkNJRMKgNTE1OTI1LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WYXN3YW5pLCBBc2hpc2gsIE5vYW0gU2hhemVlciwgTmlraSBQYXJtYXIgZXQgYWwuIFwiQXR0ZW50aW9uIGlzIGFsbCB5b3UgbmVlZC5cIiBBZHZhbmNlcyBpbiBuZXVyYWwgaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBzeXN0ZW1zIDMwICgyMDE3KS4gU2VtaW5hbCBwYXBlciBvbiB0cmFuc2Zvcm1lcnMuXG5WaW5jZW50LCBKYW1lcywgXCJIb3JueSBSb2JvdCBCYWJ5IFZvaWNlOiBKYW1lcyBWaW5jZW50IG9uIEFJIGNoYXRib3RzXCIsIExvbmRvbiBSZXZpZXcgb2YgQm9va3MsIHZvbC4gNDYsIG5vLiAxOSAoMTAgT2N0b2JlciAyMDI0KSwgcHAuIDI54oCTMzIuIFwiW0FJIGNoYXRib3RdIHByb2dyYW1zIGFyZSBtYWRlIHBvc3NpYmxlIGJ5IG5ldyB0ZWNobm9sb2dpZXMgYnV0IHJlbHkgb24gdGhlIHRpbWVsZWxzcyBodW1hbiB0ZW5kZW5jeSB0byBhbnRocm9wb21vcnBoaXNlLlwiIChwLiAyOS4pXG5XaGl0ZSBQYXBlcjogT24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ug4oCTIEEgRXVyb3BlYW4gYXBwcm9hY2ggdG8gZXhjZWxsZW5jZSBhbmQgdHJ1c3QgKFBERikuIEJydXNzZWxzOiBFdXJvcGVhbiBDb21taXNzaW9uLiAyMDIwLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBGZWJydWFyeSAyMDIwLiBSZXRyaWV2ZWQgMjAgRmVicnVhcnkgMjAyMC5cbkV4dGVybmFsIGxpbmtzXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZVxuYXQgV2lraXBlZGlhJ3Mgc2lzdGVyIHByb2plY3RzXG5EZWZpbml0aW9ucyBmcm9tIFdpa3Rpb25hcnlcbk1lZGlhIGZyb20gQ29tbW9uc1xuUXVvdGF0aW9ucyBmcm9tIFdpa2lxdW90ZVxuVGV4dGJvb2tzIGZyb20gV2lraWJvb2tzXG5SZXNvdXJjZXMgZnJvbSBXaWtpdmVyc2l0eVxuRGF0YSBmcm9tIFdpa2lkYXRhXG5TY2hvbGlhIGhhcyBhIHRvcGljIHByb2ZpbGUgZm9yIEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLlxuXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBJbnRlcm5ldCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeS5cbnNob3dcbnZ0ZVxuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKEFJKVxuc2hvd1xuQXJ0aWNsZXMgcmVsYXRlZCB0byBBcnRpZmljaWFsIGludGVsbGlnZW5jZVxuQXV0aG9yaXR5IGNvbnRyb2wgZGF0YWJhc2VzOiBOYXRpb25hbCBcdFxuR2VybWFueVVuaXRlZCBTdGF0ZXNGcmFuY2VCbkYgZGF0YUphcGFuQ3plY2ggUmVwdWJsaWNTcGFpbkxhdHZpYUlzcmFlbFxuQ2F0ZWdvcmllczogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VDb21wdXRhdGlvbmFsIGZpZWxkcyBvZiBzdHVkeUNvbXB1dGF0aW9uYWwgbmV1cm9zY2llbmNlQ3liZXJuZXRpY3NEYXRhIHNjaWVuY2VGb3JtYWwgc2NpZW5jZXNJbnRlbGxpZ2VuY2UgYnkgdHlwZVxuVGhpcyBwYWdlIHdhcyBsYXN0IGVkaXRlZCBvbiAxMCBGZWJydWFyeSAyMDI1LCBhdCAwMzo1NsKgKFVUQykuXG5UZXh0IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBMaWNlbnNlOyBhZGRpdGlvbmFsIHRlcm1zIG1heSBhcHBseS4gQnkgdXNpbmcgdGhpcyBzaXRlLCB5b3UgYWdyZWUgdG8gdGhlIFRlcm1zIG9mIFVzZSBhbmQgUHJpdmFjeSBQb2xpY3kuIFdpa2lwZWRpYcKuIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgdGhlIFdpa2ltZWRpYSBGb3VuZGF0aW9uLCBJbmMuLCBhIG5vbi1wcm9maXQgb3JnYW5pemF0aW9uLlxuUHJpdmFjeSBwb2xpY3lcbkFib3V0IFdpa2lwZWRpYVxuRGlzY2xhaW1lcnNcbkNvbnRhY3QgV2lraXBlZGlhXG5Db2RlIG9mIENvbmR1Y3RcbkRldmVsb3BlcnNcblN0YXRpc3RpY3NcbkNvb2tpZSBzdGF0ZW1lbnRcbk1vYmlsZSB2aWV3IiwicHVibGlzaGVkVGltZSI6IjIwMDEtMTAtMDhUMTY6NTU6NDlaIiwidXNhZ2UiOnsidG9rZW5zIjo0ODc0MH19fQ==\",\n", - " \"headers\": {\n", - " \"nel\": \"{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\",\n", - " \"date\": \"Thu, 13 Feb 2025 21:20:25 GMT\",\n", - " \"cf-ray\": \"9117dbfe28c87007-IAD\",\n", - " \"server\": \"cloudflare\",\n", - " \"alt-svc\": \"h3=\\\":443\\\"; ma=86400\",\n", - " \"report-to\": \"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w0KDRBknR%2BgbVq9tZQEJnnLHzmqInUNKBRG7S5zDuw2y1bpgas9WwEH8Pfz4zS9O1JvswUlIXzdJokFQGooWgfpv%2F45DN23ZGA4xGfn4xXjbzCJMXEdwFDbPlA%3D%3D\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\",\n", - " \"connection\": \"keep-alive\",\n", - " \"content-type\": \"application/json; charset=utf-8\",\n", - " \"x-powered-by\": \"Express\",\n", - " \"server-timing\": \"cfL4;desc=\\\"?proto=TCP&rtt=38737&min_rtt=35419&rtt_var=19919&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2826&recv_bytes=1036&delivery_rate=46733&cwnd=32&unsent_bytes=0&cid=d6c3bb713ed46822&ts=30978&x=0\\\"\",\n", - " \"cf-cache-status\": \"DYNAMIC\",\n", - " \"content-encoding\": \"gzip\",\n", - " \"transfer-encoding\": \"chunked\",\n", - " \"x-cloud-trace-context\": \"7760459c228c46200e94b7951f61fbfd\",\n", - " \"access-control-allow-origin\": \"*\"\n", - " },\n", - " \"status_code\": 200\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n", - "Index: 1 Type: init\n", - "output: {\n", - " \"url\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n", - " \"reducing_strength\": 5\n", - "}\n", - "----------------------------------------------------------------------------------------------------\n" - ] - } - ], - "source": [ - "import json\n", - "execution_transitions = client.executions.transitions.list(\n", - " execution_id=execution.id).items\n", - "\n", - "for index, transition in enumerate((execution_transitions)):\n", - " print(\"Index: \", len(execution_transitions) - index, \" Type: \", transition.type)\n", - " print(\"output: \", json.dumps(transition.output, indent=2))\n", - " print(\"-\" * 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Crawled pages: \n" - ] - }, - { - "data": { - "text/plain": [ - "{'json': {'code': 200,\n", - " 'data': {'url': 'https://en.wikipedia.org/wiki/Artificial_intelligence',\n", - " 'links': {'': 'https://en.wikipedia.org/wiki/Artificial_intelligence?action=edit',\n", - " '1': 'https://en.wikipedia.org/wiki/GPT-1',\n", - " '2': 'https://en.wikipedia.org/wiki/GPT-2',\n", - " '3': 'https://en.wikipedia.org/wiki/GPT-3',\n", - " '4': 'https://en.wikipedia.org/wiki/GPT-4',\n", - " 'J': 'https://en.wikipedia.org/wiki/GPT-J',\n", - " '^': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTEGalvan1997_451-0',\n", - " 'b': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-Kateman-2023_436-1',\n", - " 'c': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-Thomson-2022_435-2',\n", - " 'd': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTEUNESCO2021_340-3',\n", - " 'e': 'https://en.wikipedia.org/wiki/Special:EditPage/Template:Glossaries_of_science_and_engineering',\n", - " 'f': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTERussellNorvig2021785_124-5',\n", - " 'g': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_ref-FOOTNOTERussellNorvig2021785_124-6',\n", - " 't': 'https://en.wikipedia.org/wiki/Template_talk:Glossaries_of_science_and_engineering',\n", - " 'v': 'https://en.wikipedia.org/wiki/Template:Glossaries_of_science_and_engineering',\n", - " '15': 'https://archive.org/details/softwarestudiesl00full_007/page/n29',\n", - " '4o': 'https://en.wikipedia.org/wiki/GPT-4o',\n", - " 'A*': 'https://en.wikipedia.org/wiki/A*_search_algorithm',\n", - " 'Go': 'https://en.wikipedia.org/wiki/Go_(game)',\n", - " 'IQ': 'https://en.wikipedia.org/wiki/IQ',\n", - " 'T5': 'https://en.wikipedia.org/wiki/T5_(language_model)',\n", - " 'o1': 'https://en.wikipedia.org/wiki/OpenAI_o1',\n", - " 'o3': 'https://en.wikipedia.org/wiki/OpenAI_o3',\n", - " 'ABB': 'https://en.wikipedia.org/wiki/ABB',\n", - " 'AGI': 'https://en.wikipedia.org/wiki/Artificial_general_intelligence',\n", - " 'Art': 'https://en.wikipedia.org/wiki/Artificial_intelligence_art',\n", - " 'DQN': 'https://en.wikipedia.org/wiki/Deep_Q-learning',\n", - " 'FCC': 'https://en.wikipedia.org/wiki/FCC',\n", - " 'FDA': 'https://en.wikipedia.org/wiki/FDA',\n", - " 'FTC': 'https://en.wikipedia.org/wiki/Federal_Trade_Commission',\n", - " 'GPT': 'https://en.wikipedia.org/wiki/Generative_pre-trained_transformer',\n", - " 'GRE': 'https://en.wikipedia.org/wiki/GRE',\n", - " 'HWR': 'https://en.wikipedia.org/wiki/Handwriting_recognition',\n", - " 'IBM': 'https://en.wikipedia.org/wiki/IBM',\n", - " 'Ido': 'https://io.wikipedia.org/wiki/Artifical_inteligenteso',\n", - " 'NLP': 'https://en.wikipedia.org/wiki/Natural_language_processing',\n", - " 'NMT': 'https://en.wikipedia.org/wiki/Neural_machine_translation',\n", - " 'OCR': 'https://en.wikipedia.org/wiki/Optical_character_recognition',\n", - " 'PMC': 'https://en.wikipedia.org/wiki/PMC_(identifier)',\n", - " 'RAG': 'https://en.wikipedia.org/wiki/Retrieval-augmented_generation',\n", - " 'SAT': 'https://en.wikipedia.org/wiki/SAT',\n", - " 'SGD': 'https://en.wikipedia.org/wiki/Stochastic_gradient_descent',\n", - " 'Veo': 'https://en.wikipedia.org/wiki/Google_DeepMind#Video_model',\n", - " 'XAI': 'https://en.wikipedia.org/wiki/Explainable_Artificial_Intelligence',\n", - " '[1]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211%E2%80%934-1',\n", - " '[2]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-2',\n", - " '[3]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-3',\n", - " '[4]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Artificial_general_intelligence-5',\n", - " '[5]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-7',\n", - " '[6]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Dartmouth_workshop-8',\n", - " '[7]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Succ1-9',\n", - " '[8]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Fund01-10',\n", - " '[9]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-First_AI_Winter-11',\n", - " '[a]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Problems_of_AI-4',\n", - " '[b]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Tools_of_AI-6',\n", - " '[c]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-34',\n", - " '[d]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-35',\n", - " '[e]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-48',\n", - " '[f]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-57',\n", - " '[g]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-100',\n", - " '[h]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-103',\n", - " '[i]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-129',\n", - " '[j]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-131',\n", - " '[k]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-247',\n", - " '[l]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-257',\n", - " '[m]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-263',\n", - " '[n]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-270',\n", - " '[o]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-279',\n", - " '[p]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-291',\n", - " '[q]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-300',\n", - " '[r]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-356',\n", - " '[s]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-360',\n", - " '[t]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-362',\n", - " '[u]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-364',\n", - " '[v]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-365',\n", - " '[w]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-370',\n", - " '[x]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-381',\n", - " '[y]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-388',\n", - " '[z]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-392',\n", - " 'arm': 'https://en.wikipedia.org/wiki/Robotic_arm',\n", - " 'doi': 'https://en.wikipedia.org/wiki/Doi_(identifier)',\n", - " 'hdl': 'https://en.wikipedia.org/wiki/Hdl_(identifier)',\n", - " 'law': 'https://en.wikipedia.org/wiki/Law',\n", - " 'AAAI': 'https://en.wikipedia.org/wiki/AAAI',\n", - " 'ADAS': 'https://en.wikipedia.org/wiki/Advanced_driver-assistance_system',\n", - " 'AIME': 'https://en.wikipedia.org/wiki/American_Invitational_Mathematics_Examination',\n", - " 'BERT': 'https://en.wikipedia.org/wiki/BERT_(language_model)',\n", - " 'Data': 'https://www.wikidata.org/wiki/Q11660',\n", - " 'FRAM': 'https://en.wikipedia.org/wiki/Ferroelectric_RAM',\n", - " 'Face': 'https://en.wikipedia.org/wiki/Facial_recognition_system',\n", - " 'Fact': 'https://en.wikipedia.org/wiki/Fact',\n", - " 'Flux': 'https://en.wikipedia.org/wiki/Flux_(text-to-image_model)',\n", - " 'Form': 'https://en.wikipedia.org/wiki/Form_factor_(design)',\n", - " 'GPUs': 'https://en.wikipedia.org/wiki/GPUs',\n", - " 'Grok': 'https://en.wikipedia.org/wiki/Grok_(chatbot)',\n", - " 'Help': 'https://en.wikipedia.org/wiki/Help:Contents',\n", - " 'ISBN': 'https://en.wikipedia.org/wiki/ISBN_(identifier)',\n", - " 'ISSN': 'https://en.wikipedia.org/wiki/ISSN_(identifier)',\n", - " 'Idea': 'https://en.wikipedia.org/wiki/Idea',\n", - " 'Igbo': 'https://ig.wikipedia.org/wiki/%E1%BB%8Cg%E1%BB%A5g%E1%BB%A5_isi',\n", - " 'Jawa': 'https://jv.wikipedia.org/wiki/Kacerdhasan_gaw%C3%A9yan',\n", - " 'KUKA': 'https://en.wikipedia.org/wiki/KUKA',\n", - " 'Kits': 'https://en.wikipedia.org/wiki/Robot_kit',\n", - " 'LCCN': 'https://en.wikipedia.org/wiki/LCCN_(identifier)',\n", - " 'Laws': 'https://en.wikipedia.org/wiki/Laws_of_robotics',\n", - " 'Lean': 'https://en.wikipedia.org/wiki/Lean_(proof_assistant)',\n", - " 'Lisp': 'https://en.wikipedia.org/wiki/Lisp_(programming_language)',\n", - " 'List': 'https://en.wikipedia.org/wiki/List_of_emerging_technologies',\n", - " 'MRAM': 'https://en.wikipedia.org/wiki/Magnetoresistive_RAM',\n", - " 'Meta': 'https://en.wikipedia.org/wiki/Meta_Platforms',\n", - " 'Mind': 'https://en.wikipedia.org/wiki/Mind',\n", - " 'NRAM': 'https://en.wikipedia.org/wiki/Nano-RAM',\n", - " 'OCLC': 'https://en.wikipedia.org/wiki/OCLC_(identifier)',\n", - " 'PMID': 'https://en.wikipedia.org/wiki/PMID_(identifier)',\n", - " 'PRAM': 'https://en.wikipedia.org/wiki/Phase-change_memory',\n", - " 'PaLM': 'https://en.wikipedia.org/wiki/PaLM',\n", - " 'Pain': 'https://en.wikipedia.org/wiki/Pain_(philosophy)',\n", - " 'Qwen': 'https://en.wikipedia.org/wiki/Qwen',\n", - " 'RFID': 'https://en.wikipedia.org/wiki/Radio-frequency_identification',\n", - " 'RLHF': 'https://en.wikipedia.org/wiki/Reinforcement_learning_from_human_feedback',\n", - " 'RRAM': 'https://en.wikipedia.org/wiki/Resistive_random-access_memory',\n", - " 'Read': 'https://en.wikipedia.org/wiki/Artificial_intelligence',\n", - " 'SSRN': 'https://en.wikipedia.org/wiki/SSRN_(identifier)',\n", - " 'Siri': 'https://en.wikipedia.org/wiki/Siri',\n", - " 'Size': 'https://en.wikipedia.org/wiki/List_of_computer_size_categories',\n", - " 'Sora': 'https://en.wikipedia.org/wiki/Sora_(text-to-video_model)',\n", - " 'Talk': 'https://en.wikipedia.org/wiki/Talk:Artificial_intelligence',\n", - " 'Udio': 'https://en.wikipedia.org/wiki/Udio',\n", - " 'WIPO': 'https://en.wikipedia.org/wiki/WIPO',\n", - " '[10]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Second_AI_Winter-12',\n", - " '[11]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Deep_learning_revolution-13',\n", - " '[12]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEToews2023-14',\n", - " '[13]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-15',\n", - " '[14]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-16',\n", - " '[15]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Intractability_and_efficiency_and_the_combinatorial_explosion-17',\n", - " '[16]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Psychological_evidence_of_the_prevalence_of_sub-18',\n", - " '[17]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-19',\n", - " '[18]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESmoliarZhang1994-20',\n", - " '[19]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENeumannM%C3%B6ller2008-21',\n", - " '[20]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKupermanReichleyBailey2006-22',\n", - " '[21]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcGarry2005-23',\n", - " '[22]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBertiniDel_BimboTorniai2006-24',\n", - " '[23]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021272-25',\n", - " '[24]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-26',\n", - " '[25]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-27',\n", - " '[26]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-28',\n", - " '[27]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-29',\n", - " '[28]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Default_reasoning-30',\n", - " '[29]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Breadth_of_commonsense_knowledge-31',\n", - " '[30]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENewquist1994296-32',\n", - " '[31]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier1993204%E2%80%93208-33',\n", - " '[32]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021528-36',\n", - " '[33]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-37',\n", - " '[34]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-38',\n", - " '[35]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-39',\n", - " '[36]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-40',\n", - " '[37]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-41',\n", - " '[38]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-42',\n", - " '[39]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-43',\n", - " '[40]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-44',\n", - " '[41]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-45',\n", - " '[42]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring1950-46',\n", - " '[43]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESolomonoff1956-47',\n", - " '[44]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-49',\n", - " '[45]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Supervised_learning-50',\n", - " '[46]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-51',\n", - " '[47]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-52',\n", - " '[48]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-53',\n", - " '[49]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-54',\n", - " '[50]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-55',\n", - " '[51]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-56',\n", - " '[52]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021856%E2%80%93858-58',\n", - " '[53]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDickson2022-59',\n", - " '[54]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-60',\n", - " '[55]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2019-61',\n", - " '[56]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021875%E2%80%93878-62',\n", - " '[57]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBushwick2023-63',\n", - " '[58]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-64',\n", - " '[59]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021849%E2%80%93850-65',\n", - " '[60]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021895%E2%80%93899-66',\n", - " '[61]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021899%E2%80%93901-67',\n", - " '[62]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChallaMorelandMu%C5%A1ickiEvans2011-68',\n", - " '[63]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021931%E2%80%93938-69',\n", - " '[64]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMIT_AIL2014-70',\n", - " '[65]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-71',\n", - " '[66]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWaddell2018-72',\n", - " '[67]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEPoriaCambriaBajpaiHussain2017-73',\n", - " '[68]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-74',\n", - " '[69]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-75',\n", - " '[70]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021sect._11.2-76',\n", - " '[71]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-77',\n", - " '[72]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-78',\n", - " '[73]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-79',\n", - " '[74]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-80',\n", - " '[75]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-81',\n", - " '[76]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-82',\n", - " '[77]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMerkleMiddendorf2013-83',\n", - " '[78]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-84',\n", - " '[79]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-85',\n", - " '[80]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-86',\n", - " '[81]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-87',\n", - " '[82]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-88',\n", - " '[83]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-89',\n", - " '[84]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-90',\n", - " '[85]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-91',\n", - " '[86]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Stoch-92',\n", - " '[87]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-93',\n", - " '[88]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-94',\n", - " '[89]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-95',\n", - " '[90]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Stochastic_temporal_models-96',\n", - " '[91]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-97',\n", - " '[92]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-98',\n", - " '[93]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015chpt._6-99',\n", - " '[94]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-101',\n", - " '[95]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015210-102',\n", - " '[96]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-104',\n", - " '[97]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-105',\n", - " '[98]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-106',\n", - " '[99]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-107',\n", - " '[aa]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-413',\n", - " '[ab]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-419',\n", - " '[ac]': \"https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Searle's_strong_AI-432\",\n", - " 'bias': 'https://en.wikipedia.org/wiki/Bias_(statistics)',\n", - " 'deep': 'https://en.wikipedia.org/wiki/Deep_learning',\n", - " 'edit': 'https://en.wikipedia.org/w/index.php?title=Generative_artificial_intelligence&action=edit',\n", - " 'harm': 'https://en.wikipedia.org/wiki/Harm',\n", - " 'mind': 'https://en.wikipedia.org/wiki/Mind',\n", - " 'null': 'https://en.wikipedia.org/wiki/Null_hypothesis',\n", - " 'self': 'https://en.wikipedia.org/wiki/Philosophy_of_self',\n", - " 'soft': 'https://en.wikipedia.org/wiki/Soft_computing',\n", - " 'tree': 'https://en.wikipedia.org/wiki/Game_tree',\n", - " '(Top)': 'https://en.wikipedia.org/wiki/Artificial_intelligence#',\n", - " '0–L': 'https://en.wikipedia.org/wiki/Glossary_of_cellular_and_molecular_biology_(0%E2%80%93L)',\n", - " '15.ai': 'https://en.wikipedia.org/wiki/15.ai',\n", - " 'Alexa': 'https://en.wikipedia.org/wiki/Amazon_Alexa',\n", - " 'Alvey': 'https://en.wikipedia.org/wiki/Alvey',\n", - " 'Apple': 'https://en.wikipedia.org/wiki/Apple_Computer',\n", - " 'Atari': 'https://en.wikipedia.org/wiki/Atari',\n", - " 'Audio': 'https://en.wikipedia.org/wiki/Generative_audio',\n", - " 'A–L': 'https://en.wikipedia.org/wiki/Glossary_of_engineering:_A%E2%80%93L',\n", - " 'A–M': 'https://en.wikipedia.org/wiki/Glossary_of_geography_terms_(A%E2%80%93M)',\n", - " 'BLOOM': 'https://en.wikipedia.org/wiki/BLOOM_(language_model)',\n", - " 'Baidu': 'https://en.wikipedia.org/wiki/Baidu',\n", - " 'CBRAM': 'https://en.wikipedia.org/wiki/Programmable_metallization_cell',\n", - " 'DARPA': 'https://en.wikipedia.org/wiki/DARPA',\n", - " 'Dansk': 'https://da.wikipedia.org/wiki/Kunstig_intelligens',\n", - " 'ECRAM': 'https://en.wikipedia.org/wiki/Electrochemical_RAM',\n", - " 'Eesti': 'https://et.wikipedia.org/wiki/Tehisintellekt',\n", - " 'FANUC': 'https://en.wikipedia.org/wiki/FANUC',\n", - " 'Fodor': 'https://en.wikipedia.org/wiki/Jerry_Fodor',\n", - " 'GOFAI': 'https://en.wikipedia.org/wiki/GOFAI',\n", - " 'GPGPU': 'https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_units',\n", - " 'GPT-3': 'https://en.wikipedia.org/wiki/GPT-3',\n", - " 'GPT-4': 'https://en.wikipedia.org/wiki/GPT-4',\n", - " 'Gaelg': 'https://gv.wikipedia.org/wiki/Far-in%C3%A7hynaght',\n", - " 'GloVe': 'https://en.wikipedia.org/wiki/GloVe',\n", - " 'Hausa': 'https://ha.wikipedia.org/wiki/Kirkirar_Basira',\n", - " 'Human': 'https://en.wikipedia.org/wiki/Human_intelligence',\n", - " 'Index': 'https://en.wikipedia.org/wiki/Index_of_robotics_articles',\n", - " 'Intel': 'https://en.wikipedia.org/wiki/Intel',\n", - " 'Ipsos': 'https://en.wikipedia.org/wiki/Ipsos',\n", - " 'JSTOR': 'https://en.wikipedia.org/wiki/JSTOR_(identifier)',\n", - " 'Japan': 'https://id.ndl.go.jp/auth/ndlna/00574798',\n", - " 'Kling': 'https://en.wikipedia.org/wiki/Kling_(text-to-video_model)',\n", - " 'LLaMA': 'https://en.wikipedia.org/wiki/LLaMA',\n", - " 'LLaMa': 'https://en.wikipedia.org/wiki/Llama_(language_model)',\n", - " 'LaMDA': 'https://en.wikipedia.org/wiki/LaMDA',\n", - " 'Llama': 'https://en.wikipedia.org/wiki/Llama_(language_model)',\n", - " 'Local': 'https://en.wikipedia.org/wiki/Local_search_(optimization)',\n", - " 'Logic': 'https://en.wikipedia.org/wiki/Logic_in_computer_science',\n", - " 'Malti': 'https://mt.wikipedia.org/wiki/Intelli%C4%A1enza_artifi%C4%8Bjali',\n", - " 'Mamba': 'https://en.wikipedia.org/wiki/Mamba_(deep_learning_architecture)',\n", - " 'Media': 'https://commons.wikimedia.org/wiki/Category:Artificial_intelligence',\n", - " 'Mixed': 'https://en.wikipedia.org/wiki/Mixed_reality',\n", - " 'Music': 'https://en.wikipedia.org/wiki/Music_and_artificial_intelligence',\n", - " 'M–Z': 'https://en.wikipedia.org/wiki/Glossary_of_cellular_and_molecular_biology_(M%E2%80%93Z)',\n", - " 'N–Z': 'https://en.wikipedia.org/wiki/Glossary_of_geography_terms_(N%E2%80%93Z)',\n", - " 'Pitts': 'https://en.wikipedia.org/wiki/Walter_Pitts',\n", - " 'Plato': 'https://en.wikipedia.org/wiki/Plato',\n", - " 'S2CID': 'https://en.wikipedia.org/wiki/S2CID_(identifier)',\n", - " 'SARSA': 'https://en.wikipedia.org/wiki/State%E2%80%93action%E2%80%93reward%E2%80%93state%E2%80%93action',\n", - " 'SONOS': 'https://en.wikipedia.org/wiki/SONOS',\n", - " 'Scots': 'https://sco.wikipedia.org/wiki/Artifeecial_intelligence',\n", - " 'Shqip': 'https://sq.wikipedia.org/wiki/Inteligjenca_artificiale',\n", - " 'Simon': 'https://en.wikipedia.org/wiki/Herbert_A._Simon',\n", - " 'Spain': 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX4659822',\n", - " 'Suite': 'https://en.wikipedia.org/wiki/Robotics_suite',\n", - " 'Suomi': 'https://fi.wikipedia.org/wiki/Teko%C3%A4ly',\n", - " 'Swarm': 'https://en.wikipedia.org/wiki/Swarm_robotics',\n", - " 'Types': 'https://en.wikipedia.org/wiki/Robot',\n", - " 'Võro': 'https://fiu-vro.wikipedia.org/wiki/Kunstm%C3%B5istus',\n", - " 'Walon': 'https://wa.wikipedia.org/wiki/S%C3%BBtist%C3%A9_%C3%A9ndjolike',\n", - " 'Waymo': 'https://en.wikipedia.org/wiki/Waymo',\n", - " '[100]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-108',\n", - " '[101]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-109',\n", - " '[102]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDomingos2015152-110',\n", - " '[103]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-111',\n", - " '[104]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Neural_networks-112',\n", - " '[105]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-113',\n", - " '[106]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-114',\n", - " '[107]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-115',\n", - " '[108]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-116',\n", - " '[109]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-117',\n", - " '[110]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Deep_learning-118',\n", - " '[111]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-119',\n", - " '[112]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDengYu2014199%E2%80%93200-120',\n", - " '[113]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECiresanMeierSchmidhuber2012-121',\n", - " '[114]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021751-122',\n", - " '[115]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202117-123',\n", - " '[116]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021785-124',\n", - " '[117]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._5-125',\n", - " '[118]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._6-126',\n", - " '[119]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._7-127',\n", - " '[120]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESchmidhuber2022sect._8-128',\n", - " '[121]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-130',\n", - " '[122]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESmith2023-132',\n", - " '[123]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-133',\n", - " '[124]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-134',\n", - " '[125]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMarmouyet2023-135',\n", - " '[126]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKobielus2019-136',\n", - " '[127]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-137',\n", - " '[128]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-138',\n", - " '[129]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-139',\n", - " '[130]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-140',\n", - " '[131]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-141',\n", - " '[132]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-142',\n", - " '[133]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-143',\n", - " '[134]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Bax-2023-144',\n", - " '[135]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-145',\n", - " '[136]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-146',\n", - " '[137]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-147',\n", - " '[138]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-148',\n", - " '[139]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-149',\n", - " '[140]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-150',\n", - " '[141]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-151',\n", - " '[142]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-152',\n", - " '[143]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-153',\n", - " '[144]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-154',\n", - " '[145]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-155',\n", - " '[146]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-156',\n", - " '[147]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-157',\n", - " '[148]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-158',\n", - " '[149]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-159',\n", - " '[150]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-160',\n", - " '[151]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-161',\n", - " '[152]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-162',\n", - " '[153]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-163',\n", - " '[154]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-164',\n", - " '[155]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-165',\n", - " '[156]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-166',\n", - " '[157]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-167',\n", - " '[158]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-CRS-2019-168',\n", - " '[159]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Slyusar-2019-169',\n", - " '[160]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-170',\n", - " '[161]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Davies-2023-171',\n", - " '[162]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-172',\n", - " '[163]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-173',\n", - " '[164]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-174',\n", - " '[165]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-175',\n", - " '[166]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-176',\n", - " '[167]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_:0-177',\n", - " '[168]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-178',\n", - " '[169]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_nytimes-179',\n", - " '[170]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_bloomberg-180',\n", - " '[171]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_nytimes-gpt4-181',\n", - " '[172]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-182',\n", - " '[173]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-183',\n", - " '[174]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_:4-184',\n", - " '[175]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_economist1-185',\n", - " '[176]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-186',\n", - " '[177]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-187',\n", - " '[178]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_economist2-188',\n", - " '[179]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-189',\n", - " '[180]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Generative_artificial_intelligence_mckinsey-190',\n", - " '[181]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-191',\n", - " '[182]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-192',\n", - " '[183]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-193',\n", - " '[184]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-194',\n", - " '[185]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-195',\n", - " '[186]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-196',\n", - " '[187]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-197',\n", - " '[188]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-198',\n", - " '[189]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-199',\n", - " '[190]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-200',\n", - " '[191]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-201',\n", - " '[192]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-202',\n", - " '[193]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-203',\n", - " '[194]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-204',\n", - " '[195]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-205',\n", - " '[196]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-206',\n", - " '[197]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-207',\n", - " '[198]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-208',\n", - " '[199]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-209',\n", - " '[200]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-210',\n", - " '[201]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESimonite2016-211',\n", - " '[202]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021987-212',\n", - " '[203]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELaskowski2023-213',\n", - " '[204]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGAO2022-214',\n", - " '[205]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEValinsky2019-215',\n", - " '[206]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021991-216',\n", - " '[207]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021991%E2%80%93992-217',\n", - " '[208]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202063-218',\n", - " '[209]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2022-219',\n", - " '[210]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-220',\n", - " '[211]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-221',\n", - " '[212]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEReisner2023-222',\n", - " '[213]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAlterHarris2023-223',\n", - " '[214]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-224',\n", - " '[215]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-225',\n", - " '[216]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-226',\n", - " '[217]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-227',\n", - " '[218]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-228',\n", - " '[219]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-229',\n", - " '[220]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-230',\n", - " '[221]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-231',\n", - " '[222]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-232',\n", - " '[223]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-233',\n", - " '[224]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-234',\n", - " '[225]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-235',\n", - " '[226]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-236',\n", - " '[227]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-237',\n", - " '[228]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-238',\n", - " '[229]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-DatacenterDynamics-239',\n", - " '[230]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-bloombergjp-240',\n", - " '[231]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Bloomberg20241104-241',\n", - " '[232]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENicas2018-242',\n", - " '[233]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-243',\n", - " '[234]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWilliams2023-244',\n", - " '[235]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETaylorHern2023-245',\n", - " '[236]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Samuel-2022-246',\n", - " '[237]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERose2023-248',\n", - " '[238]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECNA2019-249',\n", - " '[239]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGoffrey200817-250',\n", - " '[240]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-251',\n", - " '[241]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202025-252',\n", - " '[242]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021995-253',\n", - " '[243]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGrantHill2023-254',\n", - " '[244]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELarsonAngwin2016-255',\n", - " '[245]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202067%E2%80%9370-256',\n", - " '[246]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-258',\n", - " '[247]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-259',\n", - " '[248]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-260',\n", - " '[249]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-261',\n", - " '[250]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-262',\n", - " '[251]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDockrill2022-264',\n", - " '[252]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESample2017-265',\n", - " '[253]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-266',\n", - " '[254]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020110-267',\n", - " '[255]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202088%E2%80%9391-268',\n", - " '[256]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-269',\n", - " '[257]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202091-271',\n", - " '[258]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202083-272',\n", - " '[259]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVerma2021-273',\n", - " '[260]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERothman2020-274',\n", - " '[261]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020105%E2%80%93108-275',\n", - " '[262]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian2020108%E2%80%93112-276',\n", - " '[263]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-277',\n", - " '[264]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021989-278',\n", - " '[265]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021987%E2%80%93990-280',\n", - " '[266]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021988-281',\n", - " '[267]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-282',\n", - " '[268]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHarari2018-283',\n", - " '[269]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-284',\n", - " '[270]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-285',\n", - " '[271]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEUrbinaLentzosInvernizziEkins2022-286',\n", - " '[272]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-E-287',\n", - " '[273]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-288',\n", - " '[274]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEIGM_Chicago2017-289',\n", - " '[275]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEArntzGregoryZierahn201633-290',\n", - " '[276]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-292',\n", - " '[277]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-293',\n", - " '[278]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-294',\n", - " '[279]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMorgenstern2015-295',\n", - " '[280]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-296',\n", - " '[281]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-297',\n", - " '[282]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECellan-Jones2014-298',\n", - " '[283]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211001-299',\n", - " '[284]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBostrom2014-301',\n", - " '[285]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussell2019-302',\n", - " '[286]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-303',\n", - " '[287]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHarari2023-304',\n", - " '[288]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEM%C3%BCllerBostrom2014-305',\n", - " '[289]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-306',\n", - " '[290]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-307',\n", - " '[291]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-308',\n", - " '[292]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-309',\n", - " '[293]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEValance2023-310',\n", - " '[294]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-311',\n", - " '[295]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-312',\n", - " '[296]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-313',\n", - " '[297]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-314',\n", - " '[298]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-315',\n", - " '[299]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-316',\n", - " '[300]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChristian202067,_73-317',\n", - " '[301]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEYudkowsky2008-318',\n", - " '[302]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAndersonAnderson2011-319',\n", - " '[303]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAAAI2014-320',\n", - " '[304]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWallach2010-321',\n", - " '[305]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussell2019173-322',\n", - " '[306]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-323',\n", - " '[307]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-324',\n", - " '[308]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-325',\n", - " '[309]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-326',\n", - " '[310]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-327',\n", - " '[311]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-328',\n", - " '[312]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-329',\n", - " '[313]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-330',\n", - " '[314]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-331',\n", - " '[315]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-332',\n", - " '[316]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-333',\n", - " '[317]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-334',\n", - " '[318]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-335',\n", - " '[319]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-336',\n", - " '[320]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELaw_Library_of_Congress_(U.S.)._Global_Legal_Research_Directorate2019-337',\n", - " '[321]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEVincent2023-338',\n", - " '[322]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEStanford_University2023-339',\n", - " '[323]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEUNESCO2021-340',\n", - " '[324]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKissinger2021-341',\n", - " '[325]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAltmanBrockmanSutskever2023-342',\n", - " '[326]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-343',\n", - " '[327]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-344',\n", - " '[328]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEEdwards2023-345',\n", - " '[329]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKasperowicz2023-346',\n", - " '[330]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEFox_News2023-347',\n", - " '[331]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-348',\n", - " '[332]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-349',\n", - " '[333]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-350',\n", - " '[334]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-351',\n", - " '[335]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-352',\n", - " '[336]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20219-353',\n", - " '[337]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Clarendon_Press-2004-354',\n", - " '[338]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-355',\n", - " '[339]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-357',\n", - " '[340]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Turing-358',\n", - " '[341]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier199347%E2%80%9349-359',\n", - " '[342]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig200317-361',\n", - " '[343]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig200318-363',\n", - " '[344]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENewquist199486%E2%80%9386-366',\n", - " '[345]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-367',\n", - " '[346]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-368',\n", - " '[347]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202121-369',\n", - " '[348]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELighthill1973-371',\n", - " '[349]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENRC1999212%E2%80%93213-372',\n", - " '[350]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202122-373',\n", - " '[351]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-374',\n", - " '[352]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202124-375',\n", - " '[353]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENilsson19987-376',\n", - " '[354]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCorduck2004454%E2%80%93462-377',\n", - " '[355]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMoravec1988-378',\n", - " '[356]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEBrooks1990-379',\n", - " '[357]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-380',\n", - " '[358]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202125-382',\n", - " '[359]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-383',\n", - " '[360]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig202126-384',\n", - " '[361]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Formal_and_narrow_methods_adopted_in_the_1990s-385',\n", - " '[362]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-386',\n", - " '[363]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEWong2023-387',\n", - " '[364]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-389',\n", - " '[365]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEClark2015b-390',\n", - " '[366]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-391',\n", - " '[367]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-393',\n", - " '[368]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-394',\n", - " '[369]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-395',\n", - " '[370]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDiFeliciantonio2023-396',\n", - " '[371]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGoswami2023-397',\n", - " '[372]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-398',\n", - " '[373]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-399',\n", - " '[374]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Jarow-2024-400',\n", - " '[375]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-401',\n", - " '[376]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring19501-402',\n", - " '[377]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTETuring1950Under_%22The_Argument_from_Consciousness%22-403',\n", - " '[378]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-404',\n", - " '[379]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20213-405',\n", - " '[380]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMaker2006-406',\n", - " '[381]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCarthy1999-407',\n", - " '[382]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMinsky1986-408',\n", - " '[383]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-409',\n", - " '[384]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-410',\n", - " '[385]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-411',\n", - " '[386]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTENilsson198310-412',\n", - " '[387]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHaugeland1985112%E2%80%93117-414',\n", - " '[388]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-415',\n", - " '[389]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-416',\n", - " '[390]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-417',\n", - " '[391]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTECrevier1993125-418',\n", - " '[392]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTELangley2011-420',\n", - " '[393]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEKatz2012-421',\n", - " '[394]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-422',\n", - " '[395]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEPennachinGoertzel2007-423',\n", - " '[396]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERoberts2016-424',\n", - " '[397]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig2021986-425',\n", - " '[398]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEChalmers1995-426',\n", - " '[399]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEDennett1991-427',\n", - " '[400]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEHorst2005-428',\n", - " '[401]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESearle1999-429',\n", - " '[402]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTESearle19801-430',\n", - " '[403]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20219817-431',\n", - " '[404]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-433',\n", - " '[405]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-434',\n", - " '[406]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Thomson-2022-435',\n", - " '[407]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-Kateman-2023-436',\n", - " '[408]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-437',\n", - " '[409]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-438',\n", - " '[410]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-439',\n", - " '[411]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-440',\n", - " '[412]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-441',\n", - " '[413]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTERussellNorvig20211005-442',\n", - " '[414]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-443',\n", - " '[415]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-444',\n", - " '[416]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-v935-445',\n", - " '[417]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-AI_in_myth-446',\n", - " '[418]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCorduck2004340%E2%80%93400-447',\n", - " '[419]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEButtazzo2001-448',\n", - " '[420]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEAnderson2008-449',\n", - " '[421]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEMcCauley2007-450',\n", - " '[422]': 'https://en.wikipedia.org/wiki/Artificial_intelligence#cite_note-FOOTNOTEGalvan1997-451',\n", - " 'arXiv': 'https://en.wikipedia.org/wiki/ArXiv_(identifier)',\n", - " 'chess': 'https://en.wikipedia.org/wiki/Chess',\n", - " 'cs.AI': 'https://arxiv.org/archive/cs.AI',\n", - " 'cs.CL': 'https://arxiv.org/archive/cs.CL',\n", - " 'cs.LG': 'https://arxiv.org/archive/cs.LG',\n", - " 'learn': 'https://en.wikipedia.org/wiki/Machine_learning',\n", - " 'lidar': 'https://en.wikipedia.org/wiki/Lidar',\n", - " 'logic': 'https://en.wikipedia.org/wiki/Logic',\n", - " 'money': 'https://en.wikipedia.org/wiki/Money',\n", - " 'poker': 'https://en.wikipedia.org/wiki/Poker',\n", - " 'ruler': 'https://en.wikipedia.org/wiki/Ruler',\n", - " 'token': 'https://en.wikipedia.org/wiki/Lexical_analysis',\n", - " 'tools': 'https://en.wikipedia.org/wiki/Programming_tool',\n", - " 'trees': 'https://en.wikipedia.org/wiki/Tree_structure',\n", - " 'trope': 'https://en.wikipedia.org/wiki/Trope_(literature)',\n", - " '515925': 'https://api.semanticscholar.org/CorpusID:515925',\n", - " '677218': 'https://api.semanticscholar.org/CorpusID:677218',\n", - " 'AI art': 'https://en.wikipedia.org/wiki/AI_art',\n", - " 'Agency': 'https://en.wikipedia.org/wiki/Agency_(philosophy)',\n", - " 'Aliens': 'https://en.wikipedia.org/wiki/Aliens_(film)',\n", - " 'Amazon': 'https://en.wikipedia.org/wiki/Amazon_(company)',\n", - " 'Aurora': 'https://en.wikipedia.org/wiki/Aurora_(text-to-image_model)',\n", - " 'Betawi': 'https://bew.wikipedia.org/wiki/Calakan_bikinan',\n", - " 'Botany': 'https://en.wikipedia.org/wiki/Glossary_of_botanical_terms',\n", - " 'COMPAS': 'https://en.wikipedia.org/wiki/COMPAS_(software)',\n", - " 'Claude': 'https://en.wikipedia.org/wiki/Claude_(language_model)',\n", - " 'Cyborg': 'https://en.wikipedia.org/wiki/Cyborg',\n", - " 'DALL-E': 'https://en.wikipedia.org/wiki/DALL-E',\n", - " 'Donate': 'https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en',\n", - " 'Ethics': 'https://en.wikipedia.org/wiki/Robot_ethics',\n", - " 'Exelon': 'https://en.wikipedia.org/wiki/Exelon',\n", - " 'Formal': 'https://en.wikipedia.org/wiki/Artificial_intelligence#Neat_vs._scruffy',\n", - " 'France': 'https://catalogue.bnf.fr/ark:/12148/cb11932084t',\n", - " 'Furlan': 'https://fur.wikipedia.org/wiki/Inteligjence_artifici%C3%A2l',\n", - " 'Galego': 'https://gl.wikipedia.org/wiki/Intelixencia_artificial',\n", - " 'Gating': 'https://en.wikipedia.org/wiki/Gating_mechanism',\n", - " 'Gemini': 'https://en.wikipedia.org/wiki/Gemini_(language_model)',\n", - " 'Google': 'https://en.wikipedia.org/wiki/Google',\n", - " 'Gynoid': 'https://en.wikipedia.org/wiki/Gynoid',\n", - " 'IRobot': 'https://en.wikipedia.org/wiki/IRobot',\n", - " 'Imagen': 'https://en.wikipedia.org/wiki/Google_Brain#Text-to-image_model',\n", - " 'Israel': 'https://www.nli.org.il/en/authorities/987007294969105171',\n", - " 'Kismet': 'https://en.wikipedia.org/wiki/Kismet_(robot)',\n", - " 'Latina': 'https://la.wikipedia.org/wiki/Intellegentia_artificialis',\n", - " 'Latvia': 'https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=000050010&P_CON_LNG=ENG',\n", - " 'Ligure': 'https://lij.wikipedia.org/wiki/Intelligensa_artifi%C3%A7iale',\n", - " 'Log in': 'https://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Artificial+intelligence',\n", - " 'Magyar': 'https://hu.wikipedia.org/wiki/Mesters%C3%A9ges_intelligencia',\n", - " 'Minsky': 'https://en.wikipedia.org/wiki/Marvin_Minsky',\n", - " 'MuZero': 'https://en.wikipedia.org/wiki/MuZero',\n", - " 'Nature': 'https://en.wikipedia.org/wiki/Nature_(philosophy)',\n", - " 'Newell': 'https://en.wikipedia.org/wiki/Allen_Newell',\n", - " 'Norvig': 'https://en.wikipedia.org/wiki/Norvig',\n", - " 'Nvidia': 'https://en.wikipedia.org/wiki/Nvidia',\n", - " 'OpenAI': 'https://en.wikipedia.org/wiki/OpenAI',\n", - " 'Papert': 'https://en.wikipedia.org/wiki/Papert',\n", - " 'Patois': 'https://jam.wikipedia.org/wiki/Aatifishal_intelijens',\n", - " 'Picard': 'https://pcd.wikipedia.org/wiki/Int%C3%A9rligince_artificielle',\n", - " 'Polski': 'https://pl.wikipedia.org/wiki/Sztuczna_inteligencja',\n", - " 'Prolog': 'https://en.wikipedia.org/wiki/Prolog',\n", - " 'Python': 'https://en.wikipedia.org/wiki/Python_(programming_language)',\n", - " 'Qualia': 'https://en.wikipedia.org/wiki/Qualia',\n", - " 'R.U.R.': 'https://en.wikipedia.org/wiki/R.U.R.',\n", - " 'Retail': 'https://en.wikipedia.org/wiki/Automated_retail',\n", - " 'SHRDLU': 'https://en.wikipedia.org/wiki/SHRDLU',\n", - " 'Search': 'https://en.wikipedia.org/wiki/Special:Search',\n", - " 'Taiwan': 'https://en.wikipedia.org/wiki/Taiwan',\n", - " 'Theory': 'https://en.wikipedia.org/wiki/Theory',\n", - " 'TikTok': 'https://en.wikipedia.org/wiki/TikTok',\n", - " 'Tracks': 'https://en.wikipedia.org/wiki/Continuous_track',\n", - " 'Watson': 'https://en.wikipedia.org/wiki/Watson_(artificial_intelligence_software)',\n", - " 'Zazaki': 'https://diq.wikipedia.org/wiki/Viro_v%C4%B1ra%C5%9Ft%C4%B1k%C3%AAn',\n", - " 'Zombie': 'https://en.wikipedia.org/wiki/Philosophical_zombie',\n", - " 'aerial': 'https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle',\n", - " 'argued': 'https://en.wikipedia.org/wiki/Dreyfus%27_critique_of_AI',\n", - " 'axioms': 'https://en.wikipedia.org/wiki/Axiom',\n", - " 'biased': 'https://en.wikipedia.org/wiki/Algorithmic_bias',\n", - " 'choice': 'https://en.wikipedia.org/wiki/Theory_choice',\n", - " 'design': 'https://en.wikipedia.org/wiki/Design_of_experiments',\n", - " 'drones': 'https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle',\n", - " 'frames': 'https://en.wikipedia.org/wiki/Frame_(artificial_intelligence)',\n", - " 'ground': 'https://en.wikipedia.org/wiki/Unmanned_ground_vehicle',\n", - " 'iPhoto': 'https://en.wikipedia.org/wiki/IPhoto',\n", - " 'linear': 'https://en.wikipedia.org/wiki/Linear',\n", - " 'narrow': 'https://en.wikipedia.org/wiki/Artificial_intelligence#Narrow_vs._general_AI',\n", - " 'online': 'https://www.nytimes.com/2023/07/18/magazine/wikipedia-ai-chatgpt.html',\n", - " 'policy': 'https://en.wikipedia.org/wiki/Reinforcement_learning#Policy',\n", - " 'reason': 'https://en.wikipedia.org/wiki/Reason',\n", - " 'search': 'https://en.wikipedia.org/wiki/State_space_search',\n", - " 'weight': 'https://en.wikipedia.org/wiki/Weighting',\n", - " '中文': 'https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD',\n", - " '吴语': 'https://wuu.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD',\n", - " '粵語': 'https://zh-yue.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD',\n", - " '贛語': 'https://gan.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD',\n", - " '1 Goals': 'https://en.wikipedia.org/wiki/Artificial_intelligence#Goals',\n", - " '1452734': 'https://api.semanticscholar.org/CorpusID:1452734',\n", - " '1513681': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1513681',\n", - " '1809459': 'https://api.semanticscholar.org/CorpusID:1809459',\n", - " '1979315': 'https://api.semanticscholar.org/CorpusID:1979315',\n", - " '2.7 GPT': 'https://en.wikipedia.org/wiki/Artificial_intelligence#GPT',\n", - " '2161592': 'https://api.semanticscholar.org/CorpusID:2161592',\n", - " '2251299': 'https://www.jstor.org/stable/2251299',\n", - " '3044448': 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3044448',\n", - " '3074096': 'https://api.semanticscholar.org/CorpusID:3074096',\n", - " '4240644': 'https://www.jstor.org/stable/4240644',\n", - " '6362217': 'https://api.semanticscholar.org/CorpusID:6362217',\n", - " '6616181': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6616181',\n", - " '7373959': 'https://api.semanticscholar.org/CorpusID:7373959',\n", - " '8371605': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605',\n", - " '8510016': 'https://api.semanticscholar.org/CorpusID:8510016',\n", - " '8545201': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8545201',\n", - " '9544280': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9544280',\n", - " 'AI boom': 'https://en.wikipedia.org/wiki/AI_boom',\n", - " 'AdSense': 'https://en.wikipedia.org/wiki/AdSense',\n", - " 'Aerobot': 'https://en.wikipedia.org/wiki/Aerobot',\n", - " 'AlexNet': 'https://en.wikipedia.org/wiki/AlexNet',\n", - " 'AlphaGo': 'https://en.wikipedia.org/wiki/AlphaGo',\n", - " 'Android': 'https://en.wikipedia.org/wiki/Android_(robot)',\n", - " 'Anybots': 'https://en.wikipedia.org/wiki/Anybots',\n", - " 'Article': 'https://en.wikipedia.org/wiki/Artificial_intelligence',\n", - " 'AutoGPT': 'https://en.wikipedia.org/wiki/AutoGPT',\n", - " 'Bibcode': 'https://en.wikipedia.org/wiki/Bibcode_(identifier)',\n", - " 'Biology': 'https://en.wikipedia.org/wiki/Glossary_of_biology',\n", - " 'Català': 'https://ca.wikipedia.org/wiki/Intel%C2%B7lig%C3%A8ncia_artificial',\n", - " 'Cebuano': 'https://ceb.wikipedia.org/wiki/Intelihensiya_artipisyal',\n", - " 'ChatGPT': 'https://en.wikipedia.org/wiki/ChatGPT',\n", - " 'Concept': 'https://en.wikipedia.org/wiki/Concept',\n", - " 'Copilot': 'https://en.wikipedia.org/wiki/Microsoft_Copilot',\n", - " 'Cymraeg': 'https://cy.wikipedia.org/wiki/Deallusrwydd_artiffisial',\n", - " 'Deutsch': 'https://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz',\n", - " 'Dualism': 'https://en.wikipedia.org/wiki/Mind%E2%80%93body_dualism',\n", - " 'Ecology': 'https://en.wikipedia.org/wiki/Glossary_of_ecology',\n", - " 'English': 'https://en.wikipedia.org/wiki/English_(language)',\n", - " 'Euskara': 'https://eu.wikipedia.org/wiki/Adimen_artifizial',\n", - " 'Face ID': 'https://en.wikipedia.org/wiki/Face_ID',\n", - " 'FaceNet': 'https://en.wikipedia.org/wiki/FaceNet',\n", - " 'Finance': 'https://en.wikipedia.org/wiki/Applications_of_artificial_intelligence#Finance',\n", - " 'Firefly': 'https://en.wikipedia.org/wiki/Adobe_Firefly',\n", - " 'Fordham': 'https://en.wikipedia.org/wiki/Fordham_University',\n", - " 'Gaeilge': 'https://ga.wikipedia.org/wiki/Intleacht_shaorga',\n", - " 'Geology': 'https://en.wikipedia.org/wiki/Glossary_of_geology',\n", - " 'Germany': 'https://d-nb.info/gnd/4033447-8',\n", - " 'Goldman': 'https://en.wikipedia.org/wiki/Alvin_Goldman',\n", - " 'Granite': 'https://en.wikipedia.org/wiki/IBM_Granite',\n", - " 'Hexapod': 'https://en.wikipedia.org/wiki/Hexapod_(robotics)',\n", - " 'History': 'https://en.wikipedia.org/wiki/History_of_robots',\n", - " 'IBM 701': 'https://en.wikipedia.org/wiki/IBM_701',\n", - " 'Ilokano': 'https://ilo.wikipedia.org/wiki/Parbo_a_saririt',\n", - " 'Inquiry': 'https://en.wikipedia.org/wiki/Inquiry',\n", - " 'IsiZulu': 'https://zu.wikipedia.org/wiki/UHlakahlisombulu',\n", - " 'Llama 2': 'https://en.wikipedia.org/wiki/LLaMA',\n", - " 'Lombard': 'https://lmo.wikipedia.org/wiki/Intelligenza_artificiala',\n", - " 'Medical': 'https://en.wikipedia.org/wiki/Medical_robot',\n", - " 'Mistral': 'https://en.wikipedia.org/wiki/Mistral_AI',\n", - " 'Netflix': 'https://en.wikipedia.org/wiki/Netflix',\n", - " 'Occitan': 'https://oc.wikipedia.org/wiki/Intellig%C3%A9ncia_artificiala',\n", - " 'Outline': 'https://en.wikipedia.org/wiki/Outline_of_robotics',\n", - " 'Physics': 'https://en.wikipedia.org/wiki/Glossary_of_physics',\n", - " 'Project': 'https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Philosophy',\n", - " 'Qwen-7B': 'https://en.wikipedia.org/wiki/Qwen',\n", - " 'Replika': 'https://en.wikipedia.org/wiki/Replika',\n", - " 'Reuters': 'https://en.wikipedia.org/wiki/Reuters',\n", - " 'Russell': 'https://en.wikipedia.org/wiki/Stuart_J._Russell',\n", - " 'STUDENT': 'https://en.wikipedia.org/wiki/STUDENT',\n", - " 'Scholia': 'https://www.wikidata.org/wiki/Wikidata:Scholia',\n", - " 'Seq2seq': 'https://en.wikipedia.org/wiki/Seq2seq',\n", - " 'Service': 'https://en.wikipedia.org/wiki/Service_robot',\n", - " 'Sigmoid': 'https://en.wikipedia.org/wiki/Sigmoid_function',\n", - " 'Softmax': 'https://en.wikipedia.org/wiki/Softmax_function',\n", - " 'Suno AI': 'https://en.wikipedia.org/wiki/Suno_AI',\n", - " 'Svenska': 'https://sv.wikipedia.org/wiki/Artificiell_intelligens',\n", - " 'Tagalog': 'https://tl.wikipedia.org/wiki/Artipisyal_na_katalinuhan',\n", - " 'Taoyuan': 'https://en.wikipedia.org/wiki/Taoyuan,_Taiwan',\n", - " 'Virtual': 'https://en.wikipedia.org/wiki/Virtual_reality',\n", - " 'Vèneto': 'https://vec.wikipedia.org/wiki/Inte%C5%82ijensa_artifisa%C5%82e',\n", - " 'Walking': 'https://en.wikipedia.org/wiki/Legged_robot',\n", - " 'WaveNet': 'https://en.wikipedia.org/wiki/WaveNet',\n", - " 'Whisper': 'https://en.wikipedia.org/wiki/Whisper_(speech_recognition_system)',\n", - " 'Winaray': 'https://war.wikipedia.org/wiki/Intelihensya_artipisyal',\n", - " 'Yaskawa': 'https://en.wikipedia.org/wiki/Yaskawa_Electric_Corporation',\n", - " 'YouTube': 'https://en.wikipedia.org/wiki/YouTube',\n", - " 'aligned': 'https://en.wikipedia.org/wiki/AI_alignment',\n", - " 'chatbot': 'https://en.wikipedia.org/wiki/Gemini_(chatbot)',\n", - " 'context': 'https://en.wikipedia.org/wiki/Context_(linguistics)',\n", - " 'control': 'https://en.wikipedia.org/wiki/Control_variable',\n", - " 'cyborgs': 'https://en.wikipedia.org/wiki/Cyborg',\n", - " 'discuss': 'https://en.wikipedia.org/wiki/Talk:Artificial_intelligence#Dubious',\n", - " 'dubious': 'https://en.wikipedia.org/wiki/Wikipedia:Accuracy_dispute#Disputed_statement',\n", - " 'economy': 'https://en.wikipedia.org/wiki/Economy',\n", - " 'eess.IV': 'https://arxiv.org/archive/eess.IV',\n", - " 'finance': 'https://en.wikipedia.org/wiki/Credit_rating',\n", - " 'housing': 'https://en.wikipedia.org/wiki/Public_housing',\n", - " 'mapping': 'https://en.wikipedia.org/wiki/Robotic_mapping',\n", - " 'markets': 'https://en.wikipedia.org/wiki/Market_(economics)',\n", - " 'more...': 'https://en.wikipedia.org/wiki/Index_of_philosophy_of_science_articles',\n", - " 'neurons': 'https://en.wikipedia.org/wiki/Neurons',\n", - " 'pigeons': 'https://en.wikipedia.org/wiki/Pigeon',\n", - " 'privacy': 'https://en.wikipedia.org/wiki/Privacy',\n", - " 'prompts': 'https://en.wikipedia.org/wiki/Prompt_(natural_language)',\n", - " 'proving': 'https://en.wikipedia.org/wiki/Logical_proof',\n", - " 'purpose': 'https://en.wikipedia.org/wiki/Motivation',\n", - " 'science': 'https://en.wikipedia.org/wiki/Science',\n", - " 'scripts': 'https://en.wikipedia.org/wiki/Scripts_(artificial_intelligence)',\n", - " 'slavery': 'https://en.wikipedia.org/wiki/Slavery',\n", - " 'symbols': 'https://en.wikipedia.org/wiki/Symbolic_AI',\n", - " 'utility': 'https://en.wikipedia.org/wiki/Utility',\n", - " 'vectors': 'https://en.wikipedia.org/wiki/Vector_space',\n", - " '\"Kismet\"': 'http://www.ai.mit.edu/projects/humanoid-robotics-group/kismet/kismet.html',\n", - " '10168773': 'https://api.semanticscholar.org/CorpusID:10168773',\n", - " '10767011': 'https://api.semanticscholar.org/CorpusID:10767011',\n", - " '11041459': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11041459',\n", - " '11062903': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC11062903',\n", - " '11229402': 'https://pubmed.ncbi.nlm.nih.gov/11229402',\n", - " '11715509': 'https://api.semanticscholar.org/CorpusID:11715509',\n", - " '14636783': 'https://api.semanticscholar.org/CorpusID:14636783',\n", - " '14987656': 'https://api.semanticscholar.org/CorpusID:14987656',\n", - " '16622160': 'https://pubmed.ncbi.nlm.nih.gov/16622160',\n", - " '17835457': 'https://pubmed.ncbi.nlm.nih.gov/17835457',\n", - " '20190474': 'https://lccn.loc.gov/20190474',\n", - " '25462637': 'https://pubmed.ncbi.nlm.nih.gov/25462637',\n", - " '25719670': 'https://pubmed.ncbi.nlm.nih.gov/25719670',\n", - " '26017442': 'https://pubmed.ncbi.nlm.nih.gov/26017442',\n", - " '26185243': 'https://pubmed.ncbi.nlm.nih.gov/26185243',\n", - " '26819042': 'https://pubmed.ncbi.nlm.nih.gov/26819042',\n", - " '31296650': 'https://pubmed.ncbi.nlm.nih.gov/31296650',\n", - " '31363513': 'https://pubmed.ncbi.nlm.nih.gov/31363513',\n", - " '32236794': 'https://pubmed.ncbi.nlm.nih.gov/32236794',\n", - " '32437713': 'https://api.semanticscholar.org/CorpusID:32437713',\n", - " '32710913': 'https://api.semanticscholar.org/CorpusID:32710913',\n", - " '34265844': 'https://pubmed.ncbi.nlm.nih.gov/34265844',\n", - " '34786317': 'https://pubmed.ncbi.nlm.nih.gov/34786317',\n", - " '35140384': 'https://pubmed.ncbi.nlm.nih.gov/35140384',\n", - " '36211133': 'https://pubmed.ncbi.nlm.nih.gov/36211133',\n", - " '36565267': 'https://pubmed.ncbi.nlm.nih.gov/36565267',\n", - " '37272949': 'https://api.semanticscholar.org/CorpusID:37272949',\n", - " '38632492': 'https://pubmed.ncbi.nlm.nih.gov/38632492',\n", - " '38875587': 'https://pubmed.ncbi.nlm.nih.gov/38875587',\n", - " '38875908': 'https://pubmed.ncbi.nlm.nih.gov/38875908',\n", - " '39254628': 'https://pubmed.ncbi.nlm.nih.gov/39254628',\n", - " '4 Ethics': 'https://en.wikipedia.org/wiki/Artificial_intelligence#Ethics',\n", - " '46890682': 'https://search.worldcat.org/oclc/46890682',\n", - " '54131797': 'https://api.semanticscholar.org/CorpusID:54131797',\n", - " '55303721': 'https://api.semanticscholar.org/CorpusID:55303721',\n", - " '59298502': 'https://api.semanticscholar.org/CorpusID:59298502',\n", - " '7 Future': 'https://en.wikipedia.org/wiki/Artificial_intelligence#Future',\n", - " 'ALGOL 60': 'https://en.wikipedia.org/wiki/ALGOL_60',\n", - " 'Analysis': 'https://en.wikipedia.org/wiki/Philosophical_analysis',\n", - " 'Archived': 'https://web.archive.org/web/20200220173419/https://ec.europa.eu/info/sites/info/files/commission-white-paper-artificial-intelligence-feb2020_en.pdf',\n", - " 'BBC News': 'https://en.wikipedia.org/wiki/BBC_News',\n", - " 'Big Tech': 'https://en.wikipedia.org/wiki/Big_Tech',\n", - " 'Big data': 'https://en.wikipedia.org/wiki/Big_data',\n", - " 'Bill Joy': 'https://en.wikipedia.org/wiki/Bill_Joy',\n", - " 'BnF data': 'https://data.bnf.fr/ark:/12148/cb11932084t',\n", - " 'Boarisch': 'https://bar.wikipedia.org/wiki/Kinschtlicha_Intelligenz',\n", - " 'Bosanski': 'https://bs.wikipedia.org/wiki/Umjetna_inteligencija',\n", - " 'Calculus': 'https://en.wikipedia.org/wiki/Glossary_of_calculus',\n", - " 'Category': 'https://en.wikipedia.org/wiki/Category:Existential_risk_from_artificial_general_intelligence',\n", - " 'Climbing': 'https://en.wikipedia.org/wiki/Climber_(BEAM)',\n", - " 'Compiler': 'https://en.wikipedia.org/wiki/Compiler_construction',\n", - " 'Computer': 'https://en.wikipedia.org/wiki/Computer_(magazine)',\n", - " 'Contents': 'https://en.wikipedia.org/wiki/Wikipedia:Contents',\n", - " 'Datasets': 'https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets',\n", - " 'DeepFace': 'https://en.wikipedia.org/wiki/DeepFace',\n", - " 'DeepMind': 'https://en.wikipedia.org/wiki/DeepMind',\n", - " 'DeepSeek': 'https://en.wikipedia.org/wiki/DeepSeek',\n", - " 'Deepfake': 'https://en.wikipedia.org/wiki/Deepfake',\n", - " 'Domestic': 'https://en.wikipedia.org/wiki/Domestic_robot',\n", - " 'Embodied': 'https://en.wikipedia.org/wiki/Embodied_mind',\n", - " 'Español': 'https://es.wikipedia.org/wiki/Inteligencia_artificial',\n", - " 'Facebook': 'https://en.wikipedia.org/wiki/Facebook',\n", - " 'FarmWise': 'https://en.wikipedia.org/wiki/FarmWise',\n", - " 'Fox News': 'https://en.wikipedia.org/wiki/Fox_News',\n", - " 'Glossary': 'https://en.wikipedia.org/wiki/Glossary_of_robotics',\n", - " 'Graphics': 'https://en.wikipedia.org/wiki/Computer_graphics',\n", - " 'HAL 9000': 'https://en.wikipedia.org/wiki/HAL_9000',\n", - " 'Hardware': 'https://en.wikipedia.org/wiki/Computer_hardware',\n", - " 'Hrvatski': 'https://hr.wikipedia.org/wiki/Umjetna_inteligencija',\n", - " 'Humanoid': 'https://en.wikipedia.org/wiki/Humanoid_robot',\n", - " 'Identity': 'https://en.wikipedia.org/wiki/Identity_(philosophy)',\n", - " 'Ideogram': 'https://en.wikipedia.org/wiki/Ideogram_(text-to-image_model)',\n", - " 'ImageNet': 'https://en.wikipedia.org/wiki/ImageNet',\n", - " 'Industry': 'https://en.wikipedia.org/wiki/Artificial_intelligence_in_industry',\n", - " 'Italiano': 'https://it.wikipedia.org/wiki/Intelligenza_artificiale',\n", - " 'Journals': 'https://en.wikipedia.org/wiki/Academic_journal',\n", - " 'Juggling': 'https://en.wikipedia.org/wiki/Juggling_robot',\n", - " 'Learning': 'https://en.wikipedia.org/wiki/Machine_learning',\n", - " 'Limburgs': 'https://li.wikipedia.org/wiki/K%C3%B3nsmaesige_intelligentie',\n", - " 'Madhurâ': 'https://mad.wikipedia.org/wiki/Kecerdasan_buatan',\n", - " 'Malagasy': 'https://mg.wikipedia.org/wiki/Haranitan-tsaina_voatr%27_olombelona',\n", - " 'Medicine': 'https://en.wikipedia.org/wiki/Glossary_of_medicine',\n", - " 'Military': 'https://en.wikipedia.org/wiki/Military_robot',\n", - " 'Multivac': 'https://en.wikipedia.org/wiki/Multivac',\n", - " 'Mycology': 'https://en.wikipedia.org/wiki/Glossary_of_mycology',\n", - " 'NRC 1999': 'https://en.wikipedia.org/wiki/Artificial_intelligence#CITEREFNRC1999',\n", - " 'Networks': 'https://en.wikipedia.org/wiki/Computer_network',\n", - " 'PanGu-Σ': 'https://en.wikipedia.org/wiki/Huawei_PanGu',\n", - " 'Paradigm': 'https://en.wikipedia.org/wiki/Paradigm',\n", - " 'Planning': 'https://en.wikipedia.org/wiki/Automated_planning_and_scheduling',\n", - " 'Pluribus': 'https://en.wikipedia.org/wiki/Pluribus_(poker_bot)',\n", - " 'Progress': 'https://en.wikipedia.org/wiki/Progress_in_artificial_intelligence',\n", - " 'Projects': 'https://en.wikipedia.org/wiki/List_of_artificial_intelligence_projects',\n", - " 'Robotics': 'https://en.wikipedia.org/wiki/Glossary_of_robotics',\n", - " 'Română': 'https://ro.wikipedia.org/wiki/Inteligen%C8%9B%C4%83_artificial%C4%83',\n", - " 'Sapience': 'https://en.wikipedia.org/wiki/Sapience',\n", - " 'Security': 'https://en.wikipedia.org/wiki/Computer_security',\n", - " 'Situated': 'https://en.wikipedia.org/wiki/Situated_robotics',\n", - " 'Software': 'https://en.wikipedia.org/wiki/Robot_software',\n", - " 'Stanford': 'https://en.wikipedia.org/wiki/Stanford',\n", - " 'Symbolic': 'https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence',\n", - " 'Symbotic': 'https://en.wikipedia.org/wiki/Symbotic',\n", - " 'Takeover': 'https://en.wikipedia.org/wiki/AI_takeover',\n", - " 'Timeline': 'https://en.wikipedia.org/wiki/Timeline_of_artificial_intelligence',\n", - " 'Türkçe': 'https://tr.wikipedia.org/wiki/Yapay_zek%C3%A2',\n", - " 'UltraRAM': 'https://en.wikipedia.org/wiki/UltraRAM',\n", - " 'Variable': 'https://en.wikipedia.org/wiki/Variable_and_attribute_(research)',\n", - " 'Virology': 'https://en.wikipedia.org/wiki/Glossary_of_virology',\n", - " 'Vitalism': 'https://en.wikipedia.org/wiki/Vitalism',\n", - " 'Wikinews': 'https://en.wikinews.org/wiki/Category:Artificial_intelligence',\n", - " 'Word2vec': 'https://en.wikipedia.org/wiki/Word2vec',\n", - " 'Zhuangzi': 'https://en.wikipedia.org/wiki/Zhuang_Zhou',\n", - " 'archived': 'https://web.archive.org/web/20131019182403/http://intelligence.org/files/AIPosNegFactor.pdf',\n", - " 'bar exam': 'https://en.wikipedia.org/wiki/Bar_exam',\n", - " 'big data': 'https://en.wikipedia.org/wiki/Big_data',\n", - " 'buzzword': 'https://en.wikipedia.org/wiki/Buzzword',\n", - " 'cartoons': 'https://en.wikipedia.org/wiki/Cartoon',\n", - " 'chatbots': 'https://en.wikipedia.org/wiki/Chatbots',\n", - " 'checkers': 'https://en.wikipedia.org/wiki/Checkers',\n", - " 'classify': 'https://en.wikipedia.org/wiki/Classifier_(machine_learning)',\n", - " 'creative': 'https://en.wikipedia.org/wiki/Computational_creativity',\n", - " 'data set': 'https://en.wikipedia.org/wiki/Data_set',\n", - " 'degrowth': 'https://en.wikipedia.org/wiki/Degrowth',\n", - " 'disaster': 'https://en.wikipedia.org/wiki/Disaster',\n", - " 'equality': 'https://en.wikipedia.org/wiki/Equality_(mathematics)',\n", - " 'fair use': 'https://en.wikipedia.org/wiki/Fair_use',\n", - " 'fairness': 'https://en.wikipedia.org/wiki/Fairness_(machine_learning)',\n", - " 'flocking': 'https://en.wikipedia.org/wiki/Flocking',\n", - " 'forwards': 'https://en.wikipedia.org/wiki/Forward_chaining',\n", - " 'function': 'https://en.wikipedia.org/wiki/Correlation_function',\n", - " 'language': 'https://en.wikipedia.org/wiki/Language',\n", - " 'learning': 'https://en.wikipedia.org/wiki/Machine_learning',\n", - " 'machines': 'https://en.wikipedia.org/wiki/Machine',\n", - " 'medicine': 'https://en.wikipedia.org/wiki/Health_equity',\n", - " 'ontology': 'https://en.wikipedia.org/wiki/Ontology_(information_science)',\n", - " 'organoid': 'https://en.wikipedia.org/wiki/Organoid',\n", - " 'paradigm': 'https://en.wikipedia.org/wiki/Paradigm',\n", - " 'partisan': 'https://en.wikipedia.org/wiki/Partisan_(politics)',\n", - " 'planning': 'https://en.wikipedia.org/wiki/Automated_planning_and_scheduling',\n", - " 'policing': 'https://en.wikipedia.org/wiki/Policing',\n", - " 'premises': 'https://en.wikipedia.org/wiki/Premise',\n", - " 'progress': 'https://en.wikipedia.org/wiki/Progress_in_artificial_intelligence',\n", - " 'robotics': 'https://en.wikipedia.org/wiki/Robotics',\n", - " 'software': 'https://en.wikipedia.org/wiki/Software',\n", - " 'startups': 'https://en.wikipedia.org/wiki/Startup_company',\n", - " 'thesauri': 'https://en.wikipedia.org/wiki/Thesauri',\n", - " 'timeline': 'https://en.wikipedia.org/wiki/Timeline_of_artificial_intelligence',\n", - " 'too slow': 'https://en.wikipedia.org/wiki/Computation_time',\n", - " 'اردو': 'https://ur.wikipedia.org/wiki/%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C_%D8%B0%DB%81%D8%A7%D9%86%D8%AA',\n", - " 'سنڌي': 'https://sd.wikipedia.org/wiki/%DA%BE%D9%BF%D8%B1%D8%A7%D8%AF%D9%88_%D8%B0%DA%BE%D8%A7%D9%86%D8%AA',\n", - " 'مصرى': 'https://arz.wikipedia.org/wiki/%D8%B0%D9%83%D8%A7%D8%A1_%D8%B5%D9%86%D8%A7%D8%B9%D9%89',\n", - " 'پښتو': 'https://ps.wikipedia.org/wiki/%D9%85%D8%B5%D9%86%D9%88%D8%B9%D9%8A_%DA%81%D9%8A%D8%B1%DA%A9%D8%AA%DB%8C%D8%A7',\n", - " '0007-6813': 'https://search.worldcat.org/issn/0007-6813',\n", - " '0017-8012': 'https://search.worldcat.org/issn/0017-8012',\n", - " '0022-4499': 'https://search.worldcat.org/issn/0022-4499',\n", - " '0028-792X': 'https://search.worldcat.org/issn/0028-792X',\n", - " '0036-8075': 'https://search.worldcat.org/issn/0036-8075',\n", - " '0040-1625': 'https://search.worldcat.org/issn/0040-1625',\n", - " '0099-9660': 'https://search.worldcat.org/issn/0099-9660',\n", - " '0190-0692': 'https://search.worldcat.org/issn/0190-0692',\n", - " '0190-8286': 'https://search.worldcat.org/issn/0190-8286',\n", - " '0261-3077': 'https://search.worldcat.org/issn/0261-3077',\n", - " '0362-4331': 'https://search.worldcat.org/issn/0362-4331',\n", - " '0926-5805': 'https://search.worldcat.org/issn/0926-5805',\n", - " '1059-1028': 'https://search.worldcat.org/issn/1059-1028',\n", - " '1202.2745': 'https://arxiv.org/abs/1202.2745',\n", - " '1404.7828': 'https://arxiv.org/abs/1404.7828',\n", - " '143452957': 'https://api.semanticscholar.org/CorpusID:143452957',\n", - " '1460-2113': 'https://search.worldcat.org/issn/1460-2113',\n", - " '147612763': 'https://api.semanticscholar.org/CorpusID:147612763',\n", - " '1524-8380': 'https://search.worldcat.org/issn/1524-8380',\n", - " '1548-3592': 'https://search.worldcat.org/issn/1548-3592',\n", - " '1572-8099': 'https://search.worldcat.org/issn/1572-8099',\n", - " '1572-8633': 'https://search.worldcat.org/issn/1572-8633',\n", - " '158433736': 'https://api.semanticscholar.org/CorpusID:158433736',\n", - " '158829602': 'https://api.semanticscholar.org/CorpusID:158829602',\n", - " ...},\n", - " 'title': 'Artificial intelligence',\n", - " 'usage': {'tokens': 48740},\n", - " 'images': {},\n", - " 'content': 'Jump to content\\nMain menu\\nSearch\\nAppearance\\nDonate\\nCreate account\\nLog in\\nPersonal tools\\n\\t\\tPhotograph your local culture, help Wikipedia and win!\\nToggle the table of contents\\nArtificial intelligence\\n163 languages\\nArticle\\nTalk\\nRead\\nView source\\nView history\\nTools\\nFrom Wikipedia, the free encyclopedia\\n\"AI\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\\nPart of a series on\\nArtificial intelligence (AI)\\n\\n\\n\\nshow\\nMajor goals\\n\\n\\nshow\\nApproaches\\n\\n\\nshow\\nApplications\\n\\n\\nshow\\nPhilosophy\\n\\n\\nshow\\nHistory\\n\\n\\nshow\\nGlossary\\n\\nvte\\n\\nArtificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\\n\\nHigh-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it\\'s not labeled AI anymore.\"[2][3]\\n\\nVarious subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence—the ability to complete any task performed by a human on an at least equal level—is among the field\\'s long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\\n\\nArtificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\\n\\nGoals\\n\\nThe general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\\n\\nReasoning and problem-solving\\n\\nEarly researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\\n\\nMany of these algorithms are insufficient for solving large reasoning problems because they experience a \"combinatorial explosion\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\\n\\nKnowledge representation\\nAn ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\\n\\nKnowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \"interesting\" and actionable inferences from large databases),[21] and other areas.[22]\\n\\nA knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\\n\\nAmong the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \"facts\" or \"statements\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\\n\\nPlanning and decision-making\\n\\nAn \"agent\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences—there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \"utility\") that measures how much the agent prefers it. For each possible action, it can calculate the \"expected utility\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\\n\\nIn classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \"unknown\" or \"unobservable\") and it may not know for certain what will happen after each possible action (it is not \"deterministic\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\\n\\nIn some problems, the agent\\'s preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\\n\\nA Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\\n\\nGame theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\\n\\nLearning\\n\\nMachine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\\n\\nThere are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\\n\\nIn reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \"good\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\\n\\nComputational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\\n\\nNatural language processing\\n\\nNatural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\\n\\nEarly work, based on Noam Chomsky\\'s generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \"micro-worlds\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\\n\\nModern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \"GPT\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\\n\\nPerception\\n\\nMachine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\\n\\nThe field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\\n\\nSocial intelligence\\nKismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\\n\\nAffective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human–computer interaction.\\n\\nHowever, this tends to give naïve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\\n\\nGeneral intelligence\\n\\nA machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\\n\\nTechniques\\n\\nAI research uses a wide variety of techniques to accomplish the goals above.[b]\\n\\nSearch and optimization\\n\\nAI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\\n\\nState space search\\n\\nState space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\\n\\nSimple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \"Heuristics\" or \"rules of thumb\" can help prioritize choices that are more likely to reach a goal.[72]\\n\\nAdversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\\n\\nLocal search\\nIllustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\\n\\nLocal search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\\n\\nGradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\\n\\nAnother type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \"mutating\" and \"recombining\" them, selecting only the fittest to survive each generation.[76]\\n\\nDistributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\\n\\nLogic\\n\\nFormal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \"and\", \"or\", \"not\" and \"implies\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \"Every X is a Y\" and \"There are some Xs that are Ys\").[80]\\n\\nDeductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\\n\\nGiven a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\\n\\nInference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\\n\\nFuzzy logic assigns a \"degree of truth\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\\n\\nNon-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\\n\\nProbabilistic methods for uncertain reasoning\\nA simple Bayesian network, with the associated conditional probability tables\\n\\nMany problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\\n\\nBayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation–maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\\n\\nProbabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\\n\\nExpectation–maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\\nClassifiers and statistical learning methods\\n\\nThe simplest AI applications can be divided into two types: classifiers (e.g., \"if shiny then diamond\"), on one hand, and controllers (e.g., \"if diamond then pick up\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \"observation\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\\n\\nThere are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \"most widely used learner\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\\n\\nArtificial neural networks\\nA neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\\n\\nAn artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\\n\\nLearning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\\n\\nIn feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \"close\" to each other—this is especially important in image processing, where a local set of neurons must identify an \"edge\" before the network can identify an object.[111]\\n\\nDeep learning\\n\\nDeep learning[110] uses several layers of neurons between the network\\'s inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\\n\\nDeep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012–2015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\\n\\nGPT\\n\\nGenerative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \"hallucinations\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\\n\\nCurrent models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\\n\\nHardware and software\\nMain articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\\n\\nIn the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models\\' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\\n\\nThe transistor density in integrated circuits has been observed to roughly double every 18 months—a trend known as Moore\\'s law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang\\'s law,[130] named after Nvidia co-founder and CEO Jensen Huang.\\n\\nApplications\\nMain article: Applications of artificial intelligence\\n\\nAI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple\\'s Face ID or Microsoft\\'s DeepFace and Google\\'s FaceNet) and image labeling (used by Facebook, Apple\\'s iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\\n\\nHealth and medicine\\nMain article: Artificial intelligence in healthcare\\n\\nThe application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\\n\\nFor medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson\\'s disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson\\'s disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\\n\\nGames\\nMain article: Game artificial intelligence\\n\\nGame playing programs have been used since the 1950s to demonstrate and test AI\\'s most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM\\'s question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind\\'s AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world\\'s best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\\n\\nMathematics\\n\\nLarge language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\\n\\nAlternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\\n\\nWhen natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\\n\\nSome models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\\n\\nTopological deep learning integrates various topological approaches.\\n\\nFinance\\n\\nFinance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \"robot advisers\" have been in use for some years.[156]\\n\\nWorld Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I\\'m not sure it will unleash a new wave of [e.g., sophisticated] pension innovation.\"[157]\\n\\nMilitary\\nMain article: Military applications of artificial intelligence\\n\\nVarious countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\\n\\nAI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\\n\\nGenerative AI\\nVincent van Gogh in watercolour created by generative AI software\\nThese paragraphs are an excerpt from Generative artificial intelligence.[edit]\\n\\nGenerative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\\n\\nImprovements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\\n\\nGenerative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\\nAgents\\n\\nArtificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\\n\\nSexuality\\n\\nApplications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\\n\\nAI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\\n\\nOther industry-specific tasks\\n\\nThere are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \"AI\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\\n\\nAI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\\n\\nIn agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\\n\\nArtificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\\n\\nDuring the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\\n\\nEthics\\nMain article: Ethics of artificial intelligence\\n\\nAI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \"solve intelligence, and then use that to solve everything else\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\\n\\nRisks and harm\\nPrivacy and copyright\\nFurther information: Information privacy and Artificial intelligence and copyright\\n\\nMachine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\\n\\nAI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI\\'s ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\\n\\nSensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\\n\\nAI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \"from the question of \\'what they know\\' to the question of \\'what they\\'re doing with it\\'.\"[208]\\n\\nGenerative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \"fair use\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \"the purpose and character of the use of the copyrighted work\" and \"the effect upon the potential market for the copyrighted work\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \"robots.txt\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\\n\\nDominance by tech giants\\n\\nThe commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\\n\\nPower needs and environmental impacts\\nSee also: Environmental impacts of artificial intelligence\\n\\nIn January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\\n\\nProdigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources – from nuclear energy to geothermal to fusion. The tech firms argue that – in the long view – AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \"intelligent\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\\n\\nA 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \"US power demand (is) likely to experience growth not seen in a generation....\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers\\' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\\n\\nIn 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\\n\\nIn September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power – enough for 800,000 homes – of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\\n\\nAfter the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\\n\\nAlthough most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\\n\\nOn 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon\\'s data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\\n\\nMisinformation\\nSee also: YouTube §\\xa0Moderation and offensive content\\n\\nYouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\\n\\nIn 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \"authoritarian leaders to manipulate their electorates\" on a large scale, among other risks.[235]\\n\\nAlgorithmic bias and fairness\\nMain articles: Algorithmic bias and Fairness (machine learning)\\n\\nMachine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\\n\\nOn June 28, 2015, Google Photos\\'s new image labeling feature mistakenly identified Jacky Alcine and a friend as \"gorillas\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \"sample size disparity\".[242] Google \"fixed\" this problem by preventing the system from labelling anything as a \"gorilla\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\\n\\nCOMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different—the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\\n\\nA program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \"race\" or \"gender\"). The feature will correlate with other features (like \"address\", \"shopping history\" or \"first name\"), and the program will make the same decisions based on these features as it would on \"race\" or \"gender\".[247] Moritz Hardt said \"the most robust fact in this research area is that fairness through blindness doesn\\'t work.\"[248]\\n\\nCriticism of COMPAS highlighted that machine learning models are designed to make \"predictions\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \"recommendations\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\\n\\nBias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\\n\\nThere are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\\n\\nAt its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious – discuss][251]\\n\\nLack of transparency\\nSee also: Explainable AI, Algorithmic transparency, and Right to explanation\\n\\nMany AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\\n\\nIt is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \"cancerous\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \"low risk\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\\n\\nPeople who have been harmed by an algorithm\\'s decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union\\'s General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\\n\\nDARPA established the XAI (\"Explainable Artificial Intelligence\") program in 2014 to try to solve these problems.[258]\\n\\nSeveral approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model\\'s outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\\n\\nBad actors and weaponized AI\\nMain articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\\n\\nArtificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\\n\\nA lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations\\' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\\n\\nAI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier—AI facial recognition systems are already being used for mass surveillance in China.[269][270]\\n\\nThere many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\\n\\nTechnological unemployment\\nMain articles: Workplace impact of artificial intelligence and Technological unemployment\\n\\nEconomists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\\n\\nIn the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \"we\\'re in uncharted territory\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \"high risk\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \"high risk\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\\n\\nUnlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\" is \"worth taking seriously\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\\n\\nFrom the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\\n\\nExistential risk\\nMain article: Existential risk from artificial intelligence\\n\\nIt has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \"spell the end of the human race\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \"self-awareness\" (or \"sentience\" or \"consciousness\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\\n\\nFirst, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \"you can\\'t fetch the coffee if you\\'re dead.\"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity\\'s morality and values so that it is \"fundamentally on our side\".[286]\\n\\nSecond, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\\n\\nThe opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\\n\\nIn May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \"freely speak out about the risks of AI\" without \"considering how this impacts Google\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\\n\\nIn 2023, many leading AI experts endorsed the joint statement that \"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\".[293]\\n\\nSome other researchers were more optimistic. AI pioneer Jürgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \"human lives longer and healthier and easier.\"[294] While the tools that are now being used to improve lives can also be used by bad actors, \"they can also be used against the bad actors.\"[295][296] Andrew Ng also argued that \"it\\'s a mistake to fall for the doomsday hype on AI—and that regulators who do will only benefit vested interests.\"[297] Yann LeCun \"scoffs at his peers\\' dystopian scenarios of supercharged misinformation and even, eventually, human extinction.\"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\\n\\nEthical machines and alignment\\nMain articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\\n\\nFriendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\\n\\nMachines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\\n\\nOther approaches include Wendell Wallach\\'s \"artificial moral agents\"[304] and Stuart J. Russell\\'s three principles for developing provably beneficial machines.[305]\\n\\nOpen source\\n\\nActive organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \"weights\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\\n\\nFrameworks\\n\\nArtificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values—developed by the Alan Turing Institute tests projects in four main areas:[313][314]\\n\\nRespect the dignity of individual people\\nConnect with other people sincerely, openly, and inclusively\\nCare for the wellbeing of everyone\\nProtect social values, justice, and the public interest\\n\\nOther developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE\\'s Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\\n\\nPromotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\\n\\nThe UK AI Safety Institute released in 2024 a testing toolset called \\'Inspect\\' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\\n\\nRegulation\\nMain articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\\nThe first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\\n\\nThe regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\\n\\nIn a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \"products and services using AI have more benefits than drawbacks\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \"very important\", and an additional 41% thought it \"somewhat important\", for the federal government to regulate AI, versus 13% responding \"not very important\" and 8% responding \"not at all important\".[329][330]\\n\\nIn November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\\n\\nHistory\\nMain article: History of artificial intelligence\\nFor a chronological guide, see Timeline of artificial intelligence.\\n\\nThe study of mechanical or \"formal\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing\\'s theory of computation, which suggested that a machine, by shuffling symbols as simple as \"0\" and \"1\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \"electronic brain\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \"artificial neurons\" in 1943,[115] and Turing\\'s influential 1950 paper \\'Computing Machinery and Intelligence\\', which introduced the Turing test and showed that \"machine intelligence\" was plausible.[340][337]\\n\\nThe field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \"astonishing\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\\n\\nResearchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \"machines will be capable, within twenty years, of doing any work a man can do\".[345] In 1967 Marvin Minsky agreed, writing that \"within a generation\\xa0... the problem of creating \\'artificial intelligence\\' will substantially be solved\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky\\'s and Papert\\'s book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \"AI winter\", a period when obtaining funding for AI projects was difficult, followed.[9]\\n\\nIn the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan\\'s fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\\n\\nUp to this point, most of AI\\'s funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \"sub-symbolic\" approaches.[353] Rodney Brooks rejected \"representation\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \"connectionism\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\\n\\nAI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \"narrow\" and \"formal\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \"artificial intelligence\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \"AGI\"), which had several well-funded institutions by the 2010s.[4]\\n\\nDeep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning\\'s success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning\\'s success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015–2019.[323]\\n\\nThe number of Google searches for the term \"AI\" began to increase in about 2022.\\n\\nIn 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\\n\\nIn the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game\\'s rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI\\'s breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \"AI\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \"AI\".[370] About 800,000 \"AI\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\\n\\nPhilosophy\\nMain article: Philosophy of artificial intelligence\\n\\nPhilosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\\n\\nDefining artificial intelligence\\nSee also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\\n\\nAlan Turing wrote in 1950 \"I propose to consider the question \\'can machines think\\'?\"[376] He advised changing the question from whether a machine \"thinks\", to \"whether or not it is possible for machinery to show intelligent behaviour\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \"actually\" thinking or literally has a \"mind\". Turing notes that we can not determine these things about other people but \"it is usual to have a polite convention that everyone thinks.\"[377]\\n\\nThe Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\\n\\nRussell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \"Aeronautical engineering texts\", they wrote, \"do not define the goal of their field as making \\'machines that fly so exactly like pigeons that they can fool other pigeons.\\'\"[379] AI founder John McCarthy agreed, writing that \"Artificial intelligence is not, by definition, simulation of human intelligence\".[380]\\n\\nMcCarthy defines intelligence as \"the computational part of the ability to achieve goals in the world\".[381] Another AI founder, Marvin Minsky, similarly describes it as \"the ability to solve hard problems\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \"intelligence\" of the machine—and no other philosophical discussion is required, or may not even be possible.\\n\\nAnother definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\\n\\nSome authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \"not actually use AI in a material way\".[385]\\n\\nEvaluating approaches to AI\\n\\nNo established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \"artificial intelligence\" to mean \"machine learning with neural networks\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\\n\\nSymbolic AI and its limits\\n\\nSymbolic AI (or \"GOFAI\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \"intelligent\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \"A physical symbol system has the necessary and sufficient means of general intelligent action.\"[388]\\n\\nHowever, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec\\'s paradox is the discovery that high-level \"intelligent\" tasks were easy for AI, but low level \"instinctive\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \"feel\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\\n\\nThe issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\\n\\nNeat vs. scruffy\\nMain article: Neats and scruffies\\n\\n\"Neats\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \"Scruffies\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\\n\\nSoft vs. hard computing\\nMain article: Soft computing\\n\\nFinding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\\n\\nNarrow vs. general AI\\nMain articles: Weak artificial intelligence and Artificial general intelligence\\n\\nAI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field\\'s long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\\n\\nMachine consciousness, sentience, and mind\\nMain articles: Philosophy of artificial intelligence and Artificial consciousness\\n\\nThe philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on.\"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\\n\\nConsciousness\\nMain articles: Hard problem of consciousness and Theory of mind\\n\\nDavid Chalmers identified two problems in understanding the mind, which he named the \"hard\" and \"easy\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett\\'s consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\\n\\nComputationalism and functionalism\\nMain articles: Computational theory of mind and Functionalism (philosophy of mind)\\n\\nComputationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind–body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\\n\\nPhilosopher John Searle characterized this position as \"strong AI\": \"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds.\"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\\n\\nAI welfare and rights\\n\\nIt is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\\n\\nIn 2017, the European Union considered granting \"electronic personhood\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\\n\\nProgress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\\n\\nFuture\\nSuperintelligence and the singularity\\n\\nA superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \"intelligence explosion\" and Vernor Vinge called a \"singularity\".[412]\\n\\nHowever, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\\n\\nTranshumanism\\nMain article: Transhumanism\\n\\nRobot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\\n\\nEdward Fredkin argues that \"artificial intelligence is the next step in evolution\", an idea first proposed by Samuel Butler\\'s \"Darwin among the Machines\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\\n\\nDecomputing\\n\\nArguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\\n\\nIn fiction\\nMain article: Artificial intelligence in fiction\\nThe word \"robot\" itself was coined by Karel Čapek in his 1921 play R.U.R., the title standing for \"Rossum\\'s Universal Robots\".\\n\\nThought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\\n\\nA common trope in these works began with Mary Shelley\\'s Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke\\'s and Stanley Kubrick\\'s 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\\n\\nIsaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \"Multivac\" super-intelligent computer. Asimov\\'s laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov\\'s laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\\n\\nSeveral works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel Čapek\\'s R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\\n\\nSee also\\nArtificial intelligence and elections\\xa0– Use and impact of AI on political elections\\nArtificial intelligence content detection\\xa0– Software to detect AI-generated content\\nBehavior selection algorithm\\xa0– Algorithm that selects actions for intelligent agents\\nBusiness process automation\\xa0– Automation of business processes\\nCase-based reasoning\\xa0– Process of solving new problems based on the solutions of similar past problems\\nComputational intelligence\\xa0– Ability of a computer to learn a specific task from data or experimental observation\\nDigital immortality\\xa0– Hypothetical concept of storing a personality in digital form\\nEmergent algorithm\\xa0– Algorithm exhibiting emergent behavior\\nFemale gendering of AI technologies\\xa0– Gender biases in digital technology\\nGlossary of artificial intelligence\\xa0– List of definitions of terms and concepts commonly used in the study of artificial intelligence\\nIntelligence amplification\\xa0– Use of information technology to augment human intelligence\\nIntelligent agent\\xa0– Software agent which acts autonomously\\nMind uploading\\xa0– Hypothetical process of digitally emulating a brain\\nOrganoid intelligence – Use of brain cells and brain organoids for intelligent computing\\nRobotic process automation\\xa0– Form of business process automation technology\\nWetware computer\\xa0– Computer composed of organic material\\nExplanatory notes\\n^ \\nJump up to:\\na b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ \\nJump up to:\\na b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\\n^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\\n^ \"Rational agent\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\\n^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \"Computing Machinery and Intelligence\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \"An Inductive Inference Machine\".[43]\\n^ See AI winter §\\xa0Machine translation and the ALPAC report of 1966\\n^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300\\xa0million edges to learn which ads to serve.[93]\\n^ Expectation–maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\\n^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\\n^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow.\"[121]\\n^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\\n^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\\n^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \"is fundamentally the wrong tool for a lot of domains, where you\\'re trying to design interventions and mechanisms that change the world.\"[250]\\n^ When the law was passed in 2018, it still contained a form of this provision.\\n^ This is the United Nations\\' definition, and includes things like land mines as well.[264]\\n^ See table 4; 9% is both the OECD average and the U.S. average.[275]\\n^ Sometimes called a \"robopocalypse\"[283]\\n^ \"Electronic brain\" was the term used by the press around this time.[336][338]\\n^ Daniel Crevier wrote, \"the conference is generally recognized as the official birthdate of the new science.\"[341] Russell and Norvig called the conference \"the inception of artificial intelligence.\"[115]\\n^ Russell and Norvig wrote \"for the next 20 years the field would be dominated by these people and their students.\"[342]\\n^ Russell and Norvig wrote, \"it was astonishing whenever a computer did anything kind of smartish\".[343]\\n^ The programs described are Arthur Samuel\\'s checkers program for the IBM 701, Daniel Bobrow\\'s STUDENT, Newell and Simon\\'s Logic Theorist and Terry Winograd\\'s SHRDLU.\\n^ Russell and Norvig write: \"in almost all cases, these early systems failed on more difficult problems\"[347]\\n^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\\n^ Matteo Wong wrote in The Atlantic: \"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \"deep learning\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another.\"[363]\\n^ Jack Clark wrote in Bloomberg: \"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\", and noted that the number of software projects that use machine learning at Google increased from a \"sporadic usage\" in 2012 to more than 2,700 projects in 2015.[365]\\n^ Nils Nilsson wrote in 1983: \"Simply put, there is wide disagreement in the field about what AI is all about.\"[386]\\n^ Daniel Crevier wrote that \"time has proven the accuracy and perceptiveness of some of Dreyfus\\'s comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier.\"[391]\\n^ Searle presented this definition of \"Strong AI\" in 1999.[401] Searle\\'s original formulation was \"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states.\"[402] Strong AI is defined similarly by Russell and Norvig: \"Stong AI – the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\"[403]\\nReferences\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), pp.\\xa01–4.\\n^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\\n^ Kaplan, Andreas; Haenlein, Michael (2019). \"Siri, Siri, in my hand: Who\\'s the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\". Business Horizons. 62: 15–25. doi:10.1016/j.bushor.2018.08.004. ISSN\\xa00007-6813. S2CID\\xa0158433736.\\n^ \\nJump up to:\\na b c Artificial general intelligence: Russell & Norvig (2021, pp.\\xa032–33, 1020–1021)\\nProposal for the modern version: Pennachin & Goertzel (2007)\\nWarnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\\n^ Russell & Norvig (2021, §1.2).\\n^ \\nJump up to:\\na b Dartmouth workshop: Russell & Norvig (2021, p.\\xa018), McCorduck (2004, pp.\\xa0111–136), NRC (1999, pp.\\xa0200–201)\\nThe proposal: McCarthy et al. (1955)\\n^ \\nJump up to:\\na b Successful programs of the 1960s: McCorduck (2004, pp.\\xa0243–252), Crevier (1993, pp.\\xa052–107), Moravec (1988, p.\\xa09), Russell & Norvig (2021, pp.\\xa019–21)\\n^ \\nJump up to:\\na b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp.\\xa0426–441), Crevier (1993, pp.\\xa0161–162, 197–203, 211, 240), Russell & Norvig (2021, p.\\xa023), NRC (1999, pp.\\xa0210–211), Newquist (1994, pp.\\xa0235–248)\\n^ \\nJump up to:\\na b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp.\\xa0115–117), Russell & Norvig (2021, pp.\\xa021–22), NRC (1999, pp.\\xa0212–213), Howe (1994), Newquist (1994, pp.\\xa0189–201)\\n^ \\nJump up to:\\na b Second AI Winter: Russell & Norvig (2021, p.\\xa024), McCorduck (2004, pp.\\xa0430–435), Crevier (1993, pp.\\xa0209–210), NRC (1999, pp.\\xa0214–216), Newquist (1994, pp.\\xa0301–318)\\n^ \\nJump up to:\\na b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p.\\xa026), McKinsey (2018)\\n^ Toews (2023).\\n^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3–5), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7–12)\\n^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12–18), Poole, Mackworth & Goebel (1998, pp.\\xa0345–395), Luger & Stubblefield (2004, pp.\\xa0333–381), Nilsson (1998, chpt. 7–12)\\n^ \\nJump up to:\\na b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p.\\xa021)\\n^ \\nJump up to:\\na b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\\n^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.\\xa023–46, 69–81, 169–233, 235–277, 281–298, 319–345), Luger & Stubblefield (2004, pp.\\xa0227–243), Nilsson (1998, chpt. 17.1–17.4, 18)\\n^ Smoliar & Zhang (1994).\\n^ Neumann & Möller (2008).\\n^ Kuperman, Reichley & Bailey (2006).\\n^ McGarry (2005).\\n^ Bertini, Del Bimbo & Torniai (2006).\\n^ Russell & Norvig (2021), pp.\\xa0272.\\n^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, §10.2 & 10.5), Poole, Mackworth & Goebel (1998, pp.\\xa0174–177), Luger & Stubblefield (2004, pp.\\xa0248–258), Nilsson (1998, chpt. 18.3)\\n^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, §10.3), Poole, Mackworth & Goebel (1998, pp.\\xa0281–298), Nilsson (1998, chpt. 18.2)\\n^ Causal calculus: Poole, Mackworth & Goebel (1998, pp.\\xa0335–337)\\n^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, §10.4), Poole, Mackworth & Goebel (1998, pp.\\xa0275–277)\\n^ \\nJump up to:\\na b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, §10.6), Poole, Mackworth & Goebel (1998, pp.\\xa0248–256, 323–335), Luger & Stubblefield (2004, pp.\\xa0335–363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \"default reasoning\". Luger et al. places this under \"uncertain reasoning\").\\n^ \\nJump up to:\\na b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp.\\xa0113–114), Moravec (1988, p.\\xa013), Russell & Norvig (2021, pp.\\xa0241, 385, 982) (qualification problem)\\n^ Newquist (1994), p.\\xa0296.\\n^ Crevier (1993), pp.\\xa0204–208.\\n^ Russell & Norvig (2021), p.\\xa0528.\\n^ Automated planning: Russell & Norvig (2021, chpt. 11).\\n^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16–18).\\n^ Classical planning: Russell & Norvig (2021, Section 11.2).\\n^ Sensorless or \"conformant\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\\n^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\\n^ Information value theory: Russell & Norvig (2021, Section 16.6).\\n^ Markov decision process: Russell & Norvig (2021, chpt. 17).\\n^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\\n^ Learning: Russell & Norvig (2021, chpt. 19–22), Poole, Mackworth & Goebel (1998, pp.\\xa0397–438), Luger & Stubblefield (2004, pp.\\xa0385–542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\\n^ Turing (1950).\\n^ Solomonoff (1956).\\n^ Unsupervised learning: Russell & Norvig (2021, pp.\\xa0653) (definition), Russell & Norvig (2021, pp.\\xa0738–740) (cluster analysis), Russell & Norvig (2021, pp.\\xa0846–860) (word embedding)\\n^ \\nJump up to:\\na b Supervised learning: Russell & Norvig (2021, §19.2) (Definition), Russell & Norvig (2021, Chpt. 19–20) (Techniques)\\n^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp.\\xa0442–449)\\n^ Transfer learning: Russell & Norvig (2021, pp.\\xa0281), The Economist (2016)\\n^ \"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\". builtin.com. Retrieved 30 October 2023.\\n^ Computational learning theory: Russell & Norvig (2021, pp.\\xa0672–674), Jordan & Mitchell (2015)\\n^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23–24), Poole, Mackworth & Goebel (1998, pp.\\xa091–104), Luger & Stubblefield (2004, pp.\\xa0591–632)\\n^ Subproblems of NLP: Russell & Norvig (2021, pp.\\xa0849–850)\\n^ Russell & Norvig (2021), pp.\\xa0856–858.\\n^ Dickson (2022).\\n^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\\n^ Vincent (2019).\\n^ Russell & Norvig (2021), pp.\\xa0875–878.\\n^ Bushwick (2023).\\n^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\\n^ Russell & Norvig (2021), pp.\\xa0849–850.\\n^ Russell & Norvig (2021), pp.\\xa0895–899.\\n^ Russell & Norvig (2021), pp.\\xa0899–901.\\n^ Challa et al. (2011).\\n^ Russell & Norvig (2021), pp.\\xa0931–938.\\n^ MIT AIL (2014).\\n^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\\n^ Waddell (2018).\\n^ Poria et al. (2017).\\n^ Search algorithms: Russell & Norvig (2021, chpts. 3–5), Poole, Mackworth & Goebel (1998, pp.\\xa0113–163), Luger & Stubblefield (2004, pp.\\xa079–164, 193–219), Nilsson (1998, chpts. 7–12)\\n^ State space search: Russell & Norvig (2021, chpt. 3)\\n^ Russell & Norvig (2021), sect. 11.2.\\n^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp.\\xa0113–132), Luger & Stubblefield (2004, pp.\\xa079–121), Nilsson (1998, chpt. 8)\\n^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp.\\xa0132–147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp.\\xa0133–150)\\n^ Adversarial search: Russell & Norvig (2021, chpt. 5)\\n^ Local or \"optimization\" search: Russell & Norvig (2021, chpt. 4)\\n^ Singh Chauhan, Nagesh (18 December 2020). \"Optimization Algorithms in Neural Networks\". KDnuggets. Retrieved 13 January 2024.\\n^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\\n^ Merkle & Middendorf (2013).\\n^ Logic: Russell & Norvig (2021, chpts. 6–9), Luger & Stubblefield (2004, pp.\\xa035–77), Nilsson (1998, chpt. 13–16)\\n^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp.\\xa045–50), Nilsson (1998, chpt. 13)\\n^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp.\\xa0268–275), Luger & Stubblefield (2004, pp.\\xa050–62), Nilsson (1998, chpt. 15)\\n^ Logical inference: Russell & Norvig (2021, chpt. 10)\\n^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp.\\xa0~46–52), Luger & Stubblefield (2004, pp.\\xa062–73), Nilsson (1998, chpt. 4.2, 7.2)\\n^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\\n^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \"Prolog-the language and its implementation compared with Lisp\". ACM SIGPLAN Notices. 12 (8): 109–115. doi:10.1145/872734.806939.\\n^ Fuzzy logic: Russell & Norvig (2021, pp.\\xa0214, 255, 459), Scientific American (1999)\\n^ \\nJump up to:\\na b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12–18, 20), Poole, Mackworth & Goebel (1998, pp.\\xa0345–395), Luger & Stubblefield (2004, pp.\\xa0165–191, 333–381), Nilsson (1998, chpt. 19)\\n^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16–18), Poole, Mackworth & Goebel (1998, pp.\\xa0381–394)\\n^ Information value theory: Russell & Norvig (2021, sect. 16.6)\\n^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\\n^ \\nJump up to:\\na b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\\n^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\\n^ Bayesian networks: Russell & Norvig (2021, sects. 12.5–12.6, 13.4–13.5, 14.3–14.5, 16.5, 20.2–20.3), Poole, Mackworth & Goebel (1998, pp.\\xa0361–381), Luger & Stubblefield (2004, pp.\\xa0~182–190, ≈363–379), Nilsson (1998, chpt. 19.3–19.4)\\n^ Domingos (2015), chpt. 6.\\n^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3–13.5), Poole, Mackworth & Goebel (1998, pp.\\xa0361–381), Luger & Stubblefield (2004, pp.\\xa0~363–379), Nilsson (1998, chpt. 19.4 & 7)\\n^ Domingos (2015), p.\\xa0210.\\n^ Bayesian learning and the expectation–maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp.\\xa0424–433), Nilsson (1998, chpt. 20), Domingos (2015, p.\\xa0210)\\n^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\\n^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\\n^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN\\xa0978-8-8947-8760-3.\\n^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p.\\xa088)\\n^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p.\\xa0187) (k-nearest neighbor)\\nDomingos (2015, p.\\xa088) (kernel methods)\\n^ Domingos (2015), p.\\xa0152.\\n^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p.\\xa0152)\\n^ \\nJump up to:\\na b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\\n^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp.\\xa0467–474), Nilsson (1998, chpt. 3.3)\\n^ Universal approximation theorem: Russell & Norvig (2021, p.\\xa0752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\\n^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\\n^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\\n^ Perceptrons: Russell & Norvig (2021, pp.\\xa021, 22, 683, 22)\\n^ \\nJump up to:\\na b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\\n^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\\n^ Deng & Yu (2014), pp.\\xa0199–200.\\n^ Ciresan, Meier & Schmidhuber (2012).\\n^ Russell & Norvig (2021), p.\\xa0751.\\n^ \\nJump up to:\\na b c Russell & Norvig (2021), p.\\xa017.\\n^ \\nJump up to:\\na b c d e f g Russell & Norvig (2021), p.\\xa0785.\\n^ \\nJump up to:\\na b Schmidhuber (2022), sect. 5.\\n^ Schmidhuber (2022), sect. 6.\\n^ \\nJump up to:\\na b c Schmidhuber (2022), sect. 7.\\n^ Schmidhuber (2022), sect. 8.\\n^ Quoted in Christian (2020, p.\\xa022)\\n^ Smith (2023).\\n^ \"Explained: Generative AI\". 9 November 2023.\\n^ \"AI Writing and Content Creation Tools\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\\n^ Marmouyet (2023).\\n^ Kobielus (2019).\\n^ Thomason, James (21 May 2024). \"Mojo Rising: The resurgence of AI-first programming languages\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\\n^ Wodecki, Ben (5 May 2023). \"7 AI Programming Languages You Need to Know\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\\n^ Plumb, Taryn (18 September 2024). \"Why Jensen Huang and Marc Benioff see \\'gigantic\\' opportunity for agentic AI\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ Mims, Christopher (19 September 2020). \"Huang\\'s Law Is the New Moore\\'s Law, and Explains Why Nvidia Wants Arm\". Wall Street Journal. ISSN\\xa00099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\\n^ Davenport, T; Kalakota, R (June 2019). \"The potential for artificial intelligence in healthcare\". Future Healthc J. 6 (2): 94–98. doi:10.7861/futurehosp.6-2-94. PMC\\xa06616181. PMID\\xa031363513.\\n^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID\\xa038875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\\n^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\". IEEE Access. 9: 102327–102344. Bibcode:2021IEEEA...9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN\\xa02169-3536. PMC\\xa08545201. PMID\\xa034786317.\\n^ \\nJump up to:\\na b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN\\xa02673-5067.\\n^ Jumper, J; Evans, R; Pritzel, A (2021). \"Highly accurate protein structure prediction with AlphaFold\". Nature. 596 (7873): 583–589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\xa08371605. PMID\\xa034265844.\\n^ \"AI discovers new class of antibiotics to kill drug-resistant bacteria\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\n^ \"AI speeds up drug design for Parkinson\\'s ten-fold\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \"Discovery of potent inhibitors of α-synuclein aggregation using structure-based iterative learning\". Nature Chemical Biology. 20 (5). Nature: 634–645. doi:10.1038/s41589-024-01580-x. PMC\\xa011062903. PMID\\xa038632492.\\n^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \"The Talk of the Town – It\". The New Yorker. ISSN\\xa00028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\\n^ Anderson, Mark Robert (11 May 2017). \"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\\n^ Markoff, John (16 February 2011). \"Computer Wins on \\'Jeopardy!\\': Trivial, It\\'s Not\". The New York Times. ISSN\\xa00362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\\n^ Byford, Sam (27 May 2017). \"AlphaGo retires from competitive Go after defeating world number one 3–0\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\\n^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \"Superhuman AI for multiplayer poker\". Science. 365 (6456): 885–890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN\\xa00036-8075. PMID\\xa031296650.\\n^ \"MuZero: Mastering Go, chess, shogi and Atari without rules\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\\n^ Sample, Ian (30 October 2019). \"AI becomes grandmaster in \\'fiendishly complex\\' StarCraft II\". The Guardian. ISSN\\xa00261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\\n^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \"Outracing champion Gran Turismo drivers with deep reinforcement learning\" (PDF). Nature. 602 (7896): 223–228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID\\xa035140384.\\n^ Wilkins, Alex (13 March 2024). \"Google AI learns to play open-world video games by watching them\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\\n^ \"Improving mathematical reasoning with process supervision\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\\n^ Srivastava, Saurabh (29 February 2024). \"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\". arXiv:2402.19450 [cs.AI].\\n^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \"Let\\'s Verify Step by Step\". arXiv:2305.20050v1 [cs.LG].\\n^ Franzen, Carl (9 January 2025). \"Microsoft\\'s new rStar-Math technique upgrades small models to outperform OpenAI\\'s o1-preview at math problems\". VentureBeat. Retrieved 26 January 2025.\\n^ Roberts, Siobhan (25 July 2024). \"AI achieves silver-medal standard solving International Mathematical Olympiad problems\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\\n^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer\\', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \"Llemma: An Open Language Model For Mathematics\". EleutherAI Blog. Retrieved 26 January 2025.\\n^ \"Julius AI\". julius.ai.\\n^ McFarland, Alex (12 July 2024). \"8 Best AI for Math Tools (January 2025)\". Unite.AI. Retrieved 26 January 2025.\\n^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \"What is Artificial Intelligence (AI) in Finance?\" 8 Dec. 2023\\n^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \"Artificial Intelligence: Ask the Industry\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\\n^ \\nJump up to:\\na b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\\n^ \\nJump up to:\\na b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\\n^ Iraqi, Amjad (3 April 2024). \"\\'Lavender\\': The AI machine directing Israel\\'s bombing spree in Gaza\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\\n^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \"\\'The Gospel\\': how Israel uses AI to select bombing targets in Gaza\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\\n^ Marti, J Werner (10 August 2024). \"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf Störsender – deshalb sollen sie jetzt autonom operieren\". Neue Zürcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\\n^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \"Executive Order N-12-23\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\\n^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \"Generative AI for Medical Imaging: extending the MONAI Framework\". arXiv:2307.15208 [eess.IV].\\n^ \"What is ChatGPT, DALL-E, and generative AI?\". McKinsey. Retrieved 14 December 2024.\\n^ \"What is generative AI?\". IBM. 22 March 2024.\\n^ Pasick, Adam (27 March 2023). \"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\". The New York Times. ISSN\\xa00362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\\n^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \"Generative models\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ \\nJump up to:\\na b Griffith, Erin; Metz, Cade (27 January 2023). \"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\\n^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \"A Cheat Sheet to AI Buzzwords and Their Meanings\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (14 March 2023). \"OpenAI Plans to Up the Ante in Tech\\'s A.I. Race\". The New York Times. ISSN\\xa00362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\\n^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \"LaMDA: Language Models for Dialog Applications\". arXiv:2201.08239 [cs.CL].\\n^ Roose, Kevin (21 October 2022). \"A Coming-Out Party for Generative A.I., Silicon Valley\\'s New Craze\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\\n^ Metz, Cade (15 February 2024). \"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\". The New York Times. ISSN\\xa00362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\\n^ \"The race of the AI labs heats up\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Yang, June; Gokturk, Burak (14 March 2023). \"Google Cloud brings generative AI to developers, businesses, and governments\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\\n^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\\n^ \"Don\\'t fear an AI-induced jobs apocalypse just yet\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ Coyle, Jake (27 September 2023). \"In Hollywood writers\\' battle against AI, humans win (for now)\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\\n^ Harreis, H.; Koullias, T.; Roberts, Roger. \"Generative AI: Unlocking the future of fashion\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\\n^ \"How Generative AI Can Augment Human Creativity\". Harvard Business Review. 16 June 2023. ISSN\\xa00017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\\n^ Hendrix, Justin (16 May 2023). \"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\\n^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID\\xa0264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\\n^ \"New AI systems collide with copyright law\". BBC News. 1 August 2023. Retrieved 28 September 2024.\\n^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd\\xa0ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN\\xa0978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th\\xa0ed.). Pearson. ISBN\\xa0978-0-1346-1099-3.\\n^ \"Why agents are the next frontier of generative AI\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\\n^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1–154:24. doi:10.1145/3631414.\\n^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\". Current Sexual Health Reports. 16 (3): 199–215. doi:10.1007/s11930-024-00392-3. ISSN\\xa01548-3592.\\n^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat\\'s \"My AI\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\". The Journal of Sex Research: 1–15. doi:10.1080/00224499.2024.2396457. ISSN\\xa00022-4499. PMID\\xa039254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \"\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN\\xa02378-0231.\\n^ Mania, Karolina (1 January 2024). \"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\". Trauma, Violence, & Abuse. 25 (1): 117–129. doi:10.1177/15248380221143772. ISSN\\xa01524-8380. PMID\\xa036565267.\\n^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\". Journal of Applied Security Research. 19 (4): 586–627. doi:10.1080/19361610.2024.2331885. ISSN\\xa01936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1–38. doi:10.1145/3479609. ISSN\\xa02573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\\n^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \"Reshaping Business With Artificial Intelligence\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\\n^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \"8 – AI for large-scale evacuation modeling: promises and challenges\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp.\\xa0185–204, ISBN\\xa0978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\\n^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; Bénichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \"A Framework for Intelligent Fire Detection and Evacuation System\". Fire Technology. 57 (6): 3179–3185. doi:10.1007/s10694-021-01157-3. ISSN\\xa01572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \"Modelling and interpreting pre-evacuation decision-making using machine learning\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN\\xa00926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\\n^ \"India\\'s latest election embraced AI technology. Here are some ways it was used constructively\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\\n^ Müller, Vincent C. (30 April 2020). \"Ethics of Artificial Intelligence and Robotics\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Simonite (2016).\\n^ Russell & Norvig (2021), p.\\xa0987.\\n^ Laskowski (2023).\\n^ GAO (2022).\\n^ Valinsky (2019).\\n^ Russell & Norvig (2021), p.\\xa0991.\\n^ Russell & Norvig (2021), pp.\\xa0991–992.\\n^ Christian (2020), p.\\xa063.\\n^ Vincent (2022).\\n^ Kopel, Matthew. \"Copyright Services: Fair Use\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\\n^ Burgess, Matt. \"How to Stop Your Data From Being Used to Train AI\". Wired. ISSN\\xa01059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\\n^ Reisner (2023).\\n^ Alter & Harris (2023).\\n^ \"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\" (PDF). WIPO.\\n^ Hammond, George (27 December 2023). \"Big Tech is spending more than VC firms on AI startups\". Ars Technica. Archived from the original on 10 January 2024.\\n^ Wong, Matteo (24 October 2023). \"The Future of AI Is GOMA\". The Atlantic. Archived from the original on 5 January 2024.\\n^ \"Big tech and the pursuit of AI dominance\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\\n^ Fung, Brian (19 December 2023). \"Where the battle to dominate AI may be won\". CNN Business. Archived from the original on 13 January 2024.\\n^ Metz, Cade (5 July 2023). \"In the Age of A.I., Tech\\'s Little Guys Need Big Friends\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\\n^ \"Electricity 2024 – Analysis\". IEA. 24 January 2024. Retrieved 13 July 2024.\\n^ Calvert, Brian (28 March 2024). \"AI already uses as much energy as a small country. It\\'s only the beginning\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\\n^ Halper, Evan; O\\'Donovan, Caroline (21 June 2024). \"AI is exhausting the power grid. Tech firms are seeking a miracle solution\". Washington Post.\\n^ Davenport, Carly. \"AI Data Centers and the Coming YS Power Demand Surge\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\\n^ Ryan, Carol (12 April 2024). \"Energy-Guzzling AI Is Also the Future of Energy Savings\". Wall Street Journal. Dow Jones.\\n^ Hiller, Jennifer (1 July 2024). \"Tech Industry Wants to Lock Up Nuclear Power for AI\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kendall, Tyler (28 September 2024). \"Nvidia\\'s Huang Says Nuclear Power an Option to Feed Data Centers\". Bloomberg.\\n^ Halper, Evan (20 September 2024). \"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\". Washington Post.\\n^ Hiller, Jennifer (20 September 2024). \"Three Mile Island\\'s Nuclear Plant to Reopen, Help Power Microsoft\\'s AI Centers\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \\nJump up to:\\na b c Niva Yadav (19 August 2024). \"Taiwan to stop large data centers in the North, cites insufficient power\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \"エヌビディア出資の日本企業、原発近くでAIデータセンター新設検討\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\\n^ \\nJump up to:\\na b Naureen S Malik and Will Wade (5 November 2024). \"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\". Bloomberg.\\n^ Nicas (2018).\\n^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \"Trust and Distrust in America\". Pew Research Center. Archived from the original on 22 February 2024.\\n^ Williams (2023).\\n^ Taylor & Hern (2023).\\n^ \\nJump up to:\\na b Samuel, Sigal (19 April 2022). \"Why it\\'s so damn hard to make AI fair and unbiased\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\\n^ \\nJump up to:\\na b Rose (2023).\\n^ CNA (2019).\\n^ Goffrey (2008), p.\\xa017.\\n^ Berdahl et al. (2023); Goffrey (2008, p.\\xa017); Rose (2023); Russell & Norvig (2021, p.\\xa0995)\\n^ Christian (2020), p.\\xa025.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), p.\\xa0995.\\n^ Grant & Hill (2023).\\n^ Larson & Angwin (2016).\\n^ Christian (2020), p.\\xa067–70.\\n^ Christian (2020, pp.\\xa067–70); Russell & Norvig (2021, pp.\\xa0993–994)\\n^ Russell & Norvig (2021, p.\\xa0995); Lipartito (2011, p.\\xa036); Goodman & Flaxman (2017, p.\\xa06); Christian (2020, pp.\\xa039–40, 65)\\n^ Quoted in Christian (2020, p.\\xa065).\\n^ Russell & Norvig (2021, p.\\xa0994); Christian (2020, pp.\\xa040, 80–81)\\n^ Quoted in Christian (2020, p.\\xa080)\\n^ Dockrill (2022).\\n^ Sample (2017).\\n^ \"Black Box AI\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\\n^ Christian (2020), p.\\xa0110.\\n^ Christian (2020), pp.\\xa088–91.\\n^ Christian (2020, p.\\xa083); Russell & Norvig (2021, p.\\xa0997)\\n^ Christian (2020), p.\\xa091.\\n^ Christian (2020), p.\\xa083.\\n^ Verma (2021).\\n^ Rothman (2020).\\n^ Christian (2020), pp.\\xa0105–108.\\n^ Christian (2020), pp.\\xa0108–112.\\n^ Ropek, Lucas (21 May 2024). \"New Anthropic Research Sheds Light on AI\\'s \\'Black Box\\'\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\\n^ Russell & Norvig (2021), p.\\xa0989.\\n^ \\nJump up to:\\na b Russell & Norvig (2021), pp.\\xa0987–990.\\n^ Russell & Norvig (2021), p.\\xa0988.\\n^ Robitzski (2018); Sainato (2015)\\n^ Harari (2018).\\n^ Buckley, Chris; Mozur, Paul (22 May 2019). \"How China Uses High-Tech Surveillance to Subdue Minorities\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\\n^ \"Security lapse exposed a Chinese smart city surveillance system\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\\n^ Urbina et al. (2022).\\n^ \\nJump up to:\\na b E. McGaughey, \\'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy\\' (2022), 51(3) Industrial Law Journal 511–559. Archived 27 May 2023 at the Wayback Machine.\\n^ Ford & Colvin (2015);McGaughey (2022)\\n^ IGM Chicago (2017).\\n^ Arntz, Gregory & Zierahn (2016), p.\\xa033.\\n^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p.\\xa033)\\n^ Zhou, Viola (11 April 2023). \"AI is already taking video game illustrators\\' jobs in China\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\\n^ Carter, Justin (11 April 2023). \"China\\'s game art industry reportedly decimated by growing AI use\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\\n^ Morgenstern (2015).\\n^ Mahdawi (2017); Thompson (2014)\\n^ Tarnoff, Ben (4 August 2023). \"Lessons from Eliza\". The Guardian Weekly. pp.\\xa034–39.\\n^ Cellan-Jones (2014).\\n^ Russell & Norvig 2021, p.\\xa01001.\\n^ Bostrom (2014).\\n^ Russell (2019).\\n^ Bostrom (2014); Müller & Bostrom (2014); Bostrom (2015).\\n^ Harari (2023).\\n^ Müller & Bostrom (2014).\\n^ Leaders\\' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\\n^ \"\"Godfather of artificial intelligence\" talks impact and potential of new AI\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\\n^ Pittis, Don (4 May 2023). \"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\\n^ \"\\'50–50 chance\\' that AI outsmarts humanity, Geoffrey Hinton says\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\\n^ Valance (2023).\\n^ Taylor, Josh (7 May 2023). \"Rise of artificial intelligence is inevitable but should not be feared, \\'father of AI\\' says\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\\n^ Colton, Emma (7 May 2023). \"\\'Father of AI\\' says tech fears misplaced: \\'You cannot stop it\\'\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ Jones, Hessie (23 May 2023). \"Juergen Schmidhuber, Renowned \\'Father Of Modern AI,\\' Says His Life\\'s Work Won\\'t Lead To Dystopia\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\\n^ McMorrow, Ryan (19 December 2023). \"Andrew Ng: \\'Do we think the world is better off with more or less intelligence?\\'\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\\n^ Levy, Steven (22 December 2023). \"How Not to Be Stupid About AI, With Yann LeCun\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\\n^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\\n^ \\nJump up to:\\na b Christian (2020), pp.\\xa067, 73.\\n^ Yudkowsky (2008).\\n^ \\nJump up to:\\na b Anderson & Anderson (2011).\\n^ AAAI (2014).\\n^ Wallach (2010).\\n^ Russell (2019), p.\\xa0173.\\n^ Stewart, Ashley; Melton, Monica. \"Hugging Face CEO says he\\'s focused on building a \\'sustainable model\\' for the $4.5 billion open-source-AI startup\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\\n^ Wiggers, Kyle (9 April 2024). \"Google open sources tools to support AI model development\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\\n^ Heaven, Will Douglas (12 May 2023). \"The open-source AI boom is built on Big Tech\\'s handouts. How long will it last?\". MIT Technology Review. Retrieved 14 April 2024.\\n^ Brodsky, Sascha (19 December 2023). \"Mistral AI\\'s New Language Model Aims for Open Source Supremacy\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\\n^ Edwards, Benj (22 February 2024). \"Stability announces Stable Diffusion 3, a next-gen AI image generator\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Marshall, Matt (29 January 2024). \"How enterprises are using open source LLMs: 16 examples\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\\n^ Piper, Kelsey (2 February 2024). \"Should we make our most powerful AI models open source to all?\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\\n^ Alan Turing Institute (2019). \"Understanding artificial intelligence ethics and safety\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Alan Turing Institute (2023). \"AI Ethics and Governance in Practice\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\\n^ Floridi, Luciano; Cowls, Josh (23 June 2019). \"A Unified Framework of Five Principles for AI in Society\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID\\xa0198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\\n^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\". Medicine, Health Care and Philosophy. 23 (3): 387–399. doi:10.1007/s11019-020-09948-1. ISSN\\xa01572-8633. PMID\\xa032236794. S2CID\\xa0214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \"Ethical issues in the development of artificial intelligence: recognizing the risks\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN\\xa02514-9369. S2CID\\xa0259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ \"AI Safety Institute releases new AI safety evaluations platform\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\\n^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\\n^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\\n^ \\nJump up to:\\na b Vincent (2023).\\n^ Stanford University (2023).\\n^ \\nJump up to:\\na b c d UNESCO (2021).\\n^ Kissinger (2021).\\n^ Altman, Brockman & Sutskever (2023).\\n^ VOA News (25 October 2023). \"UN Announces Advisory Body on Artificial Intelligence\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\\n^ \"Council of Europe opens first ever global treaty on AI for signature\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\\n^ Edwards (2023).\\n^ Kasperowicz (2023).\\n^ Fox News (2023).\\n^ Milmo, Dan (3 November 2023). \"Hope or Horror? The great AI debate dividing its pioneers\". The Guardian Weekly. pp.\\xa010–12.\\n^ \"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1–2 November 2023\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\\n^ \"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\\n^ \"Second global AI summit secures safety commitments from companies\". Reuters. 21 May 2024. Retrieved 23 May 2024.\\n^ \"Frontier AI Safety Commitments, AI Seoul Summit 2024\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\\n^ \\nJump up to:\\na b Russell & Norvig 2021, p.\\xa09.\\n^ \\nJump up to:\\na b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN\\xa00-1982-5079-7.\\n^ \"Google books ngram\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\n^ AI\\'s immediate precursors: McCorduck (2004, pp.\\xa051–107), Crevier (1993, pp.\\xa027–32), Russell & Norvig (2021, pp.\\xa08–17), Moravec (1988, p.\\xa03)\\n^ \\nJump up to:\\na b Turing\\'s original publication of the Turing test in \"Computing machinery and intelligence\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp.\\xa06–9), Crevier (1993, p.\\xa024), McCorduck (2004, pp.\\xa070–71), Russell & Norvig (2021, pp.\\xa02, 984)\\n^ Crevier (1993), pp.\\xa047–49.\\n^ Russell & Norvig (2003), p.\\xa017.\\n^ Russell & Norvig (2003), p.\\xa018.\\n^ Newquist (1994), pp.\\xa086–86.\\n^ Simon (1965, p.\\xa096) quoted in Crevier (1993, p.\\xa0109)\\n^ Minsky (1967, p.\\xa02) quoted in Crevier (1993, p.\\xa0109)\\n^ Russell & Norvig (2021), p.\\xa021.\\n^ Lighthill (1973).\\n^ NRC 1999, pp.\\xa0212–213.\\n^ Russell & Norvig (2021), p.\\xa022.\\n^ Expert systems: Russell & Norvig (2021, pp.\\xa023, 292), Luger & Stubblefield (2004, pp.\\xa0227–331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp.\\xa0327–335, 434–435), Crevier (1993, pp.\\xa0145–162, 197–203), Newquist (1994, pp.\\xa0155–183)\\n^ Russell & Norvig (2021), p.\\xa024.\\n^ Nilsson (1998), p.\\xa07.\\n^ McCorduck (2004), pp.\\xa0454–462.\\n^ Moravec (1988).\\n^ \\nJump up to:\\na b Brooks (1990).\\n^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\\n^ Russell & Norvig (2021), p.\\xa025.\\n^ Crevier (1993, pp.\\xa0214–215), Russell & Norvig (2021, pp.\\xa024, 26)\\n^ Russell & Norvig (2021), p.\\xa026.\\n^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp.\\xa024–26), McCorduck (2004, pp.\\xa0486–487)\\n^ AI widely used in the late 1990s: Kurzweil (2005, p.\\xa0265), NRC (1999, pp.\\xa0216–222), Newquist (1994, pp.\\xa0189–201)\\n^ Wong (2023).\\n^ Moore\\'s Law and AI: Russell & Norvig (2021, pp.\\xa014, 27)\\n^ \\nJump up to:\\na b c Clark (2015b).\\n^ Big data: Russell & Norvig (2021, p.\\xa026)\\n^ Sagar, Ram (3 June 2020). \"OpenAI Releases GPT-3, The Largest Model So Far\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\\n^ Milmo, Dan (2 February 2023). \"ChatGPT reaches 100 million users two months after launch\". The Guardian. ISSN\\xa00261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\\n^ Gorichanaz, Tim (29 November 2023). \"ChatGPT turns 1: AI chatbot\\'s success says as much about humans as technology\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\\n^ DiFeliciantonio (2023).\\n^ Goswami (2023).\\n^ \"Nearly 1 in 4 new startups is an AI company\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\\n^ Grayling, Anthony; Ball, Brian (1 August 2024). \"Philosophy is crucial in the age of AI\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\\n^ \\nJump up to:\\na b Jarow, Oshan (15 June 2024). \"Will AI ever become conscious? It depends on how you think about biology\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\\n^ McCarthy, John. \"The Philosophy of AI and the AI of Philosophy\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\\n^ \\nJump up to:\\na b Turing (1950), p.\\xa01.\\n^ Turing (1950), Under \"The Argument from Consciousness\".\\n^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \"AI is closer than ever to passing the Turing test for \\'intelligence\\'. What happens when it does?\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\\n^ Russell & Norvig (2021), p.\\xa03.\\n^ Maker (2006).\\n^ McCarthy (1999).\\n^ Minsky (1986).\\n^ \"What Is Artificial Intelligence (AI)?\". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\\n^ \"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\\n^ \"AI or BS? How to tell if a marketing tool really uses artificial intelligence\". The Drum. Retrieved 31 July 2024.\\n^ Nilsson (1983), p.\\xa010.\\n^ Haugeland (1985), pp.\\xa0112–117.\\n^ Physical symbol system hypothesis: Newell & Simon (1976, p.\\xa0116) Historical significance: McCorduck (2004, p.\\xa0153), Russell & Norvig (2021, p.\\xa019)\\n^ Moravec\\'s paradox: Moravec (1988, pp.\\xa015–16), Minsky (1986, p.\\xa029), Pinker (2007, pp.\\xa0190–191)\\n^ Dreyfus\\' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp.\\xa0120–132), McCorduck (2004, pp.\\xa0211–239), Russell & Norvig (2021, pp.\\xa0981–982), Fearn (2007, chpt. 3)\\n^ Crevier (1993), p.\\xa0125.\\n^ Langley (2011).\\n^ Katz (2012).\\n^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp.\\xa0421–424, 486–489), Crevier (1993, p.\\xa0168), Nilsson (1983, pp.\\xa010–11), Russell & Norvig (2021, p.\\xa024) A classic example of the \"scruffy\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\\n^ Pennachin & Goertzel (2007).\\n^ \\nJump up to:\\na b Roberts (2016).\\n^ Russell & Norvig (2021), p.\\xa0986.\\n^ Chalmers (1995).\\n^ Dennett (1991).\\n^ Horst (2005).\\n^ Searle (1999).\\n^ Searle (1980), p.\\xa01.\\n^ Russell & Norvig (2021), p.\\xa09817.\\n^ Searle\\'s Chinese room argument: Searle (1980). Searle\\'s original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp.\\xa0985), McCorduck (2004, pp.\\xa0443–445), Crevier (1993, pp.\\xa0269–271)\\n^ Leith, Sam (7 July 2022). \"Nick Bostrom: How can we be certain a machine isn\\'t conscious?\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b c Thomson, Jonny (31 October 2022). \"Why don\\'t robots have rights?\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\\n^ \\nJump up to:\\na b Kateman, Brian (24 July 2023). \"AI Should Be Terrified of Humans\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\\n^ Wong, Jeff (10 July 2023). \"What leaders need to know about robot rights\". Fast Company.\\n^ Hern, Alex (12 January 2017). \"Give robots \\'personhood\\' status, EU committee argues\". The Guardian. ISSN\\xa00261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Dovey, Dana (14 April 2018). \"Experts Don\\'t Think Robots Should Have Rights\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\\n^ Cuddy, Alice (13 April 2018). \"Robot rights violate human rights, experts warn EU\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\\n^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp.\\xa01004–1005), Omohundro (2008), Kurzweil (2005) I. J. Good\\'s \"intelligence explosion\": Good (1965) Vernor Vinge\\'s \"singularity\": Vinge (1993)\\n^ Russell & Norvig (2021), p.\\xa01005.\\n^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p.\\xa01005)\\n^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p.\\xa0401), Butler (1863), Dyson (1998)\\n^ McQuillan, Dan (14 January 2025). \"a gift to the far right\". ComputerWeekly.com. Retrieved 22 January 2025.\\n^ AI in myth: McCorduck (2004, pp.\\xa04–5)\\n^ McCorduck (2004), pp.\\xa0340–400.\\n^ Buttazzo (2001).\\n^ Anderson (2008).\\n^ McCauley (2007).\\n^ Galvan (1997).\\nAI textbooks\\n\\nThe two most widely used textbooks in 2023 (see the Open Syllabus):\\n\\nRussell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th\\xa0ed.). Hoboken: Pearson. ISBN\\xa0978-0-1346-1099-3. LCCN\\xa020190474.\\nRich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd\\xa0ed.). New Delhi: Tata McGraw Hill India. ISBN\\xa0978-0-0700-8770-5.\\n\\nThe four most widely used AI textbooks in 2008:\\n\\nLuger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th\\xa0ed.). Benjamin/Cummings. ISBN\\xa0978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\\nNilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN\\xa0978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nRussell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd\\xa0ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN\\xa00-13-790395-2.\\nPoole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN\\xa0978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd\\xa0ed.). Cambridge University Press. ISBN\\xa0978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\\n\\nOther textbooks:\\n\\nErtel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd\\xa0ed.). Springer. ISBN\\xa0978-3-3195-8486-7.\\nCiaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st\\xa0ed.). Intellisemantic Editions. ISBN\\xa0978-8-8947-8760-3.\\nHistory of AI\\nCrevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN\\xa00-465-02997-3.\\nMcCorduck, Pamela (2004), Machines Who Think (2nd\\xa0ed.), Natick, Massachusetts: A. K. Peters, ISBN\\xa01-5688-1205-1\\nNewquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN\\xa0978-0-6723-0412-5.\\nHarmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN\\xa00471614963.\\nOther sources\\nAI & ML in Fusion\\nAI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\\nAlter, Alexandra; Harris, Elizabeth A. (20 September 2023), \"Franzen, Grisham and Other Prominent Authors Sue OpenAI\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\\nAltman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \"Governance of Superintelligence\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\\nAnderson, Susan Leigh (2008). \"Asimov\\'s \"three laws of robotics\" and machine metaethics\". AI & Society. 22 (4): 477–493. doi:10.1007/s00146-007-0094-5. S2CID\\xa01809459.\\nAnderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\\nArntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \"The risk of automation for jobs in OECD countries: A comparative analysis\", OECD Social, Employment, and Migration Working Papers 189\\nAsada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \"Cognitive developmental robotics: a survey\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12–34. doi:10.1109/tamd.2009.2021702. S2CID\\xa010168773.\\n\"Ask the AI experts: What\\'s driving today\\'s progress in AI?\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\\nBarfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN\\xa0978-1-7864-3904-8. OCLC\\xa01039480085.\\nBeal, J.; Winston, Patrick (2009), \"The New Frontier of Human-Level Artificial Intelligence\", IEEE Intelligent Systems, vol.\\xa024, pp.\\xa021–24, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID\\xa032437713\\nBerdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN\\xa02817-1705. PMC\\xa011041459. PMID\\xa038875587. S2CID\\xa0256681439.\\nBerryhill, Jamie; Heang, Kévin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\\nBertini, M; Del Bimbo, A; Torniai, C (2006). \"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\". MM \\'06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp.\\xa0679–682.\\nBostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\\nBostrom, Nick (2015). \"What happens when our computers get smarter than we are?\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\\nBrooks, Rodney (10 November 2014). \"artificial intelligence is a tool, not a threat\". Archived from the original on 12 November 2014.\\nBrooks, Rodney (1990). \"Elephants Don\\'t Play Chess\" (PDF). Robotics and Autonomous Systems. 6 (1–2): 3–15. CiteSeerX\\xa010.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\\nBuiten, Miriam C (2019). \"Towards Intelligent Regulation of Artificial Intelligence\". European Journal of Risk Regulation. 10 (1): 41–59. doi:10.1017/err.2019.8. ISSN\\xa01867-299X.\\nBushwick, Sophie (16 March 2023), \"What the New GPT-4 AI Can Do\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\\nButler, Samuel (13 June 1863). \"Darwin among the Machines\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 – via Victoria University of Wellington.\\nButtazzo, G. (July 2001). \"Artificial consciousness: Utopia or real possibility?\". Computer. 34 (7): 24–30. doi:10.1109/2.933500.\\nCambria, Erik; White, Bebo (May 2014). \"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\". IEEE Computational Intelligence Magazine. 9 (2): 48–57. doi:10.1109/MCI.2014.2307227. S2CID\\xa0206451986.\\nCellan-Jones, Rory (2 December 2014). \"Stephen Hawking warns artificial intelligence could end mankind\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nChalmers, David (1995). \"Facing up to the problem of consciousness\". Journal of Consciousness Studies. 2 (3): 200–219. CiteSeerX\\xa010.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\\nChalla, Subhash; Moreland, Mark R.; Mušicki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN\\xa0978-0-5218-7628-5.\\nChristian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN\\xa0978-0-3938-6833-3. OCLC\\xa01233266753.\\nCiresan, D.; Meier, U.; Schmidhuber, J. (2012). \"Multi-column deep neural networks for image classification\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.\\xa03642–3649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN\\xa0978-1-4673-1228-8. S2CID\\xa02161592.\\nClark, Jack (2015b). \"Why 2015 Was a Breakthrough Year in Artificial Intelligence\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\\nCNA (12 January 2019). \"Commentary: Bad news. Artificial intelligence is biased\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\\nCybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\\nDeng, L.; Yu, D. (2014). \"Deep Learning: Methods and Applications\" (PDF). Foundations and Trends in Signal Processing. 7 (3–4): 197–387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\\nDennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN\\xa0978-0-7139-9037-9.\\nDiFeliciantonio, Chase (3 April 2023). \"AI has already changed the world. This report shows how\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nDickson, Ben (2 May 2022). \"Machine learning: What is the transformer architecture?\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\\nDockrill, Peter (27 June 2022), \"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\", Science Alert, archived from the original on 27 June 2022\\nDomingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN\\xa0978-0-4650-6570-7.\\nDreyfus, Hubert (1972). What Computers Can\\'t Do. New York: MIT Press. ISBN\\xa0978-0-0601-1082-6.\\nDreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN\\xa0978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nDyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN\\xa0978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nEdelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN\\xa0978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nEdwards, Benj (17 May 2023). \"Poll: AI poses risk to humanity, according to majority of Americans\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nFearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World\\'s Greatest Thinkers. New York: Grove Press. ISBN\\xa0978-0-8021-1839-4.\\nFord, Martin; Colvin, Geoff (6 September 2015). \"Will robots create more jobs than they destroy?\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\\nFox News (2023). \"Fox News Poll\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\\nFrey, Carl Benedikt; Osborne, Michael A (1 January 2017). \"The future of employment: How susceptible are jobs to computerisation?\". Technological Forecasting and Social Change. 114: 254–280. CiteSeerX\\xa010.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN\\xa00040-1625.\\n\"From not working to neural networking\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\\nGalvan, Jill (1 January 1997). \"Entering the Posthuman Collective in Philip K. Dick\\'s \"Do Androids Dream of Electric Sheep?\"\". Science Fiction Studies. 24 (3): 413–429. JSTOR\\xa04240644.\\nGeist, Edward Moore (9 August 2015). \"Is artificial intelligence really an existential threat to humanity?\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGibbs, Samuel (27 October 2014). \"Elon Musk: artificial intelligence is our biggest existential threat\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nGoffrey, Andrew (2008). \"Algorithm\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp.\\xa015–20. ISBN\\xa0978-1-4356-4787-9.\\nGoldman, Sharon (14 September 2022). \"10 years later, deep learning \\'revolution\\' rages on, say AI pioneers Hinton, LeCun and Li\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\\nGood, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\\nGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\\nGoodman, Bryce; Flaxman, Seth (2017). \"EU regulations on algorithmic decision-making and a \\'right to explanation\\'\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID\\xa07373959.\\nGovernment Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\\nGrant, Nico; Hill, Kashmir (22 May 2023). \"Google\\'s Photo App Still Can\\'t Find Gorillas. And Neither Can Apple\\'s\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\\nGoswami, Rohan (5 April 2023). \"Here\\'s where the A.I. jobs are\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nHarari, Yuval Noah (October 2018). \"Why Technology Favors Tyranny\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\\nHarari, Yuval Noah (2023). \"AI and the future of humanity\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\\nHaugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN\\xa0978-0-2620-8153-5.\\nHinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \"Deep Neural Networks for Acoustic Modeling in Speech Recognition – The shared views of four research groups\". IEEE Signal Processing Magazine. 29 (6): 82–97. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID\\xa0206485943.\\nHolley, Peter (28 January 2015). \"Bill Gates on dangers of artificial intelligence: \\'I don\\'t understand why some people are not concerned\\'\". The Washington Post. ISSN\\xa00190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nHornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol.\\xa02. Pergamon Press. pp.\\xa0359–366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\\nHorst, Steven (2005). \"The Computational Theory of Mind\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\\nHowe, J. (November 1994). \"Artificial Intelligence at Edinburgh University: a Perspective\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\\nIGM Chicago (30 June 2017). \"Robots and Artificial Intelligence\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\\nIphofen, Ron; Kritikos, Mihalis (3 January 2019). \"Regulating artificial intelligence and robotics: ethics by design in a digital society\". Contemporary Social Science. 16 (2): 170–184. doi:10.1080/21582041.2018.1563803. ISSN\\xa02158-2041. S2CID\\xa059298502.\\nJordan, M. I.; Mitchell, T. M. (16 July 2015). \"Machine learning: Trends, perspectives, and prospects\". Science. 349 (6245): 255–260. Bibcode:2015Sci...349..255J. doi:10.1126/science.aaa8415. PMID\\xa026185243. S2CID\\xa0677218.\\nKahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN\\xa0978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\\nKahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \"Judgment under uncertainty: Heuristics and biases\". Science. 185 (4157). New York: Cambridge University Press: 1124–1131. Bibcode:1974Sci...185.1124T. doi:10.1126/science.185.4157.1124. ISBN\\xa0978-0-5212-8414-1. PMID\\xa017835457. S2CID\\xa0143452957.\\nKasperowicz, Peter (1 May 2023). \"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nKatz, Yarden (1 November 2012). \"Noam Chomsky on Where Artificial Intelligence Went Wrong\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\\n\"Kismet\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\\nKissinger, Henry (1 November 2021). \"The Challenge of Being Human in the Age of AI\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\\nKobielus, James (27 November 2019). \"GPUs Continue to Dominate the AI Accelerator Market for Now\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\\nKuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\". Journal of the American Medical Informatics Association. 13 (4): 369–371. doi:10.1197/jamia.M2055. PMC\\xa01513681. PMID\\xa016622160.\\nKurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN\\xa0978-0-6700-3384-3.\\nLangley, Pat (2011). \"The changing science of machine learning\". Machine Learning. 82 (3): 275–279. doi:10.1007/s10994-011-5242-y.\\nLarson, Jeff; Angwin, Julia (23 May 2016). \"How We Analyzed the COMPAS Recidivism Algorithm\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\\nLaskowski, Nicole (November 2023). \"What is Artificial Intelligence and How Does AI Work? TechTarget\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\\nLaw Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN\\xa02019668143. OCLC\\xa01110727808.\\nLee, Timothy B. (22 August 2014). \"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nLenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN\\xa0978-0-2015-1752-1.\\nLighthill, James (1973). \"Artificial Intelligence: A General Survey\". Artificial Intelligence: a paper symposium. Science Research Council.\\nLipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID\\xa0166742927, archived (PDF) from the original on 9 October 2022\\nLohr, Steve (2017). \"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nLungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \"Developmental robotics: a survey\". Connection Science. 15 (4): 151–190. CiteSeerX\\xa010.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID\\xa01452734.\\n\"Machine Ethics\". aaai.org. Archived from the original on 29 November 2014.\\nMadrigal, Alexis C. (27 February 2015). \"The case against killer robots, from a guy actually working on artificial intelligence\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\\nMahdawi, Arwa (26 June 2017). \"What jobs will still be around in 20 years? Read this to prepare your future\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\\nMaker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\\nMarmouyet, Françoise (15 December 2023). \"Google\\'s Gemini: is the new AI model really better than ChatGPT?\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\\nMinsky, Marvin (1986), The Society of Mind, Simon and Schuster\\nMcCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\\nMcCarthy, John (2007), \"From Here to Human-Level AI\", Artificial Intelligence, p.\\xa0171\\nMcCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\\nMcCauley, Lee (2007). \"AI armageddon and the three laws of robotics\". Ethics and Information Technology. 9 (2): 153–164. CiteSeerX\\xa010.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID\\xa037272949.\\nMcGarry, Ken (1 December 2005). \"A survey of interestingness measures for knowledge discovery\". The Knowledge Engineering Review. 20 (1): 39–61. doi:10.1017/S0269888905000408. S2CID\\xa014987656.\\nMcGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p.\\xa051(3) Industrial Law Journal 511–559, doi:10.2139/ssrn.3044448, S2CID\\xa0219336439, SSRN\\xa03044448, archived from the original on 31 January 2021, retrieved 27 May 2023\\nMerkle, Daniel; Middendorf, Martin (2013). \"Swarm Intelligence\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN\\xa0978-1-4614-6940-7.\\nMinsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\\nMoravec, Hans (1988). Mind Children. Harvard University Press. ISBN\\xa0978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nMorgenstern, Michael (9 May 2015). \"Automation and anxiety\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\\nMüller, Vincent C.; Bostrom, Nick (2014). \"Future Progress in Artificial Intelligence: A Poll Among Experts\" (PDF). AI Matters. 1 (1): 9–11. doi:10.1145/2639475.2639478. S2CID\\xa08510016. Archived (PDF) from the original on 15 January 2016.\\nNeumann, Bernd; Möller, Ralf (January 2008). \"On scene interpretation with description logics\". Image and Vision Computing. 26 (1): 82–101. doi:10.1016/j.imavis.2007.08.013. S2CID\\xa010767011.\\nNilsson, Nils (1995), \"Eyes on the Prize\", AI Magazine, vol.\\xa016, pp.\\xa09–17\\nNewell, Allen; Simon, H. A. (1976). \"Computer Science as Empirical Inquiry: Symbols and Search\". Communications of the ACM. 19 (3): 113–126. doi:10.1145/360018.360022.\\nNicas, Jack (7 February 2018). \"How YouTube Drives People to the Internet\\'s Darkest Corners\". The Wall Street Journal. ISSN\\xa00099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\\nNilsson, Nils (1983). \"Artificial Intelligence Prepares for 2001\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\\nNRC (United States National Research Council) (1999). \"Developments in Artificial Intelligence\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\\nOmohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\\nOudeyer, P-Y. (2010). \"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2–16. doi:10.1109/tamd.2009.2039057. S2CID\\xa06362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\\nPennachin, C.; Goertzel, B. (2007). \"Contemporary Approaches to Artificial General Intelligence\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.\\xa01–30. doi:10.1007/978-3-540-68677-4_1. ISBN\\xa0978-3-5402-3733-4.\\nPinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN\\xa0978-0-0613-3646-1\\nPoria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \"A review of affective computing: From unimodal analysis to multimodal fusion\". Information Fusion. 37: 98–125. doi:10.1016/j.inffus.2017.02.003. hdl:1893/25490. S2CID\\xa0205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\\nRawlinson, Kevin (29 January 2015). \"Microsoft\\'s Bill Gates insists AI is a threat\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\\nReisner, Alex (19 August 2023), \"Revealed: The Authors Whose Pirated Books are Powering Generative AI\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\\nRoberts, Jacob (2016). \"Thinking Machines: The Search for Artificial Intelligence\". Distillations. Vol.\\xa02, no.\\xa02. pp.\\xa014–23. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\\nRobitzski, Dan (5 September 2018). \"Five experts share what scares them the most about AI\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\\nRose, Steve (11 July 2023). \"AI Utopia or dystopia?\". The Guardian Weekly. pp.\\xa042–43.\\nRussell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN\\xa0978-0-5255-5861-3. OCLC\\xa01083694322.\\nSainato, Michael (19 August 2015). \"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\\nSample, Ian (5 November 2017). \"Computer says no: why making AIs fair, accountable and transparent is crucial\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\\nRothman, Denis (7 October 2020). \"Exploring LIME Explanations and the Mathematics Behind It\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nScassellati, Brian (2002). \"Theory of mind for a humanoid robot\". Autonomous Robots. 12 (1): 13–24. doi:10.1023/A:1013298507114. S2CID\\xa01979315.\\nSchmidhuber, J. (2015). \"Deep Learning in Neural Networks: An Overview\". Neural Networks. 61: 85–117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID\\xa025462637. S2CID\\xa011715509.\\nSchmidhuber, Jürgen (2022). \"Annotated History of Modern AI and Deep Learning\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\\nSearle, John (1980). \"Minds, Brains and Programs\" (PDF). Behavioral and Brain Sciences. 3 (3): 417–457. doi:10.1017/S0140525X00005756. S2CID\\xa055303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\\nSearle, John (1999). Mind, language and society. New York: Basic Books. ISBN\\xa0978-0-4650-4521-1. OCLC\\xa0231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nSimon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\\nSimonite, Tom (31 March 2016). \"How Google Plans to Solve Artificial Intelligence\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\\nSmith, Craig S. (15 March 2023). \"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\\nSmoliar, Stephen W.; Zhang, HongJiang (1994). \"Content based video indexing and retrieval\". IEEE MultiMedia. 1 (2): 62–72. doi:10.1109/93.311653. S2CID\\xa032710913.\\nSolomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 – via std.com, pdf scanned copy of the original. Later published as\\nSolomonoff, Ray (1957). \"An Inductive Inference Machine\". IRE Convention Record. Vol.\\xa0Section on Information Theory, part 2. pp.\\xa056–62.\\nStanford University (2023). \"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\\nTao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol.\\xa03784. Springer. pp.\\xa0981–995. doi:10.1007/11573548. ISBN\\xa0978-3-5402-9621-8.\\nTaylor, Josh; Hern, Alex (2 May 2023). \"\\'Godfather of AI\\' Geoffrey Hinton quits Google and warns over dangers of misinformation\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\\nThompson, Derek (23 January 2014). \"What Jobs Will the Robots Take?\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nThro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN\\xa0978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nToews, Rob (3 September 2023). \"Transformers Revolutionized AI. What Will Replace Them?\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\\nTuring, Alan (October 1950). \"Computing Machinery and Intelligence\". Mind. 59 (236): 433–460. doi:10.1093/mind/LIX.236.433. ISSN\\xa01460-2113. JSTOR\\xa02251299. S2CID\\xa014636783.\\nUNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN\\xa0978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\\nUrbina, Fabio; Lentzos, Filippa; Invernizzi, Cédric; Ekins, Sean (7 March 2022). \"Dual use of artificial-intelligence-powered drug discovery\". Nature Machine Intelligence. 4 (3): 189–191. doi:10.1038/s42256-022-00465-9. PMC\\xa09544280. PMID\\xa036211133. S2CID\\xa0247302391.\\nValance, Christ (30 May 2023). \"Artificial intelligence could lead to extinction, experts warn\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\\nValinsky, Jordan (11 April 2019), \"Amazon reportedly employs thousands of people to listen to your Alexa conversations\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\\nVerma, Yugesh (25 December 2021). \"A Complete Guide to SHAP – SHAPley Additive exPlanations for Practitioners\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\\nVincent, James (7 November 2019). \"OpenAI has published the text-generating AI it said was too dangerous to share\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\\nVincent, James (15 November 2022). \"The scary truth about AI copyright is nobody knows what will happen next\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVincent, James (3 April 2023). \"AI is entering an era of corporate control\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\\nVinge, Vernor (1993). \"The Coming Technological Singularity: How to Survive in the Post-Human Era\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\\nWaddell, Kaveh (2018). \"Chatbots Have Entered the Uncanny Valley\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\\nWallach, Wendell (2010). Moral Machines. Oxford University Press.\\nWason, P. C.; Shapiro, D. (1966). \"Reasoning\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\\nWeng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \"Autonomous mental development by robots and animals\" (PDF). Science. 291 (5504): 599–600. doi:10.1126/science.291.5504.599. PMID\\xa011229402. S2CID\\xa054131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 – via msu.edu.\\n\"What is \\'fuzzy logic\\'? Are there computers that are inherently fuzzy and do not apply the usual binary logic?\". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\\nWilliams, Rhiannon (28 June 2023), \"Humans may be more likely to believe disinformation generated by AI\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\\nWirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \"Artificial Intelligence and the Public Sector – Applications and Challenges\". International Journal of Public Administration. 42 (7): 596–615. doi:10.1080/01900692.2018.1498103. ISSN\\xa00190-0692. S2CID\\xa0158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\\nWong, Matteo (19 May 2023), \"ChatGPT Is Already Obsolete\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\\nYudkowsky, E (2008), \"Artificial Intelligence as a Positive and Negative Factor in Global Risk\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\\nFurther reading\\nAutor, David H., \"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\" (2015) 29(3) Journal of Economic Perspectives 3.\\nBerlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN\\xa0978-0-1560-1391-8. OCLC\\xa046890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\\nBoyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\\nCukier, Kenneth, \"Ready for Robots? How to Think about the Future of AI\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp.\\xa0192–198. George Dyson, historian of computing, writes (in what might be called \"Dyson\\'s Law\") that \"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\" (p.\\xa0197.) Computer scientist Alex Pentland writes: \"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\" (p.\\xa0198.)\\nEvans, Woody (2015). \"Posthuman Rights: Dimensions of Transhuman Worlds\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID\\xa0147612763.\\nFrank, Michael (22 September 2023). \"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs – and their affiliates in allied countries – appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\\nGertner, Jon. (2023) \"Wikipedia\\'s Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right — without destroying itself in the process?\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\\nGleick, James, \"The Fate of Free Will\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27–28, 30. \"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences – disembodied, strangers to blood, sweat, and tears – have no occasion for that.\" (p. 30.)\\nHalpern, Sue, \"The Coming Tech Autocracy\" (review of Verity Harding, AI Needs You: How We Can Change AI\\'s Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind\\'s Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44–46. \"\\'We can\\'t realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,\\' ... writes [Gary Marcus]. \\'We can\\'t count on governments driven by campaign finance contributions [from tech companies] to push back.\\'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. \\'What if, like doctors,\\' she asks..., \\'AI engineers also vowed to do no harm?\\'\" (p. 46.)\\nHenderson, Mark (24 April 2007). \"Human rights for robots? We\\'re getting carried away\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\\nHughes-Castleberry, Kenna, \"A Murder Mystery Puzzle: The literary puzzle Cain\\'s Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\", Scientific American, vol. 329, no. 4 (November 2023), pp.\\xa081–82. \"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\" (p.\\xa082.)\\nImmerwahr, Daniel, \"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter?\", The New Yorker, 20 November 2023, pp.\\xa054–59. \"If by \\'deepfakes\\' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren\\'t deep, and the deeps aren\\'t fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\" (p.\\xa059.)\\nJohnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\\nJumper, John; Evans, Richard; Pritzel, Alexander; et\\xa0al. (26 August 2021). \"Highly accurate protein structure prediction with AlphaFold\". Nature. 596 (7873): 583–589. Bibcode:2021Natur.596..583J. doi:10.1038/s41586-021-03819-2. PMC\\xa08371605. PMID\\xa034265844. S2CID\\xa0235959867.\\nLeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \"Deep learning\". Nature. 521 (7553): 436–444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID\\xa026017442. S2CID\\xa03074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\\nLeffer, Lauren, \"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80–81.\\nLepore, Jill, \"The Chit-Chatbot: Is talking with a machine a conversation?\", The New Yorker, 7 October 2024, pp. 12–16.\\nMaschafilm (2010). \"Content: Plug & Pray Film – Artificial Intelligence – Robots\". plugandpray-film.de. Archived from the original on 12 February 2016.\\nMarcus, Gary, \"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\", Scientific American, vol. 327, no. 4 (October 2022), pp.\\xa042–45.\\nMitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN\\xa0978-0-3742-5783-5.\\nMnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et\\xa0al. (26 February 2015). \"Human-level control through deep reinforcement learning\". Nature. 518 (7540): 529–533. Bibcode:2015Natur.518..529M. doi:10.1038/nature14236. PMID\\xa025719670. S2CID\\xa0205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\\nPress, Eyal, \"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence?\", The New Yorker, 20 November 2023, pp.\\xa020–26.\\n\"Robots could demand legal rights\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\\nRoivainen, Eka, \"AI\\'s IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\", Scientific American, vol. 329, no. 1 (July/August 2023), p.\\xa07. \"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts.\"\\nScharre, Paul, \"Killer Apps: The Real Dangers of an AI Arms Race\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp.\\xa0135–144. \"Today\\'s AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\" (p.\\xa0140.)\\nSchulz, Hannes; Behnke, Sven (1 November 2012). \"Deep Learning\". KI – Künstliche Intelligenz. 26 (4): 357–363. doi:10.1007/s13218-012-0198-z. ISSN\\xa01610-1987. S2CID\\xa0220523562.\\nSerenko, Alexander; Michael Dohan (2011). \"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\" (PDF). Journal of Informetrics. 5 (4): 629–649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\\nSilver, David; Huang, Aja; Maddison, Chris J.; et\\xa0al. (28 January 2016). \"Mastering the game of Go with deep neural networks and tree search\". Nature. 529 (7587): 484–489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID\\xa026819042. S2CID\\xa0515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\\nVaswani, Ashish, Noam Shazeer, Niki Parmar et al. \"Attention is all you need.\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\\nVincent, James, \"Horny Robot Baby Voice: James Vincent on AI chatbots\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29–32. \"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\" (p. 29.)\\nWhite Paper: On Artificial Intelligence – A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\\nExternal links\\nArtificial intelligence\\nat Wikipedia\\'s sister projects\\nDefinitions from Wiktionary\\nMedia from Commons\\nQuotations from Wikiquote\\nTextbooks from Wikibooks\\nResources from Wikiversity\\nData from Wikidata\\nScholia has a topic profile for Artificial intelligence.\\n\"Artificial Intelligence\". Internet Encyclopedia of Philosophy.\\nshow\\nvte\\nArtificial intelligence (AI)\\nshow\\nArticles related to Artificial intelligence\\nAuthority control databases: National \\t\\nGermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\\nCategories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\\nThis page was last edited on 10 February 2025, at 03:56\\xa0(UTC).\\nText is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\\nPrivacy policy\\nAbout Wikipedia\\nDisclaimers\\nContact Wikipedia\\nCode of Conduct\\nDevelopers\\nStatistics\\nCookie statement\\nMobile view',\n", - " 'description': '',\n", - " 'publishedTime': '2001-10-08T16:55:49Z'},\n", - " 'status': 20000},\n", - " 'content': 'eyJjb2RlIjoyMDAsInN0YXR1cyI6MjAwMDAsImRhdGEiOnsiaW1hZ2VzIjp7fSwibGlua3MiOnsiMSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0xIiwiMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0yIiwiMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC0zIiwiNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00IiwiMTUiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvc29mdHdhcmVzdHVkaWVzbDAwZnVsbF8wMDcvcGFnZS9uMjkiLCI1MTU5MjUiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjUxNTkyNSIsIjY3NzIxOCI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6Njc3MjE4IiwiMTQ1MjczNCI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTQ1MjczNCIsIjE1MTM2ODEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxNTEzNjgxIiwiMTgwOTQ1OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTgwOTQ1OSIsIjE5NzkzMTUiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE5NzkzMTUiLCIyMTYxNTkyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMTYxNTkyIiwiMjI1MTI5OSI6Imh0dHBzOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMjI1MTI5OSIsIjMwNDQ0NDgiOiJodHRwczovL3BhcGVycy5zc3JuLmNvbS9zb2wzL3BhcGVycy5jZm0/YWJzdHJhY3RfaWQ9MzA0NDQ0OCIsIjMwNzQwOTYiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjMwNzQwOTYiLCI0MjQwNjQ0IjoiaHR0cHM6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS80MjQwNjQ0IiwiNjM2MjIxNyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6NjM2MjIxNyIsIjY2MTYxODEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM2NjE2MTgxIiwiNzM3Mzk1OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6NzM3Mzk1OSIsIjgzNzE2MDUiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM4MzcxNjA1IiwiODUxMDAxNiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6ODUxMDAxNiIsIjg1NDUyMDEiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM4NTQ1MjAxIiwiOTU0NDI4MCI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzk1NDQyODAiLCIxMDE2ODc3MyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTAxNjg3NzMiLCIxMDc2NzAxMSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTA3NjcwMTEiLCIxMTA0MTQ1OSI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzExMDQxNDU5IiwiMTEwNjI5MDMiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxMTA2MjkwMyIsIjExMjI5NDAyIjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xMTIyOTQwMiIsIjExNzE1NTA5IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxMTcxNTUwOSIsIjE0NjM2NzgzIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDYzNjc4MyIsIjE0OTg3NjU2IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDk4NzY1NiIsIjE2NjIyMTYwIjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xNjYyMjE2MCIsIjE3ODM1NDU3IjoiaHR0cHM6Ly9wdWJtZWQubmNiaS5ubG0ubmloLmdvdi8xNzgzNTQ1NyIsIjIwMTkwNDc0IjoiaHR0cHM6Ly9sY2NuLmxvYy5nb3YvMjAxOTA0NzQiLCIyNTQ2MjYzNyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjU0NjI2MzciLCIyNTcxOTY3MCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjU3MTk2NzAiLCIyNjAxNzQ0MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjYwMTc0NDIiLCIyNjE4NTI0MyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjYxODUyNDMiLCIyNjgxOTA0MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMjY4MTkwNDIiLCIzMTI5NjY1MCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzEyOTY2NTAiLCIzMTM2MzUxMyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzEzNjM1MTMiLCIzMjIzNjc5NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzIyMzY3OTQiLCIzMjQzNzcxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzI0Mzc3MTMiLCIzMjcxMDkxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzI3MTA5MTMiLCIzNDI2NTg0NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzQyNjU4NDQiLCIzNDc4NjMxNyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzQ3ODYzMTciLCIzNTE0MDM4NCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzUxNDAzODQiLCIzNjIxMTEzMyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzYyMTExMzMiLCIzNjU2NTI2NyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzY1NjUyNjciLCIzNzI3Mjk0OSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MzcyNzI5NDkiLCIzODYzMjQ5MiI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg2MzI0OTIiLCIzODg3NTU4NyI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg4NzU1ODciLCIzODg3NTkwOCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzg4NzU5MDgiLCIzOTI1NDYyOCI6Imh0dHBzOi8vcHVibWVkLm5jYmkubmxtLm5paC5nb3YvMzkyNTQ2MjgiLCI0Njg5MDY4MiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzQ2ODkwNjgyIiwiNTQxMzE3OTciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU0MTMxNzk3IiwiNTUzMDM3MjEiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU1MzAzNzIxIiwiNTkyOTg1MDIiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjU5Mjk4NTAyIiwiMTQzNDUyOTU3IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNDM0NTI5NTciLCIxNDc2MTI3NjMiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE0NzYxMjc2MyIsIjE1ODQzMzczNiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTU4NDMzNzM2IiwiMTU4ODI5NjAyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoxNTg4Mjk2MDIiLCIxNjY3NDI5MjciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjE2Njc0MjkyNyIsIjE5ODc3NTcxMyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MTk4Nzc1NzEzIiwiMjA1MjQyNzQwIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMDUyNDI3NDAiLCIyMDU0MzMwNDEiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIwNTQzMzA0MSIsIjIwNjQ1MTk4NiI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjA2NDUxOTg2IiwiMjA2NDg1OTQzIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMDY0ODU5NDMiLCIyMTQ3NjY4MDAiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIxNDc2NjgwMCIsIjIxOTMzNjQzOSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjE5MzM2NDM5IiwiMjIwNTIzNTYyIjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyMjA1MjM1NjIiLCIyMzE4Njc2NjUiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvb2NsYy8yMzE4Njc2NjUiLCIyMzU5NTk4NjciOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjIzNTk1OTg2NyIsIjI0NzMwMjM5MSI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjQ3MzAyMzkxIiwiMjU2NjgxNDM5IjoiaHR0cHM6Ly9hcGkuc2VtYW50aWNzY2hvbGFyLm9yZy9Db3JwdXNJRDoyNTY2ODE0MzkiLCIyNTk2MTQxMjQiOiJodHRwczovL2FwaS5zZW1hbnRpY3NjaG9sYXIub3JnL0NvcnB1c0lEOjI1OTYxNDEyNCIsIjI2NDExMzg4MyI6Imh0dHBzOi8vYXBpLnNlbWFudGljc2Nob2xhci5vcmcvQ29ycHVzSUQ6MjY0MTEzODgzIiwiMTAzOTQ4MDA4NSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzEwMzk0ODAwODUiLCIxMDgzNjk0MzIyIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL29jbGMvMTA4MzY5NDMyMiIsIjExMTA3Mjc4MDgiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvb2NsYy8xMTEwNzI3ODA4IiwiMTIzMzI2Njc1MyI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9vY2xjLzEyMzMyNjY3NTMiLCIyMDE5NjY4MTQzIjoiaHR0cHM6Ly9sY2NuLmxvYy5nb3YvMjAxOTY2ODE0MyIsIkp1bXAgdG8gY29udGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2JvZHlDb250ZW50IiwiTWFpbiBwYWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFpbl9QYWdlIiwiQ29udGVudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6Q29udGVudHMiLCJDdXJyZW50IGV2ZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvcnRhbDpDdXJyZW50X2V2ZW50cyIsIlJhbmRvbSBhcnRpY2xlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpSYW5kb20iLCJBYm91dCBXaWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6QWJvdXQiLCJDb250YWN0IHVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkNvbnRhY3RfdXMiLCJIZWxwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVscDpDb250ZW50cyIsIkxlYXJuIHRvIGVkaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWxwOkludHJvZHVjdGlvbiIsIkNvbW11bml0eSBwb3J0YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6Q29tbXVuaXR5X3BvcnRhbCIsIlJlY2VudCBjaGFuZ2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpSZWNlbnRDaGFuZ2VzIiwiVXBsb2FkIGZpbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6RmlsZV9VcGxvYWRfV2l6YXJkIiwiIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2U/YWN0aW9uPWVkaXQiLCJTZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOlNlYXJjaCIsIkRvbmF0ZSI6Imh0dHBzOi8vZG9uYXRlLndpa2ltZWRpYS5vcmcvP3dtZl9zb3VyY2U9ZG9uYXRlJndtZl9tZWRpdW09c2lkZWJhciZ3bWZfY2FtcGFpZ249ZW4ud2lraXBlZGlhLm9yZyZ1c2VsYW5nPWVuIiwiQ3JlYXRlIGFjY291bnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpDcmVhdGVBY2NvdW50JnJldHVybnRvPUFydGlmaWNpYWwraW50ZWxsaWdlbmNlIiwiTG9nIGluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPVNwZWNpYWw6VXNlckxvZ2luJnJldHVybnRvPUFydGlmaWNpYWwraW50ZWxsaWdlbmNlIiwibGVhcm4gbW9yZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlbHA6SW50cm9kdWN0aW9uIiwiQ29udHJpYnV0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlDb250cmlidXRpb25zIiwiVGFsayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhbGs6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJQaG90b2dyYXBoIHlvdXIgbG9jYWwgY3VsdHVyZSwgaGVscCBXaWtpcGVkaWEgYW5kIHdpbiEiOiJodHRwczovL2NvbW1vbnMud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Db21tb25zOldpa2lfTG92ZXNfRm9sa2xvcmVfMjAyNSIsIihUb3ApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjIiwiMSBHb2FscyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dvYWxzIiwiMS4xIFJlYXNvbmluZyBhbmQgcHJvYmxlbS1zb2x2aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUmVhc29uaW5nX2FuZF9wcm9ibGVtLXNvbHZpbmciLCIxLjIgS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjS25vd2xlZGdlX3JlcHJlc2VudGF0aW9uIiwiMS4zIFBsYW5uaW5nIGFuZCBkZWNpc2lvbi1tYWtpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQbGFubmluZ19hbmRfZGVjaXNpb24tbWFraW5nIiwiMS40IExlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTGVhcm5pbmciLCIxLjUgTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiMS42IFBlcmNlcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQZXJjZXB0aW9uIiwiMS43IFNvY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTb2NpYWxfaW50ZWxsaWdlbmNlIiwiMS44IEdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCIyIFRlY2huaXF1ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNUZWNobmlxdWVzIiwiMi4xIFNlYXJjaCBhbmQgb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2VhcmNoX2FuZF9vcHRpbWl6YXRpb24iLCIyLjEuMSBTdGF0ZSBzcGFjZSBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTdGF0ZV9zcGFjZV9zZWFyY2giLCIyLjEuMiBMb2NhbCBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNMb2NhbF9zZWFyY2giLCIyLjIgTG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNMb2dpYyIsIjIuMyBQcm9iYWJpbGlzdGljIG1ldGhvZHMgZm9yIHVuY2VydGFpbiByZWFzb25pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQcm9iYWJpbGlzdGljX21ldGhvZHNfZm9yX3VuY2VydGFpbl9yZWFzb25pbmciLCIyLjQgQ2xhc3NpZmllcnMgYW5kIHN0YXRpc3RpY2FsIGxlYXJuaW5nIG1ldGhvZHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDbGFzc2lmaWVyc19hbmRfc3RhdGlzdGljYWxfbGVhcm5pbmdfbWV0aG9kcyIsIjIuNSBBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmtzIiwiMi42IERlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNEZWVwX2xlYXJuaW5nIiwiMi43IEdQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dQVCIsIjIuOCBIYXJkd2FyZSBhbmQgc29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNIYXJkd2FyZV9hbmRfc29mdHdhcmUiLCIzIEFwcGxpY2F0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FwcGxpY2F0aW9ucyIsIjMuMSBIZWFsdGggYW5kIG1lZGljaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjSGVhbHRoX2FuZF9tZWRpY2luZSIsIjMuMiBHYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0dhbWVzIiwiMy4zIE1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTWF0aGVtYXRpY3MiLCIzLjQgRmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0ZpbmFuY2UiLCIzLjUgTWlsaXRhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNNaWxpdGFyeSIsIjMuNiBHZW5lcmF0aXZlIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR2VuZXJhdGl2ZV9BSSIsIjMuNyBBZ2VudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNBZ2VudHMiLCIzLjggU2V4dWFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2V4dWFsaXR5IiwiMy45IE90aGVyIGluZHVzdHJ5LXNwZWNpZmljIHRhc2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjT3RoZXJfaW5kdXN0cnktc3BlY2lmaWNfdGFza3MiLCI0IEV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0V0aGljcyIsIjQuMSBSaXNrcyBhbmQgaGFybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1Jpc2tzX2FuZF9oYXJtIiwiNC4xLjEgUHJpdmFjeSBhbmQgY29weXJpZ2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUHJpdmFjeV9hbmRfY29weXJpZ2h0IiwiNC4xLjIgRG9taW5hbmNlIGJ5IHRlY2ggZ2lhbnRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRG9taW5hbmNlX2J5X3RlY2hfZ2lhbnRzIiwiNC4xLjMgUG93ZXIgbmVlZHMgYW5kIGVudmlyb25tZW50YWwgaW1wYWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1Bvd2VyX25lZWRzX2FuZF9lbnZpcm9ubWVudGFsX2ltcGFjdHMiLCI0LjEuNCBNaXNpbmZvcm1hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI01pc2luZm9ybWF0aW9uIiwiNC4xLjUgQWxnb3JpdGhtaWMgYmlhcyBhbmQgZmFpcm5lc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNBbGdvcml0aG1pY19iaWFzX2FuZF9mYWlybmVzcyIsIjQuMS42IExhY2sgb2YgdHJhbnNwYXJlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjTGFja19vZl90cmFuc3BhcmVuY3kiLCI0LjEuNyBCYWQgYWN0b3JzIGFuZCB3ZWFwb25pemVkIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQmFkX2FjdG9yc19hbmRfd2VhcG9uaXplZF9BSSIsIjQuMS44IFRlY2hub2xvZ2ljYWwgdW5lbXBsb3ltZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjVGVjaG5vbG9naWNhbF91bmVtcGxveW1lbnQiLCI0LjEuOSBFeGlzdGVudGlhbCByaXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRXhpc3RlbnRpYWxfcmlzayIsIjQuMiBFdGhpY2FsIG1hY2hpbmVzIGFuZCBhbGlnbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNFdGhpY2FsX21hY2hpbmVzX2FuZF9hbGlnbm1lbnQiLCI0LjMgT3BlbiBzb3VyY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNPcGVuX3NvdXJjZSIsIjQuNCBGcmFtZXdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRnJhbWV3b3JrcyIsIjQuNSBSZWd1bGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjUmVndWxhdGlvbiIsIjUgSGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0hpc3RvcnkiLCI2IFBoaWxvc29waHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNQaGlsb3NvcGh5IiwiNi4xIERlZmluaW5nIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRGVmaW5pbmdfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCI2LjIgRXZhbHVhdGluZyBhcHByb2FjaGVzIHRvIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRXZhbHVhdGluZ19hcHByb2FjaGVzX3RvX0FJIiwiNi4yLjEgU3ltYm9saWMgQUkgYW5kIGl0cyBsaW1pdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTeW1ib2xpY19BSV9hbmRfaXRzX2xpbWl0cyIsIjYuMi4yIE5lYXQgdnMuIHNjcnVmZnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNOZWF0X3ZzLl9zY3J1ZmZ5IiwiNi4yLjMgU29mdCB2cy4gaGFyZCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNTb2Z0X3ZzLl9oYXJkX2NvbXB1dGluZyIsIjYuMi40IE5hcnJvdyB2cy4gZ2VuZXJhbCBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI05hcnJvd192cy5fZ2VuZXJhbF9BSSIsIjYuMyBNYWNoaW5lIGNvbnNjaW91c25lc3MsIHNlbnRpZW5jZSwgYW5kIG1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNNYWNoaW5lX2NvbnNjaW91c25lc3MsX3NlbnRpZW5jZSxfYW5kX21pbmQiLCI2LjMuMSBDb25zY2lvdXNuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ29uc2Npb3VzbmVzcyIsIjYuMy4yIENvbXB1dGF0aW9uYWxpc20gYW5kIGZ1bmN0aW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDb21wdXRhdGlvbmFsaXNtX2FuZF9mdW5jdGlvbmFsaXNtIiwiNi4zLjMgQUkgd2VsZmFyZSBhbmQgcmlnaHRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQUlfd2VsZmFyZV9hbmRfcmlnaHRzIiwiNyBGdXR1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNGdXR1cmUiLCI3LjEgU3VwZXJpbnRlbGxpZ2VuY2UgYW5kIHRoZSBzaW5ndWxhcml0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1N1cGVyaW50ZWxsaWdlbmNlX2FuZF90aGVfc2luZ3VsYXJpdHkiLCI3LjIgVHJhbnNodW1hbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1RyYW5zaHVtYW5pc20iLCI3LjMgRGVjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNEZWNvbXB1dGluZyIsIjggSW4gZmljdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0luX2ZpY3Rpb24iLCI5IFNlZSBhbHNvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjU2VlX2Fsc28iLCIxMCBFeHBsYW5hdG9yeSBub3RlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0V4cGxhbmF0b3J5X25vdGVzIiwiMTEgUmVmZXJlbmNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI1JlZmVyZW5jZXMiLCIxMS4xIEFJIHRleHRib29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0FJX3RleHRib29rcyIsIjExLjIgSGlzdG9yeSBvZiBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0hpc3Rvcnlfb2ZfQUkiLCIxMS4zIE90aGVyIHNvdXJjZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNPdGhlcl9zb3VyY2VzIiwiMTIgRnVydGhlciByZWFkaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRnVydGhlcl9yZWFkaW5nIiwiMTMgRXh0ZXJuYWwgbGlua3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNFeHRlcm5hbF9saW5rcyIsIkFmcmlrYWFucyI6Imh0dHBzOi8vYWYud2lraXBlZGlhLm9yZy93aWtpL0t1bnNtYXRpZ2VfaW50ZWxsaWdlbnNpZSIsIkFsZW1hbm5pc2NoIjoiaHR0cHM6Ly9hbHMud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWNoZV9JbnRlbGxpZ2VueiIsIuGKoOGIm+GIreGKmyI6Imh0dHBzOi8vYW0ud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4OCVCMCVFMSU4QiU4RF8lRTElODglQTAlRTElODglQUIlRTElODglQkRfJUUxJThCJUE4JUUxJTg4JTlCJUUxJTg4JUIwJUUxJTg5JUE1XyVFMSU4OSVCRCVFMSU4OCU4RSVFMSU4OSVCMyIsItin2YTYudix2KjZitipIjoiaHR0cHM6Ly9hci53aWtpcGVkaWEub3JnL3dpa2kvJUQ4JUIwJUQ5JTgzJUQ4JUE3JUQ4JUExXyVEOCVBNyVEOCVCNSVEOCVCNyVEOSU4NiVEOCVBNyVEOCVCOSVEOSU4QSIsIkFyYWdvbsOpcyI6Imh0dHBzOi8vYW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWNoZW5jaWFfYXJ0aWZpY2lhbCIsItSx1oDVpdaC1bTVv9Wh1bDVodW11aXWgNWn1bYiOiJodHRwczovL2h5dy53aWtpcGVkaWEub3JnL3dpa2kvJUQ0JUIxJUQ2JTgwJUQ1JUIwJUQ1JUE1JUQ1JUJEJUQ1JUJGJUQ1JUExJUQ1JUFGJUQ1JUExJUQ1JUI2XyVENCVCMiVENSVBMSVENSVCNiVENSVBMSVENSVBRiVENSVBMSVENSVCNiVENSVCOCVENiU4MiVENSVBOSVENSVBQiVENiU4MiVENSVCNiIsIuCmheCmuOCmruCngOCmr+CmvOCmviI6Imh0dHBzOi8vYXMud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNiU5NSVFMCVBNyU4MyVFMCVBNiVBNCVFMCVBNyU4RCVFMCVBNyVCMCVFMCVBNiVCRiVFMCVBNiVBRV8lRTAlQTYlQUMlRTAlQTclODElRTAlQTYlQTYlRTAlQTclOEQlRTAlQTYlQTclRTAlQTYlQkYlRTAlQTYlQUUlRTAlQTYlQTQlRTAlQTclOEQlRTAlQTYlQTQlRTAlQTYlQkUiLCJBc3R1cmlhbnUiOiJodHRwczovL2FzdC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpeGVuY2lhX2FydGlmaWNpYWwiLCJBdmHDsWUn4bq9IjoiaHR0cHM6Ly9nbi53aWtpcGVkaWEub3JnL3dpa2kvQXZhX2phcG9weXJlX2FyYW5kdSIsIkF6yZlyYmF5Y2FuY2EiOiJodHRwczovL2F6Lndpa2lwZWRpYS5vcmcvd2lraS9TJUMzJUJDbmlfaW50ZWxsZWt0Iiwi2Krbhtix2qnYrNmHIjoiaHR0cHM6Ly9hemIud2lraXBlZGlhLm9yZy93aWtpLyVEOSU4NSVEOCVCNSVEOSU4NiVEOSU4OCVEOCVCOSVEQiU4Q18lRDglQjAlREElQTklRDglQTciLCLgpqzgpr7gpoLgprLgpr4iOiJodHRwczovL2JuLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTYlOTUlRTAlQTclODMlRTAlQTYlQTQlRTAlQTclOEQlRTAlQTYlQjAlRTAlQTYlQkYlRTAlQTYlQUVfJUUwJUE2JUFDJUUwJUE3JTgxJUUwJUE2JUE2JUUwJUE3JThEJUUwJUE2JUE3JUUwJUE2JUJGJUUwJUE2JUFFJUUwJUE2JUE0JUUwJUE3JThEJUUwJUE2JUE0JUUwJUE2JUJFIiwi6Zap5Y2X6KqeIC8gQsOibi1sw6JtLWfDuiI6Imh0dHBzOi8vemgtbWluLW5hbi53aWtpcGVkaWEub3JnL3dpa2kvSiVDMyVBRW4ta2FuZ190JUMzJUFDLWwlQzMlQUFuZyIsItCR0LDRiNKh0L7RgNGC0YHQsCI6Imh0dHBzOi8vYmEud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBRiVEMiVCQiVEMCVCMCVEMCVCQiVEMCVCQyVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLQkdC10LvQsNGA0YPRgdC60LDRjyI6Imh0dHBzOi8vYmUud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBOCVEMSU4MiVEMSU4MyVEMSU4NyVEMCVCRCVEMSU4Ql8lRDElOTYlRDAlQkQlRDElODIlRDElOEQlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLQkdC10LvQsNGA0YPRgdC60LDRjyAo0YLQsNGA0LDRiNC60LXQstGW0YbQsCkiOiJodHRwczovL2JlLXRhcmFzay53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUE4JUQxJTgyJUQxJTgzJUQxJTg3JUQwJUJEJUQxJThCXyVEMSU5NiVEMCVCRCVEMSU4MiVEMSU4RCVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIuCkreCli+CknOCkquClgeCksOClgCI6Imh0dHBzOi8vYmgud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU4NiVFMCVBNCVCMCVFMCVBNSU4RCVFMCVBNCU5RiVFMCVBNCVCRiVFMCVBNCVBQiVFMCVBNCVCRiVFMCVBNCVCNiVFMCVBNCVCRiVFMCVBNCVBRiVFMCVBNCVCMl8lRTAlQTQlODclRTAlQTQlODIlRTAlQTQlOUYlRTAlQTUlODclRTAlQTQlQjIlRTAlQTQlQkYlRTAlQTQlOUMlRTAlQTUlODclRTAlQTQlODIlRTAlQTQlQjgiLCJCaWtvbCBDZW50cmFsIjoiaHR0cHM6Ly9iY2wud2lraXBlZGlhLm9yZy93aWtpL0FydGlwaXN5YWxfbmFfaW50ZWxpaGVuc3lhIiwi0JHRitC70LPQsNGA0YHQutC4IjoiaHR0cHM6Ly9iZy53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk4JUQwJUI3JUQwJUJBJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI1JUQwJUJEXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIkJvYXJpc2NoIjoiaHR0cHM6Ly9iYXIud2lraXBlZGlhLm9yZy93aWtpL0tpbnNjaHRsaWNoYV9JbnRlbGxpZ2VueiIsIuC9luC9vOC9keC8i+C9oeC9suC9giI6Imh0dHBzOi8vYm8ud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCRCU5OCVFMCVCRCVCMiVFMCVCQyU4QiVFMCVCRCU5NiVFMCVCRCU5RiVFMCVCRCVCQyVFMCVCRCVBNiVFMCVCQyU4QiVFMCVCRCVBMiVFMCVCRCVCMiVFMCVCRCU4MiVFMCVCQyU4QiVFMCVCRCU5MyVFMCVCRCVCNCVFMCVCRCVBNiVFMCVCQyU4RCIsIkJvc2Fuc2tpIjoiaHR0cHM6Ly9icy53aWtpcGVkaWEub3JnL3dpa2kvVW1qZXRuYV9pbnRlbGlnZW5jaWphIiwiQnJlemhvbmVnIjoiaHR0cHM6Ly9ici53aWtpcGVkaWEub3JnL3dpa2kvTmFvdWVnZXpoX2FydGlmaXNpZWwiLCLQkdGD0YDRj9Cw0LQiOiJodHRwczovL2J4ci53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUE1JUQxJThEJUQwJUJDJUQxJThEJUQwJUJCXyVEMCVCRSVEMSU4RSVEMSU4MyVEMCVCRCIsIkNhdGFsw6AiOiJodHRwczovL2NhLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbCVDMiVCN2xpZyVDMyVBOG5jaWFfYXJ0aWZpY2lhbCIsItCn05HQstCw0YjQu9CwIjoiaHR0cHM6Ly9jdi53aWtpcGVkaWEub3JnL3dpa2kvJUQwJUFFJUQxJTgwJUQwJUI4JUQwJUJCJUQwJUJCZV8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCJDZWJ1YW5vIjoiaHR0cHM6Ly9jZWIud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWhlbnNpeWFfYXJ0aXBpc3lhbCIsIsSMZcWhdGluYSI6Imh0dHBzOi8vY3Mud2lraXBlZGlhLm9yZy93aWtpL1VtJUM0JTlCbCVDMyVBMV9pbnRlbGlnZW5jZSIsIkN5bXJhZWciOiJodHRwczovL2N5Lndpa2lwZWRpYS5vcmcvd2lraS9EZWFsbHVzcnd5ZGRfYXJ0aWZmaXNpYWwiLCJEYW5zayI6Imh0dHBzOi8vZGEud2lraXBlZGlhLm9yZy93aWtpL0t1bnN0aWdfaW50ZWxsaWdlbnMiLCLYp9mE2K/Yp9ix2KzYqSI6Imh0dHBzOi8vYXJ5Lndpa2lwZWRpYS5vcmcvd2lraS8lRDglQUYlRDklODMlRDglQTdfJUQ4JUI1JUQ4JUI3JUQ5JThBJUQ5JTg2JUQ4JUE3JUQ4JUI5JUQ5JThBIiwiRGV1dHNjaCI6Imh0dHBzOi8vZGUud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWNoZV9JbnRlbGxpZ2VueiIsIkVlc3RpIjoiaHR0cHM6Ly9ldC53aWtpcGVkaWEub3JnL3dpa2kvVGVoaXNpbnRlbGxla3QiLCLOlc67zrvOt869zrnOus6sIjoiaHR0cHM6Ly9lbC53aWtpcGVkaWEub3JnL3dpa2kvJUNFJUE0JUNFJUI1JUNGJTg3JUNFJUJEJUNFJUI3JUNGJTg0JUNFJUFFXyVDRSVCRCVDRSVCRiVDRSVCNyVDRSVCQyVDRSVCRiVDRiU4MyVDRiU4RCVDRSVCRCVDRSVCNyIsIkVzcGHDsW9sIjoiaHR0cHM6Ly9lcy53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2VuY2lhX2FydGlmaWNpYWwiLCJFc3BlcmFudG8iOiJodHRwczovL2VvLndpa2lwZWRpYS5vcmcvd2lraS9BcnRlZmFyaXRhX2ludGVsZWt0byIsIkVzdHJlbWXDsXUiOiJodHRwczovL2V4dC53aWtpcGVkaWEub3JnL3dpa2kvRW50ZWxpZ2VuY2lhX2FydGlmaWNpYWwiLCJFdXNrYXJhIjoiaHR0cHM6Ly9ldS53aWtpcGVkaWEub3JnL3dpa2kvQWRpbWVuX2FydGlmaXppYWwiLCLZgdin2LHYs9uMIjoiaHR0cHM6Ly9mYS53aWtpcGVkaWEub3JnL3dpa2kvJUQ5JTg3JUQ5JTg4JUQ4JUI0XyVEOSU4NSVEOCVCNSVEOSU4NiVEOSU4OCVEOCVCOSVEQiU4QyIsIkZpamkgSGluZGkiOiJodHRwczovL2hpZi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJGcmFuw6dhaXMiOiJodHRwczovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VuY2VfYXJ0aWZpY2llbGxlIiwiRnVybGFuIjoiaHR0cHM6Ly9mdXIud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWdqZW5jZV9hcnRpZmljaSVDMyVBMmwiLCJHYWVpbGdlIjoiaHR0cHM6Ly9nYS53aWtpcGVkaWEub3JnL3dpa2kvSW50bGVhY2h0X3NoYW9yZ2EiLCJHYWVsZyI6Imh0dHBzOi8vZ3Yud2lraXBlZGlhLm9yZy93aWtpL0Zhci1pbiVDMyVBN2h5bmFnaHQiLCJHw6BpZGhsaWciOiJodHRwczovL2dkLndpa2lwZWRpYS5vcmcvd2lraS9UdWlnc2VfaW5udGVhbHRhIiwiR2FsZWdvIjoiaHR0cHM6Ly9nbC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpeGVuY2lhX2FydGlmaWNpYWwiLCLotJvoqp4iOiJodHRwczovL2dhbi53aWtpcGVkaWEub3JnL3dpa2kvJUU0JUJBJUJBJUU1JUI3JUE1JUU2JTk5JUJBJUU4JTgzJUJEIiwiR8Spa8WpecWpIjoiaHR0cHM6Ly9raS53aWtpcGVkaWEub3JnL3dpa2kvJUM1JUE4JUM1JUE5ZyVDNCVBOV93YV9LYW55b25kZSIsIu2VnOq1reyWtCI6Imh0dHBzOi8va28ud2lraXBlZGlhLm9yZy93aWtpLyVFQyU5RCVCOCVFQSVCMyVCNSVFQyVBNyU4MCVFQiU4QSVBNSIsIkhhdXNhIjoiaHR0cHM6Ly9oYS53aWtpcGVkaWEub3JnL3dpa2kvS2lya2lyYXJfQmFzaXJhIiwi1YDVodW11aXWgNWl1bYiOiJodHRwczovL2h5Lndpa2lwZWRpYS5vcmcvd2lraS8lRDQlQjElRDYlODAlRDUlQjAlRDUlQTUlRDUlQkQlRDUlQkYlRDUlQTElRDUlQUYlRDUlQTElRDUlQjZfJUQ1JUEyJUQ1JUExJUQ1JUI2JUQ1JUExJUQ1JUFGJUQ1JUExJUQ1JUI2JUQ1JUI4JUQ2JTgyJUQ1JUE5JUQ1JUI1JUQ1JUI4JUQ2JTgyJUQ1JUI2Iiwi4KS54KS/4KSo4KWN4KSm4KWAIjoiaHR0cHM6Ly9oaS53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUE0JTk1JUUwJUE1JTgzJUUwJUE0JUE0JUUwJUE1JThEJUUwJUE0JUIwJUUwJUE0JUJGJUUwJUE0JUFFXyVFMCVBNCVBQyVFMCVBNSU4MSVFMCVBNCVBNiVFMCVBNSU4RCVFMCVBNCVBNyVFMCVBNCVCRiIsIkhydmF0c2tpIjoiaHR0cHM6Ly9oci53aWtpcGVkaWEub3JnL3dpa2kvVW1qZXRuYV9pbnRlbGlnZW5jaWphIiwiSWRvIjoiaHR0cHM6Ly9pby53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2FsX2ludGVsaWdlbnRlc28iLCJJZ2JvIjoiaHR0cHM6Ly9pZy53aWtpcGVkaWEub3JnL3dpa2kvJUUxJUJCJThDZyVFMSVCQiVBNWclRTElQkIlQTVfaXNpIiwiSWxva2FubyI6Imh0dHBzOi8vaWxvLndpa2lwZWRpYS5vcmcvd2lraS9QYXJib19hX3NhcmlyaXQiLCJCYWhhc2EgSW5kb25lc2lhIjoiaHR0cHM6Ly9pZC53aWtpcGVkaWEub3JnL3dpa2kvQWthbF9pbWl0YXNpIiwiSW50ZXJsaW5ndWEiOiJodHRwczovL2lhLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VudGlhX2FydGlmaWNpYWwiLCJJbnRlcmxpbmd1ZSI6Imh0dHBzOi8vaWUud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWdlbnRpZV9hcnRpZmljaWFsIiwiSXNpWnVsdSI6Imh0dHBzOi8venUud2lraXBlZGlhLm9yZy93aWtpL1VIbGFrYWhsaXNvbWJ1bHUiLCLDjXNsZW5za2EiOiJodHRwczovL2lzLndpa2lwZWRpYS5vcmcvd2lraS9HZXJ2aWdyZWluZCIsIkl0YWxpYW5vIjoiaHR0cHM6Ly9pdC53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnphX2FydGlmaWNpYWxlIiwi16LXkdeo15nXqiI6Imh0dHBzOi8vaGUud2lraXBlZGlhLm9yZy93aWtpLyVENyU5MSVENyU5OSVENyVBMCVENyU5NF8lRDclOUUlRDclOUMlRDclOTAlRDclOUIlRDclOTUlRDclQUElRDclOTklRDclQUEiLCJKYXdhIjoiaHR0cHM6Ly9qdi53aWtpcGVkaWEub3JnL3dpa2kvS2FjZXJkaGFzYW5fZ2F3JUMzJUE5eWFuIiwi4LKV4LKo4LON4LKo4LKhIjoiaHR0cHM6Ly9rbi53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUIyJTk1JUUwJUIzJTgzJUUwJUIyJUE0JUUwJUIyJTk1XyVFMCVCMiVBQyVFMCVCMyU4MSVFMCVCMiVBNiVFMCVCMyU4RCVFMCVCMiVBNyVFMCVCMiVCRiVFMCVCMiVBRSVFMCVCMiVBNCVFMCVCMyU4RCVFMCVCMiVBNCVFMCVCMyU4NiIsIuGDpeGDkOGDoOGDl+GDo+GDmuGDmCI6Imh0dHBzOi8va2Eud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4MyVBRSVFMSU4MyU5NCVFMSU4MyU5QSVFMSU4MyU5RCVFMSU4MyU5NSVFMSU4MyU5QyVFMSU4MyVBMyVFMSU4MyVBMCVFMSU4MyU5OF8lRTElODMlOTglRTElODMlOUMlRTElODMlQTIlRTElODMlOTQlRTElODMlOUElRTElODMlOTQlRTElODMlQTUlRTElODMlQTIlRTElODMlOTgiLCLgpJXgpYngpLbgpYHgpLAgLyDaqdmy2LTZj9ixIjoiaHR0cHM6Ly9rcy53aWtpcGVkaWEub3JnL3dpa2kvJUQ5JTg2JUQ5JTgyJUQ5JTg0JURCJThDXyVEOCVCOSVEOSU4MiVEOSU4NF9BSSIsItKa0LDQt9Cw0pvRiNCwIjoiaHR0cHM6Ly9ray53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk2JUQwJUIwJUQxJTgxJUQwJUIwJUQwJUJEJUQwJUI0JUQxJThCXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIktpc3dhaGlsaSI6Imh0dHBzOi8vc3cud2lraXBlZGlhLm9yZy93aWtpL0FraWxpX21uZW1iYSIsIktyZXnDsmwgYXlpc3llbiI6Imh0dHBzOi8vaHQud2lraXBlZGlhLm9yZy93aWtpL0VudCVDMyVBOGxpamFuc19hdGlmaXN5JUMzJUE4bCIsIktyaXnDsmwgZ3dpeWFubmVuIjoiaHR0cHM6Ly9nY3Iud2lraXBlZGlhLm9yZy93aWtpL0VudCVDMyVBOWxpamFuc19hcnRpZmlzeSVDMyVBOGwiLCLQmtGL0YDQs9GL0LfRh9CwIjoiaHR0cHM6Ly9reS53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTk2JUQwJUIwJUQxJTgxJUQwJUIwJUQwJUJCJUQwJUJDJUQwJUIwXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIuC6peC6suC6pyI6Imh0dHBzOi8vbG8ud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCQSU5QiVFMCVCQSVCMSVFMCVCQSU5OSVFMCVCQSU4RCVFMCVCQSVCMiVFMCVCQSU5QiVFMCVCQSVCMCVFMCVCQSU5NCVFMCVCQSVCNCVFMCVCQSU5NCIsIkxhdGluYSI6Imh0dHBzOi8vbGEud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGVnZW50aWFfYXJ0aWZpY2lhbGlzIiwiTGF0dmllxaF1IjoiaHR0cHM6Ly9sdi53aWtpcGVkaWEub3JnL3dpa2kvTSVDNCU4MWtzbCVDNCVBQmdhaXNfaW50ZWxla3RzIiwiTMOrdHplYnVlcmdlc2NoIjoiaHR0cHM6Ly9sYi53aWtpcGVkaWEub3JnL3dpa2kvSyVDMyVBQm5zY2h0bGVjaF9JbnRlbGxpZ2VueiIsIkxpZXR1dmnFsyI6Imh0dHBzOi8vbHQud2lraXBlZGlhLm9yZy93aWtpL0RpcmJ0aW5pc19pbnRlbGVrdGFzIiwiTGlndXJlIjoiaHR0cHM6Ly9saWoud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5zYV9hcnRpZmklQzMlQTdpYWxlIiwiTGltYnVyZ3MiOiJodHRwczovL2xpLndpa2lwZWRpYS5vcmcvd2lraS9LJUMzJUIzbnNtYWVzaWdlX2ludGVsbGlnZW50aWUiLCJMYSAubG9qYmFuLiI6Imh0dHBzOi8vamJvLndpa2lwZWRpYS5vcmcvd2lraS9ydXRuaV9tZW5saSIsIkxvbWJhcmQiOiJodHRwczovL2xtby53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnphX2FydGlmaWNpYWxhIiwiTWFneWFyIjoiaHR0cHM6Ly9odS53aWtpcGVkaWEub3JnL3dpa2kvTWVzdGVycyVDMyVBOWdlc19pbnRlbGxpZ2VuY2lhIiwiTWFkaHVyw6IiOiJodHRwczovL21hZC53aWtpcGVkaWEub3JnL3dpa2kvS2VjZXJkYXNhbl9idWF0YW4iLCLQnNCw0LrQtdC00L7QvdGB0LrQuCI6Imh0dHBzOi8vbWsud2lraXBlZGlhLm9yZy93aWtpLyVEMCU5MiVEMCVCNSVEMSU4OCVEMSU4MiVEMCVCMCVEMSU4NyVEMCVCQSVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQjglRDAlQjMlRDAlQjUlRDAlQkQlRDElODYlRDAlQjglRDElOTglRDAlQjAiLCJNYWxhZ2FzeSI6Imh0dHBzOi8vbWcud2lraXBlZGlhLm9yZy93aWtpL0hhcmFuaXRhbi10c2FpbmFfdm9hdHIlMjdfb2xvbWJlbG9uYSIsIuC0ruC0suC0r+C0vuC0s+C0giI6Imh0dHBzOi8vbWwud2lraXBlZGlhLm9yZy93aWtpLyVFMCVCNCVBOCVFMCVCNCVCRiVFMiU4MCU4RCVFMCVCNSVCQyVFMCVCNCVBRSVFMCVCNSU4RCVFMCVCNCVBRSVFMCVCNCVCRiVFMCVCNCVBNF8lRTAlQjQlQUMlRTAlQjUlODElRTAlQjQlQTYlRTAlQjUlOEQlRTAlQjQlQTclRTAlQjQlQkYiLCJNYWx0aSI6Imh0dHBzOi8vbXQud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGklQzQlQTFlbnphX2FydGlmaSVDNCU4QmphbGkiLCLgpK7gpLDgpL7gpKDgpYAiOiJodHRwczovL21yLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTQlOTUlRTAlQTUlODMlRTAlQTQlQTQlRTAlQTUlOEQlRTAlQTQlQjAlRTAlQTQlQkYlRTAlQTQlQUVfJUUwJUE0JUFDJUUwJUE1JTgxJUUwJUE0JUE2JUUwJUE1JThEJUUwJUE0JUE3JUUwJUE0JUJGJUUwJUE0JUFFJUUwJUE0JUE0JUUwJUE1JThEJUUwJUE0JUE0JUUwJUE0JUJFIiwi4YOb4YOQ4YOg4YOS4YOQ4YOa4YOj4YOg4YOYIjoiaHR0cHM6Ly94bWYud2lraXBlZGlhLm9yZy93aWtpLyVFMSU4MyVBRSVFMSU4MyU5NCVFMSU4MyU5QSVFMSU4MyVBMyVFMSU4MyU5MCVFMSU4MyU5QyVFMSU4MyVBMyVFMSU4MyVBMCVFMSU4MyU5OF8lRTElODMlOTglRTElODMlOUMlRTElODMlQTIlRTElODMlOTQlRTElODMlOUElRTElODMlOTQlRTElODMlQTUlRTElODMlQTIlRTElODMlOTgiLCLZhdi12LHZiSI6Imh0dHBzOi8vYXJ6Lndpa2lwZWRpYS5vcmcvd2lraS8lRDglQjAlRDklODMlRDglQTclRDglQTFfJUQ4JUI1JUQ5JTg2JUQ4JUE3JUQ4JUI5JUQ5JTg5IiwiQmFoYXNhIE1lbGF5dSI6Imh0dHBzOi8vbXMud2lraXBlZGlhLm9yZy93aWtpL0tlY2VyZGFzYW5fYnVhdGFuIiwiTWluYW5na2FiYXUiOiJodHRwczovL21pbi53aWtpcGVkaWEub3JnL3dpa2kvS2VjZXJkYXNhbl9idWF0YW4iLCLQnNC+0L3Qs9C+0LsiOiJodHRwczovL21uLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTUlRDAlQjglRDAlQjklRDAlQkMlRDElOEQlRDAlQkJfJUQwJUJFJUQxJThFJUQxJTgzJUQwJUJEIiwi4YCZ4YC84YCU4YC64YCZ4YCs4YCY4YCs4YCe4YCsIjoiaHR0cHM6Ly9teS53aWtpcGVkaWEub3JnL3dpa2kvJUUxJTgwJTg5JUUxJTgwJUFDJUUxJTgwJThGJUUxJTgwJUJBJUUxJTgwJTlCJUUxJTgwJThBJUUxJTgwJUJBJUUxJTgwJTkwJUUxJTgwJUFGIiwiTmVkZXJsYW5kcyI6Imh0dHBzOi8vbmwud2lraXBlZGlhLm9yZy93aWtpL0t1bnN0bWF0aWdlX2ludGVsbGlnZW50aWUiLCJOZWRlcnNha3NpZXMiOiJodHRwczovL25kcy1ubC53aWtpcGVkaWEub3JnL3dpa2kvS2V1bnN0a2xvb2t0ZSIsIuCkqOClh+CkquCkvuCksuClgCI6Imh0dHBzOi8vbmUud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU5NSVFMCVBNSU4MyVFMCVBNCVBNCVFMCVBNSU4RCVFMCVBNCVCMCVFMCVBNCVCRiVFMCVBNCVBRV8lRTAlQTQlQUMlRTAlQTUlOEMlRTAlQTQlQTYlRTAlQTUlOEQlRTAlQTQlQTclRTAlQTQlQkYlRTAlQTQlOTUlRTAlQTQlQTQlRTAlQTQlQkUiLCLgpKjgpYfgpKrgpL7gpLIg4KSt4KS+4KS34KS+IjoiaHR0cHM6Ly9uZXcud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBNCU4NiVFMCVBNCVCMCVFMCVBNSU4RCVFMCVBNCU5RiVFMCVBNCVCRiVFMCVBNCVBQiVFMCVBNCVCRiVFMCVBNCVCOCVFMCVBNCVCRiVFMCVBNCVBRiVFMCVBNCVCMl8lRTAlQTQlODclRTAlQTQlQTglRTAlQTUlOEQlRTAlQTQlOUYlRTAlQTUlODclRTAlQTQlQjIlRTAlQTQlQkYlRTAlQTQlOUMlRTAlQTUlODclRTAlQTQlQTglRTAlQTUlOEQlRTAlQTQlQjgiLCLml6XmnKzoqp4iOiJodHRwczovL2phLndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTclOUYlQTUlRTglODMlQkQiLCJOb3JkZnJpaXNrIjoiaHR0cHM6Ly9mcnIud2lraXBlZGlhLm9yZy93aWtpL0tvbnN0ZWxrX0ludGVsaWdlbnMiLCJOb3JzayBib2ttw6VsIjoiaHR0cHM6Ly9uby53aWtpcGVkaWEub3JnL3dpa2kvS3Vuc3RpZ19pbnRlbGxpZ2VucyIsIk5vcnNrIG55bm9yc2siOiJodHRwczovL25uLndpa2lwZWRpYS5vcmcvd2lraS9LdW5zdGlnX2ludGVsbGlnZW5zIiwiT2NjaXRhbiI6Imh0dHBzOi8vb2Mud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnJUMzJUE5bmNpYV9hcnRpZmljaWFsYSIsIuCsk+CsoeCsvOCsv+CshiI6Imh0dHBzOi8vb3Iud2lraXBlZGlhLm9yZy93aWtpLyVFMCVBQyU4NiVFMCVBQyVCMCVFMCVBRCU4RCVFMCVBQyU5RiVFMCVBQyVCRiVFMCVBQyVBQiVFMCVBQyVCRiVFMCVBQyVCOCVFMCVBQyVCRiVFMCVBQyU4NiVFMCVBQyVCMl8lRTAlQUMlODclRTAlQUMlQTMlRTAlQUQlOEQlRTAlQUMlOUYlRTAlQUQlODclRTAlQUMlQjIlRTAlQUMlQkYlRTAlQUMlOUMlRTAlQUQlODclRTAlQUMlQTglRTAlQUQlOEQlRTAlQUMlQjgiLCJPyrt6YmVrY2hhIC8g0Z7Qt9Cx0LXQutGH0LAiOiJodHRwczovL3V6Lndpa2lwZWRpYS5vcmcvd2lraS9TdW4lQ0ElQkNpeV9pbnRlbGxla3QiLCLgqKrgqbDgqJzgqL7gqKzgqYAiOiJodHRwczovL3BhLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQTglQUMlRTAlQTglQTMlRTAlQTglQkUlRTAlQTglQjUlRTAlQTglOUYlRTAlQTklODBfJUUwJUE4JUFDJUUwJUE5JTgxJUUwJUE5JUIxJUUwJUE4JUE3JUUwJUE5JTgwXyhfQUkpIiwi2b7Zhtis2KfYqNuMIjoiaHR0cHM6Ly9wbmIud2lraXBlZGlhLm9yZy93aWtpLyVEOCVBOCVEOSU4NiVEOCVBNyVEOCVBNiVEQiU4Q18lREElQUYlRDglQTYlREIlOENfJUQ4JUIwJURCJTgxJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwi2b7amtiq2YgiOiJodHRwczovL3BzLndpa2lwZWRpYS5vcmcvd2lraS8lRDklODUlRDglQjUlRDklODYlRDklODglRDglQjklRDklOEFfJURBJTgxJUQ5JThBJUQ4JUIxJURBJUE5JUQ4JUFBJURCJThDJUQ4JUE3IiwiUGF0b2lzIjoiaHR0cHM6Ly9qYW0ud2lraXBlZGlhLm9yZy93aWtpL0FhdGlmaXNoYWxfaW50ZWxpamVucyIsIuGel+GetuGen+GetuGegeGfkuGemOGfguGemiI6Imh0dHBzOi8va20ud2lraXBlZGlhLm9yZy93aWtpLyVFMSU5RSU5NCVFMSU5RSU4OSVFMSU5RiU5MiVFMSU5RSU4OSVFMSU5RSVCNiVFMSU5RSU5RiVFMSU5RSVCNyVFMSU5RSU5NCVFMSU5RiU5MiVFMSU5RSU5NCVFMSU5RSU5MyVFMSU5RSVCNyVFMSU5RSU5OCVFMSU5RiU5MiVFMSU5RSU5OCVFMSU5RSVCNyVFMSU5RSU4RiIsIlBpY2FyZCI6Imh0dHBzOi8vcGNkLndpa2lwZWRpYS5vcmcvd2lraS9JbnQlQzMlQTlybGlnaW5jZV9hcnRpZmljaWVsbGUiLCJQaWVtb250w6hpcyI6Imh0dHBzOi8vcG1zLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGlnZW5zYV9BcnRpZmlzc2lhbCIsIlBsYXR0ZMO8w7x0c2NoIjoiaHR0cHM6Ly9uZHMud2lraXBlZGlhLm9yZy93aWtpL0slQzMlQkNuc3RsaWtlX0ludGVsbGlnZW56IiwiUG9sc2tpIjoiaHR0cHM6Ly9wbC53aWtpcGVkaWEub3JnL3dpa2kvU3p0dWN6bmFfaW50ZWxpZ2VuY2phIiwiUG9ydHVndcOqcyI6Imh0dHBzOi8vcHQud2lraXBlZGlhLm9yZy93aWtpL0ludGVsaWclQzMlQUFuY2lhX2FydGlmaWNpYWwiLCJRYXJhcWFscGFxc2hhIjoiaHR0cHM6Ly9rYWEud2lraXBlZGlhLm9yZy93aWtpL0phc2FsbWFfaW50ZWxsZWt0IiwiUcSxcsSxbXRhdGFyY2EiOiJodHRwczovL2NyaC53aWtpcGVkaWEub3JnL3dpa2kvU3VuaXlfemVrJUMzJUEyIiwiUmVvIHRhaGl0aSI6Imh0dHBzOi8vdHkud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9hcnRpZmljaWVsIiwiUmlwb2FyaXNjaCI6Imh0dHBzOi8va3NoLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIlJvbcOibsSDIjoiaHR0cHM6Ly9yby53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2VuJUM4JTlCJUM0JTgzX2FydGlmaWNpYWwlQzQlODMiLCJSdW5hIFNpbWkiOiJodHRwczovL3F1Lndpa2lwZWRpYS5vcmcvd2lraS9XYWxscGFzcWFfeXV5YXkiLCLQoNGD0YHQuNC90YzRgdC60YvQuSI6Imh0dHBzOi8vcnVlLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTMlRDAlQkMlRDAlQjUlRDAlQkIlRDAlQjBfJUQxJTk2JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQxJTk2JUQyJTkxJUQwJUI1JUQwJUJEJUQxJTg2JUQxJTk2JUQxJThGIiwi0KDRg9GB0YHQutC40LkiOiJodHRwczovL3J1Lndpa2lwZWRpYS5vcmcvd2lraS8lRDAlOTglRDElODElRDAlQkElRDElODMlRDElODElRDElODElRDElODIlRDAlQjIlRDAlQjUlRDAlQkQlRDAlQkQlRDElOEIlRDAlQjlfJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQwJUJCJUQwJUI1JUQwJUJBJUQxJTgyIiwi0KHQsNGF0LAg0YLRi9C70LAiOiJodHRwczovL3NhaC53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTlFJUQyJUE1JUQwJUJFJUQyJUJCJUQxJTgzJUQxJTgzXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCQiVEMCVCNSVEMCVCQSVEMSU4MiIsIlNjb3RzIjoiaHR0cHM6Ly9zY28ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmZWVjaWFsX2ludGVsbGlnZW5jZSIsIlNocWlwIjoiaHR0cHM6Ly9zcS53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxpZ2plbmNhX2FydGlmaWNpYWxlIiwi4LeD4LeS4LaC4LeE4La9IjoiaHR0cHM6Ly9zaS53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUI2JTlBJUUwJUI3JTk4JUUwJUI2JUFEJUUwJUI3JThBJUUyJTgwJThEJUUwJUI2JUJCJUUwJUI3JTkzJUUwJUI2JUI4XyVFMCVCNiVCNiVFMCVCNyU5NCVFMCVCNiVBRiVFMCVCNyU4QSVFMCVCNiVCMCVFMCVCNyU5MiVFMCVCNiVCQSIsIlNpbXBsZSBFbmdsaXNoIjoiaHR0cHM6Ly9zaW1wbGUud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwi2LPZhtqM2YoiOiJodHRwczovL3NkLndpa2lwZWRpYS5vcmcvd2lraS8lREElQkUlRDklQkYlRDglQjElRDglQTclRDglQUYlRDklODhfJUQ4JUIwJURBJUJFJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwiU2xvdmVuxI1pbmEiOiJodHRwczovL3NrLndpa2lwZWRpYS5vcmcvd2lraS9VbWVsJUMzJUExX2ludGVsaWdlbmNpYSIsIlNsb3ZlbsWhxI1pbmEiOiJodHRwczovL3NsLndpa2lwZWRpYS5vcmcvd2lraS9VbWV0bmFfaW50ZWxpZ2VuY2EiLCLFmmzFr25za2kiOiJodHRwczovL3N6bC53aWtpcGVkaWEub3JnL3dpa2kvS2F0ZWdvcnlqbzpTenR1Y3pub19pbnRlbGlnZW5jeWpvIiwi2qnZiNix2K/bjCI6Imh0dHBzOi8vY2tiLndpa2lwZWRpYS5vcmcvd2lraS8lREElOTglREIlOEMlRDglQjElREIlOEMlREIlOENfJUQ4JUFGJURCJTk1JUQ4JUIzJUQ4JUFBJURBJUE5JUQ4JUIxJUQ4JUFGIiwi0KHRgNC/0YHQutC4IC8gc3Jwc2tpIjoiaHR0cHM6Ly9zci53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTkyJUQwJUI1JUQxJTg4JUQxJTgyJUQwJUIwJUQxJTg3JUQwJUJBJUQwJUIwXyVEMCVCOCVEMCVCRCVEMSU4MiVEMCVCNSVEMCVCQiVEMCVCOCVEMCVCMyVEMCVCNSVEMCVCRCVEMSU4NiVEMCVCOCVEMSU5OCVEMCVCMCIsIlNycHNrb2hydmF0c2tpIC8g0YHRgNC/0YHQutC+0YXRgNCy0LDRgtGB0LrQuCI6Imh0dHBzOi8vc2gud2lraXBlZGlhLm9yZy93aWtpL1ZqZSVDNSVBMXRhJUM0JThEa2FfaW50ZWxpZ2VuY2lqYSIsIlN1b21pIjoiaHR0cHM6Ly9maS53aWtpcGVkaWEub3JnL3dpa2kvVGVrbyVDMyVBNGx5IiwiU3ZlbnNrYSI6Imh0dHBzOi8vc3Yud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpZWxsX2ludGVsbGlnZW5zIiwiVGFnYWxvZyI6Imh0dHBzOi8vdGwud2lraXBlZGlhLm9yZy93aWtpL0FydGlwaXN5YWxfbmFfa2F0YWxpbnVoYW4iLCLgrqTgrq7grr/grrTgr40iOiJodHRwczovL3RhLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQUUlOUElRTAlQUYlODYlRTAlQUUlQUYlRTAlQUUlQjElRTAlQUYlOEQlRTAlQUUlOTUlRTAlQUYlODhfJUUwJUFFJUE4JUUwJUFGJTgxJUUwJUFFJUEzJUUwJUFGJThEJUUwJUFFJUEzJUUwJUFFJUIxJUUwJUFFJUJGJUUwJUFFJUI1JUUwJUFGJTgxIiwi0KLQsNGC0LDRgNGH0LAgLyB0YXRhcsOnYSI6Imh0dHBzOi8vdHQud2lraXBlZGlhLm9yZy93aWtpLyVEMCVBRiVEMSU4MSVEMCVCMCVEMCVCQiVEMCVCQyVEMCVCMF8lRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDAlQkIlRDAlQkIlRDAlQjUlRDAlQkElRDElODIiLCLgsKTgsYbgsLLgsYHgsJfgsYEiOiJodHRwczovL3RlLndpa2lwZWRpYS5vcmcvd2lraS8lRTAlQjAlOTUlRTAlQjElODMlRTAlQjAlQTQlRTAlQjElOEQlRTAlQjAlQjAlRTAlQjAlQkYlRTAlQjAlQUVfJUUwJUIwJUFFJUUwJUIxJTg3JUUwJUIwJUE3JUUwJUIwJUI4JUUwJUIxJThEJUUwJUIwJUI4JUUwJUIxJTgxIiwi4LmE4LiX4LiiIjoiaHR0cHM6Ly90aC53aWtpcGVkaWEub3JnL3dpa2kvJUUwJUI4JTlCJUUwJUI4JUIxJUUwJUI4JThEJUUwJUI4JThEJUUwJUI4JUIyJUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI4JTk0JUUwJUI4JUI0JUUwJUI4JUE5JUUwJUI4JTkwJUUwJUI5JThDIiwi0KLQvtK30LjQutOjIjoiaHR0cHM6Ly90Zy53aWtpcGVkaWEub3JnL3dpa2kvJUQyJUIyJUQxJTgzJUQxJTg4JUQwJUI4XyVEMCVCQyVEMCVCMCVEMSU4MSVEMCVCRCVEMyVBRiVEMSU4QSVEMyVBMyIsIlTDvHJrw6dlIjoiaHR0cHM6Ly90ci53aWtpcGVkaWEub3JnL3dpa2kvWWFwYXlfemVrJUMzJUEyIiwiVMO8cmttZW7Dp2UiOiJodHRwczovL3RrLndpa2lwZWRpYS5vcmcvd2lraS8lQzMlOURhc2FtYV9ha3lsIiwi0KPQutGA0LDRl9C90YHRjNC60LAiOiJodHRwczovL3VrLndpa2lwZWRpYS5vcmcvd2lraS8lRDAlQTglRDElODIlRDElODMlRDElODclRDAlQkQlRDAlQjglRDAlQjlfJUQxJTk2JUQwJUJEJUQxJTgyJUQwJUI1JUQwJUJCJUQwJUI1JUQwJUJBJUQxJTgyIiwi2KfYsdiv2YgiOiJodHRwczovL3VyLndpa2lwZWRpYS5vcmcvd2lraS8lRDklODUlRDglQjUlRDklODYlRDklODglRDglQjklREIlOENfJUQ4JUIwJURCJTgxJUQ4JUE3JUQ5JTg2JUQ4JUFBIiwi2Kbbh9mK2Lrbh9ix2obblSAvIFV5Z2h1cmNoZSI6Imh0dHBzOi8vdWcud2lraXBlZGlhLm9yZy93aWtpLyVEOCVCMyVEQiU4OCVEOSU4NiVEOCVBNiVEOSU4OV8lRDglQTYlRDklODklRDglQUYlRDklODklRDglQjElRDglQTclRDklODMiLCJWw6huZXRvIjoiaHR0cHM6Ly92ZWMud2lraXBlZGlhLm9yZy93aWtpL0ludGUlQzUlODJpamVuc2FfYXJ0aWZpc2ElQzUlODJlIiwiVGnhur9uZyBWaeG7h3QiOiJodHRwczovL3ZpLndpa2lwZWRpYS5vcmcvd2lraS9UciVDMyVBRF90dSVFMSVCQiU4N19uaCVDMyVBMm5fdCVFMSVCQSVBMW8iLCJWw7VybyI6Imh0dHBzOi8vZml1LXZyby53aWtpcGVkaWEub3JnL3dpa2kvS3Vuc3RtJUMzJUI1aXN0dXMiLCJXYWxvbiI6Imh0dHBzOi8vd2Eud2lraXBlZGlhLm9yZy93aWtpL1MlQzMlQkJ0aXN0JUMzJUE5XyVDMyVBOW5kam9saWtlIiwiV2luYXJheSI6Imh0dHBzOi8vd2FyLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGloZW5zeWFfYXJ0aXBpc3lhbCIsIuWQtOivrSI6Imh0dHBzOi8vd3V1Lndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTYlOTklQkElRTglODMlQkQiLCLXmdeZ1rTXk9eZ16kiOiJodHRwczovL3lpLndpa2lwZWRpYS5vcmcvd2lraS8lRDclQTclRDclOTklRDclQTAlRDclQTElRDclOTglRDclOUMlRDclQTIlRDclOUIlRDclQTJfJUQ3JTkwJUQ3JTk5JUQ3JUEwJUQ3JTk4JUQ3JUEyJUQ3JTlDJUQ3JTk5JUQ3JTkyJUQ3JUEyJUQ3JUEwJUQ3JUE1Iiwi57K16KqeIjoiaHR0cHM6Ly96aC15dWUud2lraXBlZGlhLm9yZy93aWtpLyVFNCVCQSVCQSVFNSVCNyVBNSVFNiU5OSVCQSVFOCU4MyVCRCIsIlphemFraSI6Imh0dHBzOi8vZGlxLndpa2lwZWRpYS5vcmcvd2lraS9WaXJvX3YlQzQlQjFyYSVDNSU5RnQlQzQlQjFrJUMzJUFBbiIsIsW9ZW1haXTEl8Wha2EiOiJodHRwczovL2JhdC1zbWcud2lraXBlZGlhLm9yZy93aWtpL0QlQzQlOTdyYnQlQzQlOTduc19pbnRlbGVrdHMiLCLkuK3mlociOiJodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS8lRTQlQkElQkElRTUlQjclQTUlRTYlOTklQkElRTglODMlQkQiLCJCZXRhd2kiOiJodHRwczovL2Jldy53aWtpcGVkaWEub3JnL3dpa2kvQ2FsYWthbl9iaWtpbmFuIiwiS2FkYXphbmR1c3VuIjoiaHR0cHM6Ly9kdHAud2lraXBlZGlhLm9yZy93aWtpL0thYmFhbGFuX1RpbmFuZGEiLCJGyZTMgG5nYsOoIjoiaHR0cHM6Ly9mb24ud2lraXBlZGlhLm9yZy93aWtpL04lQzclOTRueXclQzklOUJfZ2IlQzklOUJ0JUM5JTk0XyVDOSU5NiVDOSU5NGh1bl90JUM5JTk0biIsIuK1nOK0sOK1juK0sOK1o+K1ieK1luK1nCDitZzitLDitY/itLDitaHitLDitaLitZwiOiJodHRwczovL3pnaC53aWtpcGVkaWEub3JnL3dpa2kvJUUyJUI1JTlDJUUyJUI1JTg5JUUyJUI1JTk2JUUyJUI1JTg5JUUyJUI1JTk5JUUyJUI1JTlDXyVFMiVCNSU5QyVFMiVCNCVCMCVFMiVCNSU5OSVFMiVCNSU4RSVFMiVCNCVCMyVFMiVCNSU5MyVFMiVCNSU5NCVFMiVCNSU5QyIsIkVkaXQgbGlua3MiOiJodHRwczovL3d3dy53aWtpZGF0YS5vcmcvd2lraS9TcGVjaWFsOkVudGl0eVBhZ2UvUTExNjYwI3NpdGVsaW5rcy13aWtpcGVkaWEiLCJBcnRpY2xlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJSZWFkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJWaWV3IHNvdXJjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249ZWRpdCIsIlZpZXcgaGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249aGlzdG9yeSIsIldoYXQgbGlua3MgaGVyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6V2hhdExpbmtzSGVyZS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlJlbGF0ZWQgY2hhbmdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6UmVjZW50Q2hhbmdlc0xpbmtlZC9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlNwZWNpYWwgcGFnZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOlNwZWNpYWxQYWdlcyIsIlBlcm1hbmVudCBsaW5rIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm9sZGlkPTEyNzQ5NDEyOTciLCJQYWdlIGluZm9ybWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJmFjdGlvbj1pbmZvIiwiQ2l0ZSB0aGlzIHBhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpDaXRlVGhpc1BhZ2UmcGFnZT1BcnRpZmljaWFsX2ludGVsbGlnZW5jZSZpZD0xMjc0OTQxMjk3JndwRm9ybUlkZW50aWZpZXI9dGl0bGVmb3JtIiwiR2V0IHNob3J0ZW5lZCBVUkwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpVcmxTaG9ydGVuZXImdXJsPWh0dHBzJTNBJTJGJTJGZW4ud2lraXBlZGlhLm9yZyUyRndpa2klMkZBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkRvd25sb2FkIFFSIGNvZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpRckNvZGUmdXJsPWh0dHBzJTNBJTJGJTJGZW4ud2lraXBlZGlhLm9yZyUyRndpa2klMkZBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkVkaXQgaW50ZXJsYW5ndWFnZSBsaW5rcyI6Imh0dHBzOi8vd3d3Lndpa2lkYXRhLm9yZy93aWtpL1NwZWNpYWw6RW50aXR5UGFnZS9RMTE2NjAjc2l0ZWxpbmtzLXdpa2lwZWRpYSIsIkV4cGFuZCBhbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMiLCJEb3dubG9hZCBhcyBQREYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9U3BlY2lhbDpEb3dubG9hZEFzUGRmJnBhZ2U9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UmYWN0aW9uPXNob3ctZG93bmxvYWQtc2NyZWVuIiwiUHJpbnRhYmxlIHZlcnNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UmcHJpbnRhYmxlPXllcyIsIldpa2ltZWRpYSBDb21tb25zIjoiaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIk1ldGEtV2lraSI6Imh0dHBzOi8vbWV0YS53aWtpbWVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJXaWtpYm9va3MiOiJodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIldpa2luZXdzIjoiaHR0cHM6Ly9lbi53aWtpbmV3cy5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIldpa2lxdW90ZSI6Imh0dHBzOi8vZW4ud2lraXF1b3RlLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiV2lraXZlcnNpdHkiOiJodHRwczovL2VuLndpa2l2ZXJzaXR5Lm9yZy93aWtpL1BvcnRhbDpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIldpa2lkYXRhIGl0ZW0iOiJodHRwczovL3d3dy53aWtpZGF0YS5vcmcvd2lraS9TcGVjaWFsOkVudGl0eVBhZ2UvUTExNjYwIiwiQUkgKGRpc2FtYmlndWF0aW9uKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJXyhkaXNhbWJpZ3VhdGlvbikiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSAoZGlzYW1iaWd1YXRpb24pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfKGRpc2FtYmlndWF0aW9uKSIsIk1ham9yIGdvYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjR29hbHMiLCJBcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIkludGVsbGlnZW50IGFnZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbnRfYWdlbnQiLCJSZWN1cnNpdmUgc2VsZi1pbXByb3ZlbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY3Vyc2l2ZV9zZWxmLWltcHJvdmVtZW50IiwiUGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmdfYW5kX3NjaGVkdWxpbmciLCJDb21wdXRlciB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl92aXNpb24iLCJHZW5lcmFsIGdhbWUgcGxheWluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWxfZ2FtZV9wbGF5aW5nIiwiS25vd2xlZGdlIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbl9hbmRfcmVhc29uaW5nIiwiTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9yb2JvdGljcyIsIkFJIHNhZmV0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX3NhZmV0eSIsIk1hY2hpbmUgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiU3ltYm9saWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1ib2xpY19hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkRlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwiQmF5ZXNpYW4gbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9uZXR3b3JrIiwiRXZvbHV0aW9uYXJ5IGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfYWxnb3JpdGhtIiwiSHlicmlkIGludGVsbGlnZW50IHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeWJyaWRfaW50ZWxsaWdlbnRfc3lzdGVtIiwiU3lzdGVtcyBpbnRlZ3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX3N5c3RlbXNfaW50ZWdyYXRpb24iLCJBcHBsaWNhdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJCaW9pbmZvcm1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfbGVhcm5pbmdfaW5fYmlvaW5mb3JtYXRpY3MiLCJEZWVwZmFrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBmYWtlIiwiRWFydGggc2NpZW5jZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nX2luX2VhcnRoX3NjaWVuY2VzIiwiRmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uc19vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSNGaW5hbmNlIiwiR2VuZXJhdGl2ZSBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBcnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hcnQiLCJBdWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfYXVkaW8iLCJNdXNpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011c2ljX2FuZF9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkdvdmVybm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9pbl9nb3Zlcm5tZW50IiwiSGVhbHRoY2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2luX2hlYWx0aGNhcmUiLCJNZW50YWwgaGVhbHRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5fbWVudGFsX2hlYWx0aCIsIkluZHVzdHJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5faW5kdXN0cnkiLCJUcmFuc2xhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfdHJhbnNsYXRpb24iLCJNaWxpdGFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbGl0YXJ5X3JvYm90IiwiUGh5c2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3BoeXNpY3MiLCJQcm9qZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfcHJvamVjdHMiLCJQaGlsb3NvcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkFydGlmaWNpYWwgY29uc2Npb3VzbmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfY29uc2Npb3VzbmVzcyIsIkNoaW5lc2Ugcm9vbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoaW5lc2Vfcm9vbSIsIkZyaWVuZGx5IEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJpZW5kbHlfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJDb250cm9sIHByb2JsZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9jb250cm9sX3Byb2JsZW0iLCJUYWtlb3ZlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX3Rha2VvdmVyIiwiRXRoaWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfZXRoaWNzIiwiRXhpc3RlbnRpYWwgcmlzayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4aXN0ZW50aWFsX3Jpc2tfZnJvbV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlR1cmluZyB0ZXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHVyaW5nX3Rlc3QiLCJVbmNhbm55IHZhbGxleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuY2FubnlfdmFsbGV5IiwiSGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2Zfcm9ib3RzIiwiVGltZWxpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaW1lbGluZV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlByb2dyZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3Jlc3NfaW5fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBSSB3aW50ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV93aW50ZXIiLCJBSSBib29tIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfYm9vbSIsIkdsb3NzYXJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2Zfcm9ib3RpY3MiLCJ2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6R2xvc3Nhcmllc19vZl9zY2llbmNlX2FuZF9lbmdpbmVlcmluZyIsInQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wbGF0ZV90YWxrOkdsb3NzYXJpZXNfb2Zfc2NpZW5jZV9hbmRfZW5naW5lZXJpbmciLCJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpFZGl0UGFnZS9UZW1wbGF0ZTpHbG9zc2FyaWVzX29mX3NjaWVuY2VfYW5kX2VuZ2luZWVyaW5nIiwiaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbmNlIiwibWFjaGluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lIiwiY29tcHV0ZXIgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyIiwiZmllbGQgb2YgcmVzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWVsZF9vZl9yZXNlYXJjaCIsImNvbXB1dGVyIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl9zY2llbmNlIiwic29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZSIsInBlcmNlaXZlIHRoZWlyIGVudmlyb25tZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9wZXJjZXB0aW9uIiwibGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiWzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExJUUyJTgwJTkzNC0xIiwiYXBwbGljYXRpb25zIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25zX29mX0FJIiwid2ViIHNlYXJjaCBlbmdpbmVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2ViX3NlYXJjaF9lbmdpbmUiLCJHb29nbGUgU2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX1NlYXJjaCIsInJlY29tbWVuZGF0aW9uIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWNvbW1lbmRhdGlvbl9zeXN0ZW1zIiwiWW91VHViZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvdVR1YmUiLCJBbWF6b24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbWF6b25fKGNvbXBhbnkpIiwiTmV0ZmxpeCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldGZsaXgiLCJ2aXJ0dWFsIGFzc2lzdGFudHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXJ0dWFsX2Fzc2lzdGFudCIsIkdvb2dsZSBBc3Npc3RhbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfQXNzaXN0YW50IiwiU2lyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpcmkiLCJBbGV4YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FtYXpvbl9BbGV4YSIsImF1dG9ub21vdXMgdmVoaWNsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbm9tb3VzX3ZlaGljbGVzIiwiV2F5bW8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXltbyIsImdlbmVyYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX0FJIiwiY3JlYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2NyZWF0aXZpdHkiLCJDaGF0R1BUIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhdEdQVCIsIkFJIGFydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX2FydCIsInN1cGVyaHVtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZSIsInN0cmF0ZWd5IGdhbWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RyYXRlZ3lfZ2FtZSIsImNoZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hlc3MiLCJHbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvXyhnYW1lKSIsIm5vdCBsYWJlbGVkIEFJIGFueW1vcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9lZmZlY3QiLCJbMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMiIsIlszXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zIiwicmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3JlYXNvbmluZyIsImtub3dsZWRnZSByZXByZXNlbnRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbiIsInBsYW5uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nX2FuZF9zY2hlZHVsaW5nIiwibmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwicm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljcyIsIlthXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1Qcm9ibGVtc19vZl9BSS00IiwiR2VuZXJhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2dlbmVyYWxfaW50ZWxsaWdlbmNlIiwiWzRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUFydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UtNSIsInNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0YXRlX3NwYWNlX3NlYXJjaCIsIm1hdGhlbWF0aWNhbCBvcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXRoZW1hdGljYWxfb3B0aW1pemF0aW9uIiwiZm9ybWFsIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9ybWFsX2xvZ2ljIiwiYXJ0aWZpY2lhbCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX25ldXJhbF9uZXR3b3JrcyIsInN0YXRpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0aXN0aWNzIiwib3BlcmF0aW9ucyByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZXJhdGlvbnNfcmVzZWFyY2giLCJlY29ub21pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FY29ub21pY3MiLCJbYl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtVG9vbHNfb2ZfQUktNiIsInBzeWNob2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc3ljaG9sb2d5IiwibGluZ3Vpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5ndWlzdGljcyIsInBoaWxvc29waHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5IiwibmV1cm9zY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cm9zY2llbmNlIiwiWzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTciLCJbNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGFydG1vdXRoX3dvcmtzaG9wLTgiLCJpdHMgaGlzdG9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU3VjYzEtOSIsIls4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GdW5kMDEtMTAiLCJBSSB3aW50ZXJzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfd2ludGVyIiwiWzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZpcnN0X0FJX1dpbnRlci0xMSIsIlsxMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU2Vjb25kX0FJX1dpbnRlci0xMiIsImRlZXAgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwiWzExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1EZWVwX2xlYXJuaW5nX3Jldm9sdXRpb24tMTMiLCJ0cmFuc2Zvcm1lciBhcmNoaXRlY3R1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl9hcmNoaXRlY3R1cmUiLCJbMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVG9ld3MyMDIzLTE0IiwicHJvZ3Jlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmVzc19pbl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsInJpc2tzIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfcmlzayIsIml0cyBsb25nLXRlcm0gZWZmZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FJX2FmdGVybWF0aF9zY2VuYXJpb3MiLCJyZWd1bGF0b3J5IHBvbGljaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhdGlvbl9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsInNhZmV0eSBhbmQgYmVuZWZpdHMgb2YgdGhlIHRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9zYWZldHkiLCJkZWR1Y3Rpb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVkdWN0aXZlX3JlYXNvbmluZyIsIlsxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTUiLCJ1bmNlcnRhaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmNlcnRhaW50eSIsInByb2JhYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmFiaWxpdHkiLCJbMTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2IiwiWzE1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1JbnRyYWN0YWJpbGl0eV9hbmRfZWZmaWNpZW5jeV9hbmRfdGhlX2NvbWJpbmF0b3JpYWxfZXhwbG9zaW9uLTE3IiwiWzE2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1Qc3ljaG9sb2dpY2FsX2V2aWRlbmNlX29mX3RoZV9wcmV2YWxlbmNlX29mX3N1Yi0xOCIsIktub3dsZWRnZSByZXByZXNlbnRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbiIsImtub3dsZWRnZSBlbmdpbmVlcmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9lbmdpbmVlcmluZyIsIlsxN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkiLCJbMThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU21vbGlhclpoYW5nMTk5NC0yMCIsIlsxOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOZXVtYW5uTSVDMyVCNmxsZXIyMDA4LTIxIiwiWzIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUt1cGVybWFuUmVpY2hsZXlCYWlsZXkyMDA2LTIyIiwiZGF0YWJhc2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YWJhc2UiLCJbMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWNHYXJyeTIwMDUtMjMiLCJbMjJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQmVydGluaURlbF9CaW1ib1Rvcm5pYWkyMDA2LTI0Iiwia25vd2xlZGdlIGJhc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Lbm93bGVkZ2VfYmFzZSIsIm9udG9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT250b2xvZ3lfKGluZm9ybWF0aW9uX3NjaWVuY2UpIiwiWzIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjcyLTI1IiwiWzI0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNiIsIlsyNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjciLCJbMjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4IiwiWzI3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yOSIsImRlZmF1bHQgcmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmYXVsdF9yZWFzb25pbmciLCJbMjhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLURlZmF1bHRfcmVhc29uaW5nLTMwIiwiWzI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1CcmVhZHRoX29mX2NvbW1vbnNlbnNlX2tub3dsZWRnZS0zMSIsImtub3dsZWRnZSBhY3F1aXNpdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9hY3F1aXNpdGlvbiIsIltjXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNCIsInJhdGlvbmFsIGFnZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmF0aW9uYWxfYWdlbnQiLCJbZF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUiLCJbMzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE1MjgtMzYiLCJhdXRvbWF0ZWQgcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmciLCJbMzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM3IiwiYXV0b21hdGVkIGRlY2lzaW9uLW1ha2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9kZWNpc2lvbi1tYWtpbmciLCJ1dGlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVXRpbGl0eSIsImV4cGVjdGVkIHV0aWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBlY3RlZF91dGlsaXR5IiwiWzM0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zOCIsImNsYXNzaWNhbCBwbGFubmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9wbGFubmluZ19hbmRfc2NoZWR1bGluZyNjbGFzc2ljYWxfcGxhbm5pbmciLCJbMzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5IiwiWzM2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MCIsImludmVyc2UgcmVpbmZvcmNlbWVudCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludmVyc2VfcmVpbmZvcmNlbWVudF9sZWFybmluZyIsIlszN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDEiLCJJbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl92YWx1ZV90aGVvcnkiLCJbMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQyIiwiaW50cmFjdGFibHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyYWN0YWJseSIsIk1hcmtvdiBkZWNpc2lvbiBwcm9jZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFya292X2RlY2lzaW9uX3Byb2Nlc3MiLCJ0cmFuc2l0aW9uIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluaXRlLXN0YXRlX21hY2hpbmUiLCJyZXdhcmQgZnVuY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXdhcmRfZnVuY3Rpb24iLCJwb2xpY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nI1BvbGljeSIsIml0ZXJhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGljeV9pdGVyYXRpb24iLCJoZXVyaXN0aWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZXVyaXN0aWMiLCJbMzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQzIiwiR2FtZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX3RoZW9yeSIsIls0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDQiLCJbNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ1IiwiW2VdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ4IiwiVW5zdXBlcnZpc2VkIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5zdXBlcnZpc2VkX2xlYXJuaW5nIiwiWzQ0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00OSIsIlN1cGVydmlzZWQgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcnZpc2VkX2xlYXJuaW5nIiwiY2xhc3NpZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0aXN0aWNhbF9jbGFzc2lmaWNhdGlvbiIsInJlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWdyZXNzaW9uX2FuYWx5c2lzIiwiWzQ1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TdXBlcnZpc2VkX2xlYXJuaW5nLTUwIiwicmVpbmZvcmNlbWVudCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlaW5mb3JjZW1lbnRfbGVhcm5pbmciLCJbNDZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTUxIiwiVHJhbnNmZXIgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zlcl9sZWFybmluZyIsIls0N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNTIiLCJbNDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTUzIiwiQ29tcHV0YXRpb25hbCBsZWFybmluZyB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2xlYXJuaW5nX3RoZW9yeSIsImNvbXB1dGF0aW9uYWwgY29tcGxleGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfY29tcGxleGl0eSIsInNhbXBsZSBjb21wbGV4aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtcGxlX2NvbXBsZXhpdHkiLCJvcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcHRpbWl6YXRpb24iLCJbNDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTU0IiwiWzUwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS01NSIsIkVuZ2xpc2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmdsaXNoXyhsYW5ndWFnZSkiLCJzcGVlY2ggcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVlY2hfcmVjb2duaXRpb24iLCJzcGVlY2ggc3ludGhlc2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlZWNoX3N5bnRoZXNpcyIsIm1hY2hpbmUgdHJhbnNsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3RyYW5zbGF0aW9uIiwiaW5mb3JtYXRpb24gZXh0cmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX2V4dHJhY3Rpb24iLCJpbmZvcm1hdGlvbiByZXRyaWV2YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9yZXRyaWV2YWwiLCJxdWVzdGlvbiBhbnN3ZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWVzdGlvbl9hbnN3ZXJpbmciLCJbNTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTU2IiwiTm9hbSBDaG9tc2t5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9hbV9DaG9tc2t5IiwiZ2VuZXJhdGl2ZSBncmFtbWFyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9ncmFtbWFyIiwic2VtYW50aWMgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW1hbnRpY19uZXR3b3JrIiwid29yZC1zZW5zZSBkaXNhbWJpZ3VhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmQtc2Vuc2VfZGlzYW1iaWd1YXRpb24iLCJbZl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNTciLCJtaWNyby13b3JsZHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CbG9ja3Nfd29ybGQiLCJNYXJnYXJldCBNYXN0ZXJtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJnYXJldF9NYXN0ZXJtYW4iLCJ0aGVzYXVyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZXNhdXJpIiwid29yZCBlbWJlZGRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JkX2VtYmVkZGluZyIsInZlY3RvcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZWN0b3Jfc3BhY2UiLCJbNTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE4NTYlRTIlODAlOTM4NTgtNTgiLCJ0cmFuc2Zvcm1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl8obWFjaGluZV9sZWFybmluZ19tb2RlbCkiLCJhdHRlbnRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25fKG1hY2hpbmVfbGVhcm5pbmcpIiwiWzUzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URURpY2tzb24yMDIyLTU5IiwiWzU0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS02MCIsImdlbmVyYXRpdmUgcHJlLXRyYWluZWQgdHJhbnNmb3JtZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX3ByZS10cmFpbmVkX3RyYW5zZm9ybWVyIiwiWzU1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVZpbmNlbnQyMDE5LTYxIiwiWzU2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxODc1JUUyJTgwJTkzODc4LTYyIiwiYmFyIGV4YW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXJfZXhhbSIsIlNBVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NBVCIsIkdSRSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dSRSIsIls1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVCdXNod2ljazIwMjMtNjMiLCJNYWNoaW5lIHBlcmNlcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3BlcmNlcHRpb24iLCJsaWRhciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpZGFyIiwidGFjdGlsZSBzZW5zb3JzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFjdGlsZV9zZW5zb3IiLCJbNThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTY0IiwiWzU5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxODQ5JUUyJTgwJTkzODUwLTY1IiwiaW1hZ2UgY2xhc3NpZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9jbGFzc2lmaWNhdGlvbiIsIls2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTg5NSVFMiU4MCU5Mzg5OS02NiIsImZhY2lhbCByZWNvZ25pdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhY2lhbF9yZWNvZ25pdGlvbl9zeXN0ZW0iLCJvYmplY3QgcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PYmplY3RfcmVjb2duaXRpb24iLCJbNjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE4OTklRTIlODAlOTM5MDEtNjciLCJvYmplY3QgdHJhY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3Rpb25fY2FwdHVyZSIsIls2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaGFsbGFNb3JlbGFuZE11JUM1JUExaWNraUV2YW5zMjAxMS02OCIsInJvYm90aWMgcGVyY2VwdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfcGVyY2VwdGlvbiIsIls2M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTkzMSVFMiU4MCU5MzkzOC02OSIsIktpc21ldCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tpc21ldF8ocm9ib3QpIiwiWzY0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1JVF9BSUwyMDE0LTcwIiwiQWZmZWN0aXZlIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FmZmVjdGl2ZV9jb21wdXRpbmciLCJmZWVsaW5nLCBlbW90aW9uLCBhbmQgbW9vZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FmZmVjdF8ocHN5Y2hvbG9neSkiLCJbNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTcxIiwiaHVtYW7igJNjb21wdXRlciBpbnRlcmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuJUUyJTgwJTkzY29tcHV0ZXJfaW50ZXJhY3Rpb24iLCJbNjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFV2FkZGVsbDIwMTgtNzIiLCJzZW50aW1lbnQgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW50aW1lbnRfYW5hbHlzaXMiLCJtdWx0aW1vZGFsIHNlbnRpbWVudCBhbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpbW9kYWxfc2VudGltZW50X2FuYWx5c2lzIiwiWzY3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVBvcmlhQ2FtYnJpYUJhanBhaUh1c3NhaW4yMDE3LTczIiwiYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCJodW1hbiBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9pbnRlbGxpZ2VuY2UiLCJbNjhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc0Iiwic3RhdGUgc3BhY2Ugc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVfc3BhY2Vfc2VhcmNoIiwibG9jYWwgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9jYWxfc2VhcmNoXyhvcHRpbWl6YXRpb24pIiwiU3RhdGUgc3BhY2Ugc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVfc3BhY2Vfc2VhcmNoIiwiWzY5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS03NSIsIm1lYW5zLWVuZHMgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZWFucy1lbmRzX2FuYWx5c2lzIiwiWzcwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxc2VjdC5fMTEuMi03NiIsIlNpbXBsZSBleGhhdXN0aXZlIHNlYXJjaGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJ1dGVfZm9yY2Vfc2VhcmNoIiwiWzcxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS03NyIsInNlYXJjaCBzcGFjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9hbGdvcml0aG0iLCJhc3Ryb25vbWljYWwgbnVtYmVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FzdHJvbm9taWNhbGx5X2xhcmdlIiwidG9vIHNsb3ciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbl90aW1lIiwiSGV1cmlzdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hldXJpc3RpY3MiLCJbNzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc4IiwiQWR2ZXJzYXJpYWwgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWR2ZXJzYXJpYWxfc2VhcmNoIiwiZ2FtZS1wbGF5aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FtZV9BSSIsInRyZWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX3RyZWUiLCJbNzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTc5IiwiZ3JhZGllbnQgZGVzY2VudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYWRpZW50X2Rlc2NlbnQiLCJsb3NzIGZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9zc19mdW5jdGlvbiIsIkxvY2FsIHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvY2FsX3NlYXJjaF8ob3B0aW1pemF0aW9uKSIsIls3NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtODAiLCJHcmFkaWVudCBkZXNjZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JhZGllbnRfZGVzY2VudCIsIm5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmsiLCJbNzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTgxIiwiYmFja3Byb3BhZ2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFja3Byb3BhZ2F0aW9uIiwiZXZvbHV0aW9uYXJ5IGNvbXB1dGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZvbHV0aW9uYXJ5X2NvbXB1dGF0aW9uIiwic2VsZWN0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9zZWxlY3Rpb24iLCJbNzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTgyIiwic3dhcm0gaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3dhcm1faW50ZWxsaWdlbmNlIiwicGFydGljbGUgc3dhcm0gb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGljbGVfc3dhcm1fb3B0aW1pemF0aW9uIiwiZmxvY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GbG9ja2luZyIsImFudCBjb2xvbnkgb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50X2NvbG9ueV9vcHRpbWl6YXRpb24iLCJhbnQgdHJhaWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50X3RyYWlsIiwiWzc3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1lcmtsZU1pZGRlbmRvcmYyMDEzLTgzIiwibG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpYyIsIls3OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtODQiLCJwcm9wb3NpdGlvbmFsIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvcG9zaXRpb25hbF9sb2dpYyIsImxvZ2ljYWwgY29ubmVjdGl2ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY2FsX2Nvbm5lY3RpdmUiLCJbNzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTg1IiwicHJlZGljYXRlIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJlZGljYXRlX2xvZ2ljIiwicXVhbnRpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWFudGlmaWVyXyhsb2dpYykiLCJbODBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTg2IiwiRGVkdWN0aXZlIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZHVjdGl2ZV9yZWFzb25pbmciLCJwcm92aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNhbF9wcm9vZiIsImNvbmNsdXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY2FsX2NvbnNlcXVlbmNlIiwicHJlbWlzZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmVtaXNlIiwiWzgxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04NyIsInRyZWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJlZV9zdHJ1Y3R1cmUiLCJpbmZlcmVuY2UgcnVsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZlcmVuY2VfcnVsZSIsImxlYWYgbm9kZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZWFmX25vZGVzIiwiYXhpb21zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXhpb20iLCJIb3JuIGNsYXVzZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ib3JuX2NsYXVzZSIsImZvcndhcmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9yd2FyZF9jaGFpbmluZyIsImJhY2t3YXJkcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhY2t3YXJkX2NoYWluaW5nIiwiWzgyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04OCIsImZpcnN0LW9yZGVyIGxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlyc3Qtb3JkZXJfbG9naWMiLCJyZXNvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzb2x1dGlvbl8obG9naWMpIiwiWzgzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS04OSIsInVuZGVjaWRhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5kZWNpZGFibGVfcHJvYmxlbSIsImludHJhY3RhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cmFjdGFiaWxpdHlfKGNvbXBsZXhpdHkpIiwibG9naWMgcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpY19wcm9ncmFtbWluZyIsIlByb2xvZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2xvZyIsIlR1cmluZyBjb21wbGV0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1R1cmluZ19jb21wbGV0ZSIsInN5bWJvbGljIHByb2dyYW1taW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltYm9saWNfcHJvZ3JhbW1pbmciLCJbODRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTkwIiwiRnV6enkgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdXp6eV9sb2dpYyIsIls4NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtOTEiLCJOb24tbW9ub3RvbmljIGxvZ2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05vbi1tb25vdG9uaWNfbG9naWMiLCJuZWdhdGlvbiBhcyBmYWlsdXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVnYXRpb25fYXNfZmFpbHVyZSIsIkJheWVzaWFuIG5ldHdvcmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9uZXR3b3JrIiwiY29uZGl0aW9uYWwgcHJvYmFiaWxpdHkgdGFibGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uZGl0aW9uYWxfcHJvYmFiaWxpdHlfdGFibGUiLCJbODZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVN0b2NoLTkyIiwiZGVjaXNpb24gdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVjaXNpb25fdGhlb3J5IiwiZGVjaXNpb24gYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWNpc2lvbl9hbmFseXNpcyIsIls4N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtOTMiLCJpbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl92YWx1ZV90aGVvcnkiLCJbODhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTk0IiwiTWFya292IGRlY2lzaW9uIHByb2Nlc3NlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmtvdl9kZWNpc2lvbl9wcm9jZXNzIiwiWzg5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS05NSIsImRlY2lzaW9uIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVjaXNpb25fbmV0d29yayIsIls5MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtU3RvY2hhc3RpY190ZW1wb3JhbF9tb2RlbHMtOTYiLCJnYW1lIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhbWVfdGhlb3J5IiwibWVjaGFuaXNtIGRlc2lnbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lY2hhbmlzbV9kZXNpZ24iLCJbOTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTk3IiwiWzkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS05OCIsIkJheWVzaWFuIGluZmVyZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JheWVzaWFuX2luZmVyZW5jZSIsIltnXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDAiLCJbOTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwMSIsImV4cGVjdGF0aW9u4oCTbWF4aW1pemF0aW9uIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVjdGF0aW9uJUUyJTgwJTkzbWF4aW1pemF0aW9uX2FsZ29yaXRobSIsIltoXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDMiLCJbOTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwNCIsIls5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTA1IiwicGVyY2VwdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfcGVyY2VwdGlvbiIsImR5bmFtaWMgQmF5ZXNpYW4gbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EeW5hbWljX0JheWVzaWFuX25ldHdvcmsiLCJoaWRkZW4gTWFya292IG1vZGVscyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZGRlbl9NYXJrb3ZfbW9kZWwiLCJLYWxtYW4gZmlsdGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0thbG1hbl9maWx0ZXIiLCJFeHBlY3RhdGlvbuKAk21heGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVjdGF0aW9uJUUyJTgwJTkzbWF4aW1pemF0aW9uX2FsZ29yaXRobSIsImNsdXN0ZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbHVzdGVyX2FuYWx5c2lzIiwiT2xkIEZhaXRoZnVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2xkX0ZhaXRoZnVsIiwiQ2xhc3NpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGFzc2lmaWVyXyhtYXRoZW1hdGljcykiLCJbOThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEwNiIsInBhdHRlcm4gbWF0Y2hpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXR0ZXJuX21hdGNoaW5nIiwic3VwZXJ2aXNlZCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1cGVydmlzZWRfbGVhcm5pbmciLCJvYnNlcnZhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhbmRvbV92YXJpYXRlIiwiZGF0YSBzZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRhX3NldCIsIls5OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTA3IiwiZGVjaXNpb24gdHJlZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY2lzaW9uX3RyZWUiLCJbMTAwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDgiLCJLLW5lYXJlc3QgbmVpZ2hib3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LLW5lYXJlc3RfbmVpZ2hib3IiLCJLZXJuZWwgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tlcm5lbF9tZXRob2RzIiwic3VwcG9ydCB2ZWN0b3IgbWFjaGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1cHBvcnRfdmVjdG9yX21hY2hpbmUiLCJbMTAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMDkiLCJuYWl2ZSBCYXllcyBjbGFzc2lmaWVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmFpdmVfQmF5ZXNfY2xhc3NpZmllciIsIlsxMDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9taW5nb3MyMDE1MTUyLTExMCIsIlsxMDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExMSIsIk5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbmV1cmFsX25ldHdvcmsiLCJbMTA0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1OZXVyYWxfbmV0d29ya3MtMTEyIiwibmV1cm9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldXJvbnMiLCJodW1hbiBicmFpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX2JyYWluIiwiYXJ0aWZpY2lhbCBuZXVyb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9uZXVyb25zIiwid2VpZ2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VpZ2h0aW5nIiwiWzEwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTEzIiwiZmluZCBwYXR0ZXJucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdHRlcm5fcmVjb2duaXRpb24iLCJbMTA2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMTQiLCJmZWVkZm9yd2FyZCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GZWVkZm9yd2FyZF9uZXVyYWxfbmV0d29yayIsIlsxMDddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNSIsIlJlY3VycmVudCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbnRfbmV1cmFsX25ldHdvcmsiLCJMb25nIHNob3J0IHRlcm0gbWVtb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9uZ19zaG9ydF90ZXJtX21lbW9yeSIsIlsxMDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNiIsIlBlcmNlcHRyb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGVyY2VwdHJvbiIsIlsxMDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExNyIsIlsxMTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLURlZXBfbGVhcm5pbmctMTE4IiwiQ29udm9sdXRpb25hbCBuZXVyYWwgbmV0d29ya3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbmFsX25ldXJhbF9uZXR3b3JrcyIsImltYWdlIHByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9wcm9jZXNzaW5nIiwiaWRlbnRpZnkgYW4gXCJlZGdlXCIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZGdlX2RldGVjdGlvbiIsIlsxMTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTExOSIsIlsxMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRGVuZ1l1MjAxNDE5OSVFMiU4MCU5MzIwMC0xMjAiLCJjb21wdXRlciB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl92aXNpb24iLCJbMTEzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNpcmVzYW5NZWllclNjaG1pZGh1YmVyMjAxMi0xMjEiLCJbMTE0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxNzUxLTEyMiIsIltpXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMjkiLCJHUFVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BVcyIsImN1cmF0ZWQgZGF0YXNldHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX2RhdGFzZXRzX2Zvcl9tYWNoaW5lLWxlYXJuaW5nX3Jlc2VhcmNoIiwiSW1hZ2VOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZU5ldCIsIltqXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzEiLCJHZW5lcmF0aXZlIHByZS10cmFpbmVkIHRyYW5zZm9ybWVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfcHJlLXRyYWluZWRfdHJhbnNmb3JtZXIiLCJsYXJnZSBsYW5ndWFnZSBtb2RlbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXJnZV9sYW5ndWFnZV9tb2RlbCIsImNvcnB1cyBvZiB0ZXh0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ycHVzX29mX3RleHQiLCJ0b2tlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xleGljYWxfYW5hbHlzaXMiLCJyZWluZm9yY2VtZW50IGxlYXJuaW5nIGZyb20gaHVtYW4gZmVlZGJhY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nX2Zyb21faHVtYW5fZmVlZGJhY2siLCJoYWxsdWNpbmF0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGx1Y2luYXRpb25fKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlKSIsImNoYXRib3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhdGJvdHMiLCJbMTIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNtaXRoMjAyMy0xMzIiLCJbMTIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzMiLCJHZW1pbmkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW1pbmlfKGxhbmd1YWdlX21vZGVsKSIsIkdyb2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hcm9rXyhjaGF0Ym90KSIsIkNsYXVkZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXVkZV8obGFuZ3VhZ2VfbW9kZWwpIiwiQ29waWxvdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9Db3BpbG90IiwiTExhTUEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MTGFNQSIsIlsxMjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEzNCIsIk11bHRpbW9kYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aW1vZGFsX2xlYXJuaW5nIiwibW9kYWxpdGllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vZGFsaXR5XyhodW1hbiVFMiU4MCU5M2NvbXB1dGVyX2ludGVyYWN0aW9uKSIsIlsxMjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWFybW91eWV0MjAyMy0xMzUiLCJQcm9ncmFtbWluZyBsYW5ndWFnZXMgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3JhbW1pbmdfbGFuZ3VhZ2VzX2Zvcl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIkhhcmR3YXJlIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhcmR3YXJlX2Zvcl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsImdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaGljc19wcm9jZXNzaW5nX3VuaXQiLCJUZW5zb3JGbG93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVuc29yRmxvdyIsImNlbnRyYWwgcHJvY2Vzc2luZyB1bml0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJhbF9wcm9jZXNzaW5nX3VuaXQiLCJtYWNoaW5lIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9sZWFybmluZyIsIlsxMjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFS29iaWVsdXMyMDE5LTEzNiIsInByb2dyYW1taW5nIGxhbmd1YWdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX2xhbmd1YWdlIiwiWzEyN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTM3IiwiZ2VuZXJhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWwtcHVycG9zZV9wcm9ncmFtbWluZ19sYW5ndWFnZSIsIlB5dGhvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpIiwiWzEyOF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTM4IiwiaW50ZWdyYXRlZCBjaXJjdWl0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVncmF0ZWRfY2lyY3VpdCIsIk1vb3JlJ3MgbGF3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9vcmUlMjdzX2xhdyIsIkludGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWwiLCJHb3Jkb24gTW9vcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb3Jkb25fTW9vcmUiLCJbMTI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xMzkiLCJIdWFuZydzIGxhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YW5nJTI3c19sYXciLCJbMTMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNDAiLCJOdmlkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OdmlkaWEiLCJKZW5zZW4gSHVhbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KZW5zZW5fSHVhbmciLCJBcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJzZWFyY2ggZW5naW5lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9lbmdpbmVzIiwidGFyZ2V0aW5nIG9ubGluZSBhZHZlcnRpc2VtZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhcmdldGVkX2FkdmVydGlzaW5nIiwiaW50ZXJuZXQgdHJhZmZpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmV0X3RyYWZmaWMiLCJ0YXJnZXRlZCBhZHZlcnRpc2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmtldGluZ19hbmRfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBZFNlbnNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWRTZW5zZSIsIkZhY2Vib29rIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFjZWJvb2siLCJkcm9uZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbm1hbm5lZF9hZXJpYWxfdmVoaWNsZSIsIkFEQVMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZHZhbmNlZF9kcml2ZXItYXNzaXN0YW5jZV9zeXN0ZW0iLCJzZWxmLWRyaXZpbmcgY2FycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbGYtZHJpdmluZ19jYXJzIiwiYXV0b21hdGljIGxhbmd1YWdlIHRyYW5zbGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGljX2xhbmd1YWdlX3RyYW5zbGF0aW9uIiwiTWljcm9zb2Z0IFRyYW5zbGF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb3NvZnRfVHJhbnNsYXRvciIsIkdvb2dsZSBUcmFuc2xhdGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfVHJhbnNsYXRlIiwiQXBwbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9Db21wdXRlciIsIkZhY2UgSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNlX0lEIiwiTWljcm9zb2Z0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0IiwiRGVlcEZhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwRmFjZSIsIkdvb2dsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvb2dsZSIsIkZhY2VOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNlTmV0IiwiaW1hZ2UgbGFiZWxpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbWFnZV9sYWJlbGluZyIsImlQaG90byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lQaG90byIsIlRpa1RvayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rpa1RvayIsIkNoaWVmIGF1dG9tYXRpb24gb2ZmaWNlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoaWVmX2F1dG9tYXRpb25fb2ZmaWNlciIsIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIGhlYWx0aGNhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9pbl9oZWFsdGhjYXJlIiwibWVkaWNpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFsdGhfZXF1aXR5IiwibWVkaWNhbCByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfcmVzZWFyY2giLCJbMTMxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNDEiLCJIaXBwb2NyYXRpYyBPYXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlwcG9jcmF0aWNfT2F0aCIsIlsxMzJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0MiIsIlsxMzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0MyIsImJpZyBkYXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlnX2RhdGEiLCJvcmdhbm9pZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZ2Fub2lkIiwidGlzc3VlIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGlzc3VlX2VuZ2luZWVyaW5nIiwibWljcm9zY29weSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc2NvcHkiLCJbMTM0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1CYXgtMjAyMy0xNDQiLCJBbHBoYUZvbGQgMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhRm9sZF8yIiwic3RydWN0dXJlIG9mIGEgcHJvdGVpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3RlaW5fc3RydWN0dXJlIiwiWzEzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTQ1IiwiWzEzNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTQ2IiwiUGFya2luc29uJ3MgZGlzZWFzZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcmtpbnNvbiUyN3NfZGlzZWFzZSIsImFscGhhLXN5bnVjbGVpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhLXN5bnVjbGVpbiIsIlsxMzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0NyIsIlsxMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0OCIsIkdhbWUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYW1lX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiR2FtZSBwbGF5aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FtZV9BSSIsIlsxMzldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE0OSIsIkRlZXAgQmx1ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lCTV9EZWVwX0JsdWUiLCJHYXJyeSBLYXNwYXJvdiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhcnJ5X0thc3Bhcm92IiwiWzE0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTUwIiwiSmVvcGFyZHkhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVvcGFyZHkhIiwicXVpeiBzaG93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVpel9zaG93IiwiSUJNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNIiwicXVlc3Rpb24gYW5zd2VyaW5nIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F1ZXN0aW9uX2Fuc3dlcmluZ19zeXN0ZW0iLCJXYXRzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXRzb25fKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlX3NvZnR3YXJlKSIsIkJyYWQgUnV0dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJhZF9SdXR0ZXIiLCJLZW4gSmVubmluZ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LZW5fSmVubmluZ3MiLCJbMTQxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTEiLCJBbHBoYUdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFHbyIsIkxlZSBTZWRvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xlZV9TZWRvbCIsImNvbXB1dGVyIEdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfR28iLCJoYW5kaWNhcHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb19oYW5kaWNhcHMiLCJkZWZlYXRlZCBLZSBKaWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHBoYUdvX3ZlcnN1c19LZV9KaWUiLCJbMTQyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTIiLCJpbXBlcmZlY3QtaW5mb3JtYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbXBlcmZlY3RfaW5mb3JtYXRpb24iLCJwb2tlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Bva2VyIiwiUGx1cmlidXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QbHVyaWJ1c18ocG9rZXJfYm90KSIsIlsxNDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE1MyIsIkRlZXBNaW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcE1pbmQiLCJNdVplcm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdVplcm8iLCJBdGFyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F0YXJpIiwiWzE0NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU0IiwiU3RhckNyYWZ0IElJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhckNyYWZ0X0lJIiwiWzE0NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU1IiwiR3JhbiBUdXJpc21vIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3Jhbl9UdXJpc21vXyhzZXJpZXMpIiwiWzE0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTU2Iiwib3Blbi13b3JsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4td29ybGQiLCJbMTQ3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTciLCJHUFQtNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00IiwiTExhTWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MbGFtYV8obGFuZ3VhZ2VfbW9kZWwpIiwiTWlzdHJhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pc3RyYWxfQUkiLCJzdXBlcnZpc2VkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3VwZXJ2aXNlZF9sZWFybmluZyIsImZpbmUtdHVuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluZS10dW5pbmdfKGRlZXBfbGVhcm5pbmcpIiwiY2xhc3NpZmllcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGFzc2lmaWVyXyhtYXRoZW1hdGljcykiLCJbMTQ4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTgiLCJbMTQ5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNTkiLCJbMTUwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjAiLCJNb250ZSBDYXJsbyB0cmVlIHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vbnRlX0NhcmxvX3RyZWVfc2VhcmNoIiwiUXdlbi03QiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F3ZW4iLCJBSU1FIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1lcmljYW5fSW52aXRhdGlvbmFsX01hdGhlbWF0aWNzX0V4YW1pbmF0aW9uIiwiWzE1MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTYxIiwiQWxwaGFHZW9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhR2VvbWV0cnkiLCJHb29nbGUgRGVlcE1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfRGVlcE1pbmQiLCJbMTUyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjIiLCJFbGV1dGhlckFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWxldXRoZXJBSSIsIlsxNTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2MyIsIlsxNTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE2NCIsIkxlYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZWFuXyhwcm9vZl9hc3Npc3RhbnQpIiwiWzE1NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTY1IiwiVG9wb2xvZ2ljYWwgZGVlcCBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RvcG9sb2dpY2FsX2RlZXBfbGVhcm5pbmciLCJ0b3BvbG9naWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RvcG9sb2d5IiwiWzE1Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTY2IiwiV29ybGQgUGVuc2lvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JsZF9QZW5zaW9uc18lMjZfSW52ZXN0bWVudHNfRm9ydW0iLCJbMTU3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNjciLCJNaWxpdGFyeSBhcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWxpdGFyeV9hcHBsaWNhdGlvbnNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbMTU4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1DUlMtMjAxOS0xNjgiLCJjb21tYW5kIGFuZCBjb250cm9sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tbWFuZF9hbmRfY29udHJvbCIsIlsxNTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVNseXVzYXItMjAxOS0xNjkiLCJ0YXJnZXQgYWNxdWlzaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJnZXRfYWNxdWlzaXRpb24iLCJKb2ludCBGaXJlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZvcndhcmRfb2JzZXJ2ZXJzX2luX3RoZV9VLlMuX21pbGl0YXJ5IiwiWzE2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTcwIiwiWzE2MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGF2aWVzLTIwMjMtMTcxIiwiWzE2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTcyIiwiVmluY2VudCB2YW4gR29naCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZpbmNlbnRfdmFuX0dvZ2giLCJHZW5lcmF0aXZlIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsImVkaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9R2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSZhY3Rpb249ZWRpdCIsIlsxNjNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3MyIsIlsxNjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NCIsIlsxNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NSIsIlsxNjZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE3NiIsImxlYXJuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9sZWFybmluZyIsInRyYWluaW5nIGRhdGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFpbmluZ19kYXRhIiwiWzE2N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV86MC0xNzciLCJbMTY4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xNzgiLCJwcm9tcHRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvbXB0XyhuYXR1cmFsX2xhbmd1YWdlKSIsIlsxNjldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUdlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2Vfbnl0aW1lcy0xNzkiLCJbMTcwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1HZW5lcmF0aXZlX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2Jsb29tYmVyZy0xODAiLCJ0cmFuc2Zvcm1lciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RyYW5zZm9ybWVyXyhtYWNoaW5lX2xlYXJuaW5nX21vZGVsKSIsImRlZXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nIiwidGV4dC10by1pbWFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RleHQtdG8taW1hZ2UiLCJhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbWFnZSBnZW5lcmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfYXJ0IiwiU3RhYmxlIERpZmZ1c2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0YWJsZV9EaWZmdXNpb24iLCJNaWRqb3VybmV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlkam91cm5leSIsIkRBTEwtRSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RBTEwtRSIsInRleHQtdG8tdmlkZW8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXh0LXRvLXZpZGVvX21vZGVsIiwiU29yYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvcmFfKHRleHQtdG8tdmlkZW9fbW9kZWwpIiwiWzE3MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9ueXRpbWVzLWdwdDQtMTgxIiwiWzE3Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTgyIiwiWzE3M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTgzIiwiWzE3NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV86NC0xODQiLCJPcGVuQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuQUkiLCJBbnRocm9waWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbnRocm9waWMiLCJCYWlkdSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhaWR1IiwiWzE3NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtR2VuZXJhdGl2ZV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9lY29ub21pc3QxLTE4NSIsIlsxNzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE4NiIsIlsxNzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE4NyIsIlsxNzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUdlbmVyYXRpdmVfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfZWNvbm9taXN0Mi0xODgiLCJbMTc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0xODkiLCJbMTgwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1HZW5lcmF0aXZlX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX21ja2luc2V5LTE5MCIsIlsxODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5MSIsImN5YmVyY3JpbWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJlcmNyaW1lIiwiZmFrZSBuZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFrZV9uZXdzIiwiZGVlcGZha2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcGZha2VzIiwidGhlIG1hc3MgcmVwbGFjZW1lbnQgb2YgaHVtYW4gam9icyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlY2hub2xvZ2ljYWxfdW5lbXBsb3ltZW50IiwiWzE4Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkyIiwiWzE4M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTkzIiwiWzE4NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTk0IiwiZ2FtZS1wbGF5aW5nIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaWRlb19nYW1lX2NvbnNvbGUiLCJpbmR1c3RyaWFsIHJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdXN0cmlhbF9yb2JvdGljcyIsIlsxODVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NSIsIlsxODZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NiIsIlsxODddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5NyIsIlsxODhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTE5OCIsInRlbGVkaWxkb25pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWxlZGlsZG9uaWNzIiwiWzE4OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMTk5IiwiWzE5MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjAwIiwiUmVwbGlrYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlcGxpa2EiLCJbMTkxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDEiLCJkZWVwZmFrZSBwb3Jub2dyYXBoeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBmYWtlX3Bvcm5vZ3JhcGh5IiwiWzE5Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjAyIiwib25saW5lIGdlbmRlci1iYXNlZCB2aW9sZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV9nZW5kZXItYmFzZWRfdmlvbGVuY2UiLCJzZXh1YWwgZ3Jvb21pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXh1YWxfZ3Jvb21pbmciLCJbMTkzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDMiLCJbMTk0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDQiLCJbMTk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDUiLCJlbmVyZ3kgc3RvcmFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZXJneV9zdG9yYWdlIiwiZm9yZWlnbiBwb2xpY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3JlaWduX3BvbGljeSIsImRpc2FzdGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzYXN0ZXIiLCJbMTk2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDYiLCJbMTk3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDciLCJbMTk4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMDgiLCJwcmVkaWN0aXZlIGFuYWx5dGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByZWRpY3RpdmVfYW5hbHl0aWNzIiwiMjAyNCBJbmRpYW4gZWxlY3Rpb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvMjAyNF9JbmRpYW5fZ2VuZXJhbF9lbGVjdGlvbiIsIlsxOTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIwOSIsIkV0aGljcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V0aGljc19vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlsyMDBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIxMCIsIkRlbWlzIEhhc3NhYmlzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVtaXNfSGFzc2FiaXMiLCJbMjAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNpbW9uaXRlMjAxNi0yMTEiLCJbMjAyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTg3LTIxMiIsIlsyMDNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGFza293c2tpMjAyMy0yMTMiLCJJbmZvcm1hdGlvbiBwcml2YWN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fcHJpdmFjeSIsIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBjb3B5cmlnaHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hbmRfY29weXJpZ2h0IiwicHJpdmFjeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByaXZhY3kiLCJzdXJ2ZWlsbGFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXJ2ZWlsbGFuY2UiLCJjb3B5cmlnaHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3B5cmlnaHQiLCJbMjA0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUdBTzIwMjItMjE0IiwidGVtcG9yYXJ5IHdvcmtlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wb3Jhcnlfd29ya2VyIiwiWzIwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVWYWxpbnNreTIwMTktMjE1IiwibmVjZXNzYXJ5IGV2aWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZWNlc3NhcnlfZXZpbCIsInVuZXRoaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuZXRoaWNhbCIsInJpZ2h0IHRvIHByaXZhY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SaWdodF90b19wcml2YWN5IiwiWzIwNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk5MS0yMTYiLCJkYXRhIGFnZ3JlZ2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9hZ2dyZWdhdGlvbiIsImRlLWlkZW50aWZpY2F0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGUtaWRlbnRpZmljYXRpb24iLCJkaWZmZXJlbnRpYWwgcHJpdmFjeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF9wcml2YWN5IiwiWzIwN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk5MSVFMiU4MCU5Mzk5Mi0yMTciLCJDeW50aGlhIER3b3JrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3ludGhpYV9Ed29yayIsImZhaXJuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFpcm5lc3NfKG1hY2hpbmVfbGVhcm5pbmcpIiwiQnJpYW4gQ2hyaXN0aWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJpYW5fQ2hyaXN0aWFuIiwiWzIwOF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwNjMtMjE4IiwiZmFpciB1c2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWlyX3VzZSIsIlsyMDldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmluY2VudDIwMjItMjE5IiwiWzIxMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjIwIiwicm9ib3RzLnR4dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90cy50eHQiLCJbMjExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjEiLCJKb2huIEdyaXNoYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX0dyaXNoYW0iLCJKb25hdGhhbiBGcmFuemVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9uYXRoYW5fRnJhbnplbiIsIlsyMTJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUmVpc25lcjIwMjMtMjIyIiwiWzIxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVBbHRlckhhcnJpczIwMjMtMjIzIiwic3VpIGdlbmVyaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWlfZ2VuZXJpcyIsIlsyMTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNCIsIkJpZyBUZWNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlnX1RlY2giLCJBbHBoYWJldCBJbmMuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFiZXRfSW5jLiIsIkFwcGxlIEluYy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9JbmMuIiwiTWV0YSBQbGF0Zm9ybXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRhX1BsYXRmb3JtcyIsIlsyMTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNSIsIlsyMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNiIsIlsyMTddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIyNyIsImNsb3VkIGluZnJhc3RydWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xvdWRfY29tcHV0aW5nIiwiY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nIiwiZGF0YSBjZW50ZXJzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9jZW50ZXIiLCJbMjE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjgiLCJbMjE5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMjkiLCJFbnZpcm9ubWVudGFsIGltcGFjdHMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbnZpcm9ubWVudGFsX2ltcGFjdHNfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJJbnRlcm5hdGlvbmFsIEVuZXJneSBBZ2VuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlcm5hdGlvbmFsX0VuZXJneV9BZ2VuY3kiLCJbMjIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzAiLCJbMjIxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzEiLCJbMjIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzIiLCJHb2xkbWFuIFNhY2hzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29sZG1hbl9TYWNocyIsIlsyMjNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzMyIsIlsyMjRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzNCIsIlsyMjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTIzNSIsIkplbi1Ic3VuIEh1YW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVuLUhzdW5fSHVhbmciLCJbMjI2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzYiLCJDb25zdGVsbGF0aW9uIEVuZXJneSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0ZWxsYXRpb25fRW5lcmd5IiwiVGhyZWUgTWlsZSBJc2xhbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaHJlZV9NaWxlX0lzbGFuZCIsIk51Y2xlYXIgUmVndWxhdG9yeSBDb21taXNzaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVjbGVhcl9SZWd1bGF0b3J5X0NvbW1pc3Npb24iLCJJbmZsYXRpb24gUmVkdWN0aW9uIEFjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZmxhdGlvbl9SZWR1Y3Rpb25fQWN0IiwiWzIyN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjM3IiwiUGFsaXNhZGVzIE51Y2xlYXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWxpc2FkZXNfTnVjbGVhcl9HZW5lcmF0aW5nX1N0YXRpb24iLCJFeGVsb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeGVsb24iLCJbMjI4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yMzgiLCJUYWl3YW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWl3YW4iLCJUYW95dWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFveXVhbixfVGFpd2FuIiwiWzIyOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRGF0YWNlbnRlckR5bmFtaWNzLTIzOSIsInBoYXNlIG91dCBudWNsZWFyIHBvd2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVjbGVhcl9wb3dlcl9waGFzZS1vdXQiLCJTaW5nYXBvcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaW5nYXBvcmUiLCJGdWt1c2hpbWEgbnVjbGVhciBhY2NpZGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1a3VzaGltYV9udWNsZWFyX2FjY2lkZW50IiwiWzIzMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtYmxvb21iZXJnanAtMjQwIiwiRmVkZXJhbCBFbmVyZ3kgUmVndWxhdG9yeSBDb21taXNzaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVkZXJhbF9FbmVyZ3lfUmVndWxhdG9yeV9Db21taXNzaW9uIiwiVGFsZW4gRW5lcmd5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFsZW5fRW5lcmd5IiwiU3VzcXVlaGFubmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXNxdWVoYW5uYV9TdGVhbV9FbGVjdHJpY19TdGF0aW9uIiwiWzIzMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtQmxvb21iZXJnMjAyNDExMDQtMjQxIiwiV2lsbGllIEwuIFBoaWxsaXBzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lsbGllX0wuX1BoaWxsaXBzIiwiWW91VHViZSDCpyBNb2RlcmF0aW9uIGFuZCBvZmZlbnNpdmUgY29udGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvdVR1YmUjTW9kZXJhdGlvbl9hbmRfb2ZmZW5zaXZlX2NvbnRlbnQiLCJyZWNvbW1lbmRlciBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjb21tZW5kZXJfc3lzdGVtIiwibWF4aW1pemluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGhlbWF0aWNhbF9vcHRpbWl6YXRpb24iLCJtaXNpbmZvcm1hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pc2luZm9ybWF0aW9uIiwiY29uc3BpcmFjeSB0aGVvcmllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNwaXJhY3lfdGhlb3JpZXMiLCJwYXJ0aXNhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcnRpc2FuXyhwb2xpdGljcykiLCJmaWx0ZXIgYnViYmxlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpbHRlcl9idWJibGVzIiwiWzIzMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOaWNhczIwMTgtMjQyIiwiWzIzM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjQzIiwiY2l0YXRpb24gbmVlZGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkNpdGF0aW9uX25lZWRlZCIsImdlbmVyYXRpdmUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX0FJIiwiWzIzNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVXaWxsaWFtczIwMjMtMjQ0IiwiR2VvZmZyZXkgSGludG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZmZyZXlfSGludG9uIiwiWzIzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUYXlsb3JIZXJuMjAyMy0yNDUiLCJBbGdvcml0aG1pYyBiaWFzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxnb3JpdGhtaWNfYmlhcyIsIkZhaXJuZXNzIChtYWNoaW5lIGxlYXJuaW5nKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhaXJuZXNzXyhtYWNoaW5lX2xlYXJuaW5nKSIsImJpYXNlZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2JpYXMiLCJba10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjQ3IiwiWzIzN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSb3NlMjAyMy0yNDgiLCJbMjM4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNOQTIwMTktMjQ5IiwiWzIzOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVHb2ZmcmV5MjAwODE3LTI1MCIsImhhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtIiwiZmluYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NyZWRpdF9yYXRpbmciLCJyZWNydWl0bWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY3J1aXRtZW50IiwiaG91c2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B1YmxpY19ob3VzaW5nIiwicG9saWNpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb2xpY2luZyIsImRpc2NyaW1pbmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzY3JpbWluYXRpb24iLCJbMjQwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNTEiLCJHb29nbGUgUGhvdG9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX1Bob3RvcyIsIlsyNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hyaXN0aWFuMjAyMDI1LTI1MiIsIlsyNDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5OTUtMjUzIiwiWzI0M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVHcmFudEhpbGwyMDIzLTI1NCIsIkNPTVBBUyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NPTVBBU18oc29mdHdhcmUpIiwiVS5TLiBjb3VydHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VLlMuX2NvdXJ0IiwiZGVmZW5kYW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmZW5kYW50IiwicmVjaWRpdmlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY2lkaXZpc3QiLCJKdWxpYSBBbmd3aW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWxpYV9Bbmd3aW4iLCJQcm9QdWJsaWNhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvUHVibGljYSIsIlsyNDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGFyc29uQW5nd2luMjAxNi0yNTUiLCJbbF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU3IiwiWzI0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU4IiwiWzI0N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjU5IiwiWzI0OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYwIiwiWzI0OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYxIiwiW21dIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI2MyIsImRpc3RyaWJ1dGl2ZSBmYWlybmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGl2ZV9qdXN0aWNlIiwic3RlcmVvdHlwZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVyZW90eXBlIiwiYW50aS1kaXNjcmltaW5hdGlvbiBsYXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aS1kaXNjcmltaW5hdGlvbl9sYXciLCJbMjM2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TYW11ZWwtMjAyMi0yNDYiLCJDb25mZXJlbmNlIG9uIEZhaXJuZXNzLCBBY2NvdW50YWJpbGl0eSwgYW5kIFRyYW5zcGFyZW5jeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FDTV9Db25mZXJlbmNlX29uX0ZhaXJuZXNzLF9BY2NvdW50YWJpbGl0eSxfYW5kX1RyYW5zcGFyZW5jeSIsIkFzc29jaWF0aW9uIGZvciBDb21wdXRpbmcgTWFjaGluZXJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNzb2NpYXRpb25fZm9yX0NvbXB1dGluZ19NYWNoaW5lcnkiLCJkdWJpb3VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOkFjY3VyYWN5X2Rpc3B1dGUjRGlzcHV0ZWRfc3RhdGVtZW50IiwiZGlzY3VzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RhbGs6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjRHViaW91cyIsIlsyNTFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9ja3JpbGwyMDIyLTI2NCIsIkV4cGxhaW5hYmxlIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwbGFpbmFibGVfQUkiLCJBbGdvcml0aG1pYyB0cmFuc3BhcmVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGdvcml0aG1pY190cmFuc3BhcmVuY3kiLCJSaWdodCB0byBleHBsYW5hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JpZ2h0X3RvX2V4cGxhbmF0aW9uIiwiWzI1Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTYW1wbGUyMDE3LTI2NSIsImRlZXAgbmV1cmFsIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcF9uZXVyYWxfbmV0d29ya3MiLCJsaW5lYXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXIiLCJbMjUzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNjYiLCJydWxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1J1bGVyIiwiWzI1NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwMTEwLTI2NyIsIlsyNTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hyaXN0aWFuMjAyMDg4JUUyJTgwJTkzOTEtMjY4IiwiWzI1Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjY5IiwiR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYWxfRGF0YV9Qcm90ZWN0aW9uX1JlZ3VsYXRpb24iLCJbbl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjcwIiwiWzI1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwOTEtMjcxIiwiREFSUEEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EQVJQQSIsIlhBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGxhaW5hYmxlX0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiWzI1OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwODMtMjcyIiwiWzI1OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVWZXJtYTIwMjEtMjczIiwiWzI2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSb3RobWFuMjAyMC0yNzQiLCJNdWx0aXRhc2sgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aXRhc2tfbGVhcm5pbmciLCJbMjYxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjAxMDUlRTIlODAlOTMxMDgtMjc1IiwiRGVjb252b2x1dGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY29udm9sdXRpb24iLCJEZWVwRHJlYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwRHJlYW0iLCJbMjYyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjAxMDglRTIlODAlOTMxMTItMjc2IiwiZ2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lcmF0aXZlX3ByZS10cmFpbmVkX3RyYW5zZm9ybWVyIiwiZGljdGlvbmFyeSBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpY3Rpb25hcnlfbGVhcm5pbmciLCJbMjYzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yNzciLCJMZXRoYWwgYXV0b25vbW91cyB3ZWFwb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXRoYWxfYXV0b25vbW91c193ZWFwb24iLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBhcm1zIHJhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZV9hcm1zX3JhY2UiLCJiYWQgYWN0b3JzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFkX2FjdG9yIiwiYXV0aG9yaXRhcmlhbiBnb3Zlcm5tZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dGhvcml0YXJpYW4iLCJ0ZXJyb3Jpc3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVycm9yaXN0IiwiY3JpbWluYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3JpbWluYWxzIiwicm9ndWUgc3RhdGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ndWVfc3RhdGVzIiwiW29dIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI3OSIsIndlYXBvbnMgb2YgbWFzcyBkZXN0cnVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYXBvbnNfb2ZfbWFzc19kZXN0cnVjdGlvbiIsIlsyNjVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5ODclRTIlODAlOTM5OTAtMjgwIiwia2lsbCBhbiBpbm5vY2VudCBwZXJzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdXJkZXIiLCJVbml0ZWQgTmF0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXRlZF9OYXRpb25zIiwiQ29udmVudGlvbiBvbiBDZXJ0YWluIENvbnZlbnRpb25hbCBXZWFwb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udmVudGlvbl9vbl9DZXJ0YWluX0NvbnZlbnRpb25hbF9XZWFwb25zIiwiVW5pdGVkIFN0YXRlcyI6Imh0dHBzOi8vaWQubG9jLmdvdi9hdXRob3JpdGllcy9zaDg1MDA4MTgwIiwiWzI2Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk4OC0yODEiLCJbMjY3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yODIiLCJGYWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFjaWFsX3JlY29nbml0aW9uX3N5c3RlbSIsInZvaWNlIHJlY29nbml0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlYWtlcl9yZWNvZ25pdGlvbiIsImNsYXNzaWZ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xhc3NpZmllcl8obWFjaGluZV9sZWFybmluZykiLCJSZWNvbW1lbmRhdGlvbiBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjb21tZW5kYXRpb25fc3lzdGVtcyIsInByb3BhZ2FuZGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wYWdhbmRhIiwiRGVlcGZha2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcGZha2VzIiwiY2VudHJhbGl6ZWQgZGVjaXNpb24gbWFraW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vY3JhY3kiLCJtYXJrZXRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFya2V0XyhlY29ub21pY3MpIiwiZGlnaXRhbCB3YXJmYXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlnaXRhbF93YXJmYXJlIiwiYWR2YW5jZWQgc3B5d2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NweXdhcmUiLCJbMjY4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhcmFyaTIwMTgtMjgzIiwiZmFjaWFsIHJlY29nbml0aW9uIHN5c3RlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNpYWxfcmVjb2duaXRpb25fc3lzdGVtIiwibWFzcyBzdXJ2ZWlsbGFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXNzX3N1cnZlaWxsYW5jZSIsIlsyNjldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4NCIsIlsyNzBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI4NSIsIlsyNzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVXJiaW5hTGVudHpvc0ludmVybml6emlFa2luczIwMjItMjg2IiwiV29ya3BsYWNlIGltcGFjdCBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmtwbGFjZV9pbXBhY3Rfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJUZWNobm9sb2dpY2FsIHVuZW1wbG95bWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlY2hub2xvZ2ljYWxfdW5lbXBsb3ltZW50IiwiWzI3Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRS0yODciLCJbMjczXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0yODgiLCJ1bmVtcGxveW1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmVtcGxveW1lbnQiLCJwcm9kdWN0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9kdWN0aXZpdHkiLCJyZWRpc3RyaWJ1dGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVkaXN0cmlidXRpb25fb2ZfaW5jb21lX2FuZF93ZWFsdGgiLCJbMjc0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUlHTV9DaGljYWdvMjAxNy0yODkiLCJDYXJsIEJlbmVkaWt0IEZyZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXJsX0JlbmVkaWt0X0ZyZXkiLCJbcF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkxIiwiWzI3Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkyIiwiWzI3N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjkzIiwiWzI3OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjk0IiwiVGhlIEVjb25vbWlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9FY29ub21pc3QiLCJbMjc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1vcmdlbnN0ZXJuMjAxNS0yOTUiLCJwYXJhbGVnYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFyYWxlZ2FsIiwiWzI4MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjk2IiwiSm9zZXBoIFdlaXplbmJhdW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb3NlcGhfV2VpemVuYmF1bSIsIlsyODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTI5NyIsIkV4aXN0ZW50aWFsIHJpc2sgZnJvbSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4aXN0ZW50aWFsX3Jpc2tfZnJvbV9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlN0ZXBoZW4gSGF3a2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0ZXBoZW5fSGF3a2luZyIsInNwZWxsIHRoZSBlbmQgb2YgdGhlIGh1bWFuIHJhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9iYWxfY2F0YXN0cm9waGljX3Jpc2siLCJbMjgyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNlbGxhbi1Kb25lczIwMTQtMjk4IiwiW3FdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMwMCIsInNlbnRpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbnRpZW5jZSIsIk5pY2sgQm9zdHJvbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pY2tfQm9zdHJvbSIsInBhcGVyY2xpcCBmYWN0b3J5IG1hbmFnZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnN0cnVtZW50YWxfY29udmVyZ2VuY2UjUGFwZXJjbGlwX21heGltaXplciIsIlsyODRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQm9zdHJvbTIwMTQtMzAxIiwiU3R1YXJ0IFJ1c3NlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsIlsyODVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbDIwMTktMzAyIiwic3VwZXJpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZSIsImFsaWduZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9hbGlnbm1lbnQiLCJbMjg2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDMiLCJZdXZhbCBOb2FoIEhhcmFyaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1l1dmFsX05vYWhfSGFyYXJpIiwiaWRlb2xvZ2llcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lkZW9sb2dpZXMiLCJsYXciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXciLCJnb3Zlcm5tZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR292ZXJubWVudCIsIm1vbmV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9uZXkiLCJlY29ub215IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWNvbm9teSIsImxhbmd1YWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFuZ3VhZ2UiLCJbMjg3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhcmFyaTIwMjMtMzA0IiwiWzI4OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVNJUMzJUJDbGxlckJvc3Ryb20yMDE0LTMwNSIsIkJpbGwgR2F0ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWxsX0dhdGVzIiwiRWxvbiBNdXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRWxvbl9NdXNrIiwiWzI4OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzA2IiwiWW9zaHVhIEJlbmdpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lvc2h1YV9CZW5naW8iLCJTYW0gQWx0bWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtX0FsdG1hbiIsIlsyOTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMwNyIsIkFJIHRha2VvdmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfdGFrZW92ZXIiLCJbMjkxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDgiLCJbMjkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMDkiLCJ0aGUgam9pbnQgc3RhdGVtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGVtZW50X29uX0FJX3Jpc2tfb2ZfZXh0aW5jdGlvbiIsIlsyOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmFsYW5jZTIwMjMtMzEwIiwiSsO8cmdlbiBTY2htaWRodWJlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0olQzMlQkNyZ2VuX1NjaG1pZGh1YmVyIiwiWzI5NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzExIiwiWzI5NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzEyIiwiWzI5Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzEzIiwiQW5kcmV3IE5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5kcmV3X05nIiwiWzI5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzE0IiwiWWFubiBMZUN1biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1lhbm5fTGVDdW4iLCJbMjk4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMTUiLCJbMjk5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMTYiLCJbMzAwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUNocmlzdGlhbjIwMjA2NyxfNzMtMzE3IiwiTWFjaGluZSBldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2V0aGljcyIsIkZyaWVuZGx5IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJpZW5kbHlfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJBcnRpZmljaWFsIG1vcmFsIGFnZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfbW9yYWxfYWdlbnRzIiwiSHVtYW4gQ29tcGF0aWJsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX0NvbXBhdGlibGUiLCJFbGllemVyIFl1ZGtvd3NreSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsaWV6ZXJfWXVka293c2t5IiwiWzMwMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVZdWRrb3dza3kyMDA4LTMxOCIsIlszMDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQW5kZXJzb25BbmRlcnNvbjIwMTEtMzE5IiwiQUFBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FBQUkiLCJbMzAzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUFBQUkyMDE0LTMyMCIsIldlbmRlbGwgV2FsbGFjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlbmRlbGxfV2FsbGFjaCIsIlszMDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFV2FsbGFjaDIwMTAtMzIxIiwiU3R1YXJ0IEouIFJ1c3NlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsInRocmVlIHByaW5jaXBsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9Db21wYXRpYmxlI1J1c3NlbGwnc190aHJlZV9wcmluY2lwbGVzIiwiWzMwNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsMjAxOTE3My0zMjIiLCJIdWdnaW5nIEZhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWdnaW5nX0ZhY2UiLCJbMzA2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjMiLCJbMzA3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjQiLCJNZXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0YV9QbGF0Zm9ybXMiLCJbMzA4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjUiLCJMbGFtYSAyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTExhTUEiLCJbMzA5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjYiLCJbMzEwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMjciLCJmaW5lLXR1bmVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmluZS10dW5pbmdfKGRlZXBfbGVhcm5pbmcpIiwiWzMxMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzI4IiwiYmlvdGVycm9yaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvdGVycm9yaXNtIiwiWzMxMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzI5IiwiQWxhbiBUdXJpbmcgSW5zdGl0dXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxhbl9UdXJpbmdfSW5zdGl0dXRlIiwiWzMxM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzMwIiwiWzMxNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzMxIiwiQXNpbG9tYXIgQ29uZmVyZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FzaWxvbWFyX0NvbmZlcmVuY2Vfb25fQmVuZWZpY2lhbF9BSSIsIlszMTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzMiIsIlszMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzMyIsIlszMTddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTMzNCIsIlVLIEFJIFNhZmV0eSBJbnN0aXR1dGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9TYWZldHlfSW5zdGl0dXRlXyhVbml0ZWRfS2luZ2RvbSkiLCJbMzE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zMzUiLCJSZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhdGlvbl9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXRpb25fb2ZfYWxnb3JpdGhtcyIsIkFJIFNhZmV0eSBTdW1taXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9TYWZldHlfU3VtbWl0IiwiWzMxOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzM2IiwiWzMyMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVMYXdfTGlicmFyeV9vZl9Db25ncmVzc18oVS5TLikuX0dsb2JhbF9MZWdhbF9SZXNlYXJjaF9EaXJlY3RvcmF0ZTIwMTktMzM3IiwiU3RhbmZvcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFuZm9yZCIsIlszMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFVmluY2VudDIwMjMtMzM4IiwiWzMyMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTdGFuZm9yZF9Vbml2ZXJzaXR5MjAyMy0zMzkiLCJbMzIzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVVORVNDTzIwMjEtMzQwIiwiR2xvYmFsIFBhcnRuZXJzaGlwIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvYmFsX1BhcnRuZXJzaGlwX29uX0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiSGVucnkgS2lzc2luZ2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucnlfS2lzc2luZ2VyIiwiRXJpYyBTY2htaWR0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXJpY19TY2htaWR0IiwiRGFuaWVsIEh1dHRlbmxvY2hlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbF9IdXR0ZW5sb2NoZXIiLCJbMzI0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUtpc3NpbmdlcjIwMjEtMzQxIiwiWzMyNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVBbHRtYW5Ccm9ja21hblN1dHNrZXZlcjIwMjMtMzQyIiwiWzMyNl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQzIiwiQ291bmNpbCBvZiBFdXJvcGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3VuY2lsX29mX0V1cm9wZSIsIkZyYW1ld29yayBDb252ZW50aW9uIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIdW1hbiBSaWdodHMsIERlbW9jcmFjeSBhbmQgdGhlIFJ1bGUgb2YgTGF3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWV3b3JrX0NvbnZlbnRpb25fb25fQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2VfYW5kX0h1bWFuX1JpZ2h0cyxfRGVtb2NyYWN5X2FuZF90aGVfUnVsZV9vZl9MYXciLCJbMzI3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNDQiLCJJcHNvcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lwc29zIiwiUmV1dGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JldXRlcnMiLCJbMzI4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUVkd2FyZHMyMDIzLTM0NSIsIkZveCBOZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm94X05ld3MiLCJbMzI5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUthc3Blcm93aWN6MjAyMy0zNDYiLCJbMzMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUZveF9OZXdzMjAyMy0zNDciLCJCbGV0Y2hsZXkgUGFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JsZXRjaGxleV9QYXJrIiwiWzMzMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQ4IiwiWzMzMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzQ5IiwiWzMzM10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUwIiwiQUkgU2VvdWwgU3VtbWl0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfU2VvdWxfU3VtbWl0IiwiWzMzNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUxIiwiWzMzNV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzUyIiwiSGlzdG9yeSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpc3Rvcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJUaW1lbGluZSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RpbWVsaW5lX29mX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiQWxhbiBUdXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGFuX1R1cmluZyIsInRoZW9yeSBvZiBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeV9vZl9jb21wdXRhdGlvbiIsIlszMzZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE5LTM1MyIsIlszMzddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUNsYXJlbmRvbl9QcmVzcy0yMDA0LTM1NCIsImN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY3MiLCJpbmZvcm1hdGlvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl90aGVvcnkiLCJuZXVyb2Jpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2Jpb2xvZ3kiLCJbcl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzU2IiwiWzMzOV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzU3IiwiTWNDdWxsb3VjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhcnJlbl9NY0N1bGxvdWNoIiwiUGl0dHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYWx0ZXJfUGl0dHMiLCJbMTE1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMTctMTIzIiwiQ29tcHV0aW5nIE1hY2hpbmVyeSBhbmQgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nX01hY2hpbmVyeV9hbmRfSW50ZWxsaWdlbmNlIiwiWzM0MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtVHVyaW5nLTM1OCIsImEgd29ya3Nob3AiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXJ0bW91dGhfd29ya3Nob3AiLCJEYXJ0bW91dGggQ29sbGVnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhcnRtb3V0aF9Db2xsZWdlIiwiW3NdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2MCIsIlt0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNjIiLCJbdV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzY0IiwiY2hlY2tlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGVja2VycyIsImxvZ2ljYWwgdGhlb3JlbXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVvcmVtIiwiW3ZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2NSIsImdlbmVyYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIlszNDRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTmV3cXVpc3QxOTk0ODYlRTIlODAlOTM4Ni0zNjYiLCJIZXJiZXJ0IFNpbW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIlszNDVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM2NyIsIk1hcnZpbiBNaW5za3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ2aW5fTWluc2t5IiwiWzM0Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzY4IiwiW3ddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM3MCIsImNyaXRpY2lzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpZ2h0aGlsbF9yZXBvcnQiLCJTaXIgSmFtZXMgTGlnaHRoaWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lyX0phbWVzX0xpZ2h0aGlsbCIsIlszNDhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTGlnaHRoaWxsMTk3My0zNzEiLCJmdW5kIG1vcmUgcHJvZHVjdGl2ZSBwcm9qZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hbnNmaWVsZF9BbWVuZG1lbnQiLCJbMzQ5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5SQzE5OTkyMTIlRTIlODAlOTMyMTMtMzcyIiwiTWluc2t5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFydmluX01pbnNreSIsIlBhcGVydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcGVydCIsIlszNTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjEyMi0zNzMiLCJleHBlcnQgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cGVydF9zeXN0ZW0iLCJbMzUxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zNzQiLCJmaWZ0aCBnZW5lcmF0aW9uIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlmdGhfZ2VuZXJhdGlvbl9jb21wdXRlciIsImFjYWRlbWljIHJlc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWNhZGVtaWNfcmVzZWFyY2giLCJMaXNwIE1hY2hpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXNwX01hY2hpbmUiLCJzeW1ib2xzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltYm9saWNfQUkiLCJtZW50YWwgb2JqZWN0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lbnRhbF9vYmplY3RzIiwicGF0dGVybiByZWNvZ25pdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdHRlcm5fcmVjb2duaXRpb24iLCJbMzUyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjQtMzc1IiwiWzM1M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVOaWxzc29uMTk5ODctMzc2IiwiUm9kbmV5IEJyb29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvZG5leV9Ccm9va3MiLCJbeF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzgxIiwiSnVkZWEgUGVhcmwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWRlYV9QZWFybCIsIkxvZnRpIFphZGVoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9mdGlfWmFkZWgiLCJbMzU4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMjUtMzgyIiwiY29ubmVjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3Rpb25pc20iLCJbMzU5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zODMiLCJjb252b2x1dGlvbmFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnZvbHV0aW9uYWxfbmV1cmFsX25ldHdvcmtzIiwiWzM2MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTI2LTM4NCIsIm5hcnJvdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI05hcnJvd192cy5fZ2VuZXJhbF9BSSIsIm1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX29wdGltaXphdGlvbiIsIlszNjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZvcm1hbF9hbmRfbmFycm93X21ldGhvZHNfYWRvcHRlZF9pbl90aGVfMTk5MHMtMzg1IiwiQUkgZWZmZWN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfZWZmZWN0IiwiWzM2Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzg2IiwiW3ldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM4OCIsImZhc3RlciBjb21wdXRlcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb29yZSUyN3NfbGF3IiwiWzM2NF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzg5IiwiY2xvdWQgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2xvdWRfY29tcHV0aW5nIiwiWzM2NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDbGFyazIwMTViLTM5MCIsImxhcmdlIGFtb3VudHMgb2YgZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpZ19kYXRhIiwiWzM2Nl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzkxIiwiW3pdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5MiIsImFsaWdubWVudCBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUlfYWxpZ25tZW50IiwiQUdJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9nZW5lcmFsX2ludGVsbGlnZW5jZSIsIkdvIHBsYXllciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvX3BsYXllciIsIkdQVC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BULTMiLCJsYXJnZSBsYW5ndWFnZSBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhcmdlX2xhbmd1YWdlX21vZGVsIiwiWzM2N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzkzIiwiWzM2OF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzk0IiwiWzM2OV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzk1IiwiWzM3MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVEaUZlbGljaWFudG9uaW8yMDIzLTM5NiIsIlszNzFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFR29zd2FtaTIwMjMtMzk3Iiwic3RhcnR1cHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFydHVwX2NvbXBhbnkiLCJbMzcyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS0zOTgiLCJQaGlsb3NvcGh5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlszNzNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM5OSIsIlszNzRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUphcm93LTIwMjQtNDAwIiwiZXBpc3RlbW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXBpc3RlbW9sb2d5IiwiZnJlZSB3aWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV93aWxsIiwiWzM3NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDAxIiwiZXRoaWNzIG9mIEFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXRoaWNzX29mX0FJIiwiRGFydG1vdXRoIHdvcmtzaG9wIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFydG1vdXRoX3dvcmtzaG9wIiwiU3ludGhldGljIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bnRoZXRpY19pbnRlbGxpZ2VuY2UiLCJbMzc2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVR1cmluZzE5NTAxLTQwMiIsIndlIGNhbiBub3QgZGV0ZXJtaW5lIHRoZXNlIHRoaW5ncyBhYm91dCBvdGhlciBwZW9wbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ibGVtX29mX290aGVyX21pbmRzIiwiWzM3N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUdXJpbmcxOTUwVW5kZXJfJTIyVGhlX0FyZ3VtZW50X2Zyb21fQ29uc2Npb3VzbmVzcyUyMi00MDMiLCJbMzc4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MDQiLCJSdXNzZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X0ouX1J1c3NlbGwiLCJOb3J2aWciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3J2aWciLCJBZXJvbmF1dGljYWwgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZXJvbmF1dGljcyIsInBpZ2VvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaWdlb24iLCJbMzc5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxMy00MDUiLCJKb2huIE1jQ2FydGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9NY0NhcnRoeV8oY29tcHV0ZXJfc2NpZW50aXN0KSIsIlszODBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWFrZXIyMDA2LTQwNiIsIlszODFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWNDYXJ0aHkxOTk5LTQwNyIsIlszODJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFTWluc2t5MTk4Ni00MDgiLCJbMzgzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MDkiLCJbMzg0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTAiLCJidXp6d29yZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0J1enp3b3JkIiwiWzM4NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDExIiwicGFyYWRpZ20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJhZGlnbSIsIlthYV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDEzIiwic3ViLXN5bWJvbGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ViLXN5bWJvbGljIiwic29mdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnRfY29tcHV0aW5nIiwiU3ltYm9saWMgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1ib2xpY19BSSIsIkdPRkFJIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR09GQUkiLCJbMzg3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUhhdWdlbGFuZDE5ODUxMTIlRTIlODAlOTMxMTctNDE0IiwicGh5c2ljYWwgc3ltYm9sIHN5c3RlbXMgaHlwb3RoZXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoeXNpY2FsX3N5bWJvbF9zeXN0ZW1zX2h5cG90aGVzaXMiLCJbMzg4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTUiLCJNb3JhdmVjJ3MgcGFyYWRveCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vcmF2ZWMlMjdzX3BhcmFkb3giLCJbMzg5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MTYiLCJIdWJlcnQgRHJleWZ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YmVydF9EcmV5ZnVzIiwiYXJndWVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHJleWZ1cyUyN19jcml0aXF1ZV9vZl9BSSIsIlszOTBdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQxNyIsIlthYl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDE5IiwiYWxnb3JpdGhtaWMgYmlhcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2JpYXMiLCJbMzkyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUxhbmdsZXkyMDExLTQyMCIsIlszOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFS2F0ejIwMTItNDIxIiwiZXhwbGFpbmFibGUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBsYWluYWJsZV9BSSIsIm5ldXJvLXN5bWJvbGljIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cm8tc3ltYm9saWNfQUkiLCJOZWF0cyBhbmQgc2NydWZmaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVhdHNfYW5kX3NjcnVmZmllcyIsIlszOTRdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQyMiIsIlNvZnQgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdF9jb21wdXRpbmciLCJnZW5ldGljIGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5ldGljX2FsZ29yaXRobXMiLCJmdXp6eSBsb2dpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1enp5X2xvZ2ljIiwiV2VhayBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYWtfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJbMzk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVBlbm5hY2hpbkdvZXJ0emVsMjAwNy00MjMiLCJbMzk2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJvYmVydHMyMDE2LTQyNCIsInBoaWxvc29waHkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfbWluZCIsIm1pbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kIiwiY29uc2Npb3VzbmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNjaW91c25lc3MiLCJtZW50YWwgc3RhdGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoeV9vZl9taW5kIiwiWzM5N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTk4Ni00MjUiLCJhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBmaWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfaW5fZmljdGlvbiIsIkhhcmQgcHJvYmxlbSBvZiBjb25zY2lvdXNuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZF9wcm9ibGVtX29mX2NvbnNjaW91c25lc3MiLCJUaGVvcnkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeV9vZl9taW5kIiwiRGF2aWQgQ2hhbG1lcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9DaGFsbWVycyIsIlszOThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ2hhbG1lcnMxOTk1LTQyNiIsImluZm9ybWF0aW9uIHByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9wcm9jZXNzaW5nXyhwc3ljaG9sb2d5KSIsInN1YmplY3RpdmUgZXhwZXJpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N1YmplY3RpdmVfZXhwZXJpZW5jZSIsIlszOTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRGVubmV0dDE5OTEtNDI3IiwiQ29tcHV0YXRpb25hbCB0aGVvcnkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfdGhlb3J5X29mX21pbmQiLCJGdW5jdGlvbmFsaXNtIChwaGlsb3NvcGh5IG9mIG1pbmQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnVuY3Rpb25hbGlzbV8ocGhpbG9zb3BoeV9vZl9taW5kKSIsIm1pbmTigJNib2R5IHByb2JsZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kJUUyJTgwJTkzYm9keV9wcm9ibGVtIiwiSmVycnkgRm9kb3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KZXJyeV9Gb2RvciIsIkhpbGFyeSBQdXRuYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IaWxhcnlfUHV0bmFtIiwiWzQwMF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVIb3JzdDIwMDUtNDI4IiwiSm9obiBTZWFybGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX1NlYXJsZSIsInN0cm9uZyBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0cm9uZ19BSV9oeXBvdGhlc2lzIiwiW2FjXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1TZWFybGUnc19zdHJvbmdfQUktNDMyIiwiWzQwNF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDMzIiwiQUkgaXMgc2VudGllbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW50aWVudF9BSSIsIls0MDVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQzNCIsIls0MDZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLVRob21zb24tMjAyMi00MzUiLCJbNDA3XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1LYXRlbWFuLTIwMjMtNDM2IiwiU2FwaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TYXBpZW5jZSIsInNlbGYtYXdhcmVuZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1hd2FyZW5lc3MiLCJSb2JvdCByaWdodHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9yaWdodHMiLCJbNDA4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzciLCJbNDA5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzgiLCJodW1hbiByaWdodHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9yaWdodHMiLCJbNDEwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00MzkiLCJbNDExXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00NDAiLCJtb3JhbCBibGluZCBzcG90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9yYWxfYmxpbmRuZXNzIiwic2xhdmVyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NsYXZlcnkiLCJmYWN0b3J5IGZhcm1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0b3J5X2Zhcm1pbmciLCJsYXJnZS1zY2FsZSBzdWZmZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWZmZXJpbmdfcmlza3MiLCJyZXByb2dyYW0gYW5kIGltcHJvdmUgaXRzZWxmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjdXJzaXZlX3NlbGYtaW1wcm92ZW1lbnQiLCJJLiBKLiBHb29kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fSi5fR29vZCIsImludGVsbGlnZW5jZSBleHBsb3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlbGxpZ2VuY2VfZXhwbG9zaW9uIiwiVmVybm9yIFZpbmdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmVybm9yX1ZpbmdlIiwic2luZ3VsYXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2dpY2FsX3Npbmd1bGFyaXR5IiwiWzQxMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtNDQxIiwiUy1zaGFwZWQgY3VydmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TLXNoYXBlZF9jdXJ2ZSIsIls0MTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExMDA1LTQ0MiIsIlRyYW5zaHVtYW5pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2h1bWFuaXNtIiwiSGFucyBNb3JhdmVjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuc19Nb3JhdmVjIiwiS2V2aW4gV2Fyd2ljayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tldmluX1dhcndpY2siLCJSYXkgS3VyendlaWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXlfS3VyendlaWwiLCJjeWJvcmdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3lib3JnIiwiQWxkb3VzIEh1eGxleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZG91c19IdXhsZXkiLCJSb2JlcnQgRXR0aW5nZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JlcnRfRXR0aW5nZXIiLCJbNDE0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS00NDMiLCJFZHdhcmQgRnJlZGtpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Vkd2FyZF9GcmVka2luIiwiU2FtdWVsIEJ1dGxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbXVlbF9CdXRsZXJfKG5vdmVsaXN0KSIsIkRhcndpbiBhbW9uZyB0aGUgTWFjaGluZXMiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvZGFyd2luYW1vbmdtYWNoaTAwZHlzbyIsIkdlb3JnZSBEeXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlb3JnZV9EeXNvbl8oc2NpZW5jZV9oaXN0b3JpYW4pIiwiRGFyd2luIEFtb25nIHRoZSBNYWNoaW5lczogVGhlIEV2b2x1dGlvbiBvZiBHbG9iYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFyd2luX0Ftb25nX3RoZV9NYWNoaW5lcyNFdm9sdXRpb25fb2ZfR2xvYmFsX0ludGVsbGlnZW5jZSIsIls0MTVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTQ0NCIsIkRhbiBNY1F1aWxsYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5fTWNRdWlsbGFuIiwiZGVncm93dGgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWdyb3d0aCIsIls0MTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLXY5MzUtNDQ1IiwiQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gZmljdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2luX2ZpY3Rpb24iLCJLYXJlbCDEjGFwZWsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJlbF8lQzQlOENhcGVrIiwiUi5VLlIuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUi5VLlIuIiwiWzQxN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtQUlfaW5fbXl0aC00NDYiLCJzY2llbmNlIGZpY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbmNlX2ZpY3Rpb24iLCJbNDE4XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ29yZHVjazIwMDQzNDAlRTIlODAlOTM0MDAtNDQ3IiwidHJvcGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ucm9wZV8obGl0ZXJhdHVyZSkiLCJNYXJ5IFNoZWxsZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ5X1NoZWxsZXkiLCJGcmFua2Vuc3RlaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua2Vuc3RlaW4iLCJBcnRodXIgQy4gQ2xhcmtlJ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS8yMDAxOl9BX1NwYWNlX09keXNzZXlfKG5vdmVsKSIsIlN0YW5sZXkgS3VicmljaydzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvMjAwMTpfQV9TcGFjZV9PZHlzc2V5IiwiSEFMIDkwMDAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IQUxfOTAwMCIsIkRpc2NvdmVyeSBPbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXNjb3ZlcnlfT25lIiwiVGhlIFRlcm1pbmF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfVGVybWluYXRvciIsIlRoZSBNYXRyaXgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTWF0cml4IiwiVGhlIERheSB0aGUgRWFydGggU3Rvb2QgU3RpbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfRGF5X3RoZV9FYXJ0aF9TdG9vZF9TdGlsbCIsIkFsaWVucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsaWVuc18oZmlsbSkiLCJbNDE5XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUJ1dHRhenpvMjAwMS00NDgiLCJJc2FhYyBBc2ltb3YiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Jc2FhY19Bc2ltb3YiLCJUaHJlZSBMYXdzIG9mIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhyZWVfTGF3c19vZl9Sb2JvdGljcyIsIk11bHRpdmFjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGl2YWMiLCJbNDIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUFuZGVyc29uMjAwOC00NDkiLCJbNDIxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ2F1bGV5MjAwNy00NTAiLCJ0aGUgYWJpbGl0eSB0byBmZWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VudGllbmNlIiwiQS5JLiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0EuSS5fQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2UiLCJFeCBNYWNoaW5hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhfTWFjaGluYV8oZmlsbSkiLCJEbyBBbmRyb2lkcyBEcmVhbSBvZiBFbGVjdHJpYyBTaGVlcD8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb19BbmRyb2lkc19EcmVhbV9vZl9FbGVjdHJpY19TaGVlcCUzRiIsIlBoaWxpcCBLLiBEaWNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbGlwX0suX0RpY2siLCJbNDIyXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUdhbHZhbjE5OTctNDUxIiwiQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIGVsZWN0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2FuZF9lbGVjdGlvbnMiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb250ZW50IGRldGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlX2NvbnRlbnRfZGV0ZWN0aW9uIiwiQmVoYXZpb3Igc2VsZWN0aW9uIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlaGF2aW9yX3NlbGVjdGlvbl9hbGdvcml0aG0iLCJCdXNpbmVzcyBwcm9jZXNzIGF1dG9tYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CdXNpbmVzc19wcm9jZXNzX2F1dG9tYXRpb24iLCJDYXNlLWJhc2VkIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nhc2UtYmFzZWRfcmVhc29uaW5nIiwiQ29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX2ludGVsbGlnZW5jZSIsIkRpZ2l0YWwgaW1tb3J0YWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWdpdGFsX2ltbW9ydGFsaXR5IiwiRW1lcmdlbnQgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1lcmdlbnRfYWxnb3JpdGhtIiwiRmVtYWxlIGdlbmRlcmluZyBvZiBBSSB0ZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GZW1hbGVfZ2VuZGVyaW5nX29mX0FJX3RlY2hub2xvZ2llcyIsIkdsb3NzYXJ5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJJbnRlbGxpZ2VuY2UgYW1wbGlmaWNhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9hbXBsaWZpY2F0aW9uIiwiTWluZCB1cGxvYWRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5kX3VwbG9hZGluZyIsIk9yZ2Fub2lkIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZ2Fub2lkX2ludGVsbGlnZW5jZSIsIlJvYm90aWMgcHJvY2VzcyBhdXRvbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19wcm9jZXNzX2F1dG9tYXRpb24iLCJXZXR3YXJlIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2V0d2FyZV9jb21wdXRlciIsIkp1bXAgdXAgdG86IGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1LYXRlbWFuLTIwMjNfNDM2LTAiLCJiIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtS2F0ZW1hbi0yMDIzXzQzNi0xIiwiUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUnVzc2VsbE5vcnZpZzIwMjEiLCJMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTHVnZXJTdHViYmxlZmllbGQyMDA0IiwiUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9vbGVNYWNrd29ydGhHb2ViZWwxOTk4IiwiTmlsc3NvbiAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTmlsc3NvbjE5OTgiLCJeIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtRk9PVE5PVEVHYWx2YW4xOTk3XzQ1MS0wIiwiWzMwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5ld3F1aXN0MTk5NDI5Ni0zMiIsIlszMV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDcmV2aWVyMTk5MzIwNCVFMiU4MCU5MzIwOC0zMyIsIls0Ml0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVUdXJpbmcxOTUwLTQ2IiwiUmF5IFNvbG9tb25vZmYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXlfU29sb21vbm9mZiIsIls0M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTb2xvbW9ub2ZmMTk1Ni00NyIsIkFJIHdpbnRlciDCpyBNYWNoaW5lIHRyYW5zbGF0aW9uIGFuZCB0aGUgQUxQQUMgcmVwb3J0IG9mIDE5NjYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV93aW50ZXIjTWFjaGluZV90cmFuc2xhdGlvbl9hbmRfdGhlX0FMUEFDX3JlcG9ydF9vZl8xOTY2IiwiY29uZGl0aW9uYWxseSBpbmRlcGVuZGVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsbHlfaW5kZXBlbmRlbnQiLCJbOTNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFRG9taW5nb3MyMDE1Y2hwdC5fNi05OSIsImxhdGVudCB2YXJpYWJsZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRlbnRfdmFyaWFibGVzIiwiWzk1XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URURvbWluZ29zMjAxNTIxMC0xMDIiLCJXYXJyZW4gUy4gTWNDdWxsb2NoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FycmVuX1MuX01jQ3VsbG9jaCIsIldhbHRlciBQaXR0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhbHRlcl9QaXR0cyIsIlsxMTZdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjE3ODUtMTI0IiwiS2FybCBTdGVpbmJ1Y2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1N0ZWluYnVjaCIsIlJvZ2VyIERhdmlkIEpvc2VwaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1Sb2dlcl9EYXZpZF9Kb3NlcGgmYWN0aW9uPWVkaXQmcmVkbGluaz0xIiwiWzExN10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTY2htaWRodWJlcjIwMjJzZWN0Ll81LTEyNSIsIkZyYW5rIFJvc2VuYmxhdHQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua19Sb3NlbmJsYXR0IiwiT2xpdmVyIFNlbGZyaWRnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09saXZlcl9TZWxmcmlkZ2UiLCJBbGV4ZXkgSXZha2huZW5rbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhleV9JdmFraG5lbmtvIiwiVmFsZW50aW4gTGFwYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1WYWxlbnRpbl9MYXBhJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlsxMThdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU2NobWlkaHViZXIyMDIyc2VjdC5fNi0xMjYiLCJLYW9ydSBOYWthbm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9S2FvcnVfTmFrYW5vJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlsxMTldIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFU2NobWlkaHViZXIyMDIyc2VjdC5fNy0xMjciLCJTaHVuLUljaGkgQW1hcmkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaHVuLUljaGlfQW1hcmkiLCJKb2huIEpvc2VwaCBIb3BmaWVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fSm9zZXBoX0hvcGZpZWxkIiwiSGVucnkgSi4gS2VsbGV5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucnlfSi5fS2VsbGV5IiwiQXJ0aHVyIEUuIEJyeXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGh1cl9FLl9Ccnlzb24iLCJTdHVhcnQgRHJleWZ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0dWFydF9EcmV5ZnVzIiwiWXUtQ2hpIEhvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWXUtQ2hpX0hvIiwiU2VwcG8gTGlubmFpbm1hYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlcHBvX0xpbm5haW5tYWEiLCJbMTIwXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNjaG1pZGh1YmVyMjAyMnNlY3QuXzgtMTI4IiwiUGF1bCBXZXJib3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXVsX1dlcmJvcyIsIlsxMjFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTEzMCIsImJpYXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWFzXyhzdGF0aXN0aWNzKSIsIkpvbiBLbGVpbmJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb25fS2xlaW5iZXJnIiwiQ29ybmVsbCBVbml2ZXJzaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ybmVsbF9Vbml2ZXJzaXR5IiwiVW5pdmVyc2l0eSBvZiBDaGljYWdvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2l0eV9vZl9DaGljYWdvIiwiQ2FybmVnaWUgTWVsbG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FybmVnaWVfTWVsbG9uIiwiWzI0NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDaHJpc3RpYW4yMDIwNjclRTIlODAlOTM3MC0yNTYiLCJNYXggUGxhbmNrIEluc3RpdHV0ZSBmb3IgSW50ZWxsaWdlbnQgU3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01heF9QbGFuY2tfSW5zdGl0dXRlX2Zvcl9JbnRlbGxpZ2VudF9TeXN0ZW1zIiwiWzI1MF0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMjYyIiwibGFuZCBtaW5lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhbmRfbWluZXMiLCJbMjY0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTg5LTI3OCIsIlsyNzVdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQXJudHpHcmVnb3J5WmllcmFobjIwMTYzMy0yOTAiLCJyb2JvcG9jYWx5cHNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3BvY2FseXBzZSIsIlsyODNdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjExMDAxLTI5OSIsIlszMzhdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLTM1NSIsIlszNDFdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFQ3JldmllcjE5OTM0NyVFMiU4MCU5MzQ5LTM1OSIsIlszNDJdIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMDMxNy0zNjEiLCJbMzQzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDAzMTgtMzYzIiwiQXJ0aHVyIFNhbXVlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGh1cl9TYW11ZWxfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJJQk0gNzAxIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNXzcwMSIsIkRhbmllbCBCb2Jyb3ciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5pZWxfQm9icm93IiwiU1RVREVOVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NUVURFTlQiLCJOZXdlbGwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGxlbl9OZXdlbGwiLCJTaW1vbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlcmJlcnRfQS5fU2ltb24iLCJMb2dpYyBUaGVvcmlzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2ljX1RoZW9yaXN0IiwiVGVycnkgV2lub2dyYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXJyeV9XaW5vZ3JhZCIsIlNIUkRMVSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NIUkRMVSIsIlszNDddIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9ub3RlLUZPT1ROT1RFUnVzc2VsbE5vcnZpZzIwMjEyMS0zNjkiLCJFbWJvZGllZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtYm9kaWVkX21pbmQiLCJbMzU0XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU1jQ29yZHVjazIwMDQ0NTQlRTIlODAlOTM0NjItMzc3IiwiWzM1NV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVNb3JhdmVjMTk4OC0zNzgiLCJbMzU2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URUJyb29rczE5OTAtMzc5IiwiTm91dmVsbGUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3V2ZWxsZV9BSSIsIkRldmVsb3BtZW50YWwgcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXZlbG9wbWVudGFsX3JvYm90aWNzIiwiWzM1N10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtMzgwIiwiVGhlIEF0bGFudGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0F0bGFudGljIiwiWzM2M10iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVXb25nMjAyMy0zODciLCJCbG9vbWJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CbG9vbWJlcmdfTmV3cyIsIk5pbHMgTmlsc3NvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pbHNfTmlsc3Nvbl8ocmVzZWFyY2hlcikiLCJbMzg2XSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URU5pbHNzb24xOTgzMTAtNDEyIiwiWzM5MV0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVDcmV2aWVyMTk5MzEyNS00MTgiLCJbNDAxXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVNlYXJsZTE5OTktNDI5IiwiWzQwMl0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX25vdGUtRk9PVE5PVEVTZWFybGUxOTgwMS00MzAiLCJbNDAzXSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI2NpdGVfbm90ZS1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxOTgxNy00MzEiLCJjIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtVGhvbXNvbi0yMDIyXzQzNS0yIiwiQUkgc2V0IHRvIGV4Y2VlZCBodW1hbiBicmFpbiBwb3dlciI6Imh0dHA6Ly93d3cuY25uLmNvbS8yMDA2L1RFQ0gvc2NpZW5jZS8wNy8yNC9haS5ib3N0cm9tLyIsIkFyY2hpdmVkIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjAwMjIwMTczNDE5L2h0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vc2l0ZXMvaW5mby9maWxlcy9jb21taXNzaW9uLXdoaXRlLXBhcGVyLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWZlYjIwMjBfZW4ucGRmIiwiV2F5YmFjayBNYWNoaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2F5YmFja19NYWNoaW5lIiwiZG9pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9pXyhpZGVudGlmaWVyKSIsIjEwLjEwMTYvai5idXNob3IuMjAxOC4wOC4wMDQiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouYnVzaG9yLjIwMTguMDguMDA0IiwiSVNTTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTU05fKGlkZW50aWZpZXIpIiwiMDAwNy02ODEzIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDAwNy02ODEzIiwiUzJDSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TMkNJRF8oaWRlbnRpZmllcikiLCJSdXNzZWxsICYgTm9ydmlnICgyMDIxIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJ1c3NlbGxOb3J2aWcyMDIxIiwiUGVubmFjaGluICYgR29lcnR6ZWwgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlBlbm5hY2hpbkdvZXJ0emVsMjAwNyIsIk5pbHNzb24gKDE5OTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5pbHNzb24xOTk1IiwiTWNDYXJ0aHkgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ2FydGh5MjAwNyIsIkJlYWwgJiBXaW5zdG9uICgyMDA5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCZWFsV2luc3RvbjIwMDkiLCJNY0NvcmR1Y2sgKDIwMDQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNDb3JkdWNrMjAwNCIsIk5SQyAoMTk5OSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOUkMxOTk5IiwiTWNDYXJ0aHkgZXQgYWwuICgxOTU1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNY0NhcnRoeU1pbnNreVJvY2hlc3RlclNoYW5ub24xOTU1IiwiQ3JldmllciAoMTk5MyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDcmV2aWVyMTk5MyIsIk1vcmF2ZWMgKDE5ODgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTW9yYXZlYzE5ODgiLCJGaWZ0aCBHZW5lcmF0aW9uIFByb2plY3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWZ0aF9HZW5lcmF0aW9uX1Byb2plY3QiLCJBbHZleSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsdmV5IiwiTWljcm9lbGVjdHJvbmljcyBhbmQgQ29tcHV0ZXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3JvZWxlY3Ryb25pY3NfYW5kX0NvbXB1dGVyX1RlY2hub2xvZ3lfQ29ycG9yYXRpb24iLCJTdHJhdGVnaWMgQ29tcHV0aW5nIEluaXRpYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHJhdGVnaWNfQ29tcHV0aW5nX0luaXRpYXRpdmUiLCJOZXdxdWlzdCAoMTk5NCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOZXdxdWlzdDE5OTQiLCJBSSBXaW50ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9XaW50ZXIiLCJMaWdodGhpbGwgcmVwb3J0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlnaHRoaWxsX3JlcG9ydCIsIk1hbnNmaWVsZCBBbWVuZG1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYW5zZmllbGRfQW1lbmRtZW50IiwiSG93ZSAoMTk5NCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSG93ZTE5OTQiLCJBbGV4TmV0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleE5ldCIsIkdvbGRtYW4gKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvbGRtYW4yMDIyIiwiTWNLaW5zZXkgKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jS2luc2V5MjAxOCIsIlRvZXdzICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUb2V3czIwMjMiLCJjb25zdHJhaW50IHNhdGlzZmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cmFpbnRfc2F0aXNmYWN0aW9uIiwiUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZQb29sZU1hY2t3b3J0aEdvZWJlbDE5OTgiLCJMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMdWdlclN0dWJibGVmaWVsZDIwMDQiLCJOaWxzc29uICgxOTk4IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5pbHNzb24xOTk4IiwiSW50cmFjdGFiaWxpdHkgYW5kIGVmZmljaWVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRyYWN0YWJseSIsImNvbWJpbmF0b3JpYWwgZXhwbG9zaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluYXRvcmlhbF9leHBsb3Npb24iLCJLYWhuZW1hbiAoMjAxMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2FobmVtYW4yMDExIiwiRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkRyZXlmdXNEcmV5ZnVzMTk4NiIsIldhc29uICYgU2hhcGlybyAoMTk2NikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGV2Fzb25TaGFwaXJvMTk2NiIsIkthaG5lbWFuLCBTbG92aWMgJiBUdmVyc2t5ICgxOTgyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZLYWhuZW1hblNsb3ZpY1R2ZXJza3kxOTgyIiwiU21vbGlhciAmIFpoYW5nICgxOTk0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTbW9saWFyWmhhbmcxOTk0IiwiTmV1bWFubiAmIE3DtmxsZXIgKDIwMDgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ldW1hbm5NJUMzJUI2bGxlcjIwMDgiLCJLdXBlcm1hbiwgUmVpY2hsZXkgJiBCYWlsZXkgKDIwMDYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkt1cGVybWFuUmVpY2hsZXlCYWlsZXkyMDA2IiwiTWNHYXJyeSAoMjAwNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNHYXJyeTIwMDUiLCJCZXJ0aW5pLCBEZWwgQmltYm8gJiBUb3JuaWFpICgyMDA2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCZXJ0aW5pRGVsX0JpbWJvVG9ybmlhaTIwMDYiLCJTZW1hbnRpYyBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbWFudGljX25ldHdvcmsiLCJkZXNjcmlwdGlvbiBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXNjcmlwdGlvbl9sb2dpYyIsImluaGVyaXRhbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5oZXJpdGFuY2VfKG9iamVjdC1vcmllbnRlZF9wcm9ncmFtbWluZykiLCJmcmFtZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFtZV8oYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UpIiwic2NyaXB0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjcmlwdHNfKGFydGlmaWNpYWxfaW50ZWxsaWdlbmNlKSIsIlNpdHVhdGlvbiBjYWxjdWx1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpdHVhdGlvbl9jYWxjdWx1cyIsImV2ZW50IGNhbGN1bHVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZlbnRfY2FsY3VsdXMiLCJmbHVlbnQgY2FsY3VsdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GbHVlbnRfY2FsY3VsdXMiLCJmcmFtZSBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWVfcHJvYmxlbSIsIkNhdXNhbCBjYWxjdWx1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdXNhbGl0eSNDYXVzYWxfY2FsY3VsdXMiLCJtb2RhbCBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RhbF9sb2dpYyIsIkRlZmF1bHQgcmVhc29uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVmYXVsdF9yZWFzb25pbmciLCJGcmFtZSBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbWVfcHJvYmxlbSIsImRlZmF1bHQgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWZhdWx0X2xvZ2ljIiwibm9uLW1vbm90b25pYyBsb2dpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob24tbW9ub3RvbmljX2xvZ2ljIiwiY2lyY3Vtc2NyaXB0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2lyY3Vtc2NyaXB0aW9uXyhsb2dpYykiLCJjbG9zZWQgd29ybGQgYXNzdW1wdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nsb3NlZF93b3JsZF9hc3N1bXB0aW9uIiwiYWJkdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWJkdWN0aXZlX3JlYXNvbmluZyIsIkxlbmF0ICYgR3VoYSAoMTk4OSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMZW5hdEd1aGExOTg5IiwicXVhbGlmaWNhdGlvbiBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbGlmaWNhdGlvbl9wcm9ibGVtIiwiTmV3cXVpc3QgKDE5OTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ld3F1aXN0MTk5NCIsIkNyZXZpZXIgKDE5OTMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNyZXZpZXIxOTkzIiwiQXV0b21hdGVkIHBsYW5uaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nIiwiQXV0b21hdGVkIGRlY2lzaW9uIG1ha2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRlZF9kZWNpc2lvbl9tYWtpbmciLCJEZWNpc2lvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWNpc2lvbl90aGVvcnkiLCJDbGFzc2ljYWwgcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcGxhbm5pbmdfYW5kX3NjaGVkdWxpbmcjY2xhc3NpY2FsX3BsYW5uaW5nIiwiSW52ZXJzZSByZWluZm9yY2VtZW50IGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW52ZXJzZV9yZWluZm9yY2VtZW50X2xlYXJuaW5nIiwiTGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiVHVyaW5nICgxOTUwKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUdXJpbmcxOTUwIiwiU29sb21vbm9mZiAoMTk1NikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGU29sb21vbm9mZjE5NTYiLCJjbHVzdGVyIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2x1c3Rlcl9hbmFseXNpcyIsIlJlaW5mb3JjZW1lbnQgbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWluZm9yY2VtZW50X2xlYXJuaW5nIiwiVGhlIEVjb25vbWlzdCAoMjAxNikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhlX0Vjb25vbWlzdDIwMTYiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIChBSSk6IFdoYXQgSXMgQUkgYW5kIEhvdyBEb2VzIEl0IFdvcms/IHwgQnVpbHQgSW5cIiI6Imh0dHBzOi8vYnVpbHRpbi5jb20vYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJKb3JkYW4gJiBNaXRjaGVsbCAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSm9yZGFuTWl0Y2hlbGwyMDE1IiwiTkxQIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9sYW5ndWFnZV9wcm9jZXNzaW5nIiwiRGlja3NvbiAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRGlja3NvbjIwMjIiLCJDYW1icmlhICYgV2hpdGUgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNhbWJyaWFXaGl0ZTIwMTQiLCJWaW5jZW50ICgyMDE5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZWaW5jZW50MjAxOSIsIkJ1c2h3aWNrICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCdXNod2ljazIwMjMiLCJDaGFsbGEgZXQgYWwuICgyMDExKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaGFsbGFNb3JlbGFuZE11JUM1JUExaWNraUV2YW5zMjAxMSIsIk1JVCBBSUwgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1JVF9BSUwyMDE0IiwiVGhybyAoMTk5MykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhybzE5OTMiLCJFZGVsc29uICgxOTkxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZFZGVsc29uMTk5MSIsIlRhbyAmIFRhbiAoMjAwNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGFvVGFuMjAwNSIsIlNjYXNzZWxsYXRpICgyMDAyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTY2Fzc2VsbGF0aTIwMDIiLCJXYWRkZWxsICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXYWRkZWxsMjAxOCIsIlBvcmlhIGV0IGFsLiAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9yaWFDYW1icmlhQmFqcGFpSHVzc2FpbjIwMTciLCJTZWFyY2ggYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlYXJjaF9hbGdvcml0aG0iLCJVbmluZm9ybWVkIHNlYXJjaGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pbmZvcm1lZF9zZWFyY2giLCJicmVhZHRoIGZpcnN0IHNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyZWFkdGhfZmlyc3Rfc2VhcmNoIiwiZGVwdGgtZmlyc3Qgc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwdGgtZmlyc3Rfc2VhcmNoIiwiSGV1cmlzdGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGV1cmlzdGljIiwiYmVzdCBmaXJzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jlc3QtZmlyc3Rfc2VhcmNoIiwiQSoiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BKl9zZWFyY2hfYWxnb3JpdGhtIiwiUG9vbGUgJiBNYWNrd29ydGggKDIwMTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUG9vbGVNYWNrd29ydGgyMDE3IiwiTG9jYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2NhbF9zZWFyY2hfKG9wdGltaXphdGlvbikiLCJcIk9wdGltaXphdGlvbiBBbGdvcml0aG1zIGluIE5ldXJhbCBOZXR3b3Jrc1wiIjoiaHR0cHM6Ly93d3cua2RudWdnZXRzLmNvbS9vcHRpbWl6YXRpb24tYWxnb3JpdGhtcy1pbi1uZXVyYWwtbmV0d29ya3MiLCJFdm9sdXRpb25hcnkgY29tcHV0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfY29tcHV0YXRpb24iLCJNZXJrbGUgJiBNaWRkZW5kb3JmICgyMDEzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNZXJrbGVNaWRkZW5kb3JmMjAxMyIsIkxvZ2ljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNfaW5fY29tcHV0ZXJfc2NpZW5jZSIsIlByb3Bvc2l0aW9uYWwgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wb3NpdGlvbmFsX2xvZ2ljIiwiRmlyc3Qtb3JkZXIgbG9naWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXJzdC1vcmRlcl9sb2dpYyIsImVxdWFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXF1YWxpdHlfKG1hdGhlbWF0aWNzKSIsIkxvZ2ljYWwgaW5mZXJlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naWNhbF9pbmZlcmVuY2UiLCJSZXNvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzb2x1dGlvbl8obG9naWMpIiwidW5pZmljYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmlmaWNhdGlvbl8oY29tcHV0ZXJfc2NpZW5jZSkiLCJBQ00gU0lHUExBTiBOb3RpY2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUNNX1NJR1BMQU5fTm90aWNlcyIsIjEwLjExNDUvODcyNzM0LjgwNjkzOSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGODcyNzM0LjgwNjkzOSIsIlNjaWVudGlmaWMgQW1lcmljYW4gKDE5OTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaWVudGlmaWNfQW1lcmljYW4xOTk5IiwiSGlkZGVuIE1hcmtvdiBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZGRlbl9NYXJrb3ZfbW9kZWwiLCJEeW5hbWljIEJheWVzaWFuIG5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRHluYW1pY19CYXllc2lhbl9uZXR3b3JrIiwiRG9taW5nb3MgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkRvbWluZ29zMjAxNSIsIkJheWVzaWFuIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmF5ZXNpYW5fbGVhcm5pbmciLCJEb21pbmdvcyAoMjAxNSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEb21pbmdvczIwMTUiLCJCYXllc2lhbiBkZWNpc2lvbiB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXllc2lhbl9kZWNpc2lvbl90aGVvcnkiLCJDaWFyYW1lbGxhLCBBbGJlcnRvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxiZXJ0b19DaWFyYW1lbGxhIiwiSVNCTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTQk5fKGlkZW50aWZpZXIpIiwiOTc4LTgtODk0Ny04NzYwLTMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC04LTg5NDctODc2MC0zIiwiRGVjaXNpb24gdHJlZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHRlcm5hdGluZ19kZWNpc2lvbl90cmVlIiwiTm9uLXBhcmFtZXRlcmljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9ucGFyYW1ldHJpY19zdGF0aXN0aWNzIiwic3VwcG9ydCB2ZWN0b3IgbWFjaGluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBwb3J0X3ZlY3Rvcl9tYWNoaW5lcyIsIk5haXZlIEJheWVzIGNsYXNzaWZpZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYWl2ZV9CYXllc19jbGFzc2lmaWVyIiwiYXV0b21hdGljIGRpZmZlcmVudGlhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRpY19kaWZmZXJlbnRpYXRpb24iLCJVbml2ZXJzYWwgYXBwcm94aW1hdGlvbiB0aGVvcmVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2FsX2FwcHJveGltYXRpb25fdGhlb3JlbSIsIkN5YmVua28gKDE5ODgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkN5YmVua28xOTg4IiwiSG9ybmlrLCBTdGluY2hjb21iZSAmIFdoaXRlICgxOTg5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZIb3JuaWtTdGluY2hjb21iZVdoaXRlMTk4OSIsIkZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlZWRmb3J3YXJkX25ldXJhbF9uZXR3b3JrIiwiR29vZGZlbGxvdywgQmVuZ2lvICYgQ291cnZpbGxlICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kZmVsbG93QmVuZ2lvQ291cnZpbGxlMjAxNiIsIkhpbnRvbiBldCBhbC4gKDIwMTYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkhpbnRvbl9ldF9hbC4yMDE2IiwiU2NobWlkaHViZXIgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaG1pZGh1YmVyMjAxNSIsIkRlbmcgJiBZdSAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRGVuZ1l1MjAxNCIsIkNpcmVzYW4sIE1laWVyICYgU2NobWlkaHViZXIgKDIwMTIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNpcmVzYW5NZWllclNjaG1pZGh1YmVyMjAxMiIsImQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1GT09UTk9URVVORVNDTzIwMjFfMzQwLTMiLCJmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjY2l0ZV9yZWYtRk9PVE5PVEVSdXNzZWxsTm9ydmlnMjAyMTc4NV8xMjQtNSIsImciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNjaXRlX3JlZi1GT09UTk9URVJ1c3NlbGxOb3J2aWcyMDIxNzg1XzEyNC02IiwiU2NobWlkaHViZXIgKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNjaG1pZGh1YmVyMjAyMiIsIkNocmlzdGlhbiAoMjAyMCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaHJpc3RpYW4yMDIwIiwiU21pdGggKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNtaXRoMjAyMyIsIlwiRXhwbGFpbmVkOiBHZW5lcmF0aXZlIEFJXCIiOiJodHRwczovL25ld3MubWl0LmVkdS8yMDIzL2V4cGxhaW5lZC1nZW5lcmF0aXZlLWFpLTExMDkiLCJcIkFJIFdyaXRpbmcgYW5kIENvbnRlbnQgQ3JlYXRpb24gVG9vbHNcIiI6Imh0dHBzOi8vbWl0c2xvYW5lZHRlY2gubWl0LmVkdS9haS90b29scy93cml0aW5nIiwiTWFybW91eWV0ICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNYXJtb3V5ZXQyMDIzIiwiS29iaWVsdXMgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRktvYmllbHVzMjAxOSIsIlwiTW9qbyBSaXNpbmc6IFRoZSByZXN1cmdlbmNlIG9mIEFJLWZpcnN0IHByb2dyYW1taW5nIGxhbmd1YWdlc1wiIjoiaHR0cHM6Ly92ZW50dXJlYmVhdC5jb20vYWkvbW9qby1yaXNpbmctdGhlLXJlc3VyZ2VuY2Utb2YtYWktZmlyc3QtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzIiwiXCI3IEFJIFByb2dyYW1taW5nIExhbmd1YWdlcyBZb3UgTmVlZCB0byBLbm93XCIiOiJodHRwczovL2FpYnVzaW5lc3MuY29tL3ZlcnRpY2Fscy83LWFpLXByb2dyYW1taW5nLWxhbmd1YWdlcy15b3UtbmVlZC10by1rbm93IiwiXCJXaHkgSmVuc2VuIEh1YW5nIGFuZCBNYXJjIEJlbmlvZmYgc2VlICdnaWdhbnRpYycgb3Bwb3J0dW5pdHkgZm9yIGFnZW50aWMgQUlcIiI6Imh0dHBzOi8vdmVudHVyZWJlYXQuY29tL2FpL3doeS1qZW5zZW4taHVhbmctYW5kLW1hcmMtYmVuaW9mZi1zZWUtZ2lnYW50aWMtb3Bwb3J0dW5pdHktZm9yLWFnZW50aWMtYWkvIiwiXCJIdWFuZydzIExhdyBJcyB0aGUgTmV3IE1vb3JlJ3MgTGF3LCBhbmQgRXhwbGFpbnMgV2h5IE52aWRpYSBXYW50cyBBcm1cIiI6Imh0dHBzOi8vd3d3Lndzai5jb20vYXJ0aWNsZXMvaHVhbmdzLWxhdy1pcy10aGUtbmV3LW1vb3Jlcy1sYXctYW5kLWV4cGxhaW5zLXdoeS1udmlkaWEtd2FudHMtYXJtLTExNjAwNDg4MDAxIiwiMDA5OS05NjYwIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDA5OS05NjYwIiwiXCJUaGUgcG90ZW50aWFsIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBoZWFsdGhjYXJlXCIiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM2NjE2MTgxIiwiMTAuNzg2MS9mdXR1cmVob3NwLjYtMi05NCI6Imh0dHBzOi8vZG9pLm9yZy8xMC43ODYxJTJGZnV0dXJlaG9zcC42LTItOTQiLCJQTUMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QTUNfKGlkZW50aWZpZXIpIiwiUE1JRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BNSURfKGlkZW50aWZpZXIpIiwiXCJTeXN0ZW1hdGljIHJldmlldyBvZiBhcHByb2FjaGVzIHRvIGRldGVjdGlvbiBhbmQgY2xhc3NpZmljYXRpb24gb2Ygc2tpbiBjYW5jZXIgdXNpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6IERldmVsb3BtZW50IGFuZCBwcm9zcGVjdHNcIiI6Imh0dHBzOi8vbGlua2luZ2h1Yi5lbHNldmllci5jb20vcmV0cmlldmUvcGlpL1MwMDEwNDgyNTI0MDA4Mjc4IiwiMTAuMTAxNi9qLmNvbXBiaW9tZWQuMjAyNC4xMDg3NDIiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouY29tcGJpb21lZC4yMDI0LjEwODc0MiIsIlwiQ291Z2ggU291bmQgRGV0ZWN0aW9uIGFuZCBEaWFnbm9zaXMgVXNpbmcgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgVGVjaG5pcXVlczogQ2hhbGxlbmdlcyBhbmQgT3Bwb3J0dW5pdGllc1wiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DODU0NTIwMSIsIkJpYmNvZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJjb2RlXyhpZGVudGlmaWVyKSIsIjIwMjFJRUVFQS4uLjlqMjMyN0EiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAyMUlFRUVBLi4uOWoyMzI3QSIsIjEwLjExMDkvQUNDRVNTLjIwMjEuMzA5NzU1OSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA5JTJGQUNDRVNTLjIwMjEuMzA5NzU1OSIsIjIxNjktMzUzNiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzIxNjktMzUzNiIsIlwiVGhlIGZ1dHVyZSBvZiBwZXJzb25hbGl6ZWQgY2FyZGlvdmFzY3VsYXIgbWVkaWNpbmUgZGVtYW5kcyAzRCBhbmQgNEQgcHJpbnRpbmcsIHN0ZW0gY2VsbHMsIGFuZCBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzODklMkZmc2Vucy4yMDIzLjEyOTQ3MjEiLCIxMC4zMzg5L2ZzZW5zLjIwMjMuMTI5NDcyMSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4zMzg5JTJGZnNlbnMuMjAyMy4xMjk0NzIxIiwiMjY3My01MDY3IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjY3My01MDY3IiwiXCJIaWdobHkgYWNjdXJhdGUgcHJvdGVpbiBzdHJ1Y3R1cmUgcHJlZGljdGlvbiB3aXRoIEFscGhhRm9sZFwiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DODM3MTYwNSIsIjIwMjFOYXR1ci41OTYuLjU4M0oiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAyMU5hdHVyLjU5Ni4uNTgzSiIsIjEwLjEwMzgvczQxNTg2LTAyMS0wMzgxOS0yIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzglMkZzNDE1ODYtMDIxLTAzODE5LTIiLCJcIkFJIGRpc2NvdmVycyBuZXcgY2xhc3Mgb2YgYW50aWJpb3RpY3MgdG8ga2lsbCBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYVwiIjoiaHR0cHM6Ly93d3cubmV3c2NpZW50aXN0LmNvbS9hcnRpY2xlLzI0MDk3MDYtYWktZGlzY292ZXJzLW5ldy1jbGFzcy1vZi1hbnRpYmlvdGljcy10by1raWxsLWRydWctcmVzaXN0YW50LWJhY3RlcmlhLyIsIlwiQUkgc3BlZWRzIHVwIGRydWcgZGVzaWduIGZvciBQYXJraW5zb24ncyB0ZW4tZm9sZFwiIjoiaHR0cHM6Ly93d3cuY2FtLmFjLnVrL3Jlc2VhcmNoL25ld3MvYWktc3BlZWRzLXVwLWRydWctZGVzaWduLWZvci1wYXJraW5zb25zLXRlbi1mb2xkIiwiXCJEaXNjb3Zlcnkgb2YgcG90ZW50IGluaGliaXRvcnMgb2YgzrEtc3ludWNsZWluIGFnZ3JlZ2F0aW9uIHVzaW5nIHN0cnVjdHVyZS1iYXNlZCBpdGVyYXRpdmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzExMDYyOTAzIiwiMTAuMTAzOC9zNDE1ODktMDI0LTAxNTgwLXgiOiJodHRwczovL2RvaS5vcmcvMTAuMTAzOCUyRnM0MTU4OS0wMjQtMDE1ODAteCIsIlwiVGhlIFRhbGsgb2YgdGhlIFRvd24g4oCTIEl0XCIiOiJodHRwczovL3d3dy5uZXd5b3JrZXIuY29tL21hZ2F6aW5lLzE5NTIvMDgvMDIvaXQiLCIwMDI4LTc5MlgiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMDI4LTc5MlgiLCJcIlR3ZW50eSB5ZWFycyBvbiBmcm9tIERlZXAgQmx1ZSB2cyBLYXNwYXJvdjogaG93IGEgY2hlc3MgbWF0Y2ggc3RhcnRlZCB0aGUgYmlnIGRhdGEgcmV2b2x1dGlvblwiIjoiaHR0cHM6Ly90aGVjb252ZXJzYXRpb24uY29tL3R3ZW50eS15ZWFycy1vbi1mcm9tLWRlZXAtYmx1ZS12cy1rYXNwYXJvdi1ob3ctYS1jaGVzcy1tYXRjaC1zdGFydGVkLXRoZS1iaWctZGF0YS1yZXZvbHV0aW9uLTc2ODgyIiwiXCJDb21wdXRlciBXaW5zIG9uICdKZW9wYXJkeSEnOiBUcml2aWFsLCBJdCdzIE5vdFwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAxMS8wMi8xNy9zY2llbmNlLzE3amVvcGFyZHktd2F0c29uLmh0bWwiLCIwMzYyLTQzMzEiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMzYyLTQzMzEiLCJcIkFscGhhR28gcmV0aXJlcyBmcm9tIGNvbXBldGl0aXZlIEdvIGFmdGVyIGRlZmVhdGluZyB3b3JsZCBudW1iZXIgb25lIDPigJMwXCIiOiJodHRwczovL3d3dy50aGV2ZXJnZS5jb20vMjAxNy81LzI3LzE1NzA0MDg4L2FscGhhZ28ta2UtamllLWdhbWUtMy1yZXN1bHQtcmV0aXJlcy1mdXR1cmUiLCJcIlN1cGVyaHVtYW4gQUkgZm9yIG11bHRpcGxheWVyIHBva2VyXCIiOiJodHRwczovL3d3dy5zY2llbmNlLm9yZy9kb2kvMTAuMTEyNi9zY2llbmNlLmFheTI0MDAiLCIyMDE5U2NpLi4uMzY1Li44ODVCIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMTlTY2kuLi4zNjUuLjg4NUIiLCIxMC4xMTI2L3NjaWVuY2UuYWF5MjQwMCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2JTJGc2NpZW5jZS5hYXkyNDAwIiwiMDAzNi04MDc1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDAzNi04MDc1IiwiXCJNdVplcm86IE1hc3RlcmluZyBHbywgY2hlc3MsIHNob2dpIGFuZCBBdGFyaSB3aXRob3V0IHJ1bGVzXCIiOiJodHRwczovL2RlZXBtaW5kLmdvb2dsZS9kaXNjb3Zlci9ibG9nL211emVyby1tYXN0ZXJpbmctZ28tY2hlc3Mtc2hvZ2ktYW5kLWF0YXJpLXdpdGhvdXQtcnVsZXMiLCJcIkFJIGJlY29tZXMgZ3JhbmRtYXN0ZXIgaW4gJ2ZpZW5kaXNobHkgY29tcGxleCcgU3RhckNyYWZ0IElJXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDE5L29jdC8zMC9haS1iZWNvbWVzLWdyYW5kbWFzdGVyLWluLWZpZW5kaXNobHktY29tcGxleC1zdGFyY3JhZnQtaWkiLCIwMjYxLTMwNzciOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMjYxLTMwNzciLCJcIk91dHJhY2luZyBjaGFtcGlvbiBHcmFuIFR1cmlzbW8gZHJpdmVycyB3aXRoIGRlZXAgcmVpbmZvcmNlbWVudCBsZWFybmluZ1wiIjoiaHR0cHM6Ly93d3cucmVzZWFyY2hzcXVhcmUuY29tL2FydGljbGUvcnMtNzk1OTU0L2xhdGVzdC5wZGYiLCIyMDIyTmF0dXIuNjAyLi4yMjNXIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMjJOYXR1ci42MDIuLjIyM1ciLCIxMC4xMDM4L3M0MTU4Ni0wMjEtMDQzNTctNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGczQxNTg2LTAyMS0wNDM1Ny03IiwiXCJHb29nbGUgQUkgbGVhcm5zIHRvIHBsYXkgb3Blbi13b3JsZCB2aWRlbyBnYW1lcyBieSB3YXRjaGluZyB0aGVtXCIiOiJodHRwczovL3d3dy5uZXdzY2llbnRpc3QuY29tL2FydGljbGUvMjQyMjEwMS1nb29nbGUtYWktbGVhcm5zLXRvLXBsYXktb3Blbi13b3JsZC12aWRlby1nYW1lcy1ieS13YXRjaGluZy10aGVtIiwiXCJJbXByb3ZpbmcgbWF0aGVtYXRpY2FsIHJlYXNvbmluZyB3aXRoIHByb2Nlc3Mgc3VwZXJ2aXNpb25cIiI6Imh0dHBzOi8vb3BlbmFpLmNvbS9pbmRleC9pbXByb3ZpbmctbWF0aGVtYXRpY2FsLXJlYXNvbmluZy13aXRoLXByb2Nlc3Mtc3VwZXJ2aXNpb24vIiwiYXJYaXYiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Bclhpdl8oaWRlbnRpZmllcikiLCIyNDAyLjE5NDUwIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzI0MDIuMTk0NTAiLCJjcy5BSSI6Imh0dHBzOi8vYXJ4aXYub3JnL2FyY2hpdmUvY3MuQUkiLCIyMzA1LjIwMDUwdjEiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMjMwNS4yMDA1MHYxIiwiY3MuTEciOiJodHRwczovL2FyeGl2Lm9yZy9hcmNoaXZlL2NzLkxHIiwiXCJNaWNyb3NvZnQncyBuZXcgclN0YXItTWF0aCB0ZWNobmlxdWUgdXBncmFkZXMgc21hbGwgbW9kZWxzIHRvIG91dHBlcmZvcm0gT3BlbkFJJ3MgbzEtcHJldmlldyBhdCBtYXRoIHByb2JsZW1zXCIiOiJodHRwczovL3ZlbnR1cmViZWF0LmNvbS9haS9taWNyb3NvZnRzLW5ldy1yc3Rhci1tYXRoLXRlY2huaXF1ZS11cGdyYWRlcy1zbWFsbC1tb2RlbHMtdG8tb3V0cGVyZm9ybS1vcGVuYWlzLW8xLXByZXZpZXctYXQtbWF0aC1wcm9ibGVtcy8iLCJcIkFJIGFjaGlldmVzIHNpbHZlci1tZWRhbCBzdGFuZGFyZCBzb2x2aW5nIEludGVybmF0aW9uYWwgTWF0aGVtYXRpY2FsIE9seW1waWFkIHByb2JsZW1zXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDI0LzA3LzI1L3NjaWVuY2UvYWktbWF0aC1hbHBoYXByb29mLWRlZXBtaW5kLmh0bWwiLCJUaGUgTmV3IFlvcmsgVGltZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtfVGltZXMiLCJcIkxsZW1tYTogQW4gT3BlbiBMYW5ndWFnZSBNb2RlbCBGb3IgTWF0aGVtYXRpY3NcIiI6Imh0dHBzOi8vYmxvZy5lbGV1dGhlci5haS9sbGVtbWEvIiwiXCJKdWxpdXMgQUlcIiI6Imh0dHBzOi8vanVsaXVzLmFpL2hvbWUvYWktbWF0aCIsIlwiOCBCZXN0IEFJIGZvciBNYXRoIFRvb2xzIChKYW51YXJ5IDIwMjUpXCIiOiJodHRwczovL3d3dy51bml0ZS5haS9iZXN0LWFpLWZvci1tYXRoLXRvb2xzLyIsImh0dHBzOi8vdmlkZW92b2ljZS5vcmcvYWktaW4tZmluYW5jZS1pbm5vdmF0aW9uLWVudHJlcHJlbmV1cnNoaXAtdnMtb3Zlci1yZWd1bGF0aW9uLXdpdGgtdGhlLWV1cy1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1hY3Qtd29udC13b3JrLWFzLWludGVuZGVkLyI6Imh0dHBzOi8vdmlkZW92b2ljZS5vcmcvYWktaW4tZmluYW5jZS1pbm5vdmF0aW9uLWVudHJlcHJlbmV1cnNoaXAtdnMtb3Zlci1yZWd1bGF0aW9uLXdpdGgtdGhlLWV1cy1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1hY3Qtd29udC13b3JrLWFzLWludGVuZGVkLyIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBOYXRpb25hbCBTZWN1cml0eSI6Imh0dHBzOi8vZmFzLm9yZy9zZ3AvY3JzL25hdHNlYy9SNDUxNzgucGRmIiwiUEQtbm90aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6UEQtbm90aWNlIiwiMTAuMTMxNDAvUkcuMi4yLjMwMjQ3LjUwMDg3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEzMTQwJTJGUkcuMi4yLjMwMjQ3LjUwMDg3IiwiXCInTGF2ZW5kZXInOiBUaGUgQUkgbWFjaGluZSBkaXJlY3RpbmcgSXNyYWVsJ3MgYm9tYmluZyBzcHJlZSBpbiBHYXphXCIiOiJodHRwczovL3d3dy45NzJtYWcuY29tL2xhdmVuZGVyLWFpLWlzcmFlbGktYXJteS1nYXphLyIsIlwiJ1RoZSBHb3NwZWwnOiBob3cgSXNyYWVsIHVzZXMgQUkgdG8gc2VsZWN0IGJvbWJpbmcgdGFyZ2V0cyBpbiBHYXphXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vd29ybGQvMjAyMy9kZWMvMDEvdGhlLWdvc3BlbC1ob3ctaXNyYWVsLXVzZXMtYWktdG8tc2VsZWN0LWJvbWJpbmctdGFyZ2V0cyIsIlwiRHJvaG5lbiBoYWJlbiBkZW4gS3JpZWcgaW4gZGVyIFVrcmFpbmUgcmV2b2x1dGlvbmllcnQsIGRvY2ggc2llIHNpbmQgZW1wZmluZGxpY2ggYXVmIFN0w7Zyc2VuZGVyIOKAkyBkZXNoYWxiIHNvbGxlbiBzaWUgamV0enQgYXV0b25vbSBvcGVyaWVyZW5cIiI6Imh0dHBzOi8vd3d3Lm56ei5jaC9pbnRlcm5hdGlvbmFsL2RpZS11a3JhaW5lLXNldHp0LWF1Zi1kcm9obmVuLWRpZS1hdXRvbm9tLW5hdmlnaWVyZW4tdW5kLXRvZXRlbi1rb2VubmVuLWxkLjE4Mzg3MzEiLCJcIkV4ZWN1dGl2ZSBPcmRlciBOLTEyLTIzXCIiOiJodHRwczovL3d3dy5nb3YuY2EuZ292L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA5L0FJLUVPLU5vLjEyLV8tR0dOLVNpZ25lZC5wZGYiLCIyMzA3LjE1MjA4IjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDcuMTUyMDgiLCJlZXNzLklWIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYXJjaGl2ZS9lZXNzLklWIiwiXCJXaGF0IGlzIENoYXRHUFQsIERBTEwtRSwgYW5kIGdlbmVyYXRpdmUgQUk/XCIiOiJodHRwczovL3d3dy5tY2tpbnNleS5jb20vZmVhdHVyZWQtaW5zaWdodHMvbWNraW5zZXktZXhwbGFpbmVycy93aGF0LWlzLWdlbmVyYXRpdmUtYWkiLCJcIldoYXQgaXMgZ2VuZXJhdGl2ZSBBST9cIiI6Imh0dHBzOi8vd3d3LmlibS5jb20vdG9waWNzL2dlbmVyYXRpdmUtYWkiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEdsb3NzYXJ5OiBOZXVyYWwgTmV0d29ya3MgYW5kIE90aGVyIFRlcm1zIEV4cGxhaW5lZFwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vYXJ0aWNsZS9haS1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1nbG9zc2FyeS5odG1sIiwiXCJHZW5lcmF0aXZlIG1vZGVsc1wiIjoiaHR0cHM6Ly9vcGVuYWkuY29tL3Jlc2VhcmNoL2dlbmVyYXRpdmUtbW9kZWxzIiwiXCJBbnRocm9waWMgU2FpZCB0byBCZSBDbG9zaW5nIEluIG9uICQzMDAgTWlsbGlvbiBpbiBOZXcgQS5JLiBGdW5kaW5nXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzAxLzI3L3RlY2hub2xvZ3kvYW50aHJvcGljLWFpLWZ1bmRpbmcuaHRtbCIsIlwiQSBDaGVhdCBTaGVldCB0byBBSSBCdXp6d29yZHMgYW5kIFRoZWlyIE1lYW5pbmdzXCIiOiJodHRwczovL25ld3MuYmxvb21iZXJnbGF3LmNvbS90ZWNoLWFuZC10ZWxlY29tLWxhdy9hLWNoZWF0LXNoZWV0LXRvLWFpLWJ1enp3b3Jkcy1hbmQtdGhlaXItbWVhbmluZ3MtcXVpY2t0YWtlIiwiXCJPcGVuQUkgUGxhbnMgdG8gVXAgdGhlIEFudGUgaW4gVGVjaCdzIEEuSS4gUmFjZVwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAyMy8wMy8xNC90ZWNobm9sb2d5L29wZW5haS1ncHQ0LWNoYXRncHQuaHRtbCIsIjIyMDEuMDgyMzkiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMjIwMS4wODIzOSIsImNzLkNMIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYXJjaGl2ZS9jcy5DTCIsIlwiQSBDb21pbmctT3V0IFBhcnR5IGZvciBHZW5lcmF0aXZlIEEuSS4sIFNpbGljb24gVmFsbGV5J3MgTmV3IENyYXplXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIyLzEwLzIxL3RlY2hub2xvZ3kvZ2VuZXJhdGl2ZS1haS5odG1sIiwiXCJPcGVuQUkgVW52ZWlscyBBLkkuIFRoYXQgSW5zdGFudGx5IEdlbmVyYXRlcyBFeWUtUG9wcGluZyBWaWRlb3NcIiI6Imh0dHBzOi8vd3d3Lm55dGltZXMuY29tLzIwMjQvMDIvMTUvdGVjaG5vbG9neS9vcGVuYWktc29yYS12aWRlb3MuaHRtbCIsIlwiVGhlIHJhY2Ugb2YgdGhlIEFJIGxhYnMgaGVhdHMgdXBcIiI6Imh0dHBzOi8vd3d3LmVjb25vbWlzdC5jb20vYnVzaW5lc3MvMjAyMy8wMS8zMC90aGUtcmFjZS1vZi10aGUtYWktbGFicy1oZWF0cy11cCIsIlwiR29vZ2xlIENsb3VkIGJyaW5ncyBnZW5lcmF0aXZlIEFJIHRvIGRldmVsb3BlcnMsIGJ1c2luZXNzZXMsIGFuZCBnb3Zlcm5tZW50c1wiIjoiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2Jsb2cvcHJvZHVjdHMvYWktbWFjaGluZS1sZWFybmluZy9nZW5lcmF0aXZlLWFpLWZvci1idXNpbmVzc2VzLWFuZC1nb3Zlcm5tZW50cyIsIkdlbmVyYXRpdmUgQUkgYXQgV29yayI6Imh0dHBzOi8vd3d3Lm5iZXIub3JnL3BhcGVycy93MzExNjEiLCIxMC4zMzg2L3czMTE2MSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4zMzg2JTJGdzMxMTYxIiwiYXJjaGl2ZWQiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzEwMTkxODI0MDMvaHR0cDovL2ludGVsbGlnZW5jZS5vcmcvZmlsZXMvQUlQb3NOZWdGYWN0b3IucGRmIiwiXCJEb24ndCBmZWFyIGFuIEFJLWluZHVjZWQgam9icyBhcG9jYWx5cHNlIGp1c3QgeWV0XCIiOiJodHRwczovL3d3dy5lY29ub21pc3QuY29tL2J1c2luZXNzLzIwMjMvMDMvMDYvZG9udC1mZWFyLWFuLWFpLWluZHVjZWQtam9icy1hcG9jYWx5cHNlLWp1c3QteWV0IiwiXCJJbiBIb2xseXdvb2Qgd3JpdGVycycgYmF0dGxlIGFnYWluc3QgQUksIGh1bWFucyB3aW4gKGZvciBub3cpXCIiOiJodHRwczovL2FwbmV3cy5jb20vYXJ0aWNsZS9ob2xseXdvb2QtYWktc3RyaWtlLXdnYS1hcnRpZmljaWFsLWludGVsbGlnZW5jZS0zOWFiNzI1ODJjM2ExNWY3NzUxMGM5YzMwYTQ1ZmZjOCIsIlwiR2VuZXJhdGl2ZSBBSTogVW5sb2NraW5nIHRoZSBmdXR1cmUgb2YgZmFzaGlvblwiIjoiaHR0cHM6Ly93d3cubWNraW5zZXkuY29tL2luZHVzdHJpZXMvcmV0YWlsL291ci1pbnNpZ2h0cy9nZW5lcmF0aXZlLWFpLXVubG9ja2luZy10aGUtZnV0dXJlLW9mLWZhc2hpb24iLCJcIkhvdyBHZW5lcmF0aXZlIEFJIENhbiBBdWdtZW50IEh1bWFuIENyZWF0aXZpdHlcIiI6Imh0dHBzOi8vaGJyLm9yZy8yMDIzLzA3L2hvdy1nZW5lcmF0aXZlLWFpLWNhbi1hdWdtZW50LWh1bWFuLWNyZWF0aXZpdHkiLCIwMDE3LTgwMTIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8wMDE3LTgwMTIiLCJcIlRyYW5zY3JpcHQ6IFNlbmF0ZSBKdWRpY2lhcnkgU3ViY29tbWl0dGVlIEhlYXJpbmcgb24gT3ZlcnNpZ2h0IG9mIEFJXCIiOiJodHRwczovL3RlY2hwb2xpY3kucHJlc3MvdHJhbnNjcmlwdC1zZW5hdGUtanVkaWNpYXJ5LXN1YmNvbW1pdHRlZS1oZWFyaW5nLW9uLW92ZXJzaWdodC1vZi1haS8iLCJcIk1pc2luZm9ybWF0aW9uIHJlbG9hZGVkPyBGZWFycyBhYm91dCB0aGUgaW1wYWN0IG9mIGdlbmVyYXRpdmUgQUkgb24gbWlzaW5mb3JtYXRpb24gYXJlIG92ZXJibG93blwiIjoiaHR0cHM6Ly9taXNpbmZvcmV2aWV3Lmhrcy5oYXJ2YXJkLmVkdS9hcnRpY2xlL21pc2luZm9ybWF0aW9uLXJlbG9hZGVkLWZlYXJzLWFib3V0LXRoZS1pbXBhY3Qtb2YtZ2VuZXJhdGl2ZS1haS1vbi1taXNpbmZvcm1hdGlvbi1hcmUtb3ZlcmJsb3duLyIsIjEwLjM3MDE2L21yLTIwMjAtMTI3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjM3MDE2JTJGbXItMjAyMC0xMjciLCJcIk5ldyBBSSBzeXN0ZW1zIGNvbGxpZGUgd2l0aCBjb3B5cmlnaHQgbGF3XCIiOiJodHRwczovL3d3dy5iYmMuY28udWsvbmV3cy9idXNpbmVzcy02NjIzMTI2OCIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlLCBGb3VuZGF0aW9ucyBvZiBDb21wdXRhdGlvbmFsIEFnZW50cyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE3Lzk3ODEwMDkyNTgyMjciLCIxMC4xMDE3Lzk3ODEwMDkyNTgyMjciOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNyUyRjk3ODEwMDkyNTgyMjciLCI5NzgtMS0wMDkyLTU4MTktNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtMDA5Mi01ODE5LTciLCJBcnRpZmljaWFsIEludGVsbGlnZW5jZTogQSBNb2Rlcm4gQXBwcm9hY2giOiJodHRwOi8vYWltYS5jcy5iZXJrZWxleS5lZHUvIiwiOTc4LTAtMTM0Ni0xMDk5LTMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTEzNDYtMTA5OS0zIiwiXCJXaHkgYWdlbnRzIGFyZSB0aGUgbmV4dCBmcm9udGllciBvZiBnZW5lcmF0aXZlIEFJXCIiOiJodHRwczovL3d3dy5tY2tpbnNleS5jb20vY2FwYWJpbGl0aWVzL21ja2luc2V5LWRpZ2l0YWwvb3VyLWluc2lnaHRzL3doeS1hZ2VudHMtYXJlLXRoZS1uZXh0LWZyb250aWVyLW9mLWdlbmVyYXRpdmUtYWkiLCJcIlBvd2VyZWQgYnkgQUk6IEV4YW1pbmluZyBIb3cgQUkgRGVzY3JpcHRpb25zIEluZmx1ZW5jZSBQZXJjZXB0aW9ucyBvZiBGZXJ0aWxpdHkgVHJhY2tpbmcgQXBwbGljYXRpb25zXCIiOiJodHRwczovL2RsLmFjbS5vcmcvZG9pLzEwLjExNDUvMzYzMTQxNCIsIjEwLjExNDUvMzYzMTQxNCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGMzYzMTQxNCIsIlwiU21hcnQgU2V4IFRveXM6IEEgTmFycmF0aXZlIFJldmlldyBvZiBSZWNlbnQgUmVzZWFyY2ggb24gQ3VsdHVyYWwsIEhlYWx0aCBhbmQgU2FmZXR5IENvbnNpZGVyYXRpb25zXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMTkzMC0wMjQtMDAzOTItMyIsIjEwLjEwMDcvczExOTMwLTAyNC0wMDM5Mi0zIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTE5MzAtMDI0LTAwMzkyLTMiLCIxNTQ4LTM1OTIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTQ4LTM1OTIiLCJcIkxhcmdlIExhbmd1YWdlIE1vZGVscyBpbiBhbiBBcHA6IENvbmR1Y3RpbmcgYSBRdWFsaXRhdGl2ZSBTeW50aGV0aWMgRGF0YSBBbmFseXNpcyBvZiBIb3cgU25hcGNoYXQncyBcIk15IEFJXCIgUmVzcG9uZHMgdG8gUXVlc3Rpb25zIEFib3V0IFNleHVhbCBDb25zZW50LCBTZXh1YWwgUmVmdXNhbHMsIFNleHVhbCBBc3NhdWx0LCBhbmQgU2V4dGluZ1wiIjoiaHR0cHM6Ly93d3cudGFuZGZvbmxpbmUuY29tL2RvaS9mdWxsLzEwLjEwODAvMDAyMjQ0OTkuMjAyNC4yMzk2NDU3IiwiMTAuMTA4MC8wMDIyNDQ5OS4yMDI0LjIzOTY0NTciOiJodHRwczovL2RvaS5vcmcvMTAuMTA4MCUyRjAwMjI0NDk5LjIwMjQuMjM5NjQ1NyIsIjAwMjItNDQ5OSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzAwMjItNDQ5OSIsIlwiXCJSZXBsaWthIFJlbW92aW5nIEVyb3RpYyBSb2xlLVBsYXkgSXMgTGlrZSBHcmFuZCBUaGVmdCBBdXRvIFJlbW92aW5nIEd1bnMgb3IgQ2Fyc1wiOiBSZWRkaXQgRGlzY291cnNlIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIENoYXRib3RzIGFuZCBTZXh1YWwgVGVjaG5vbG9naWVzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE3NyUyRjIzNzgwMjMxMjQxMjU5NjI3IiwiMTAuMTE3Ny8yMzc4MDIzMTI0MTI1OTYyNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTc3JTJGMjM3ODAyMzEyNDEyNTk2MjciLCIyMzc4LTAyMzEiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8yMzc4LTAyMzEiLCJcIkxlZ2FsIFByb3RlY3Rpb24gb2YgUmV2ZW5nZSBhbmQgRGVlcGZha2UgUG9ybiBWaWN0aW1zIGluIHRoZSBFdXJvcGVhbiBVbmlvbjogRmluZGluZ3MgRnJvbSBhIENvbXBhcmF0aXZlIExlZ2FsIFN0dWR5XCIiOiJodHRwczovL2pvdXJuYWxzLnNhZ2VwdWIuY29tL2RvaS9hYnMvMTAuMTE3Ny8xNTI0ODM4MDIyMTE0Mzc3Mj9qb3VybmFsQ29kZT10dmFhIiwiMTAuMTE3Ny8xNTI0ODM4MDIyMTE0Mzc3MiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTc3JTJGMTUyNDgzODAyMjExNDM3NzIiLCIxNTI0LTgzODAiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTI0LTgzODAiLCJcIlJvbGUgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgaW4gdGhlIFByZXZlbnRpb24gb2YgT25saW5lIENoaWxkIFNleHVhbCBBYnVzZTogQSBTeXN0ZW1hdGljIFJldmlldyBvZiBMaXRlcmF0dXJlXCIiOiJodHRwczovL3d3dy50YW5kZm9ubGluZS5jb20vZG9pL2Z1bGwvMTAuMTA4MC8xOTM2MTYxMC4yMDI0LjIzMzE4ODUiLCIxMC4xMDgwLzE5MzYxNjEwLjIwMjQuMjMzMTg4NSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDgwJTJGMTkzNjE2MTAuMjAyNC4yMzMxODg1IiwiMTkzNi0xNjEwIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTkzNi0xNjEwIiwiXCJBIEh1bWFuLUNlbnRlcmVkIFN5c3RlbWF0aWMgTGl0ZXJhdHVyZSBSZXZpZXcgb2YgdGhlIENvbXB1dGF0aW9uYWwgQXBwcm9hY2hlcyBmb3IgT25saW5lIFNleHVhbCBSaXNrIERldGVjdGlvblwiIjoiaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzM0Nzk2MDkiLCIxMC4xMTQ1LzM0Nzk2MDkiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM0Nzk2MDkiLCIyNTczLTAxNDIiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8yNTczLTAxNDIiLCJcIlJlc2hhcGluZyBCdXNpbmVzcyBXaXRoIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3Nsb2FucmV2aWV3Lm1pdC5lZHUvcHJvamVjdHMvcmVzaGFwaW5nLWJ1c2luZXNzLXdpdGgtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJcIjgg4oCTIEFJIGZvciBsYXJnZS1zY2FsZSBldmFjdWF0aW9uIG1vZGVsaW5nOiBwcm9taXNlcyBhbmQgY2hhbGxlbmdlc1wiIjoiaHR0cHM6Ly93d3cuc2NpZW5jZWRpcmVjdC5jb20vc2NpZW5jZS9hcnRpY2xlL3BpaS9COTc4MDEyODI0MDczMTAwMDE0OSIsIjk3OC0wLTEyODItNDA3My0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xMjgyLTQwNzMtMSIsIlwiQSBGcmFtZXdvcmsgZm9yIEludGVsbGlnZW50IEZpcmUgRGV0ZWN0aW9uIGFuZCBFdmFjdWF0aW9uIFN5c3RlbVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvczEwNjk0LTAyMS0wMTE1Ny0zIiwiMTAuMTAwNy9zMTA2OTQtMDIxLTAxMTU3LTMiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMDY5NC0wMjEtMDExNTctMyIsIjE1NzItODA5OSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzE1NzItODA5OSIsIlwiTW9kZWxsaW5nIGFuZCBpbnRlcnByZXRpbmcgcHJlLWV2YWN1YXRpb24gZGVjaXNpb24tbWFraW5nIHVzaW5nIG1hY2hpbmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3LnNjaWVuY2VkaXJlY3QuY29tL3NjaWVuY2UvYXJ0aWNsZS9waWkvUzA5MjY1ODA1MTkzMTMxODQiLCIxMC4xMDE2L2ouYXV0Y29uLjIwMjAuMTAzMTQwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLmF1dGNvbi4yMDIwLjEwMzE0MCIsImhkbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hkbF8oaWRlbnRpZmllcikiLCIxMDE3OS8xNzMxNSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTAxNzklMkYxNzMxNSIsIjA5MjYtNTgwNSI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzA5MjYtNTgwNSIsIlwiSW5kaWEncyBsYXRlc3QgZWxlY3Rpb24gZW1icmFjZWQgQUkgdGVjaG5vbG9neS4gSGVyZSBhcmUgc29tZSB3YXlzIGl0IHdhcyB1c2VkIGNvbnN0cnVjdGl2ZWx5XCIiOiJodHRwczovL3d3dy5wYnMub3JnL25ld3Nob3VyL3dvcmxkL2luZGlhcy1sYXRlc3QtZWxlY3Rpb24tZW1icmFjZWQtYWktdGVjaG5vbG9neS1oZXJlLWFyZS1zb21lLXdheXMtaXQtd2FzLXVzZWQtY29uc3RydWN0aXZlbHkiLCJcIkV0aGljcyBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgUm9ib3RpY3NcIiI6Imh0dHBzOi8vcGxhdG8uc3RhbmZvcmQuZWR1L2FyY2hpdmVzL2ZhbGwyMDIzL2VudHJpZXMvZXRoaWNzLWFpLyIsIlNpbW9uaXRlICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTaW1vbml0ZTIwMTYiLCJMYXNrb3dza2kgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxhc2tvd3NraTIwMjMiLCJHQU8gKDIwMjIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdBTzIwMjIiLCJWYWxpbnNreSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmFsaW5za3kyMDE5IiwiQ2hyaXN0aWFuICgyMDIwKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaHJpc3RpYW4yMDIwIiwiVmluY2VudCAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmluY2VudDIwMjIiLCJcIkNvcHlyaWdodCBTZXJ2aWNlczogRmFpciBVc2VcIiI6Imh0dHBzOi8vZ3VpZGVzLmxpYnJhcnkuY29ybmVsbC5lZHUvY29weXJpZ2h0L2ZhaXItdXNlIiwiXCJIb3cgdG8gU3RvcCBZb3VyIERhdGEgRnJvbSBCZWluZyBVc2VkIHRvIFRyYWluIEFJXCIiOiJodHRwczovL3d3dy53aXJlZC5jb20vc3RvcnkvaG93LXRvLXN0b3AteW91ci1kYXRhLWZyb20tYmVpbmctdXNlZC10by10cmFpbi1haSIsIjEwNTktMTAyOCI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzEwNTktMTAyOCIsIlJlaXNuZXIgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJlaXNuZXIyMDIzIiwiQWx0ZXIgJiBIYXJyaXMgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFsdGVySGFycmlzMjAyMyIsIlwiR2V0dGluZyB0aGUgSW5ub3ZhdGlvbiBFY29zeXN0ZW0gUmVhZHkgZm9yIEFJLiBBbiBJUCBwb2xpY3kgdG9vbGtpdFwiIjoiaHR0cHM6Ly93d3cud2lwby5pbnQvZWRvY3MvcHViZG9jcy9lbi93aXBvLXB1Yi0yMDAzLWVuLWdldHRpbmctdGhlLWlubm92YXRpb24tZWNvc3lzdGVtLXJlYWR5LWZvci1haS5wZGYiLCJXSVBPIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV0lQTyIsIlwiQmlnIFRlY2ggaXMgc3BlbmRpbmcgbW9yZSB0aGFuIFZDIGZpcm1zIG9uIEFJIHN0YXJ0dXBzXCIiOiJodHRwczovL2Fyc3RlY2huaWNhLmNvbS9haS8yMDIzLzEyL2JpZy10ZWNoLWlzLXNwZW5kaW5nLW1vcmUtdGhhbi12Yy1maXJtcy1vbi1haS1zdGFydHVwcyIsIlwiVGhlIEZ1dHVyZSBvZiBBSSBJcyBHT01BXCIiOiJodHRwczovL3d3dy50aGVhdGxhbnRpYy5jb20vdGVjaG5vbG9neS9hcmNoaXZlLzIwMjMvMTAvYmlnLWFpLXNpbGljb24tdmFsbGV5LWRvbWluYW5jZS82NzU3NTIiLCJcIkJpZyB0ZWNoIGFuZCB0aGUgcHVyc3VpdCBvZiBBSSBkb21pbmFuY2VcIiI6Imh0dHBzOi8vd3d3LmVjb25vbWlzdC5jb20vYnVzaW5lc3MvMjAyMy8wMy8yNi9iaWctdGVjaC1hbmQtdGhlLXB1cnN1aXQtb2YtYWktZG9taW5hbmNlIiwiXCJXaGVyZSB0aGUgYmF0dGxlIHRvIGRvbWluYXRlIEFJIG1heSBiZSB3b25cIiI6Imh0dHBzOi8vd3d3LmNubi5jb20vMjAyMy8xMi8xOS90ZWNoL2Nsb3VkLWNvbXBldGl0aW9uLWFuZC1haS9pbmRleC5odG1sIiwiXCJJbiB0aGUgQWdlIG9mIEEuSS4sIFRlY2gncyBMaXR0bGUgR3V5cyBOZWVkIEJpZyBGcmllbmRzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA3LzA1L2J1c2luZXNzL2FydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyLWRhdGEtY2VudGVycy5odG1sIiwiXCJFbGVjdHJpY2l0eSAyMDI0IOKAkyBBbmFseXNpc1wiIjoiaHR0cHM6Ly93d3cuaWVhLm9yZy9yZXBvcnRzL2VsZWN0cmljaXR5LTIwMjQiLCJcIkFJIGFscmVhZHkgdXNlcyBhcyBtdWNoIGVuZXJneSBhcyBhIHNtYWxsIGNvdW50cnkuIEl0J3Mgb25seSB0aGUgYmVnaW5uaW5nXCIiOiJodHRwczovL3d3dy52b3guY29tL2NsaW1hdGUvMjAyNC8zLzI4LzI0MTExNzIxL2FpLXVzZXMtYS1sb3Qtb2YtZW5lcmd5LWV4cGVydHMtZXhwZWN0LWl0LXRvLWRvdWJsZS1pbi1qdXN0LWEtZmV3LXllYXJzIiwiXCJBSSBpcyBleGhhdXN0aW5nIHRoZSBwb3dlciBncmlkLiBUZWNoIGZpcm1zIGFyZSBzZWVraW5nIGEgbWlyYWNsZSBzb2x1dGlvblwiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL2J1c2luZXNzLzIwMjQvMDYvMjEvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtbnVjbGVhci1mdXNpb24tY2xpbWF0ZS8/dXRtX2NhbXBhaWduPXdwX3Bvc3RfbW9zdCZ1dG1fbWVkaXVtPWVtYWlsJnV0bV9zb3VyY2U9bmV3c2xldHRlciZ3cGlzcmM9bmxfbW9zdCZjYXJ0YS11cmw9aHR0cHMlM0ElMkYlMkZzMi53YXNoaW5ndG9ucG9zdC5jb20lMkZjYXItbG4tdHIlMkYzZTBkNjc4JTJGNjY3NWEyZDJjMmMwNTQ3MmRkOWVjMGY0JTJGNTk2YzA5MDA5YmJjMGYyMDg2NTAzNmU3JTJGMTIlMkY1MiUyRjY2NzVhMmQyYzJjMDU0NzJkZDllYzBmNCIsIlwiQUkgRGF0YSBDZW50ZXJzIGFuZCB0aGUgQ29taW5nIFlTIFBvd2VyIERlbWFuZCBTdXJnZVwiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjQwNzI2MDgwNDI4L2h0dHBzOi8vd3d3LmdvbGRtYW5zYWNocy5jb20vaW50ZWxsaWdlbmNlL3BhZ2VzL2dzLXJlc2VhcmNoL2dlbmVyYXRpb25hbC1ncm93dGgtYWktZGF0YS1jZW50ZXJzLWFuZC10aGUtY29taW5nLXVzLXBvd2VyLXN1cmdlL3JlcG9ydC5wZGYiLCJ0aGUgb3JpZ2luYWwiOiJodHRwOi8vd3d3LXJvaGFuLnNkc3UuZWR1L2ZhY3VsdHkvdmluZ2UvbWlzYy9zaW5ndWxhcml0eS5odG1sIiwiXCJFbmVyZ3ktR3V6emxpbmcgQUkgSXMgQWxzbyB0aGUgRnV0dXJlIG9mIEVuZXJneSBTYXZpbmdzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2J1c2luZXNzL2VuZXJneS1vaWwvYWktZGF0YS1jZW50ZXJzLWVuZXJneS1zYXZpbmdzLWQ2MDIyOTZlIiwiXCJUZWNoIEluZHVzdHJ5IFdhbnRzIHRvIExvY2sgVXAgTnVjbGVhciBQb3dlciBmb3IgQUlcIiI6Imh0dHBzOi8vd3d3Lndzai5jb20vYnVzaW5lc3MvZW5lcmd5LW9pbC90ZWNoLWluZHVzdHJ5LXdhbnRzLXRvLWxvY2stdXAtbnVjbGVhci1wb3dlci1mb3ItYWktNmNiNzUzMTY/bW9kPWRqZW0xMHBvaW50IiwiXCJOdmlkaWEncyBIdWFuZyBTYXlzIE51Y2xlYXIgUG93ZXIgYW4gT3B0aW9uIHRvIEZlZWQgRGF0YSBDZW50ZXJzXCIiOiJodHRwczovL3d3dy5ibG9vbWJlcmcuY29tL25ld3MvYXJ0aWNsZXMvMjAyNC0wOS0yNy9udmlkaWEtcy1odWFuZy1zYXlzLW51Y2xlYXItcG93ZXItYW4tb3B0aW9uLXRvLWZlZWQtZGF0YS1jZW50ZXJzIiwiXCJNaWNyb3NvZnQgZGVhbCB3b3VsZCByZW9wZW4gVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwbGFudCB0byBwb3dlciBBSVwiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL2J1c2luZXNzLzIwMjQvMDkvMjAvbWljcm9zb2Z0LXRocmVlLW1pbGUtaXNsYW5kLW51Y2xlYXItY29uc3RlbGxhdGlvbiIsIlwiVGhyZWUgTWlsZSBJc2xhbmQncyBOdWNsZWFyIFBsYW50IHRvIFJlb3BlbiwgSGVscCBQb3dlciBNaWNyb3NvZnQncyBBSSBDZW50ZXJzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2J1c2luZXNzL2VuZXJneS1vaWwvdGhyZWUtbWlsZS1pc2xhbmRzLW51Y2xlYXItcGxhbnQtdG8tcmVvcGVuLWhlbHAtcG93ZXItbWljcm9zb2Z0cy1haS1jZW50ZXJzLWFlYmZiM2M4P21vZD1TZWFyY2hyZXN1bHRzX3BvczEmcGFnZT0xIiwiXCJUYWl3YW4gdG8gc3RvcCBsYXJnZSBkYXRhIGNlbnRlcnMgaW4gdGhlIE5vcnRoLCBjaXRlcyBpbnN1ZmZpY2llbnQgcG93ZXJcIiI6Imh0dHBzOi8vd3d3LmRhdGFjZW50ZXJkeW5hbWljcy5jb20vZW4vbmV3cy90YWl3YW4tdG8tc3RvcC1sYXJnZS1kYXRhLWNlbnRlcnMtaW4tdGhlLW5vcnRoLWNpdGVzLWluc3VmZmljaWVudC1wb3dlci8iLCJcIuOCqOODjOODk+ODh+OCo+OCouWHuuizh+OBruaXpeacrOS8gealreOAgeWOn+eZuui/keOBj+OBp++8oe+8qeODh+ODvOOCv+OCu+ODs+OCv+ODvOaWsOioreaknOiojlwiIjoiaHR0cHM6Ly93d3cuYmxvb21iZXJnLmNvLmpwL25ld3MvYXJ0aWNsZXMvMjAyNC0xMC0xOC9TTEhHS0tUMEFGQjQwMCIsIlwiTnVjbGVhci1IdW5ncnkgQUkgQ2FtcHVzZXMgTmVlZCBOZXcgUGxhbiB0byBGaW5kIFBvd2VyIEZhc3RcIiI6Imh0dHBzOi8vd3d3LmJsb29tYmVyZy5jb20vbmV3cy9hcnRpY2xlcy8yMDI0LTExLTA0L251Y2xlYXItaHVuZ3J5LWFpLWNhbXB1c2VzLW5lZWQtbmV3LXN0cmF0ZWd5LXRvLWZpbmQtcG93ZXItZmFzdCIsIk5pY2FzICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOaWNhczIwMTgiLCJcIlRydXN0IGFuZCBEaXN0cnVzdCBpbiBBbWVyaWNhXCIiOiJodHRwczovL3d3dy5wZXdyZXNlYXJjaC5vcmcvcG9saXRpY3MvMjAxOS8wNy8yMi90cnVzdC1hbmQtZGlzdHJ1c3QtaW4tYW1lcmljYSIsIldpbGxpYW1zICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXaWxsaWFtczIwMjMiLCJUYXlsb3IgJiBIZXJuICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZUYXlsb3JIZXJuMjAyMyIsIlwiV2h5IGl0J3Mgc28gZGFtbiBoYXJkIHRvIG1ha2UgQUkgZmFpciBhbmQgdW5iaWFzZWRcIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMjI5MTY2MDIvYWktYmlhcy1mYWlybmVzcy10cmFkZW9mZnMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJSb3NlICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSb3NlMjAyMyIsIkNOQSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQ05BMjAxOSIsIkdvZmZyZXkgKDIwMDgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvZmZyZXkyMDA4IiwiQmVyZGFobCBldCBhbC4gKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJlcmRhaGxCYWtlck1hbm5Pc29iYTIwMjMiLCJHb2ZmcmV5ICgyMDA4IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkdvZmZyZXkyMDA4IiwiR3JhbnQgJiBIaWxsICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHcmFudEhpbGwyMDIzIiwiTGFyc29uICYgQW5nd2luICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMYXJzb25Bbmd3aW4yMDE2IiwiTGlwYXJ0aXRvICgyMDExIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxpcGFydGl0bzIwMTEiLCJHb29kbWFuICYgRmxheG1hbiAoMjAxNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kbWFuRmxheG1hbjIwMTciLCJEb2NrcmlsbCAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRG9ja3JpbGwyMDIyIiwiU2FtcGxlICgyMDE3KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTYW1wbGUyMDE3IiwiXCJCbGFjayBCb3ggQUlcIiI6Imh0dHBzOi8vd3d3LnRlY2hvcGVkaWEuY29tL2RlZmluaXRpb24vMzQ5NDAvYmxhY2stYm94LWFpIiwiVmVybWEgKDIwMjEpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlZlcm1hMjAyMSIsIlJvdGhtYW4gKDIwMjApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJvdGhtYW4yMDIwIiwiXCJOZXcgQW50aHJvcGljIFJlc2VhcmNoIFNoZWRzIExpZ2h0IG9uIEFJJ3MgJ0JsYWNrIEJveCdcIiI6Imh0dHBzOi8vZ2l6bW9kby5jb20vbmV3LWFudGhyb3BpYy1yZXNlYXJjaC1zaGVkcy1saWdodC1vbi1haXMtYmxhY2stYm94LTE4NTE0OTEzMzMiLCJSb2JpdHpza2kgKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJvYml0enNraTIwMTgiLCJTYWluYXRvICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTYWluYXRvMjAxNSIsIkhhcmFyaSAoMjAxOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGFyYXJpMjAxOCIsIlwiSG93IENoaW5hIFVzZXMgSGlnaC1UZWNoIFN1cnZlaWxsYW5jZSB0byBTdWJkdWUgTWlub3JpdGllc1wiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAxOS8wNS8yMi93b3JsZC9hc2lhL2NoaW5hLXN1cnZlaWxsYW5jZS14aW5qaWFuZy5odG1sIiwiXCJTZWN1cml0eSBsYXBzZSBleHBvc2VkIGEgQ2hpbmVzZSBzbWFydCBjaXR5IHN1cnZlaWxsYW5jZSBzeXN0ZW1cIiI6Imh0dHBzOi8vdGVjaGNydW5jaC5jb20vMjAxOS8wNS8wMy9jaGluYS1zbWFydC1jaXR5LWV4cG9zZWQiLCJVcmJpbmEgZXQgYWwuICgyMDIyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZVcmJpbmFMZW50em9zSW52ZXJuaXp6aUVraW5zMjAyMiIsIjUxKDMpIEluZHVzdHJpYWwgTGF3IEpvdXJuYWwgNTEx4oCTNTU5IjoiaHR0cHM6Ly9hY2FkZW1pYy5vdXAuY29tL2lsai9hcnRpY2xlLzUxLzMvNTExLzYzMjEwMDgiLCJGb3JkICYgQ29sdmluICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZGb3JkQ29sdmluMjAxNSIsIk1jR2F1Z2hleSAoMjAyMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWNHYXVnaGV5MjAyMiIsIklHTSBDaGljYWdvICgyMDE3KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZJR01fQ2hpY2FnbzIwMTciLCJBcm50eiwgR3JlZ29yeSAmIFppZXJhaG4gKDIwMTYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFybnR6R3JlZ29yeVppZXJhaG4yMDE2IiwiTG9ociAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTG9ocjIwMTciLCJGcmV5ICYgT3Nib3JuZSAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRnJleU9zYm9ybmUyMDE3IiwiQXJudHosIEdyZWdvcnkgJiBaaWVyYWhuICgyMDE2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFybnR6R3JlZ29yeVppZXJhaG4yMDE2IiwiXCJBSSBpcyBhbHJlYWR5IHRha2luZyB2aWRlbyBnYW1lIGlsbHVzdHJhdG9ycycgam9icyBpbiBDaGluYVwiIjoiaHR0cHM6Ly9yZXN0b2Z3b3JsZC5vcmcvMjAyMy9haS1pbWFnZS1jaGluYS12aWRlby1nYW1lLWxheW9mZnMiLCJcIkNoaW5hJ3MgZ2FtZSBhcnQgaW5kdXN0cnkgcmVwb3J0ZWRseSBkZWNpbWF0ZWQgYnkgZ3Jvd2luZyBBSSB1c2VcIiI6Imh0dHBzOi8vd3d3LmdhbWVkZXZlbG9wZXIuY29tL2FydC9jaGluYS1zLWdhbWUtYXJ0LWluZHVzdHJ5LXJlcG9ydGVkbHktZGVjaW1hdGVkLWFpLWFydC11c2UiLCJNb3JnZW5zdGVybiAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTW9yZ2Vuc3Rlcm4yMDE1IiwiTWFoZGF3aSAoMjAxNykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWFoZGF3aTIwMTciLCJUaG9tcHNvbiAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVGhvbXBzb24yMDE0IiwiVGhlIEd1YXJkaWFuIFdlZWtseSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9HdWFyZGlhbl9XZWVrbHkiLCJDZWxsYW4tSm9uZXMgKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNlbGxhbi1Kb25lczIwMTQiLCJSdXNzZWxsICYgTm9ydmlnIDIwMjEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUnVzc2VsbE5vcnZpZzIwMjEiLCJCb3N0cm9tICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCb3N0cm9tMjAxNCIsIlJ1c3NlbGwgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlJ1c3NlbGwyMDE5IiwiTcO8bGxlciAmIEJvc3Ryb20gKDIwMTQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk0lQzMlQkNsbGVyQm9zdHJvbTIwMTQiLCJCb3N0cm9tICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCb3N0cm9tMjAxNSIsIkhhcmFyaSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGFyYXJpMjAyMyIsIlJhd2xpbnNvbiAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGUmF3bGluc29uMjAxNSIsIkhvbGxleSAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSG9sbGV5MjAxNSIsIkdpYmJzICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHaWJiczIwMTQiLCJcIlwiR29kZmF0aGVyIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdGFsa3MgaW1wYWN0IGFuZCBwb3RlbnRpYWwgb2YgbmV3IEFJXCIiOiJodHRwczovL3d3dy5jYnNuZXdzLmNvbS92aWRlby9nb2RmYXRoZXItb2YtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtdGFsa3MtaW1wYWN0LWFuZC1wb3RlbnRpYWwtb2YtbmV3LWFpIiwiXCJDYW5hZGlhbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBsZWFkZXIgR2VvZmZyZXkgSGludG9uIHBpbGVzIG9uIGZlYXJzIG9mIGNvbXB1dGVyIHRha2VvdmVyXCIiOiJodHRwczovL3d3dy5jYmMuY2EvbmV3cy9idXNpbmVzcy9haS1kb29tLWNvbHVtbi1kb24tcGl0dGlzLTEuNjgyOTMwMiIsIlwiJzUw4oCTNTAgY2hhbmNlJyB0aGF0IEFJIG91dHNtYXJ0cyBodW1hbml0eSwgR2VvZmZyZXkgSGludG9uIHNheXNcIiI6Imh0dHBzOi8vd3d3LmJubmJsb29tYmVyZy5jYS81MC01MC1jaGFuY2UtdGhhdC1haS1vdXRzbWFydHMtaHVtYW5pdHktZ2VvZmZyZXktaGludG9uLXNheXMtMS4yMDg1Mzk0IiwiVmFsYW5jZSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmFsYW5jZTIwMjMiLCJcIlJpc2Ugb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgaW5ldml0YWJsZSBidXQgc2hvdWxkIG5vdCBiZSBmZWFyZWQsICdmYXRoZXIgb2YgQUknIHNheXNcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS90ZWNobm9sb2d5LzIwMjMvbWF5LzA3L3Jpc2Utb2YtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtaXMtaW5ldml0YWJsZS1idXQtc2hvdWxkLW5vdC1iZS1mZWFyZWQtZmF0aGVyLW9mLWFpLXNheXMiLCJcIidGYXRoZXIgb2YgQUknIHNheXMgdGVjaCBmZWFycyBtaXNwbGFjZWQ6ICdZb3UgY2Fubm90IHN0b3AgaXQnXCIiOiJodHRwczovL3d3dy5mb3huZXdzLmNvbS90ZWNoL2ZhdGhlci1haS1qdXJnZW4tc2NobWlkaHViZXItc2F5cy10ZWNoLWZlYXJzLW1pc3BsYWNlZC1jYW5ub3Qtc3RvcCIsIlwiSnVlcmdlbiBTY2htaWRodWJlciwgUmVub3duZWQgJ0ZhdGhlciBPZiBNb2Rlcm4gQUksJyBTYXlzIEhpcyBMaWZlJ3MgV29yayBXb24ndCBMZWFkIFRvIER5c3RvcGlhXCIiOiJodHRwczovL3d3dy5mb3JiZXMuY29tL3NpdGVzL2hlc3NpZWpvbmVzLzIwMjMvMDUvMjMvanVlcmdlbi1zY2htaWRodWJlci1yZW5vd25lZC1mYXRoZXItb2YtbW9kZXJuLWFpLXNheXMtaGlzLWxpZmVzLXdvcmstd29udC1sZWFkLXRvLWR5c3RvcGlhIiwiXCJBbmRyZXcgTmc6ICdEbyB3ZSB0aGluayB0aGUgd29ybGQgaXMgYmV0dGVyIG9mZiB3aXRoIG1vcmUgb3IgbGVzcyBpbnRlbGxpZ2VuY2U/J1wiIjoiaHR0cHM6Ly93d3cuZnQuY29tL2NvbnRlbnQvMmRjMDdmOWUtZDJhOS00ZDk4LWI3NDYtYjA1MWY5MzUyYmUzIiwiXCJIb3cgTm90IHRvIEJlIFN0dXBpZCBBYm91dCBBSSwgV2l0aCBZYW5uIExlQ3VuXCIiOiJodHRwczovL3d3dy53aXJlZC5jb20vc3RvcnkvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtbWV0YS15YW5uLWxlY3VuLWludGVydmlldyIsIkJyb29rcyAoMjAxNCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQnJvb2tzMjAxNCIsIkdlaXN0ICgyMDE1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHZWlzdDIwMTUiLCJNYWRyaWdhbCAoMjAxNSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTWFkcmlnYWwyMDE1IiwiTGVlICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMZWUyMDE0IiwiWXVka293c2t5ICgyMDA4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZZdWRrb3dza3kyMDA4IiwiQW5kZXJzb24gJiBBbmRlcnNvbiAoMjAxMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQW5kZXJzb25BbmRlcnNvbjIwMTEiLCJBQUFJICgyMDE0KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZBQUFJMjAxNCIsIldhbGxhY2ggKDIwMTApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRldhbGxhY2gyMDEwIiwiXCJIdWdnaW5nIEZhY2UgQ0VPIHNheXMgaGUncyBmb2N1c2VkIG9uIGJ1aWxkaW5nIGEgJ3N1c3RhaW5hYmxlIG1vZGVsJyBmb3IgdGhlICQ0LjUgYmlsbGlvbiBvcGVuLXNvdXJjZS1BSSBzdGFydHVwXCIiOiJodHRwczovL3d3dy5idXNpbmVzc2luc2lkZXIuY29tL2h1Z2dpbmctZmFjZS1vcGVuLXNvdXJjZS1haS1hcHByb2FjaC0yMDIzLTEyIiwiXCJHb29nbGUgb3BlbiBzb3VyY2VzIHRvb2xzIHRvIHN1cHBvcnQgQUkgbW9kZWwgZGV2ZWxvcG1lbnRcIiI6Imh0dHBzOi8vdGVjaGNydW5jaC5jb20vMjAyNC8wNC8wOS9nb29nbGUtb3Blbi1zb3VyY2VzLXRvb2xzLXRvLXN1cHBvcnQtYWktbW9kZWwtZGV2ZWxvcG1lbnQiLCJcIlRoZSBvcGVuLXNvdXJjZSBBSSBib29tIGlzIGJ1aWx0IG9uIEJpZyBUZWNoJ3MgaGFuZG91dHMuIEhvdyBsb25nIHdpbGwgaXQgbGFzdD9cIiI6Imh0dHBzOi8vd3d3LnRlY2hub2xvZ3lyZXZpZXcuY29tLzIwMjMvMDUvMTIvMTA3Mjk1MC9vcGVuLXNvdXJjZS1haS1nb29nbGUtb3BlbmFpLWVsZXV0aGVyLW1ldGEiLCJcIk1pc3RyYWwgQUkncyBOZXcgTGFuZ3VhZ2UgTW9kZWwgQWltcyBmb3IgT3BlbiBTb3VyY2UgU3VwcmVtYWN5XCIiOiJodHRwczovL2FpYnVzaW5lc3MuY29tL25scC9taXN0cmFsLWFpLXMtbmV3LWxhbmd1YWdlLW1vZGVsLWFpbXMtZm9yLW9wZW4tc291cmNlLXN1cHJlbWFjeSIsIlwiU3RhYmlsaXR5IGFubm91bmNlcyBTdGFibGUgRGlmZnVzaW9uIDMsIGEgbmV4dC1nZW4gQUkgaW1hZ2UgZ2VuZXJhdG9yXCIiOiJodHRwczovL2Fyc3RlY2huaWNhLmNvbS9pbmZvcm1hdGlvbi10ZWNobm9sb2d5LzIwMjQvMDIvc3RhYmlsaXR5LWFubm91bmNlcy1zdGFibGUtZGlmZnVzaW9uLTMtYS1uZXh0LWdlbi1haS1pbWFnZS1nZW5lcmF0b3IiLCJcIkhvdyBlbnRlcnByaXNlcyBhcmUgdXNpbmcgb3BlbiBzb3VyY2UgTExNczogMTYgZXhhbXBsZXNcIiI6Imh0dHBzOi8vdmVudHVyZWJlYXQuY29tL2FpL2hvdy1lbnRlcnByaXNlcy1hcmUtdXNpbmctb3Blbi1zb3VyY2UtbGxtcy0xNi1leGFtcGxlcyIsIlwiU2hvdWxkIHdlIG1ha2Ugb3VyIG1vc3QgcG93ZXJmdWwgQUkgbW9kZWxzIG9wZW4gc291cmNlIHRvIGFsbD9cIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMjAyNC8yLzIvMjQwNTg0ODQvb3Blbi1zb3VyY2UtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYWktcmlzay1tZXRhLWxsYW1hLTItY2hhdGdwdC1vcGVuYWktZGVlcGZha2UiLCJcIlVuZGVyc3RhbmRpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgZXRoaWNzIGFuZCBzYWZldHlcIiI6Imh0dHBzOi8vd3d3LnR1cmluZy5hYy51ay9zaXRlcy9kZWZhdWx0L2ZpbGVzLzIwMTktMDYvdW5kZXJzdGFuZGluZ19hcnRpZmljaWFsX2ludGVsbGlnZW5jZV9ldGhpY3NfYW5kX3NhZmV0eS5wZGYiLCJcIkFJIEV0aGljcyBhbmQgR292ZXJuYW5jZSBpbiBQcmFjdGljZVwiIjoiaHR0cHM6Ly93d3cudHVyaW5nLmFjLnVrL3NpdGVzL2RlZmF1bHQvZmlsZXMvMjAyMy0xMi9haWVnLWF0aS1haS1ldGhpY3MtYW4taW50cm9fMS5wZGYiLCJcIkEgVW5pZmllZCBGcmFtZXdvcmsgb2YgRml2ZSBQcmluY2lwbGVzIGZvciBBSSBpbiBTb2NpZXR5XCIiOiJodHRwczovL2hkc3IubWl0cHJlc3MubWl0LmVkdS9wdWIvbDBqc2g5ZDEiLCIxMC4xMTYyLzk5NjA4ZjkyLjhjZDU1MGQxIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExNjIlMkY5OTYwOGY5Mi44Y2Q1NTBkMSIsIlwiQSBjcml0aWNhbCBwZXJzcGVjdGl2ZSBvbiBndWlkZWxpbmVzIGZvciByZXNwb25zaWJsZSBhbmQgdHJ1c3R3b3J0aHkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMTAxOS0wMjAtMDk5NDgtMSIsIjEwLjEwMDcvczExMDE5LTAyMC0wOTk0OC0xIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTEwMTktMDIwLTA5OTQ4LTEiLCIxNTcyLTg2MzMiOiJodHRwczovL3NlYXJjaC53b3JsZGNhdC5vcmcvaXNzbi8xNTcyLTg2MzMiLCJcIkV0aGljYWwgaXNzdWVzIGluIHRoZSBkZXZlbG9wbWVudCBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZTogcmVjb2duaXppbmcgdGhlIHJpc2tzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOC9JSk9FUy0wNS0yMDIzLTAxMDciLCIxMC4xMTA4L0lKT0VTLTA1LTIwMjMtMDEwNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA4JTJGSUpPRVMtMDUtMjAyMy0wMTA3IiwiMjUxNC05MzY5IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjUxNC05MzY5IiwiXCJBSSBTYWZldHkgSW5zdGl0dXRlIHJlbGVhc2VzIG5ldyBBSSBzYWZldHkgZXZhbHVhdGlvbnMgcGxhdGZvcm1cIiI6Imh0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L25ld3MvYWktc2FmZXR5LWluc3RpdHV0ZS1yZWxlYXNlcy1uZXctYWktc2FmZXR5LWV2YWx1YXRpb25zLXBsYXRmb3JtIiwiQmVycnloaWxsIGV0IGFsLiAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQmVycnloaWxsSGVhbmdDbG9naGVyTWNCcmlkZTIwMTkiLCJCYXJmaWVsZCAmIFBhZ2FsbG8gKDIwMTgpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJhcmZpZWxkUGFnYWxsbzIwMTgiLCJJcGhvZmVuICYgS3JpdGlrb3MgKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRklwaG9mZW5Lcml0aWtvczIwMTkiLCJXaXJ0eiwgV2V5ZXJlciAmIEdleWVyICgyMDE4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXaXJ0eldleWVyZXJHZXllcjIwMTgiLCJCdWl0ZW4gKDIwMTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJ1aXRlbjIwMTkiLCJMYXcgTGlicmFyeSBvZiBDb25ncmVzcyAoVS5TLikuIEdsb2JhbCBMZWdhbCBSZXNlYXJjaCBEaXJlY3RvcmF0ZSAoMjAxOSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTGF3X0xpYnJhcnlfb2ZfQ29uZ3Jlc3NfKFUuUy4pLl9HbG9iYWxfTGVnYWxfUmVzZWFyY2hfRGlyZWN0b3JhdGUyMDE5IiwiVmluY2VudCAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVmluY2VudDIwMjMiLCJTdGFuZm9yZCBVbml2ZXJzaXR5ICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZTdGFuZm9yZF9Vbml2ZXJzaXR5MjAyMyIsIlVORVNDTyAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGVU5FU0NPMjAyMSIsIktpc3NpbmdlciAoMjAyMSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2lzc2luZ2VyMjAyMSIsIkFsdG1hbiwgQnJvY2ttYW4gJiBTdXRza2V2ZXIgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFsdG1hbkJyb2NrbWFuU3V0c2tldmVyMjAyMyIsIlwiVU4gQW5ub3VuY2VzIEFkdmlzb3J5IEJvZHkgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vd3d3LnZvYW5ld3MuY29tL2EvdW4tYW5ub3VuY2VzLWFkdmlzb3J5LWJvZHktb24tYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtLzczMjg3MzIuaHRtbCIsIlwiQ291bmNpbCBvZiBFdXJvcGUgb3BlbnMgZmlyc3QgZXZlciBnbG9iYWwgdHJlYXR5IG9uIEFJIGZvciBzaWduYXR1cmVcIiI6Imh0dHBzOi8vd3d3LmNvZS5pbnQvZW4vd2ViL3BvcnRhbC8tL2NvdW5jaWwtb2YtZXVyb3BlLW9wZW5zLWZpcnN0LWV2ZXItZ2xvYmFsLXRyZWF0eS1vbi1haS1mb3Itc2lnbmF0dXJlIiwiRWR3YXJkcyAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRWR3YXJkczIwMjMiLCJLYXNwZXJvd2ljeiAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2FzcGVyb3dpY3oyMDIzIiwiRm94IE5ld3MgKDIwMjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkZveF9OZXdzMjAyMyIsIlwiVGhlIEJsZXRjaGxleSBEZWNsYXJhdGlvbiBieSBDb3VudHJpZXMgQXR0ZW5kaW5nIHRoZSBBSSBTYWZldHkgU3VtbWl0LCAx4oCTMiBOb3ZlbWJlciAyMDIzXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyMzExMDExMjM5MDQvaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL2FpLXNhZmV0eS1zdW1taXQtMjAyMy10aGUtYmxldGNobGV5LWRlY2xhcmF0aW9uL3RoZS1ibGV0Y2hsZXktZGVjbGFyYXRpb24tYnktY291bnRyaWVzLWF0dGVuZGluZy10aGUtYWktc2FmZXR5LXN1bW1pdC0xLTItbm92ZW1iZXItMjAyMyIsIlwiQ291bnRyaWVzIGFncmVlIHRvIHNhZmUgYW5kIHJlc3BvbnNpYmxlIGRldmVsb3BtZW50IG9mIGZyb250aWVyIEFJIGluIGxhbmRtYXJrIEJsZXRjaGxleSBEZWNsYXJhdGlvblwiIjoiaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvbmV3cy9jb3VudHJpZXMtYWdyZWUtdG8tc2FmZS1hbmQtcmVzcG9uc2libGUtZGV2ZWxvcG1lbnQtb2YtZnJvbnRpZXItYWktaW4tbGFuZG1hcmstYmxldGNobGV5LWRlY2xhcmF0aW9uIiwiXCJTZWNvbmQgZ2xvYmFsIEFJIHN1bW1pdCBzZWN1cmVzIHNhZmV0eSBjb21taXRtZW50cyBmcm9tIGNvbXBhbmllc1wiIjoiaHR0cHM6Ly93d3cucmV1dGVycy5jb20vdGVjaG5vbG9neS9nbG9iYWwtYWktc3VtbWl0LXNlb3VsLWFpbXMtZm9yZ2UtbmV3LXJlZ3VsYXRvcnktYWdyZWVtZW50cy0yMDI0LTA1LTIxIiwiXCJGcm9udGllciBBSSBTYWZldHkgQ29tbWl0bWVudHMsIEFJIFNlb3VsIFN1bW1pdCAyMDI0XCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyNDA1MjMyMDE2MTEvaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL2Zyb250aWVyLWFpLXNhZmV0eS1jb21taXRtZW50cy1haS1zZW91bC1zdW1taXQtMjAyNC9mcm9udGllci1haS1zYWZldHktY29tbWl0bWVudHMtYWktc2VvdWwtc3VtbWl0LTIwMjQiLCIwLTE5ODItNTA3OS03IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTE5ODItNTA3OS03IiwiXCJHb29nbGUgYm9va3MgbmdyYW1cIiI6Imh0dHBzOi8vYm9va3MuZ29vZ2xlLmNvbS9uZ3JhbXMvZ3JhcGg/Y29udGVudD1lbGVjdHJvbmljK2JyYWluJnllYXJfc3RhcnQ9MTkzMCZ5ZWFyX2VuZD0yMDE5JmNvcnB1cz1lbi0yMDE5JnNtb290aGluZz0zIiwiQ29tcHV0aW5nIG1hY2hpbmVyeSBhbmQgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0aW5nX21hY2hpbmVyeV9hbmRfaW50ZWxsaWdlbmNlIiwiSGF1Z2VsYW5kICgxOTg1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkhhdWdlbGFuZDE5ODUiLCJSdXNzZWxsICYgTm9ydmlnICgyMDAzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSdXNzZWxsTm9ydmlnMjAwMyIsIlNpbW9uICgxOTY1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNpbW9uMTk2NSIsIk1pbnNreSAoMTk2NyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNaW5za3kxOTY3IiwiTGlnaHRoaWxsICgxOTczKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMaWdodGhpbGwxOTczIiwiTlJDIDE5OTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTlJDMTk5OSIsIkV4cGVydCBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwZXJ0X3N5c3RlbXMiLCJNY0NvcmR1Y2sgKDIwMDQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ29yZHVjazIwMDQiLCJNb3JhdmVjICgxOTg4KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNb3JhdmVjMTk4OCIsIkJyb29rcyAoMTk5MCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQnJvb2tzMTk5MCIsIldlbmcgZXQgYWwuICgyMDAxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZXZW5nTWNDbGVsbGFuZFBlbnRsYW5kU3Bvcm5zMjAwMSIsIkx1bmdhcmVsbGEgZXQgYWwuICgyMDAzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZMdW5nYXJlbGxhTWV0dGFQZmVpZmVyU2FuZGluaTIwMDMiLCJBc2FkYSBldCBhbC4gKDIwMDkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkFzYWRhSG9zb2RhS3VuaXlvc2hpSXNoaWd1cm8yMDA5IiwiT3VkZXllciAoMjAxMCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGT3VkZXllcjIwMTAiLCJGb3JtYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNOZWF0X3ZzLl9zY3J1ZmZ5IiwiS3VyendlaWwgKDIwMDUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS3VyendlaWwyMDA1IiwiV29uZyAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGV29uZzIwMjMiLCJNb29yZSdzIExhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vb3JlJTI3c19MYXciLCJDbGFyayAoMjAxNWIpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkNsYXJrMjAxNWIiLCJCaWcgZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpZ19kYXRhIiwiXCJPcGVuQUkgUmVsZWFzZXMgR1BULTMsIFRoZSBMYXJnZXN0IE1vZGVsIFNvIEZhclwiIjoiaHR0cHM6Ly9hbmFseXRpY3NpbmRpYW1hZy5jb20vb3Blbi1haS1ncHQtMy1sYW5ndWFnZS1tb2RlbCIsIlwiQ2hhdEdQVCByZWFjaGVzIDEwMCBtaWxsaW9uIHVzZXJzIHR3byBtb250aHMgYWZ0ZXIgbGF1bmNoXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDIzL2ZlYi8wMi9jaGF0Z3B0LTEwMC1taWxsaW9uLXVzZXJzLW9wZW4tYWktZmFzdGVzdC1ncm93aW5nLWFwcCIsIlwiQ2hhdEdQVCB0dXJucyAxOiBBSSBjaGF0Ym90J3Mgc3VjY2VzcyBzYXlzIGFzIG11Y2ggYWJvdXQgaHVtYW5zIGFzIHRlY2hub2xvZ3lcIiI6Imh0dHBzOi8vdGhlY29udmVyc2F0aW9uLmNvbS9jaGF0Z3B0LXR1cm5zLTEtYWktY2hhdGJvdHMtc3VjY2Vzcy1zYXlzLWFzLW11Y2gtYWJvdXQtaHVtYW5zLWFzLXRlY2hub2xvZ3ktMjE4NzA0IiwiRGlGZWxpY2lhbnRvbmlvICgyMDIzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEaUZlbGljaWFudG9uaW8yMDIzIiwiR29zd2FtaSAoMjAyMykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGR29zd2FtaTIwMjMiLCJcIk5lYXJseSAxIGluIDQgbmV3IHN0YXJ0dXBzIGlzIGFuIEFJIGNvbXBhbnlcIiI6Imh0dHBzOi8vcGl0Y2hib29rLmNvbS9uZXdzL2FydGljbGVzL25lYXJseS0xLWluLTQtbmV3LXN0YXJ0dXBzLWlzLWFuLWFpLWNvbXBhbnkiLCJcIlBoaWxvc29waHkgaXMgY3J1Y2lhbCBpbiB0aGUgYWdlIG9mIEFJXCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vcGhpbG9zb3BoeS1pcy1jcnVjaWFsLWluLXRoZS1hZ2Utb2YtYWktMjM1OTA3IiwiXCJXaWxsIEFJIGV2ZXIgYmVjb21lIGNvbnNjaW91cz8gSXQgZGVwZW5kcyBvbiBob3cgeW91IHRoaW5rIGFib3V0IGJpb2xvZ3lcIiI6Imh0dHBzOi8vd3d3LnZveC5jb20vZnV0dXJlLXBlcmZlY3QvMzUxODkzL2NvbnNjaW91c25lc3MtYWktbWFjaGluZXMtbmV1cm9zY2llbmNlLW1pbmQiLCJcIlRoZSBQaGlsb3NvcGh5IG9mIEFJIGFuZCB0aGUgQUkgb2YgUGhpbG9zb3BoeVwiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTgxMDIzMTgxNzI1L2h0dHA6Ly9qbWMuc3RhbmZvcmQuZWR1L2FydGljbGVzL2FpcGhpbDIuaHRtbCIsIlwiQUkgaXMgY2xvc2VyIHRoYW4gZXZlciB0byBwYXNzaW5nIHRoZSBUdXJpbmcgdGVzdCBmb3IgJ2ludGVsbGlnZW5jZScuIFdoYXQgaGFwcGVucyB3aGVuIGl0IGRvZXM/XCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vYWktaXMtY2xvc2VyLXRoYW4tZXZlci10by1wYXNzaW5nLXRoZS10dXJpbmctdGVzdC1mb3ItaW50ZWxsaWdlbmNlLXdoYXQtaGFwcGVucy13aGVuLWl0LWRvZXMtMjE0NzIxIiwiTWFrZXIgKDIwMDYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1ha2VyMjAwNiIsIk1jQ2FydGh5ICgxOTk5KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNY0NhcnRoeTE5OTkiLCJNaW5za3kgKDE5ODYpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1pbnNreTE5ODYiLCJcIldoYXQgSXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKT9cIiI6Imh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9sZWFybi93aGF0LWlzLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlIiwiR29vZ2xlIENsb3VkIFBsYXRmb3JtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX0Nsb3VkX1BsYXRmb3JtIiwiXCJPbmUgb2YgdGhlIEJpZ2dlc3QgUHJvYmxlbXMgaW4gUmVndWxhdGluZyBBSSBJcyBBZ3JlZWluZyBvbiBhIERlZmluaXRpb25cIiI6Imh0dHBzOi8vY2FybmVnaWVlbmRvd21lbnQub3JnL3Bvc3RzLzIwMjIvMTAvb25lLW9mLXRoZS1iaWdnZXN0LXByb2JsZW1zLWluLXJlZ3VsYXRpbmctYWktaXMtYWdyZWVpbmctb24tYS1kZWZpbml0aW9uP2xhbmc9ZW4iLCJDYXJuZWdpZSBFbmRvd21lbnQgZm9yIEludGVybmF0aW9uYWwgUGVhY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXJuZWdpZV9FbmRvd21lbnRfZm9yX0ludGVybmF0aW9uYWxfUGVhY2UiLCJcIkFJIG9yIEJTPyBIb3cgdG8gdGVsbCBpZiBhIG1hcmtldGluZyB0b29sIHJlYWxseSB1c2VzIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3d3dy50aGVkcnVtLmNvbS9vcGluaW9uLzIwMjMvMDMvMzAvYWktb3ItYnMtaG93LXRlbGwtaWYtbWFya2V0aW5nLXRvb2wtcmVhbGx5LXVzZXMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJOaWxzc29uICgxOTgzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZOaWxzc29uMTk4MyIsIkhhdWdlbGFuZCAoMTk4NSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGSGF1Z2VsYW5kMTk4NSIsIk5ld2VsbCAmIFNpbW9uICgxOTc2IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk5ld2VsbFNpbW9uMTk3NiIsIk1pbnNreSAoMTk4NiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZNaW5za3kxOTg2IiwiUGlua2VyICgyMDA3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlBpbmtlcjIwMDciLCJEcmV5ZnVzJyBjcml0aXF1ZSBvZiBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RyZXlmdXMlMjdfY3JpdGlxdWVfb2ZfQUkiLCJEcmV5ZnVzICgxOTcyKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEcmV5ZnVzMTk3MiIsIkZlYXJuICgyMDA3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkZlYXJuMjAwNyIsIkxhbmdsZXkgKDIwMTEpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkxhbmdsZXkyMDExIiwiS2F0eiAoMjAxMikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGS2F0ejIwMTIiLCJOZWF0cyB2cy4gc2NydWZmaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVhdHNfdnMuX3NjcnVmZmllcyIsIk5pbHNzb24gKDE5ODMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGTmlsc3NvbjE5ODMiLCJSb2JlcnRzICgyMDE2KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZSb2JlcnRzMjAxNiIsIkNoYWxtZXJzICgxOTk1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZDaGFsbWVyczE5OTUiLCJEZW5uZXR0ICgxOTkxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZEZW5uZXR0MTk5MSIsIkhvcnN0ICgyMDA1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZIb3JzdDIwMDUiLCJTZWFybGUgKDE5OTkpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNlYXJsZTE5OTkiLCJTZWFybGUgKDE5ODApIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRlNlYXJsZTE5ODAiLCJcIk5pY2sgQm9zdHJvbTogSG93IGNhbiB3ZSBiZSBjZXJ0YWluIGEgbWFjaGluZSBpc24ndCBjb25zY2lvdXM/XCIiOiJodHRwczovL3d3dy5zcGVjdGF0b3IuY28udWsvYXJ0aWNsZS9uaWNrLWJvc3Ryb20taG93LWNhbi13ZS1iZS1jZXJ0YWluLWEtbWFjaGluZS1pc250LWNvbnNjaW91cyIsIlwiV2h5IGRvbid0IHJvYm90cyBoYXZlIHJpZ2h0cz9cIiI6Imh0dHBzOi8vYmlndGhpbmsuY29tL3RoaW5raW5nL3doeS1kb250LXJvYm90cy1oYXZlLXJpZ2h0cyIsIlwiQUkgU2hvdWxkIEJlIFRlcnJpZmllZCBvZiBIdW1hbnNcIiI6Imh0dHBzOi8vdGltZS5jb20vNjI5NjIzNC9haS1zaG91bGQtYmUtdGVycmlmaWVkLW9mLWh1bWFucyIsIlwiV2hhdCBsZWFkZXJzIG5lZWQgdG8ga25vdyBhYm91dCByb2JvdCByaWdodHNcIiI6Imh0dHBzOi8vd3d3LmZhc3Rjb21wYW55LmNvbS85MDkyMDc2OS93aGF0LWxlYWRlcnMtbmVlZC10by1rbm93LWFib3V0LXJvYm90LXJpZ2h0cyIsIlwiR2l2ZSByb2JvdHMgJ3BlcnNvbmhvb2QnIHN0YXR1cywgRVUgY29tbWl0dGVlIGFyZ3Vlc1wiIjoiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNy9qYW4vMTIvZ2l2ZS1yb2JvdHMtcGVyc29uaG9vZC1zdGF0dXMtZXUtY29tbWl0dGVlLWFyZ3VlcyIsIlwiRXhwZXJ0cyBEb24ndCBUaGluayBSb2JvdHMgU2hvdWxkIEhhdmUgUmlnaHRzXCIiOiJodHRwczovL3d3dy5uZXdzd2Vlay5jb20vcm9ib3RzLWh1bWFuLXJpZ2h0cy1lbGVjdHJvbmljLXBlcnNvbnMtaHVtYW5zLXZlcnN1cy1tYWNoaW5lcy04ODYwNzUiLCJcIlJvYm90IHJpZ2h0cyB2aW9sYXRlIGh1bWFuIHJpZ2h0cywgZXhwZXJ0cyB3YXJuIEVVXCIiOiJodHRwczovL3d3dy5ldXJvbmV3cy5jb20vMjAxOC8wNC8xMy9yb2JvdC1yaWdodHMtdmlvbGF0ZS1odW1hbi1yaWdodHMtZXhwZXJ0cy13YXJuLWV1IiwiSW50ZWxsaWdlbmNlIGV4cGxvc2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVsbGlnZW5jZV9leHBsb3Npb24iLCJ0ZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9zaW5ndWxhcml0eSIsIk9tb2h1bmRybyAoMjAwOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGT21vaHVuZHJvMjAwOCIsIkt1cnp3ZWlsICgyMDA1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZLdXJ6d2VpbDIwMDUiLCJHb29kICgxOTY1KSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZHb29kMTk2NSIsIlZpbmdlICgxOTkzKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZWaW5nZTE5OTMiLCJCdXRsZXIgKDE4NjMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRkJ1dGxlcjE4NjMiLCJEeXNvbiAoMTk5OCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGRHlzb24xOTk4IiwiXCJhIGdpZnQgdG8gdGhlIGZhciByaWdodFwiIjoiaHR0cHM6Ly93d3cuY29tcHV0ZXJ3ZWVrbHkuY29tL29waW5pb24vTGFib3Vycy1BSS1BY3Rpb24tUGxhbi1hLWdpZnQtdG8tdGhlLWZhci1yaWdodCIsIkJ1dHRhenpvICgyMDAxKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaW50ZWxsaWdlbmNlI0NJVEVSRUZCdXR0YXp6bzIwMDEiLCJBbmRlcnNvbiAoMjAwOCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGQW5kZXJzb24yMDA4IiwiTWNDYXVsZXkgKDIwMDcpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UjQ0lURVJFRk1jQ2F1bGV5MjAwNyIsIkdhbHZhbiAoMTk5NykiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSNDSVRFUkVGR2FsdmFuMTk5NyIsIk9wZW4gU3lsbGFidXMiOiJodHRwczovL2V4cGxvcmVyLm9wZW5zeWxsYWJ1cy5vcmcvcmVzdWx0L2ZpZWxkP2lkPUNvbXB1dGVyK1NjaWVuY2UiLCJSdXNzZWxsLCBTdHVhcnQgSi4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVhcnRfSi5fUnVzc2VsbCIsIk5vcnZpZywgUGV0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRlcl9Ob3J2aWciLCJMQ0NOIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTENDTl8oaWRlbnRpZmllcikiLCJSaWNoLCBFbGFpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGFpbmVfUmljaCIsIjk3OC0wLTA3MDAtODc3MC01IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wNzAwLTg3NzAtNSIsIkx1Z2VyLCBHZW9yZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9R2VvcmdlX0x1Z2VyJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIlN0dWJibGVmaWVsZCwgV2lsbGlhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fU3R1YmJsZWZpZWxkIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFN0cnVjdHVyZXMgYW5kIFN0cmF0ZWdpZXMgZm9yIENvbXBsZXggUHJvYmxlbSBTb2x2aW5nIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL2FydGlmaWNpYWxpbnRlbGwwMDAwbHVnZSIsIjk3OC0wLTgwNTMtNDc4MC03IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC04MDUzLTQ3ODAtNyIsIk5pbHNzb24sIE5pbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OaWxzX05pbHNzb25fKHJlc2VhcmNoZXIpIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTmV3IFN5bnRoZXNpcyI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9hcnRpZmljaWFsaW50ZWxsMDAwMG5pbHMiLCI5NzgtMS01NTg2LTA0NjctNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtNTU4Ni0wNDY3LTQiLCIwLTEzLTc5MDM5NS0yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTEzLTc5MDM5NS0yIiwiUG9vbGUsIERhdmlkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPURhdmlkX1Bvb2xlXyhyZXNlYXJjaGVyKSZhY3Rpb249ZWRpdCZyZWRsaW5rPTEiLCJNYWNrd29ydGgsIEFsYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGFuX01hY2t3b3J0aCIsIkdvZWJlbCwgUmFuZHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9UmFuZHlfR29lYmVsJmFjdGlvbj1lZGl0JnJlZGxpbms9MSIsIkNvbXB1dGF0aW9uYWwgSW50ZWxsaWdlbmNlOiBBIExvZ2ljYWwgQXBwcm9hY2giOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvY29tcHV0YXRpb25hbGludDAwcG9vbCIsIjk3OC0wLTE5NTEtMDI3MC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xOTUxLTAyNzAtMyIsIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBGb3VuZGF0aW9ucyBvZiBDb21wdXRhdGlvbmFsIEFnZW50cyI6Imh0dHA6Ly9hcnRpbnQuaW5mby9pbmRleC5odG1sIiwiOTc4LTEtMTA3MS05NTM5LTQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTEwNzEtOTUzOS00IiwiOTc4LTMtMzE5NS04NDg2LTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0zLTMxOTUtODQ4Ni03IiwiQ3JldmllciwgRGFuaWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuaWVsX0NyZXZpZXIiLCIwLTQ2NS0wMjk5Ny0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy8wLTQ2NS0wMjk5Ny0zIiwiTWNDb3JkdWNrLCBQYW1lbGEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYW1lbGFfTWNDb3JkdWNrIiwiMS01Njg4LTEyMDUtMSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvMS01Njg4LTEyMDUtMSIsIk5ld3F1aXN0LCBILiBQLiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hQX05ld3F1aXN0IiwiOTc4LTAtNjcyMy0wNDEyLTUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTY3MjMtMDQxMi01IiwiMDQ3MTYxNDk2MyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvMDQ3MTYxNDk2MyIsIkFJICYgTUwgaW4gRnVzaW9uIjoiaHR0cHM6Ly9zdWxpLnBwcGwuZ292LzIwMjMvY291cnNlL1JlYS1QUFBMLVNVTEkyMDIzLnBkZiIsIkFJICYgTUwgaW4gRnVzaW9uLCB2aWRlbyBsZWN0dXJlIjoiaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xbnBDVHJKOFhKbjIwWkdEQV9EZk1wQU51UVpGTXpLUGgvdmlldz91c3A9ZHJpdmVfbGluayIsIlwiRnJhbnplbiwgR3Jpc2hhbSBhbmQgT3RoZXIgUHJvbWluZW50IEF1dGhvcnMgU3VlIE9wZW5BSVwiIjoiaHR0cHM6Ly93d3cubnl0aW1lcy5jb20vMjAyMy8wOS8yMC9ib29rcy9hdXRob3JzLW9wZW5haS1sYXdzdWl0LWNoYXRncHQtY29weXJpZ2h0Lmh0bWw/Y2FtcGFpZ25faWQ9MiZlbWM9ZWRpdF90aF8yMDIzMDkyMSZpbnN0YW5jZV9pZD0xMDMyNTkmbmw9dG9kYXlzaGVhZGxpbmVzJnJlZ2lfaWQ9NjI4MTY0NDAmc2VnbWVudF9pZD0xNDUyODgmdXNlcl9pZD1hZDI0ZjM1NDVkYWUwZWM0NDI4NGEzOGJiNGE4OGYxZCIsIkFsdG1hbiwgU2FtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2FtX0FsdG1hbiIsIkJyb2NrbWFuLCBHcmVnIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JlZ19Ccm9ja21hbiIsIlN1dHNrZXZlciwgSWx5YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lseWFfU3V0c2tldmVyIiwiXCJHb3Zlcm5hbmNlIG9mIFN1cGVyaW50ZWxsaWdlbmNlXCIiOiJodHRwczovL29wZW5haS5jb20vYmxvZy9nb3Zlcm5hbmNlLW9mLXN1cGVyaW50ZWxsaWdlbmNlIiwiMTAuMTAwNy9zMDAxNDYtMDA3LTAwOTQtNSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczAwMTQ2LTAwNy0wMDk0LTUiLCIxMC4xMTA5L3RhbWQuMjAwOS4yMDIxNzAyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZ0YW1kLjIwMDkuMjAyMTcwMiIsIlwiQXNrIHRoZSBBSSBleHBlcnRzOiBXaGF0J3MgZHJpdmluZyB0b2RheSdzIHByb2dyZXNzIGluIEFJP1wiIjoiaHR0cHM6Ly93d3cubWNraW5zZXkuY29tL2J1c2luZXNzLWZ1bmN0aW9ucy9tY2tpbnNleS1hbmFseXRpY3Mvb3VyLWluc2lnaHRzL2Fzay10aGUtYWktZXhwZXJ0cy13aGF0cy1kcml2aW5nLXRvZGF5cy1wcm9ncmVzcy1pbi1haSIsIjk3OC0xLTc4NjQtMzkwNC04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMS03ODY0LTM5MDQtOCIsIk9DTEMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PQ0xDXyhpZGVudGlmaWVyKSIsIldpbnN0b24sIFBhdHJpY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXRyaWNrX1dpbnN0b24iLCIxMC4xMTA5L01JUy4yMDA5Ljc1IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZNSVMuMjAwOS43NSIsIjE3MjEuMS81MjM1NyI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTcyMS4xJTJGNTIzNTciLCJcIlN0cmF0ZWdpZXMgdG8gSW1wcm92ZSB0aGUgSW1wYWN0IG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIG9uIEhlYWx0aCBFcXVpdHk6IFNjb3BpbmcgUmV2aWV3XCIiOiJodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMxMTA0MTQ1OSIsIjEwLjIxOTYvNDI5MzYiOiJodHRwczovL2RvaS5vcmcvMTAuMjE5NiUyRjQyOTM2IiwiMjgxNy0xNzA1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjgxNy0xNzA1IiwiSGVsbG8sIFdvcmxkOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgaXRzIFVzZSBpbiB0aGUgUHVibGljIFNlY3RvciI6Imh0dHBzOi8vb2VjZC1vcHNpLm9yZy93cC1jb250ZW50L3VwbG9hZHMvMjAxOS8xMS9BSS1SZXBvcnQtT25saW5lLnBkZiIsIkJvc3Ryb20sIE5pY2siOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OaWNrX0Jvc3Ryb20iLCJTdXBlcmludGVsbGlnZW5jZTogUGF0aHMsIERhbmdlcnMsIFN0cmF0ZWdpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdXBlcmludGVsbGlnZW5jZTpfUGF0aHMsX0RhbmdlcnMsX1N0cmF0ZWdpZXMiLCJcIldoYXQgaGFwcGVucyB3aGVuIG91ciBjb21wdXRlcnMgZ2V0IHNtYXJ0ZXIgdGhhbiB3ZSBhcmU/XCIiOiJodHRwczovL3d3dy50ZWQuY29tL3RhbGtzL25pY2tfYm9zdHJvbV93aGF0X2hhcHBlbnNfd2hlbl9vdXJfY29tcHV0ZXJzX2dldF9zbWFydGVyX3RoYW5fd2VfYXJlL3RyYW5zY3JpcHQiLCJURUQgKGNvbmZlcmVuY2UpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVEVEXyhjb25mZXJlbmNlKSIsIlwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYSB0b29sLCBub3QgYSB0aHJlYXRcIiI6Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExMjEzMDk1NC9odHRwOi8vd3d3LnJldGhpbmtyb2JvdGljcy5jb20vYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtdG9vbC10aHJlYXQiLCJCcm9va3MsIFJvZG5leSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvZG5leV9Ccm9va3MiLCJcIkVsZXBoYW50cyBEb24ndCBQbGF5IENoZXNzXCIiOiJodHRwOi8vcGVvcGxlLmNzYWlsLm1pdC5lZHUvYnJvb2tzL3BhcGVycy9lbGVwaGFudHMucGRmIiwiQ2l0ZVNlZXJYIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2l0ZVNlZXJYXyhpZGVudGlmaWVyKSIsIjEwLjEuMS41ODguNzUzOSI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjU4OC43NTM5IiwiMTAuMTAxNi9TMDkyMS04ODkwKDA1KTgwMDI1LTkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRlMwOTIxLTg4OTAlMjgwNSUyOTgwMDI1LTkiLCJcIlRvd2FyZHMgSW50ZWxsaWdlbnQgUmVndWxhdGlvbiBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZlcnIuMjAxOS44IiwiMTAuMTAxNy9lcnIuMjAxOS44IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZlcnIuMjAxOS44IiwiMTg2Ny0yOTlYIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTg2Ny0yOTlYIiwiXCJXaGF0IHRoZSBOZXcgR1BULTQgQUkgQ2FuIERvXCIiOiJodHRwczovL3d3dy5zY2llbnRpZmljYW1lcmljYW4uY29tL2FydGljbGUvd2hhdC10aGUtbmV3LWdwdC00LWFpLWNhbi1kby8iLCJCdXRsZXIsIFNhbXVlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbXVlbF9CdXRsZXJfKG5vdmVsaXN0KSIsIlwiRGFyd2luIGFtb25nIHRoZSBNYWNoaW5lc1wiIjoiaHR0cHM6Ly9uemV0Yy52aWN0b3JpYS5hYy5uei90bS9zY2hvbGFybHkvdGVpLUJ1dEZpci10MS1nMS10MS1nMS10NC1ib2R5Lmh0bWwiLCJUaGUgUHJlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfUHJlc3MiLCJDb21wdXRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyXyhtYWdhemluZSkiLCIxMC4xMTA5LzIuOTMzNTAwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkYyLjkzMzUwMCIsIjEwLjExMDkvTUNJLjIwMTQuMjMwNzIyNyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTA5JTJGTUNJLjIwMTQuMjMwNzIyNyIsIlwiU3RlcGhlbiBIYXdraW5nIHdhcm5zIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGNvdWxkIGVuZCBtYW5raW5kXCIiOiJodHRwczovL3d3dy5iYmMuY29tL25ld3MvdGVjaG5vbG9neS0zMDI5MDU0MCIsIkJCQyBOZXdzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQkJDX05ld3MiLCJDaGFsbWVycywgRGF2aWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9DaGFsbWVycyIsIlwiRmFjaW5nIHVwIHRvIHRoZSBwcm9ibGVtIG9mIGNvbnNjaW91c25lc3NcIiI6Imh0dHA6Ly93d3cuaW1wcmludC5jby51ay9jaGFsbWVycy5odG1sIiwiSm91cm5hbCBvZiBDb25zY2lvdXNuZXNzIFN0dWRpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb3VybmFsX29mX0NvbnNjaW91c25lc3NfU3R1ZGllcyIsIjEwLjEuMS4xMDMuODM2MiI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjEwMy44MzYyIiwiMTAuMTAxNy9DQk85NzgwNTExOTc1ODM3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZDQk85NzgwNTExOTc1ODM3IiwiOTc4LTAtNTIxOC03NjI4LTUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTUyMTgtNzYyOC01IiwiQ2hyaXN0aWFuLCBCcmlhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyaWFuX0NocmlzdGlhbiIsIlRoZSBBbGlnbm1lbnQgUHJvYmxlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9BbGlnbm1lbnRfUHJvYmxlbSIsIjk3OC0wLTM5MzgtNjgzMy0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0zOTM4LTY4MzMtMyIsIjEyMDIuMjc0NSI6Imh0dHBzOi8vYXJ4aXYub3JnL2Ficy8xMjAyLjI3NDUiLCIxMC4xMTA5L2N2cHIuMjAxMi42MjQ4MTEwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZjdnByLjIwMTIuNjI0ODExMCIsIjk3OC0xLTQ2NzMtMTIyOC04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMS00NjczLTEyMjgtOCIsIlwiV2h5IDIwMTUgV2FzIGEgQnJlYWt0aHJvdWdoIFllYXIgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vd3d3LmJsb29tYmVyZy5jb20vbmV3cy9hcnRpY2xlcy8yMDE1LTEyLTA4L3doeS0yMDE1LXdhcy1hLWJyZWFrdGhyb3VnaC15ZWFyLWluLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlIiwiXCJDb21tZW50YXJ5OiBCYWQgbmV3cy4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYmlhc2VkXCIiOiJodHRwczovL3d3dy5jaGFubmVsbmV3c2FzaWEuY29tL25ld3MvY29tbWVudGFyeS9hcnRpZmljaWFsLWludGVsbGlnZW5jZS1iaWctZGF0YS1iaWFzLWhpcmluZy1sb2Fucy1rZXktY2hhbGxlbmdlLTExMDk3Mzc0IiwiQ3liZW5rbywgRy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfQ3liZW5rbyIsIlwiRGVlcCBMZWFybmluZzogTWV0aG9kcyBhbmQgQXBwbGljYXRpb25zXCIiOiJodHRwOi8vcmVzZWFyY2gubWljcm9zb2Z0LmNvbS9wdWJzLzIwOTM1NS9EZWVwTGVhcm5pbmctTm93UHVibGlzaGluZy1Wb2w3LVNJRy0wMzkucGRmIiwiMTAuMTU2MS8yMDAwMDAwMDM5IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjE1NjElMkYyMDAwMDAwMDM5IiwiRGVubmV0dCwgRGFuaWVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuaWVsX0Rlbm5ldHQiLCJDb25zY2lvdXNuZXNzIEV4cGxhaW5lZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnNjaW91c25lc3NfRXhwbGFpbmVkIiwiOTc4LTAtNzEzOS05MDM3LTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTcxMzktOTAzNy05IiwiXCJBSSBoYXMgYWxyZWFkeSBjaGFuZ2VkIHRoZSB3b3JsZC4gVGhpcyByZXBvcnQgc2hvd3MgaG93XCIiOiJodHRwczovL3d3dy5zZmNocm9uaWNsZS5jb20vdGVjaC9hcnRpY2xlL2FpLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXJlcG9ydC1zdGFuZm9yZC0xNzg2OTU1OC5waHAiLCJcIk1hY2hpbmUgbGVhcm5pbmc6IFdoYXQgaXMgdGhlIHRyYW5zZm9ybWVyIGFyY2hpdGVjdHVyZT9cIiI6Imh0dHBzOi8vYmR0ZWNodGFsa3MuY29tLzIwMjIvMDUvMDIvd2hhdC1pcy10aGUtdHJhbnNmb3JtZXIiLCJcIlJvYm90cyBXaXRoIEZsYXdlZCBBSSBNYWtlIFNleGlzdCBBbmQgUmFjaXN0IERlY2lzaW9ucywgRXhwZXJpbWVudCBTaG93c1wiIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjIwNjI3MjI1ODI3L2h0dHBzOi8vd3d3LnNjaWVuY2VhbGVydC5jb20vcm9ib3RzLXdpdGgtZmxhd2VkLWFpLW1ha2Utc2V4aXN0LXJhY2lzdC1hbmQtdG94aWMtZGVjaXNpb25zLWV4cGVyaW1lbnQtc2hvd3MiLCJEb21pbmdvcywgUGVkcm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZWRyb19Eb21pbmdvcyIsIkJhc2ljIEJvb2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaWNfQm9va3MiLCI5NzgtMC00NjUwLTY1NzAtNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNDY1MC02NTcwLTciLCJEcmV5ZnVzLCBIdWJlcnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWJlcnRfRHJleWZ1cyIsIldoYXQgQ29tcHV0ZXJzIENhbid0IERvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2hhdF9Db21wdXRlcnNfQ2FuJTI3dF9EbyIsIjk3OC0wLTA2MDEtMTA4Mi02IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wNjAxLTEwODItNiIsIk1pbmQgb3ZlciBNYWNoaW5lOiBUaGUgUG93ZXIgb2YgSHVtYW4gSW50dWl0aW9uIGFuZCBFeHBlcnRpc2UgaW4gdGhlIEVyYSBvZiB0aGUgQ29tcHV0ZXIiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZG92ZXJtYWNoaW5lcDAwZHJleSIsIjk3OC0wLTAyOTAtODA2MC0zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0wMjkwLTgwNjAtMyIsIkR5c29uLCBHZW9yZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfRHlzb25fKHNjaWVuY2VfaGlzdG9yaWFuKSIsIjk3OC0wLTczODItMDAzMC05IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC03MzgyLTAwMzAtOSIsIlRoZSBOZXJ2b3VzIFN5c3RlbSI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9uZXJ2b3Vzc3lzdGVtMDAwMGVkZWwiLCI5NzgtMC03OTEwLTA0NjQtNyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNzkxMC0wNDY0LTciLCJcIlBvbGw6IEFJIHBvc2VzIHJpc2sgdG8gaHVtYW5pdHksIGFjY29yZGluZyB0byBtYWpvcml0eSBvZiBBbWVyaWNhbnNcIiI6Imh0dHBzOi8vYXJzdGVjaG5pY2EuY29tL2luZm9ybWF0aW9uLXRlY2hub2xvZ3kvMjAyMy8wNS9wb2xsLTYxLW9mLWFtZXJpY2Fucy1zYXktYWktdGhyZWF0ZW5zLWh1bWFuaXR5cy1mdXR1cmUiLCI5NzgtMC04MDIxLTE4MzktNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtODAyMS0xODM5LTQiLCJcIldpbGwgcm9ib3RzIGNyZWF0ZSBtb3JlIGpvYnMgdGhhbiB0aGV5IGRlc3Ryb3k/XCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDE1L3NlcC8wNi93aWxsLXJvYm90cy1jcmVhdGUtZGVzdHJveS1qb2JzIiwiXCJGb3ggTmV3cyBQb2xsXCIiOiJodHRwczovL3N0YXRpYy5mb3huZXdzLmNvbS9mb3huZXdzLmNvbS9jb250ZW50L3VwbG9hZHMvMjAyMy8wNS9Gb3hfQXByaWwtMjEtMjQtMjAyM19Db21wbGV0ZV9OYXRpb25hbF9Ub3BsaW5lX01heS0xLVJlbGVhc2UucGRmIiwiMTAuMS4xLjM5NS40MTYiOiJodHRwczovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS4zOTUuNDE2IiwiMTAuMTAxNi9qLnRlY2hmb3JlLjIwMTYuMDguMDE5IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLnRlY2hmb3JlLjIwMTYuMDguMDE5IiwiMDA0MC0xNjI1IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDA0MC0xNjI1IiwiXCJGcm9tIG5vdCB3b3JraW5nIHRvIG5ldXJhbCBuZXR3b3JraW5nXCIiOiJodHRwczovL3d3dy5lY29ub21pc3QuY29tL25ld3Mvc3BlY2lhbC1yZXBvcnQvMjE3MDA3NTYtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYm9vbS1iYXNlZC1vbGQtaWRlYS1tb2Rlcm4tdHdpc3Qtbm90IiwiSlNUT1IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KU1RPUl8oaWRlbnRpZmllcikiLCJcIklzIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIHJlYWxseSBhbiBleGlzdGVudGlhbCB0aHJlYXQgdG8gaHVtYW5pdHk/XCIiOiJodHRwOi8vdGhlYnVsbGV0aW4ub3JnL2FydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXJlYWxseS1leGlzdGVudGlhbC10aHJlYXQtaHVtYW5pdHk4NTc3IiwiXCJFbG9uIE11c2s6IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIG91ciBiaWdnZXN0IGV4aXN0ZW50aWFsIHRocmVhdFwiIjoiaHR0cHM6Ly93d3cudGhlZ3VhcmRpYW4uY29tL3RlY2hub2xvZ3kvMjAxNC9vY3QvMjcvZWxvbi1tdXNrLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWFpLWJpZ2dlc3QtZXhpc3RlbnRpYWwtdGhyZWF0IiwiU29mdHdhcmUgc3R1ZGllczogYSBsZXhpY29uIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL3NvZnR3YXJlc3R1ZGllc2wwMGZ1bGxfMDA3IiwiOTc4LTEtNDM1Ni00Nzg3LTkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTQzNTYtNDc4Ny05IiwiXCIxMCB5ZWFycyBsYXRlciwgZGVlcCBsZWFybmluZyAncmV2b2x1dGlvbicgcmFnZXMgb24sIHNheSBBSSBwaW9uZWVycyBIaW50b24sIExlQ3VuIGFuZCBMaVwiIjoiaHR0cHM6Ly92ZW50dXJlYmVhdC5jb20vYWkvMTAteWVhcnMtb24tYWktcGlvbmVlcnMtaGludG9uLWxlY3VuLWxpLXNheS1kZWVwLWxlYXJuaW5nLXJldm9sdXRpb24td2lsbC1jb250aW51ZSIsIkdvb2QsIEkuIEouIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fSi5fR29vZCIsIlNwZWN1bGF0aW9ucyBDb25jZXJuaW5nIHRoZSBGaXJzdCBVbHRyYWludGVsbGlnZW50IE1hY2hpbmUiOiJodHRwczovL2V4aGliaXRzLnN0YW5mb3JkLmVkdS9mZWlnZW5iYXVtL2NhdGFsb2cvZ3o3MjdyZzM4NjkiLCJEZWVwIExlYXJuaW5nIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNDE2MTExMDEwL2h0dHA6Ly93d3cuZGVlcGxlYXJuaW5nYm9vay5vcmciLCIxNjA2LjA4ODEzIjoiaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE2MDYuMDg4MTMiLCIxMC4xNjA5L2FpbWFnLnYzOGkzLjI3NDEiOiJodHRwczovL2RvaS5vcmcvMTAuMTYwOSUyRmFpbWFnLnYzOGkzLjI3NDEiLCJHb3Zlcm5tZW50IEFjY291bnRhYmlsaXR5IE9mZmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvdmVybm1lbnRfQWNjb3VudGFiaWxpdHlfT2ZmaWNlIiwiQ29uc3VtZXIgRGF0YTogSW5jcmVhc2luZyBVc2UgUG9zZXMgUmlza3MgdG8gUHJpdmFjeSI6Imh0dHBzOi8vd3d3Lmdhby5nb3YvcHJvZHVjdHMvZ2FvLTIyLTEwNjA5NiIsIlwiR29vZ2xlJ3MgUGhvdG8gQXBwIFN0aWxsIENhbid0IEZpbmQgR29yaWxsYXMuIEFuZCBOZWl0aGVyIENhbiBBcHBsZSdzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA1LzIyL3RlY2hub2xvZ3kvYWktcGhvdG8tbGFiZWxzLWdvb2dsZS1hcHBsZS5odG1sIiwiXCJIZXJlJ3Mgd2hlcmUgdGhlIEEuSS4gam9icyBhcmVcIiI6Imh0dHBzOi8vd3d3LmNuYmMuY29tLzIwMjMvMDQvMDUvYWktam9icy1zZWUtdGhlLXN0YXRlLWJ5LXN0YXRlLWRhdGEtZnJvbS1hLXN0YW5mb3JkLXN0dWR5Lmh0bWwiLCJIYXJhcmksIFl1dmFsIE5vYWgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ZdXZhbF9Ob2FoX0hhcmFyaSIsIlwiV2h5IFRlY2hub2xvZ3kgRmF2b3JzIFR5cmFubnlcIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS9tYWdhemluZS9hcmNoaXZlLzIwMTgvMTAveXV2YWwtbm9haC1oYXJhcmktdGVjaG5vbG9neS10eXJhbm55LzU2ODMzMCIsIlwiQUkgYW5kIHRoZSBmdXR1cmUgb2YgaHVtYW5pdHlcIiI6Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TFdpTS1MdVJlNnciLCJIYXVnZWxhbmQsIEpvaG4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX0hhdWdlbGFuZCIsIjk3OC0wLTI2MjAtODE1My01IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0yNjIwLTgxNTMtNSIsIlNhaW5hdGgsIFQuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyYV9TYWluYXRoIiwiMjAxMklTUE0uLi4yOS4uLjgySCI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDEySVNQTS4uLjI5Li4uODJIIiwiMTAuMTEwOS9tc3AuMjAxMi4yMjA1NTk3IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjExMDklMkZtc3AuMjAxMi4yMjA1NTk3IiwiXCJCaWxsIEdhdGVzIG9uIGRhbmdlcnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6ICdJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHNvbWUgcGVvcGxlIGFyZSBub3QgY29uY2VybmVkJ1wiIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL25ld3MvdGhlLXN3aXRjaC93cC8yMDE1LzAxLzI4L2JpbGwtZ2F0ZXMtb24tZGFuZ2Vycy1vZi1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1kb250LXVuZGVyc3RhbmQtd2h5LXNvbWUtcGVvcGxlLWFyZS1ub3QtY29uY2VybmVkIiwiMDE5MC04Mjg2IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMDE5MC04Mjg2IiwiTXVsdGlsYXllciBGZWVkZm9yd2FyZCBOZXR3b3JrcyBhcmUgVW5pdmVyc2FsIEFwcHJveGltYXRvcnMiOiJodHRwOi8vY29nbml0aXZlbWVkaXVtLmNvbS9tYWdpY19wYXBlci9hc3NldHMvSG9ybmlrLnBkZiIsIlwiVGhlIENvbXB1dGF0aW9uYWwgVGhlb3J5IG9mIE1pbmRcIiI6Imh0dHA6Ly9wbGF0by5zdGFuZm9yZC5lZHUvZW50cmllcy9jb21wdXRhdGlvbmFsLW1pbmQiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGF0IEVkaW5idXJnaCBVbml2ZXJzaXR5OiBhIFBlcnNwZWN0aXZlXCIiOiJodHRwOi8vd3d3LmluZi5lZC5hYy51ay9hYm91dC9BSWhpc3RvcnkuaHRtbCIsIlwiUm9ib3RzIGFuZCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5pZ21jaGljYWdvLm9yZy9zdXJ2ZXlzL3JvYm90cy1hbmQtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCIxMC4xMDgwLzIxNTgyMDQxLjIwMTguMTU2MzgwMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDgwJTJGMjE1ODIwNDEuMjAxOC4xNTYzODAzIiwiMjE1OC0yMDQxIjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMjE1OC0yMDQxIiwiMjAxNVNjaS4uLjM0OS4uMjU1SiI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDE1U2NpLi4uMzQ5Li4yNTVKIiwiMTAuMTEyNi9zY2llbmNlLmFhYTg0MTUiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuYWFhODQxNSIsIkthaG5lbWFuLCBEYW5pZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYW5pZWxfS2FobmVtYW4iLCJUaGlua2luZywgRmFzdCBhbmQgU2xvdyI6Imh0dHBzOi8vYm9va3MuZ29vZ2xlLmNvbS9ib29rcz9pZD1adUtUdkVSdVBHOEMiLCI5NzgtMS00Mjk5LTY5MzUtMiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTEtNDI5OS02OTM1LTIiLCJUdmVyc2t5LCBBbW9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1vc19UdmVyc2t5IiwiMTk3NFNjaS4uLjE4NS4xMTI0VCI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8xOTc0U2NpLi4uMTg1LjExMjRUIiwiMTAuMTEyNi9zY2llbmNlLjE4NS40MTU3LjExMjQiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuMTg1LjQxNTcuMTEyNCIsIjk3OC0wLTUyMTItODQxNC0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC01MjEyLTg0MTQtMSIsIlwiUmVndWxhdGUgQUk/IEdPUCBtdWNoIG1vcmUgc2tlcHRpY2FsIHRoYW4gRGVtcyB0aGF0IGdvdmVybm1lbnQgY2FuIGRvIGl0IHJpZ2h0OiBwb2xsXCIiOiJodHRwczovL3d3dy5mb3huZXdzLmNvbS9wb2xpdGljcy9yZWd1bGF0ZS1haS1nb3AtbXVjaC1tb3JlLXNrZXB0aWNhbC10aGFuLWRlbXMtdGhhdC10aGUtZ292ZXJubWVudC1jYW4tZG8taXQtcmlnaHQtcG9sbCIsIlwiTm9hbSBDaG9tc2t5IG9uIFdoZXJlIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFdlbnQgV3JvbmdcIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS90ZWNobm9sb2d5L2FyY2hpdmUvMjAxMi8xMS9ub2FtLWNob21za3ktb24td2hlcmUtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2Utd2VudC13cm9uZy8yNjE2MzcvP3NpbmdsZV9wYWdlPXRydWUiLCJcIktpc21ldFwiIjoiaHR0cDovL3d3dy5haS5taXQuZWR1L3Byb2plY3RzL2h1bWFub2lkLXJvYm90aWNzLWdyb3VwL2tpc21ldC9raXNtZXQuaHRtbCIsIktpc3NpbmdlciwgSGVucnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZW5yeV9LaXNzaW5nZXIiLCJcIlRoZSBDaGFsbGVuZ2Ugb2YgQmVpbmcgSHVtYW4gaW4gdGhlIEFnZSBvZiBBSVwiIjoiaHR0cHM6Ly93d3cud3NqLmNvbS9hcnRpY2xlcy9iZWluZy1odW1hbi1hcnRpZmljYWwtaW50ZWxsaWdlbmNlLWFpLWNoZXNzLWFudGliaW90aWMtcGhpbG9zb3BoeS1ldGhpY3MtYmlsbC1vZi1yaWdodHMtMTE2MzU3OTUyNzEiLCJUaGUgV2FsbCBTdHJlZXQgSm91cm5hbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZV9XYWxsX1N0cmVldF9Kb3VybmFsIiwiXCJHUFVzIENvbnRpbnVlIHRvIERvbWluYXRlIHRoZSBBSSBBY2NlbGVyYXRvciBNYXJrZXQgZm9yIE5vd1wiIjoiaHR0cHM6Ly93d3cuaW5mb3JtYXRpb253ZWVrLmNvbS9haS1vci1tYWNoaW5lLWxlYXJuaW5nL2dwdXMtY29udGludWUtdG8tZG9taW5hdGUtdGhlLWFpLWFjY2VsZXJhdG9yLW1hcmtldC1mb3Itbm93IiwiXCJVc2luZyBDb21tZXJjaWFsIEtub3dsZWRnZSBCYXNlcyBmb3IgQ2xpbmljYWwgRGVjaXNpb24gU3VwcG9ydDogT3Bwb3J0dW5pdGllcywgSHVyZGxlcywgYW5kIFJlY29tbWVuZGF0aW9uc1wiIjoiaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DMTUxMzY4MSIsIjEwLjExOTcvamFtaWEuTTIwNTUiOiJodHRwczovL2RvaS5vcmcvMTAuMTE5NyUyRmphbWlhLk0yMDU1IiwiS3VyendlaWwsIFJheSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JheV9LdXJ6d2VpbCIsIlRoZSBTaW5ndWxhcml0eSBpcyBOZWFyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1Npbmd1bGFyaXR5X2lzX05lYXIiLCI5NzgtMC02NzAwLTMzODQtMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNjcwMC0zMzg0LTMiLCJcIlRoZSBjaGFuZ2luZyBzY2llbmNlIG9mIG1hY2hpbmUgbGVhcm5pbmdcIiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczEwOTk0LTAxMS01MjQyLXkiLCJNYWNoaW5lIExlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjaGluZV9MZWFybmluZ18oam91cm5hbCkiLCIxMC4xMDA3L3MxMDk5NC0wMTEtNTI0Mi15IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkZzMTA5OTQtMDExLTUyNDIteSIsIkFuZ3dpbiwgSnVsaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KdWxpYV9Bbmd3aW4iLCJcIkhvdyBXZSBBbmFseXplZCB0aGUgQ09NUEFTIFJlY2lkaXZpc20gQWxnb3JpdGhtXCIiOiJodHRwczovL3d3dy5wcm9wdWJsaWNhLm9yZy9hcnRpY2xlL2hvdy13ZS1hbmFseXplZC10aGUtY29tcGFzLXJlY2lkaXZpc20tYWxnb3JpdGhtIiwiXCJXaGF0IGlzIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIb3cgRG9lcyBBSSBXb3JrPyBUZWNoVGFyZ2V0XCIiOiJodHRwczovL3d3dy50ZWNodGFyZ2V0LmNvbS9zZWFyY2hlbnRlcnByaXNlYWkvZGVmaW5pdGlvbi9BSS1BcnRpZmljaWFsLUludGVsbGlnZW5jZSIsIlwiV2lsbCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBkZXN0cm95IGh1bWFuaXR5PyBIZXJlIGFyZSA1IHJlYXNvbnMgbm90IHRvIHdvcnJ5XCIiOiJodHRwczovL3d3dy52b3guY29tLzIwMTQvOC8yMi82MDQzNjM1LzUtcmVhc29ucy13ZS1zaG91bGRudC13b3JyeS1hYm91dC1zdXBlci1pbnRlbGxpZ2VudC1jb21wdXRlcnMtdGFraW5nIiwiTGVuYXQsIERvdWdsYXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb3VnbGFzX0xlbmF0IiwiOTc4LTAtMjAxNS0xNzUyLTEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTIwMTUtMTc1Mi0xIiwiTGlnaHRoaWxsLCBKYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0phbWVzX0xpZ2h0aGlsbCIsIlRoZSBOYXJyYXRpdmUgYW5kIHRoZSBBbGdvcml0aG06IEdlbnJlcyBvZiBDcmVkaXQgUmVwb3J0aW5nIGZyb20gdGhlIE5pbmV0ZWVudGggQ2VudHVyeSB0byBUb2RheSI6Imh0dHBzOi8vbXByYS51Yi51bmktbXVlbmNoZW4uZGUvMjgxNDIvMS9NUFJBX3BhcGVyXzI4MTQyLnBkZiIsIjEwLjIxMzkvc3Nybi4xNzM2MjgzIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjIxMzklMkZzc3JuLjE3MzYyODMiLCJcIlJvYm90cyBXaWxsIFRha2UgSm9icywgYnV0IE5vdCBhcyBGYXN0IGFzIFNvbWUgRmVhciwgTmV3IFJlcG9ydCBTYXlzXCIiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDE3LzAxLzEyL3RlY2hub2xvZ3kvcm9ib3RzLXdpbGwtdGFrZS1qb2JzLWJ1dC1ub3QtYXMtZmFzdC1hcy1zb21lLWZlYXItbmV3LXJlcG9ydC1zYXlzLmh0bWwiLCIxMC4xLjEuODMuNzYxNSI6Imh0dHBzOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjgzLjc2MTUiLCIxMC4xMDgwLzA5NTQwMDkwMzEwMDAxNjU1MTEwIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwODAlMkYwOTU0MDA5MDMxMDAwMTY1NTExMCIsIlwiTWFjaGluZSBFdGhpY3NcIiI6Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTEyOTA0NDgyMS9odHRwOi8vd3d3LmFhYWkub3JnL0xpYnJhcnkvU3ltcG9zaWEvRmFsbC9mczA1LTA2IiwiXCJUaGUgY2FzZSBhZ2FpbnN0IGtpbGxlciByb2JvdHMsIGZyb20gYSBndXkgYWN0dWFsbHkgd29ya2luZyBvbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly93d3cuaHJ3Lm9yZy9yZXBvcnQvMjAxMi8xMS8xOS9sb3NpbmctaHVtYW5pdHkvY2FzZS1hZ2FpbnN0LWtpbGxlci1yb2JvdHMiLCJcIldoYXQgam9icyB3aWxsIHN0aWxsIGJlIGFyb3VuZCBpbiAyMCB5ZWFycz8gUmVhZCB0aGlzIHRvIHByZXBhcmUgeW91ciBmdXR1cmVcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS91cy1uZXdzLzIwMTcvanVuLzI2L2pvYnMtZnV0dXJlLWF1dG9tYXRpb24tcm9ib3RzLXNraWxscy1jcmVhdGl2ZS1oZWFsdGgiLCJBSUA1MDogQUkgUGFzdCwgUHJlc2VudCwgRnV0dXJlIjoiaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDgxMDA4MTIwMjM4L2h0dHA6Ly93d3cuZW5nYWdpbmdleHBlcmllbmNlLmNvbS8yMDA2LzA3L2FpNTBfYWlfcGFzdF9wci5odG1sIiwiXCJHb29nbGUncyBHZW1pbmk6IGlzIHRoZSBuZXcgQUkgbW9kZWwgcmVhbGx5IGJldHRlciB0aGFuIENoYXRHUFQ/XCIiOiJodHRwczovL3RoZWNvbnZlcnNhdGlvbi5jb20vZ29vZ2xlcy1nZW1pbmktaXMtdGhlLW5ldy1haS1tb2RlbC1yZWFsbHktYmV0dGVyLXRoYW4tY2hhdGdwdC0yMTk1MjYiLCJNaW5za3ksIE1hcnZpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcnZpbl9NaW5za3kiLCJUaGUgU29jaWV0eSBvZiBNaW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1NvY2lldHlfb2ZfTWluZCIsIk1jQ2FydGh5LCBKb2huIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9NY0NhcnRoeV8oY29tcHV0ZXJfc2NpZW50aXN0KSIsIlJvY2hlc3RlciwgTmF0aGFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0aGFuX1JvY2hlc3RlciIsIlNoYW5ub24sIENsYXVkZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXVkZV9TaGFubm9uIiwiXCJBIFByb3Bvc2FsIGZvciB0aGUgRGFydG1vdXRoIFN1bW1lciBSZXNlYXJjaCBQcm9qZWN0IG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwNzA4MjYyMzAzMTAvaHR0cDovL3d3dy1mb3JtYWwuc3RhbmZvcmQuZWR1L2ptYy9oaXN0b3J5L2RhcnRtb3V0aC9kYXJ0bW91dGguaHRtbCIsIldoYXQgaXMgQUk/IjoiaHR0cDovL2ptYy5zdGFuZm9yZC5lZHUvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2Uvd2hhdC1pcy1haS9pbmRleC5odG1sIiwiMTAuMS4xLjg1Ljg5MDQiOiJodHRwczovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS44NS44OTA0IiwiMTAuMTAwNy9zMTA2NzYtMDA3LTkxMzgtMiI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3JTJGczEwNjc2LTAwNy05MTM4LTIiLCIxMC4xMDE3L1MwMjY5ODg4OTA1MDAwNDA4IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTclMkZTMDI2OTg4ODkwNTAwMDQwOCIsIldpbGwgUm9ib3RzIEF1dG9tYXRlIFlvdXIgSm9iIEF3YXk/IEZ1bGwgRW1wbG95bWVudCwgQmFzaWMgSW5jb21lLCBhbmQgRWNvbm9taWMgRGVtb2NyYWN5IjoiaHR0cHM6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTMwNDQ0NDgiLCIxMC4yMTM5L3Nzcm4uMzA0NDQ0OCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4yMTM5JTJGc3Nybi4zMDQ0NDQ4IiwiU1NSTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NTUk5fKGlkZW50aWZpZXIpIiwiOTc4LTEtNDYxNC02OTQwLTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0xLTQ2MTQtNjk0MC03IiwiTW9yYXZlYywgSGFucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbnNfTW9yYXZlYyIsIk1pbmQgQ2hpbGRyZW4iOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZGNoaWxkcmVuZnV0dTAwbW9yYSIsIjk3OC0wLTY3NDUtNzYxNi0yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC02NzQ1LTc2MTYtMiIsIlwiQXV0b21hdGlvbiBhbmQgYW54aWV0eVwiIjoiaHR0cHM6Ly93d3cuZWNvbm9taXN0LmNvbS9uZXdzL3NwZWNpYWwtcmVwb3J0LzIxNzAwNzU4LXdpbGwtc21hcnRlci1tYWNoaW5lcy1jYXVzZS1tYXNzLXVuZW1wbG95bWVudC1hdXRvbWF0aW9uLWFuZC1hbnhpZXR5IiwiXCJGdXR1cmUgUHJvZ3Jlc3MgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgUG9sbCBBbW9uZyBFeHBlcnRzXCIiOiJodHRwOi8vd3d3LnNvcGhpYS5kZS9wZGYvMjAxNF9QVC1BSV9wb2xscy5wZGYiLCIxMC4xMTQ1LzI2Mzk0NzUuMjYzOTQ3OCI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMTQ1JTJGMjYzOTQ3NS4yNjM5NDc4IiwiMTAuMTAxNi9qLmltYXZpcy4yMDA3LjA4LjAxMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2JTJGai5pbWF2aXMuMjAwNy4wOC4wMTMiLCJOZXdlbGwsIEFsbGVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxsZW5fTmV3ZWxsIiwiU2ltb24sIEguIEEuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIlwiQ29tcHV0ZXIgU2NpZW5jZSBhcyBFbXBpcmljYWwgSW5xdWlyeTogU3ltYm9scyBhbmQgU2VhcmNoXCIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM2MDAxOC4zNjAwMjIiLCIxMC4xMTQ1LzM2MDAxOC4zNjAwMjIiOiJodHRwczovL2RvaS5vcmcvMTAuMTE0NSUyRjM2MDAxOC4zNjAwMjIiLCJcIkhvdyBZb3VUdWJlIERyaXZlcyBQZW9wbGUgdG8gdGhlIEludGVybmV0J3MgRGFya2VzdCBDb3JuZXJzXCIiOiJodHRwczovL3d3dy53c2ouY29tL2FydGljbGVzL2hvdy15b3V0dWJlLWRyaXZlcy12aWV3ZXJzLXRvLXRoZS1pbnRlcm5ldHMtZGFya2VzdC1jb3JuZXJzLTE1MTgwMjA0NzgiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFByZXBhcmVzIGZvciAyMDAxXCIiOiJodHRwczovL2FpLnN0YW5mb3JkLmVkdS9+bmlsc3Nvbi9PbmxpbmVQdWJzLU5pbHMvR2VuZXJhbCUyMEVzc2F5cy9BSU1hZzA0LTA0LTAwMi5wZGYiLCJBc3NvY2lhdGlvbiBmb3IgdGhlIEFkdmFuY2VtZW50IG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNzb2NpYXRpb25fZm9yX3RoZV9BZHZhbmNlbWVudF9vZl9BcnRpZmljaWFsX0ludGVsbGlnZW5jZSIsIk5SQyAoVW5pdGVkIFN0YXRlcyBOYXRpb25hbCBSZXNlYXJjaCBDb3VuY2lsKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXRlZF9TdGF0ZXNfTmF0aW9uYWxfUmVzZWFyY2hfQ291bmNpbCIsIk9tb2h1bmRybywgU3RldmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGV2ZV9PbW9odW5kcm8iLCJcIk9uIHRoZSBpbXBhY3Qgb2Ygcm9ib3RpY3MgaW4gYmVoYXZpb3JhbCBhbmQgY29nbml0aXZlIHNjaWVuY2VzOiBmcm9tIGluc2VjdCBuYXZpZ2F0aW9uIHRvIGh1bWFuIGNvZ25pdGl2ZSBkZXZlbG9wbWVudFwiIjoiaHR0cDovL3d3dy5weW91ZGV5ZXIuY29tL0lFRUVUQU1ET3VkZXllcjEwLnBkZiIsIjEwLjExMDkvdGFtZC4yMDA5LjIwMzkwNTciOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOSUyRnRhbWQuMjAwOS4yMDM5MDU3IiwiMTAuMTAwNy85NzgtMy01NDAtNjg2NzctNF8xIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkY5NzgtMy01NDAtNjg2NzctNF8xIiwiOTc4LTMtNTQwMi0zNzMzLTQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0zLTU0MDItMzczMy00IiwiUGlua2VyLCBTdGV2ZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGV2ZW5fUGlua2VyIiwiVGhlIExhbmd1YWdlIEluc3RpbmN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0xhbmd1YWdlX0luc3RpbmN0IiwiOTc4LTAtMDYxMy0zNjQ2LTEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVjaWFsOkJvb2tTb3VyY2VzLzk3OC0wLTA2MTMtMzY0Ni0xIiwiXCJBIHJldmlldyBvZiBhZmZlY3RpdmUgY29tcHV0aW5nOiBGcm9tIHVuaW1vZGFsIGFuYWx5c2lzIHRvIG11bHRpbW9kYWwgZnVzaW9uXCIiOiJodHRwOi8vcmVzZWFyY2hyZXBvc2l0b3J5Lm5hcGllci5hYy51ay9PdXRwdXQvMTc5MjQyOSIsIjEwLjEwMTYvai5pbmZmdXMuMjAxNy4wMi4wMDMiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNiUyRmouaW5mZnVzLjIwMTcuMDIuMDAzIiwiMTg5My8yNTQ5MCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTg5MyUyRjI1NDkwIiwiXCJNaWNyb3NvZnQncyBCaWxsIEdhdGVzIGluc2lzdHMgQUkgaXMgYSB0aHJlYXRcIiI6Imh0dHBzOi8vd3d3LmJiYy5jby51ay9uZXdzLzMxMDQ3NzgwIiwiXCJSZXZlYWxlZDogVGhlIEF1dGhvcnMgV2hvc2UgUGlyYXRlZCBCb29rcyBhcmUgUG93ZXJpbmcgR2VuZXJhdGl2ZSBBSVwiIjoiaHR0cHM6Ly93d3cudGhlYXRsYW50aWMuY29tL3RlY2hub2xvZ3kvYXJjaGl2ZS8yMDIzLzA4L2Jvb2tzMy1haS1tZXRhLWxsYW1hLXBpcmF0ZWQtYm9va3MvNjc1MDYzLyIsIlwiVGhpbmtpbmcgTWFjaGluZXM6IFRoZSBTZWFyY2ggZm9yIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxODA4MTkxNTI0NTUvaHR0cHM6Ly93d3cuc2NpZW5jZWhpc3Rvcnkub3JnL2Rpc3RpbGxhdGlvbnMvbWFnYXppbmUvdGhpbmtpbmctbWFjaGluZXMtdGhlLXNlYXJjaC1mb3ItYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UiLCJcIkZpdmUgZXhwZXJ0cyBzaGFyZSB3aGF0IHNjYXJlcyB0aGVtIHRoZSBtb3N0IGFib3V0IEFJXCIiOiJodHRwczovL2Z1dHVyaXNtLmNvbS9hcnRpZmljaWFsLWludGVsbGlnZW5jZS1leHBlcnRzLWZlYXIvYW1wIiwiUnVzc2VsbCwgU3R1YXJ0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X0ouX1J1c3NlbGwiLCJIdW1hbiBDb21wYXRpYmxlOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgdGhlIFByb2JsZW0gb2YgQ29udHJvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuX0NvbXBhdGlibGUiLCI5NzgtMC01MjU1LTU4NjEtMyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtNTI1NS01ODYxLTMiLCJcIlN0ZXBoZW4gSGF3a2luZywgRWxvbiBNdXNrLCBhbmQgQmlsbCBHYXRlcyBXYXJuIEFib3V0IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIiOiJodHRwczovL29ic2VydmVyLmNvbS8yMDE1LzA4L3N0ZXBoZW4taGF3a2luZy1lbG9uLW11c2stYW5kLWJpbGwtZ2F0ZXMtd2Fybi1hYm91dC1hcnRpZmljaWFsLWludGVsbGlnZW5jZSIsIlwiQ29tcHV0ZXIgc2F5cyBubzogd2h5IG1ha2luZyBBSXMgZmFpciwgYWNjb3VudGFibGUgYW5kIHRyYW5zcGFyZW50IGlzIGNydWNpYWxcIiI6Imh0dHBzOi8vd3d3LnRoZWd1YXJkaWFuLmNvbS9zY2llbmNlLzIwMTcvbm92LzA1L2NvbXB1dGVyLXNheXMtbm8td2h5LW1ha2luZy1haXMtZmFpci1hY2NvdW50YWJsZS1hbmQtdHJhbnNwYXJlbnQtaXMtY3J1Y2lhbCIsIlwiRXhwbG9yaW5nIExJTUUgRXhwbGFuYXRpb25zIGFuZCB0aGUgTWF0aGVtYXRpY3MgQmVoaW5kIEl0XCIiOiJodHRwczovL3d3dy5jb2RlbW90aW9uLmNvbS9tYWdhemluZS9haS1tbC9saW1lLWV4cGxhaW5hYmxlLWFpIiwiMTAuMTAyMy9BOjEwMTMyOTg1MDcxMTQiOiJodHRwczovL2RvaS5vcmcvMTAuMTAyMyUyRkElM0ExMDEzMjk4NTA3MTE0IiwiU2NobWlkaHViZXIsIEouIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSiVDMyVCQ3JnZW5fU2NobWlkaHViZXIiLCIxNDA0Ljc4MjgiOiJodHRwczovL2FyeGl2Lm9yZy9hYnMvMTQwNC43ODI4IiwiMTAuMTAxNi9qLm5ldW5ldC4yMDE0LjA5LjAwMyI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2JTJGai5uZXVuZXQuMjAxNC4wOS4wMDMiLCJTY2htaWRodWJlciwgSsO8cmdlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0olQzMlQkNyZ2VuX1NjaG1pZGh1YmVyIiwiXCJBbm5vdGF0ZWQgSGlzdG9yeSBvZiBNb2Rlcm4gQUkgYW5kIERlZXAgTGVhcm5pbmdcIiI6Imh0dHBzOi8vcGVvcGxlLmlkc2lhLmNoL35qdWVyZ2VuLyIsIlNlYXJsZSwgSm9obiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fU2VhcmxlIiwiXCJNaW5kcywgQnJhaW5zIGFuZCBQcm9ncmFtc1wiIjoiaHR0cDovL2NvZ3ByaW50cy5vcmcvNzE1MC8xLzEwLjEuMS44My41MjQ4LnBkZiIsIjEwLjEwMTcvUzAxNDA1MjVYMDAwMDU3NTYiOiJodHRwczovL2RvaS5vcmcvMTAuMTAxNyUyRlMwMTQwNTI1WDAwMDA1NzU2IiwiTWluZCwgbGFuZ3VhZ2UgYW5kIHNvY2lldHkiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbWluZGxhbmd1YWdlc29jaTAwc2VhciIsIjk3OC0wLTQ2NTAtNDUyMS0xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC00NjUwLTQ1MjEtMSIsIlwiSG93IEdvb2dsZSBQbGFucyB0byBTb2x2ZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cHM6Ly93d3cudGVjaG5vbG9neXJldmlldy5jb20vMjAxNi8wMy8zMS8xNjEyMzQvaG93LWdvb2dsZS1wbGFucy10by1zb2x2ZS1hcnRpZmljaWFsLWludGVsbGlnZW5jZSIsIlwiQ2hhdEdQVC00IENyZWF0b3IgSWx5YSBTdXRza2V2ZXIgb24gQUkgSGFsbHVjaW5hdGlvbnMgYW5kIEFJIERlbW9jcmFjeVwiIjoiaHR0cHM6Ly93d3cuZm9yYmVzLmNvbS9zaXRlcy9jcmFpZ3NtaXRoLzIwMjMvMDMvMTUvZ3B0LTQtY3JlYXRvci1pbHlhLXN1dHNrZXZlci1vbi1haS1oYWxsdWNpbmF0aW9ucy1hbmQtYWktZGVtb2NyYWN5IiwiMTAuMTEwOS85My4zMTE2NTMiOiJodHRwczovL2RvaS5vcmcvMTAuMTEwOSUyRjkzLjMxMTY1MyIsIlNvbG9tb25vZmYsIFJheSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JheV9Tb2xvbW9ub2ZmIiwiQW4gSW5kdWN0aXZlIEluZmVyZW5jZSBNYWNoaW5lIjoiaHR0cDovL3dvcmxkLnN0ZC5jb20vfnJqcy9pbmRpbmY1Ni5wZGYiLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEluZGV4IFJlcG9ydCAyMDIzL0NoYXB0ZXIgNjogUG9saWN5IGFuZCBHb3Zlcm5hbmNlXCIiOiJodHRwczovL2FpaW5kZXguc3RhbmZvcmQuZWR1L3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA0L0hBSV9BSS1JbmRleC1SZXBvcnQtMjAyM19DSEFQVEVSXzYtMS5wZGYiLCIxMC4xMDA3LzExNTczNTQ4IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDclMkYxMTU3MzU0OCIsIjk3OC0zLTU0MDItOTYyMS04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMy01NDAyLTk2MjEtOCIsIlwiJ0dvZGZhdGhlciBvZiBBSScgR2VvZmZyZXkgSGludG9uIHF1aXRzIEdvb2dsZSBhbmQgd2FybnMgb3ZlciBkYW5nZXJzIG9mIG1pc2luZm9ybWF0aW9uXCIiOiJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vdGVjaG5vbG9neS8yMDIzL21heS8wMi9nZW9mZnJleS1oaW50b24tZ29kZmF0aGVyLW9mLWFpLXF1aXRzLWdvb2dsZS13YXJucy1kYW5nZXJzLW9mLW1hY2hpbmUtbGVhcm5pbmciLCJUaGUgR3VhcmRpYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfR3VhcmRpYW4iLCJcIldoYXQgSm9icyBXaWxsIHRoZSBSb2JvdHMgVGFrZT9cIiI6Imh0dHBzOi8vd3d3LnRoZWF0bGFudGljLmNvbS9idXNpbmVzcy9hcmNoaXZlLzIwMTQvMDEvd2hhdC1qb2JzLXdpbGwtdGhlLXJvYm90cy10YWtlLzI4MzIzOSIsIlJvYm90aWNzOiBUaGUgTWFycmlhZ2Ugb2YgQ29tcHV0ZXJzIGFuZCBNYWNoaW5lcyI6Imh0dHBzOi8vYXJjaGl2ZS5vcmcvZGV0YWlscy9pc2JuXzk3ODA4MTYwMjYyODkiLCI5NzgtMC04MTYwLTI2MjgtOSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtODE2MC0yNjI4LTkiLCJcIlRyYW5zZm9ybWVycyBSZXZvbHV0aW9uaXplZCBBSS4gV2hhdCBXaWxsIFJlcGxhY2UgVGhlbT9cIiI6Imh0dHBzOi8vd3d3LmZvcmJlcy5jb20vc2l0ZXMvcm9idG9ld3MvMjAyMy8wOS8wMy90cmFuc2Zvcm1lcnMtcmV2b2x1dGlvbml6ZWQtYWktd2hhdC13aWxsLXJlcGxhY2UtdGhlbSIsIlR1cmluZywgQWxhbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsYW5fVHVyaW5nIiwiXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIiI6Imh0dHBzOi8vYWNhZGVtaWMub3VwLmNvbS9taW5kL2FydGljbGUvTElYLzIzNi80MzMvOTg2MjM4IiwiTWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQiLCIxMC4xMDkzL21pbmQvTElYLjIzNi40MzMiOiJodHRwczovL2RvaS5vcmcvMTAuMTA5MyUyRm1pbmQlMkZMSVguMjM2LjQzMyIsIjE0NjAtMjExMyI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzE0NjAtMjExMyIsIlVORVNDTyBTY2llbmNlIFJlcG9ydDogdGhlIFJhY2UgQWdhaW5zdCBUaW1lIGZvciBTbWFydGVyIERldmVsb3BtZW50IjoiaHR0cHM6Ly91bmVzZG9jLnVuZXNjby5vcmcvYXJrOi80ODIyMy9wZjAwMDAzNzc0MzMvUERGLzM3NzQzM2VuZy5wZGYubXVsdGkiLCI5NzgtOS0yMzEwLTA0NTAtNiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTktMjMxMC0wNDUwLTYiLCJcIkR1YWwgdXNlIG9mIGFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyZWQgZHJ1ZyBkaXNjb3ZlcnlcIiI6Imh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzk1NDQyODAiLCIxMC4xMDM4L3M0MjI1Ni0wMjItMDA0NjUtOSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGczQyMjU2LTAyMi0wMDQ2NS05IiwiXCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBsZWFkIHRvIGV4dGluY3Rpb24sIGV4cGVydHMgd2FyblwiIjoiaHR0cHM6Ly93d3cuYmJjLmNvbS9uZXdzL3VrLTY1NzQ2NTI0IiwiXCJBbWF6b24gcmVwb3J0ZWRseSBlbXBsb3lzIHRob3VzYW5kcyBvZiBwZW9wbGUgdG8gbGlzdGVuIHRvIHlvdXIgQWxleGEgY29udmVyc2F0aW9uc1wiIjoiaHR0cHM6Ly93d3cuY25uLmNvbS8yMDE5LzA0LzExL3RlY2gvYW1hem9uLWFsZXhhLWxpc3RlbmluZy9pbmRleC5odG1sIiwiXCJBIENvbXBsZXRlIEd1aWRlIHRvIFNIQVAg4oCTIFNIQVBsZXkgQWRkaXRpdmUgZXhQbGFuYXRpb25zIGZvciBQcmFjdGl0aW9uZXJzXCIiOiJodHRwczovL2FuYWx5dGljc2luZGlhbWFnLmNvbS9hLWNvbXBsZXRlLWd1aWRlLXRvLXNoYXAtc2hhcGxleS1hZGRpdGl2ZS1leHBsYW5hdGlvbnMtZm9yLXByYWN0aXRpb25lcnMiLCJcIk9wZW5BSSBoYXMgcHVibGlzaGVkIHRoZSB0ZXh0LWdlbmVyYXRpbmcgQUkgaXQgc2FpZCB3YXMgdG9vIGRhbmdlcm91cyB0byBzaGFyZVwiIjoiaHR0cHM6Ly93d3cudGhldmVyZ2UuY29tLzIwMTkvMTEvNy8yMDk1MzA0MC9vcGVuYWktdGV4dC1nZW5lcmF0aW9uLWFpLWdwdC0yLWZ1bGwtbW9kZWwtcmVsZWFzZS0xLTViLXBhcmFtZXRlcnMiLCJcIlRoZSBzY2FyeSB0cnV0aCBhYm91dCBBSSBjb3B5cmlnaHQgaXMgbm9ib2R5IGtub3dzIHdoYXQgd2lsbCBoYXBwZW4gbmV4dFwiIjoiaHR0cHM6Ly93d3cudGhldmVyZ2UuY29tLzIzNDQ0Njg1L2dlbmVyYXRpdmUtYWktY29weXJpZ2h0LWluZnJpbmdlbWVudC1sZWdhbC1mYWlyLXVzZS10cmFpbmluZy1kYXRhIiwiXCJBSSBpcyBlbnRlcmluZyBhbiBlcmEgb2YgY29ycG9yYXRlIGNvbnRyb2xcIiI6Imh0dHBzOi8vd3d3LnRoZXZlcmdlLmNvbS8yMzY2Nzc1Mi9haS1wcm9ncmVzcy0yMDIzLXJlcG9ydC1zdGFuZm9yZC1jb3Jwb3JhdGUtY29udHJvbCIsIlZpbmdlLCBWZXJub3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZXJub3JfVmluZ2UiLCJcIlRoZSBDb21pbmcgVGVjaG5vbG9naWNhbCBTaW5ndWxhcml0eTogSG93IHRvIFN1cnZpdmUgaW4gdGhlIFBvc3QtSHVtYW4gRXJhXCIiOiJodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwNzAxMDExMzM2NDYvaHR0cDovL3d3dy1yb2hhbi5zZHN1LmVkdS9mYWN1bHR5L3ZpbmdlL21pc2Mvc2luZ3VsYXJpdHkuaHRtbCIsIjE5OTN2aXNlLm5hc2EuLi4xMVYiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMTk5M3Zpc2UubmFzYS4uLjExViIsIlwiQ2hhdGJvdHMgSGF2ZSBFbnRlcmVkIHRoZSBVbmNhbm55IFZhbGxleVwiIjoiaHR0cHM6Ly93d3cudGhlYXRsYW50aWMuY29tL3RlY2hub2xvZ3kvYXJjaGl2ZS8yMDE3LzA0L3VuY2FubnktdmFsbGV5LWRpZ2l0YWwtYXNzaXN0YW50cy81MjM4MDYiLCJXYXNvbiwgUC4gQy4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRlcl9DYXRoY2FydF9XYXNvbiIsIlwiUmVhc29uaW5nXCIiOiJodHRwczovL2FyY2hpdmUub3JnL2RldGFpbHMvbmV3aG9yaXpvbnNpbnBzeTAwMDBmb3NzIiwiXCJBdXRvbm9tb3VzIG1lbnRhbCBkZXZlbG9wbWVudCBieSByb2JvdHMgYW5kIGFuaW1hbHNcIiI6Imh0dHA6Ly93d3cuY3NlLm1zdS5lZHUvZGwvU2NpZW5jZVBhcGVyLnBkZiIsIjEwLjExMjYvc2NpZW5jZS4yOTEuNTUwNC41OTkiOiJodHRwczovL2RvaS5vcmcvMTAuMTEyNiUyRnNjaWVuY2UuMjkxLjU1MDQuNTk5IiwiXCJXaGF0IGlzICdmdXp6eSBsb2dpYyc/IEFyZSB0aGVyZSBjb21wdXRlcnMgdGhhdCBhcmUgaW5oZXJlbnRseSBmdXp6eSBhbmQgZG8gbm90IGFwcGx5IHRoZSB1c3VhbCBiaW5hcnkgbG9naWM/XCIiOiJodHRwczovL3d3dy5zY2llbnRpZmljYW1lcmljYW4uY29tL2FydGljbGUvd2hhdC1pcy1mdXp6eS1sb2dpYy1hcmUtdCIsIlwiSHVtYW5zIG1heSBiZSBtb3JlIGxpa2VseSB0byBiZWxpZXZlIGRpc2luZm9ybWF0aW9uIGdlbmVyYXRlZCBieSBBSVwiIjoiaHR0cHM6Ly93d3cudGVjaG5vbG9neXJldmlldy5jb20vMjAyMy8wNi8yOC8xMDc1NjgzL2h1bWFucy1tYXktYmUtbW9yZS1saWtlbHktdG8tYmVsaWV2ZS1kaXNpbmZvcm1hdGlvbi1nZW5lcmF0ZWQtYnktYWkvIiwiTUlUIFRlY2hub2xvZ3kgUmV2aWV3IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX1RlY2hub2xvZ3lfUmV2aWV3IiwiXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgdGhlIFB1YmxpYyBTZWN0b3Ig4oCTIEFwcGxpY2F0aW9ucyBhbmQgQ2hhbGxlbmdlc1wiIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8zNTY5NDM1IiwiMTAuMTA4MC8wMTkwMDY5Mi4yMDE4LjE0OTgxMDMiOiJodHRwczovL2RvaS5vcmcvMTAuMTA4MCUyRjAxOTAwNjkyLjIwMTguMTQ5ODEwMyIsIjAxOTAtMDY5MiI6Imh0dHBzOi8vc2VhcmNoLndvcmxkY2F0Lm9yZy9pc3NuLzAxOTAtMDY5MiIsIlwiQ2hhdEdQVCBJcyBBbHJlYWR5IE9ic29sZXRlXCIiOiJodHRwczovL3d3dy50aGVhdGxhbnRpYy5jb20vdGVjaG5vbG9neS9hcmNoaXZlLzIwMjMvMDUvYWktYWR2YW5jZW1lbnRzLW11bHRpbW9kYWwtbW9kZWxzLzY3NDExMy8iLCJcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFzIGEgUG9zaXRpdmUgYW5kIE5lZ2F0aXZlIEZhY3RvciBpbiBHbG9iYWwgUmlza1wiIjoiaHR0cDovL2ludGVsbGlnZW5jZS5vcmcvZmlsZXMvQUlQb3NOZWdGYWN0b3IucGRmIiwiMjAwOGdjci4uYm9vay4uMzAzWSI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDA4Z2NyLi5ib29rLi4zMDNZIiwiQXV0b3IsIERhdmlkIEguIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF2aWRfQXV0b3IiLCJCZXJsaW5za2ksIERhdmlkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF2aWRfQmVybGluc2tpIiwiVGhlIEFkdmVudCBvZiB0aGUgQWxnb3JpdGhtIjoiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRhaWxzL2FkdmVudG9mYWxnb3JpdGgwMDAwYmVybCIsIjk3OC0wLTE1NjAtMTM5MS04IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BlY2lhbDpCb29rU291cmNlcy85NzgtMC0xNTYwLTEzOTEtOCIsIlRoZSBMaW5lOiBBSSBhbmQgdGhlIEZ1dHVyZSBvZiBQZXJzb25ob29kIjoiaHR0cHM6Ly9kaXJlY3QubWl0LmVkdS9ib29rcy9ib29rLzU4NTkvVGhlLUxpbmVBSS1hbmQtdGhlLUZ1dHVyZS1vZi1QZXJzb25ob29kIiwiTUlUIFByZXNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX1ByZXNzIiwiQ3VraWVyLCBLZW5uZXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS2VubmV0aF9DdWtpZXIiLCJGb3JlaWduIEFmZmFpcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3JlaWduX0FmZmFpcnMiLCJBbGV4IFBlbnRsYW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleF9QZW50bGFuZCIsIkFJIG1hY2hpbmUtbGVhcm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX2xlYXJuaW5nIiwiYWxnb3JpdGhtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobSIsIkV2YW5zLCBXb29keSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvb2R5X0V2YW5zIiwiXCJQb3N0aHVtYW4gUmlnaHRzOiBEaW1lbnNpb25zIG9mIFRyYW5zaHVtYW4gV29ybGRzXCIiOiJodHRwczovL2RvaS5vcmcvMTAuNTIwOSUyRnJldl9USy4yMDE1LnYxMi5uMi40OTA3MiIsIjEwLjUyMDkvcmV2X1RLLjIwMTUudjEyLm4yLjQ5MDcyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUyMDklMkZyZXZfVEsuMjAxNS52MTIubjIuNDkwNzIiLCJcIlVTIExlYWRlcnNoaXAgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQ2FuIFNoYXBlIHRoZSAyMXN0IENlbnR1cnkgR2xvYmFsIE9yZGVyXCIiOiJodHRwczovL3RoZWRpcGxvbWF0LmNvbS8yMDIzLzA5L3VzLWxlYWRlcnNoaXAtaW4tYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtY2FuLXNoYXBlLXRoZS0yMXN0LWNlbnR1cnktZ2xvYmFsLW9yZGVyIiwiVGhlIERpcGxvbWF0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0RpcGxvbWF0XyhtYWdhemluZSkiLCJvbmxpbmUiOiJodHRwczovL3d3dy5ueXRpbWVzLmNvbS8yMDIzLzA3LzE4L21hZ2F6aW5lL3dpa2lwZWRpYS1haS1jaGF0Z3B0Lmh0bWwiLCJHbGVpY2ssIEphbWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xlaWNrLF9KYW1lcyIsIlRoZSBOZXcgWW9yayBSZXZpZXcgb2YgQm9va3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtfUmV2aWV3X29mX0Jvb2tzIiwiQWdlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWdlbmN5XyhwaGlsb3NvcGh5KSIsInJlYXNvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlYXNvbiIsInB1cnBvc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3RpdmF0aW9uIiwiVmVyaXR5IEhhcmRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WZXJpdHlfSGFyZGluZyIsIkdhcnkgTWFyY3VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2FyeV9NYXJjdXMiLCJEYW5pZWxhIFJ1cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbGFfUnVzIiwiR3JlZ29yeSBNb25lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUdyZWdvcnlfTW9uZSZhY3Rpb249ZWRpdCZyZWRsaW5rPTEiLCJNYWRodW1pdGEgTXVyZ2lhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFkaHVtaXRhX011cmdpYSIsImdvdmVybm1lbnRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR292ZXJubWVudCIsImNhbXBhaWduIGZpbmFuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYW1wYWlnbl9maW5hbmNlIiwidGVjaCBjb21wYW5pZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNoX2NvbXBhbnkiLCJ0cmFuc3BhcmVuY3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc3BhcmVuY3lfKGJlaGF2aW9yKSIsIlNlY3Rpb24gMjMwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VjdGlvbl8yMzAiLCJwcm9kdWN0IGxpYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2R1Y3RfbGlhYmlsaXR5IiwiRkRBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkRBIiwiRkNDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkNDIiwiRlRDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVkZXJhbF9UcmFkZV9Db21taXNzaW9uIiwiRm9yZGhhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZvcmRoYW1fVW5pdmVyc2l0eSIsIkNoaW5tYXlpIFNoYXJtYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93L2luZGV4LnBocD90aXRsZT1DaGlubWF5aV9TaGFybWEmYWN0aW9uPWVkaXQmcmVkbGluaz0xIiwibWVkaWNhbCBsaWNlbnNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfbGljZW5zZSIsIm1hbHByYWN0aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFscHJhY3RpY2UiLCJIaXBwb2NyYXRpYyBvYXRoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlwcG9jcmF0aWNfb2F0aCIsImRvIG5vIGhhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmltdW1fbm9uX25vY2VyZSIsIlwiSHVtYW4gcmlnaHRzIGZvciByb2JvdHM/IFdlJ3JlIGdldHRpbmcgY2FycmllZCBhd2F5XCIiOiJodHRwOi8vd3d3LnRoZXRpbWVzLmNvLnVrL3R0by90ZWNobm9sb2d5L2FydGljbGUxOTY2MzkxLmVjZSIsIkNhaW4ncyBKYXdib25lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FpbiUyN3NfSmF3Ym9uZSIsIlNjaWVudGlmaWMgQW1lcmljYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX0FtZXJpY2FuIiwibmF0dXJhbC1sYW5ndWFnZSBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbC1sYW5ndWFnZV9wcm9jZXNzaW5nIiwiY29udGV4dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRleHRfKGxpbmd1aXN0aWNzKSIsImFuY2llbnQgbGFuZ3VhZ2VzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5jaWVudF9sYW5ndWFnZSIsImNpdmlsaXphdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaXZpbGl6YXRpb24iLCJJbW1lcndhaHIsIERhbmllbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltbWVyd2FocixfRGFuaWVsIiwiVGhlIE5ldyBZb3JrZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaGVfTmV3X1lvcmtlciIsImNhcnRvb25zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FydG9vbiIsIlwiRGVlcCBsZWFybmluZ1wiIjoiaHR0cHM6Ly93d3cubmF0dXJlLmNvbS9hcnRpY2xlcy9uYXR1cmUxNDUzOSIsIjIwMTVOYXR1ci41MjEuLjQzNkwiOiJodHRwczovL3VpLmFkc2Ficy5oYXJ2YXJkLmVkdS9hYnMvMjAxNU5hdHVyLjUyMS4uNDM2TCIsIjEwLjEwMzgvbmF0dXJlMTQ1MzkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAzOCUyRm5hdHVyZTE0NTM5IiwiTGVwb3JlLCBKaWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmlsbF9MZXBvcmUiLCJcIkNvbnRlbnQ6IFBsdWcgJiBQcmF5IEZpbG0g4oCTIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIOKAkyBSb2JvdHNcIiI6Imh0dHA6Ly93d3cucGx1Z2FuZHByYXktZmlsbS5kZS9lbi9jb250ZW50Lmh0bWwiLCJNYXJjdXMsIEdhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJjdXMsX0dhcnkiLCI5NzgtMC0zNzQyLTU3ODMtNSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwZWNpYWw6Qm9va1NvdXJjZXMvOTc4LTAtMzc0Mi01NzgzLTUiLCJcIkh1bWFuLWxldmVsIGNvbnRyb2wgdGhyb3VnaCBkZWVwIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmdcIiI6Imh0dHBzOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvbmF0dXJlMTQyMzYiLCIyMDE1TmF0dXIuNTE4Li41MjlNIjoiaHR0cHM6Ly91aS5hZHNhYnMuaGFydmFyZC5lZHUvYWJzLzIwMTVOYXR1ci41MTguLjUyOU0iLCIxMC4xMDM4L25hdHVyZTE0MjM2IjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzglMkZuYXR1cmUxNDIzNiIsIkRRTiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBfUS1sZWFybmluZyIsIlByZXNzLCBFeWFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXlhbF9QcmVzcyIsIlwiUm9ib3RzIGNvdWxkIGRlbWFuZCBsZWdhbCByaWdodHNcIiI6Imh0dHA6Ly9uZXdzLmJiYy5jby51ay8yL2hpL3RlY2hub2xvZ3kvNjIwMDAwNS5zdG0iLCJJUSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lRIiwiXCJEZWVwIExlYXJuaW5nXCIiOiJodHRwczovL3d3dy5yZXNlYXJjaGdhdGUubmV0L3B1YmxpY2F0aW9uLzIzMDY5MDc5NSIsIjEwLjEwMDcvczEzMjE4LTAxMi0wMTk4LXoiOiJodHRwczovL2RvaS5vcmcvMTAuMTAwNyUyRnMxMzIxOC0wMTItMDE5OC16IiwiMTYxMC0xOTg3IjoiaHR0cHM6Ly9zZWFyY2gud29ybGRjYXQub3JnL2lzc24vMTYxMC0xOTg3IiwiXCJDb21wYXJpbmcgdGhlIGV4cGVydCBzdXJ2ZXkgYW5kIGNpdGF0aW9uIGltcGFjdCBqb3VybmFsIHJhbmtpbmcgbWV0aG9kczogRXhhbXBsZSBmcm9tIHRoZSBmaWVsZCBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5hc2VyZW5rby5jb20vcGFwZXJzL0pPSV9BSV9Kb3VybmFsX1JhbmtpbmdfU2VyZW5rby5wZGYiLCIxMC4xMDE2L2ouam9pLjIwMTEuMDYuMDAyIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYlMkZqLmpvaS4yMDExLjA2LjAwMiIsIlwiTWFzdGVyaW5nIHRoZSBnYW1lIG9mIEdvIHdpdGggZGVlcCBuZXVyYWwgbmV0d29ya3MgYW5kIHRyZWUgc2VhcmNoXCIiOiJodHRwczovL3d3dy5uYXR1cmUuY29tL2FydGljbGVzL25hdHVyZTE2OTYxIiwiMjAxNk5hdHVyLjUyOS4uNDg0UyI6Imh0dHBzOi8vdWkuYWRzYWJzLmhhcnZhcmQuZWR1L2Ficy8yMDE2TmF0dXIuNTI5Li40ODRTIiwiMTAuMTAzOC9uYXR1cmUxNjk2MSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDM4JTJGbmF0dXJlMTY5NjEiLCJWYXN3YW5pLCBBc2hpc2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Bc2hpc2hfVmFzd2FuaSIsIkF0dGVudGlvbiBpcyBhbGwgeW91IG5lZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25faXNfYWxsX3lvdV9uZWVkIiwiTG9uZG9uIFJldmlldyBvZiBCb29rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvbmRvbl9SZXZpZXdfb2ZfQm9va3MiLCJhbnRocm9wb21vcnBoaXNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aHJvcG9tb3JwaGlzZSIsIldoaXRlIFBhcGVyOiBPbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSDigJMgQSBFdXJvcGVhbiBhcHByb2FjaCB0byBleGNlbGxlbmNlIGFuZCB0cnVzdCI6Imh0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vc2l0ZXMvaW5mby9maWxlcy9jb21taXNzaW9uLXdoaXRlLXBhcGVyLWFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLWZlYjIwMjBfZW4ucGRmIiwic2lzdGVyIHByb2plY3RzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lraXBlZGlhOldpa2ltZWRpYV9zaXN0ZXJfcHJvamVjdHMiLCJEZWZpbml0aW9ucyI6Imh0dHBzOi8vZW4ud2lrdGlvbmFyeS5vcmcvd2lraS9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIk1lZGlhIjoiaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlF1b3RhdGlvbnMiOiJodHRwczovL2VuLndpa2lxdW90ZS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlRleHRib29rcyI6Imh0dHBzOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0FydGlmaWNpYWxfSW50ZWxsaWdlbmNlIiwiUmVzb3VyY2VzIjoiaHR0cHM6Ly9lbi53aWtpdmVyc2l0eS5vcmcvd2lraS9Qb3J0YWw6QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJEYXRhIjoiaHR0cHM6Ly93d3cud2lraWRhdGEub3JnL3dpa2kvUTExNjYwIiwiU2Nob2xpYSI6Imh0dHBzOi8vd3d3Lndpa2lkYXRhLm9yZy93aWtpL1dpa2lkYXRhOlNjaG9saWEiLCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiIjoiaHR0cDovL3d3dy5pZXAudXRtLmVkdS9hcnQtaW50ZSIsIkludGVybmV0IEVuY3ljbG9wZWRpYSBvZiBQaGlsb3NvcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJuZXRfRW5jeWNsb3BlZGlhX29mX1BoaWxvc29waHkiLCJ0aW1lbGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RpbWVsaW5lX29mX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiUGFyYW1ldGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFyYW1ldGVyIiwiSHlwZXJwYXJhbWV0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeXBlcnBhcmFtZXRlcl8obWFjaGluZV9sZWFybmluZykiLCJMb3NzIGZ1bmN0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvc3NfZnVuY3Rpb25zX2Zvcl9jbGFzc2lmaWNhdGlvbiIsIlJlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWdyZXNzaW9uX2FuYWx5c2lzIiwiQmlhc+KAk3ZhcmlhbmNlIHRyYWRlb2ZmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlhcyVFMiU4MCU5M3ZhcmlhbmNlX3RyYWRlb2ZmIiwiRG91YmxlIGRlc2NlbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb3VibGVfZGVzY2VudCIsIk92ZXJmaXR0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3ZlcmZpdHRpbmciLCJDbHVzdGVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2x1c3Rlcl9hbmFseXNpcyIsIlNHRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0b2NoYXN0aWNfZ3JhZGllbnRfZGVzY2VudCIsIlF1YXNpLU5ld3RvbiBtZXRob2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RdWFzaS1OZXd0b25fbWV0aG9kIiwiQ29uanVnYXRlIGdyYWRpZW50IG1ldGhvZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbmp1Z2F0ZV9ncmFkaWVudF9tZXRob2QiLCJCYWNrcHJvcGFnYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYWNrcHJvcGFnYXRpb24iLCJBdHRlbnRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdHRlbnRpb25fKG1hY2hpbmVfbGVhcm5pbmcpIiwiQ29udm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbiIsIk5vcm1hbGl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JtYWxpemF0aW9uXyhtYWNoaW5lX2xlYXJuaW5nKSIsIkJhdGNobm9ybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhdGNoX25vcm1hbGl6YXRpb24iLCJBY3RpdmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWN0aXZhdGlvbl9mdW5jdGlvbiIsIlNvZnRtYXgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0bWF4X2Z1bmN0aW9uIiwiU2lnbW9pZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZ21vaWRfZnVuY3Rpb24iLCJSZWN0aWZpZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN0aWZpZXJfKG5ldXJhbF9uZXR3b3JrcykiLCJHYXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXRpbmdfbWVjaGFuaXNtIiwiV2VpZ2h0IGluaXRpYWxpemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VpZ2h0X2luaXRpYWxpemF0aW9uIiwiUmVndWxhcml6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyaXphdGlvbl8obWF0aGVtYXRpY3MpIiwiRGF0YXNldHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFpbmluZyxfdmFsaWRhdGlvbixfYW5kX3Rlc3RfZGF0YV9zZXRzIiwiQXVnbWVudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9hdWdtZW50YXRpb24iLCJQcm9tcHQgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9tcHRfZW5naW5lZXJpbmciLCJRLWxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUS1sZWFybmluZyIsIlNBUlNBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhdGUlRTIlODAlOTNhY3Rpb24lRTIlODAlOTNyZXdhcmQlRTIlODAlOTNzdGF0ZSVFMiU4MCU5M2FjdGlvbiIsIkltaXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltaXRhdGlvbl9sZWFybmluZyIsIlBvbGljeSBncmFkaWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbGljeV9ncmFkaWVudF9tZXRob2QiLCJEaWZmdXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWZmdXNpb25fcHJvY2VzcyIsIkxhdGVudCBkaWZmdXNpb24gbW9kZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRlbnRfZGlmZnVzaW9uX21vZGVsIiwiQXV0b3JlZ3Jlc3Npb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvcmVncmVzc2l2ZV9tb2RlbCIsIkFkdmVyc2FyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FkdmVyc2FyaWFsX21hY2hpbmVfbGVhcm5pbmciLCJSQUciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXRyaWV2YWwtYXVnbWVudGVkX2dlbmVyYXRpb24iLCJSTEhGIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVpbmZvcmNlbWVudF9sZWFybmluZ19mcm9tX2h1bWFuX2ZlZWRiYWNrIiwiU2VsZi1zdXBlcnZpc2VkIGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1zdXBlcnZpc2VkX2xlYXJuaW5nIiwiV29yZCBlbWJlZGRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JkX2VtYmVkZGluZyIsIkhhbGx1Y2luYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxsdWNpbmF0aW9uXyhhcnRpZmljaWFsX2ludGVsbGlnZW5jZSkiLCJJbi1jb250ZXh0IGxlYXJuaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvbXB0X2VuZ2luZWVyaW5nI0luLWNvbnRleHRfbGVhcm5pbmciLCJBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cmFsX25ldHdvcmtfKG1hY2hpbmVfbGVhcm5pbmcpIiwiTGFuZ3VhZ2UgbW9kZWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYW5ndWFnZV9tb2RlbCIsIkxhcmdlIGxhbmd1YWdlIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFyZ2VfbGFuZ3VhZ2VfbW9kZWwiLCJOTVQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyYWxfbWFjaGluZV90cmFuc2xhdGlvbiIsIldhdmVOZXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXZlTmV0IiwiSHVtYW4gaW1hZ2Ugc3ludGhlc2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW5faW1hZ2Vfc3ludGhlc2lzIiwiSFdSIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuZHdyaXRpbmdfcmVjb2duaXRpb24iLCJPQ1IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcHRpY2FsX2NoYXJhY3Rlcl9yZWNvZ25pdGlvbiIsIlNwZWVjaCBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZWVwX2xlYXJuaW5nX3NwZWVjaF9zeW50aGVzaXMiLCIxNS5haSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpLzE1LmFpIiwiRWxldmVuTGFicyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsZXZlbkxhYnMiLCJTcGVlY2ggcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGVlY2hfcmVjb2duaXRpb24iLCJXaGlzcGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2hpc3Blcl8oc3BlZWNoX3JlY29nbml0aW9uX3N5c3RlbSkiLCJGYWNpYWwgcmVjb2duaXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWNpYWxfcmVjb2duaXRpb25fc3lzdGVtIiwiQWxwaGFGb2xkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxwaGFGb2xkIiwiVGV4dC10by1pbWFnZSBtb2RlbHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXh0LXRvLWltYWdlX21vZGVsIiwiQXVyb3JhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXVyb3JhXyh0ZXh0LXRvLWltYWdlX21vZGVsKSIsIkZpcmVmbHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZG9iZV9GaXJlZmx5IiwiRmx1eCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZsdXhfKHRleHQtdG8taW1hZ2VfbW9kZWwpIiwiSWRlb2dyYW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JZGVvZ3JhbV8odGV4dC10by1pbWFnZV9tb2RlbCkiLCJJbWFnZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Hb29nbGVfQnJhaW4jVGV4dC10by1pbWFnZV9tb2RlbCIsIlRleHQtdG8tdmlkZW8gbW9kZWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGV4dC10by12aWRlb19tb2RlbCIsIkRyZWFtIE1hY2hpbmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EcmVhbV9NYWNoaW5lXyh0ZXh0LXRvLXZpZGVvX21vZGVsKSIsIkdlbi0zIEFscGhhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUnVud2F5Xyhjb21wYW55KSNHZW4tM19BbHBoYSIsIkhhaWx1byBBSSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmlNYXhfKGNvbXBhbnkpI0hhaWx1b19BSSIsIktsaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS2xpbmdfKHRleHQtdG8tdmlkZW9fbW9kZWwpIiwiVmVvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX0RlZXBNaW5kI1ZpZGVvX21vZGVsIiwiTXVzaWMgZ2VuZXJhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011c2ljX2FuZF9hcnRpZmljaWFsX2ludGVsbGlnZW5jZSIsIlN1bm8gQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdW5vX0FJIiwiVWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VkaW8iLCJXb3JkMnZlYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmQydmVjIiwiU2VxMnNlcSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlcTJzZXEiLCJHbG9WZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb1ZlIiwiQkVSVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JFUlRfKGxhbmd1YWdlX21vZGVsKSIsIlQ1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVDVfKGxhbmd1YWdlX21vZGVsKSIsIkxsYW1hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGxhbWFfKGxhbmd1YWdlX21vZGVsKSIsIkNoaW5jaGlsbGEgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGluY2hpbGxhXyhsYW5ndWFnZV9tb2RlbCkiLCJQYUxNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFMTSIsIkdQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmVyYXRpdmVfcHJlLXRyYWluZWRfdHJhbnNmb3JtZXIiLCJKIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1BULUoiLCI0byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dQVC00byIsIm8xIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlbkFJX28xIiwibzMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuQUlfbzMiLCJjaGF0Ym90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VtaW5pXyhjaGF0Ym90KSIsIkxhTURBIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFNREEiLCJCTE9PTSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JMT09NXyhsYW5ndWFnZV9tb2RlbCkiLCJQcm9qZWN0IERlYmF0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9qZWN0X0RlYmF0ZXIiLCJJQk0gV2F0c29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX1dhdHNvbiIsIklCTSBXYXRzb254IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX1dhdHNvbngiLCJHcmFuaXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUJNX0dyYW5pdGUiLCJQYW5HdS3OoyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1YXdlaV9QYW5HdSIsIkRlZXBTZWVrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVlcFNlZWsiLCJRd2VuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXdlbiIsIkFscGhhWmVybyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FscGhhWmVybyIsIk9wZW5BSSBGaXZlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlbkFJX0ZpdmUiLCJTZWxmLWRyaXZpbmcgY2FyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VsZi1kcml2aW5nX2NhciIsIkFjdGlvbiBzZWxlY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BY3Rpb25fc2VsZWN0aW9uIiwiQXV0b0dQVCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9HUFQiLCJSb2JvdCBjb250cm9sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfY29udHJvbCIsIldhcnJlbiBTdHVyZ2lzIE1jQ3VsbG9jaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhcnJlbl9TdHVyZ2lzX01jQ3VsbG9jaCIsIkpvaG4gdm9uIE5ldW1hbm4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Kb2huX3Zvbl9OZXVtYW5uIiwiQ2xhdWRlIFNoYW5ub24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGF1ZGVfU2hhbm5vbiIsIk5hdGhhbmllbCBSb2NoZXN0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXRoYW5pZWxfUm9jaGVzdGVyXyhjb21wdXRlcl9zY2llbnRpc3QpIiwiQWxsZW4gTmV3ZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxsZW5fTmV3ZWxsIiwiQ2xpZmYgU2hhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaWZmX1NoYXciLCJIZXJiZXJ0IEEuIFNpbW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVyYmVydF9BLl9TaW1vbiIsIkJlcm5hcmQgV2lkcm93IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmVybmFyZF9XaWRyb3ciLCJTZXltb3VyIFBhcGVydCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NleW1vdXJfUGFwZXJ0IiwiSm9obiBIb3BmaWVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fSG9wZmllbGQiLCJMb3RmaSBBLiBaYWRlaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvdGZpX0EuX1phZGVoIiwiU3RlcGhlbiBHcm9zc2JlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVwaGVuX0dyb3NzYmVyZyIsIkFsZXggR3JhdmVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleF9HcmF2ZXNfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJGZWktRmVpIExpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmVpLUZlaV9MaSIsIkFsZXggS3JpemhldnNreSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhfS3JpemhldnNreSIsIklseWEgU3V0c2tldmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWx5YV9TdXRza2V2ZXIiLCJEYXZpZCBTaWx2ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9TaWx2ZXJfKGNvbXB1dGVyX3NjaWVudGlzdCkiLCJJYW4gR29vZGZlbGxvdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lhbl9Hb29kZmVsbG93IiwiQW5kcmVqIEthcnBhdGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5kcmVqX0thcnBhdGh5IiwiTmV1cmFsIFR1cmluZyBtYWNoaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV1cmFsX1R1cmluZ19tYWNoaW5lIiwiRGlmZmVyZW50aWFibGUgbmV1cmFsIGNvbXB1dGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlmZmVyZW50aWFibGVfbmV1cmFsX2NvbXB1dGVyIiwiVHJhbnNmb3JtZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmFuc2Zvcm1lcl8oZGVlcF9sZWFybmluZ19hcmNoaXRlY3R1cmUpIiwiVmlzaW9uIHRyYW5zZm9ybWVyIChWaVQpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmlzaW9uX3RyYW5zZm9ybWVyIiwiUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrIChSTk4pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjdXJyZW50X25ldXJhbF9uZXR3b3JrIiwiTG9uZyBzaG9ydC10ZXJtIG1lbW9yeSAoTFNUTSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25nX3Nob3J0LXRlcm1fbWVtb3J5IiwiR2F0ZWQgcmVjdXJyZW50IHVuaXQgKEdSVSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXRlZF9yZWN1cnJlbnRfdW5pdCIsIkVjaG8gc3RhdGUgbmV0d29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VjaG9fc3RhdGVfbmV0d29yayIsIk11bHRpbGF5ZXIgcGVyY2VwdHJvbiAoTUxQKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpbGF5ZXJfcGVyY2VwdHJvbiIsIkNvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmsgKENOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db252b2x1dGlvbmFsX25ldXJhbF9uZXR3b3JrIiwiUmVzaWR1YWwgbmV1cmFsIG5ldHdvcmsgKFJOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXNpZHVhbF9uZXVyYWxfbmV0d29yayIsIkhpZ2h3YXkgbmV0d29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hpZ2h3YXlfbmV0d29yayIsIk1hbWJhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFtYmFfKGRlZXBfbGVhcm5pbmdfYXJjaGl0ZWN0dXJlKSIsIkF1dG9lbmNvZGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b2VuY29kZXIiLCJWYXJpYXRpb25hbCBhdXRvZW5jb2RlciAoVkFFKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhcmlhdGlvbmFsX2F1dG9lbmNvZGVyIiwiR2VuZXJhdGl2ZSBhZHZlcnNhcmlhbCBuZXR3b3JrIChHQU4pIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhdGl2ZV9hZHZlcnNhcmlhbF9uZXR3b3JrIiwiR3JhcGggbmV1cmFsIG5ldHdvcmsgKEdOTikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaF9uZXVyYWxfbmV0d29yayIsIlRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3J0YWw6VGVjaG5vbG9neSIsIkNhdGVnb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6RXhpc3RlbnRpYWxfcmlza19mcm9tX2FydGlmaWNpYWxfZ2VuZXJhbF9pbnRlbGxpZ2VuY2UiLCJBcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGlmaWNpYWxfbmV1cmFsX25ldHdvcmtzIiwiQ29tcGFuaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9yb2JvdGljc19jb21wYW5pZXMiLCJDaXJjdW1zY3JpcHRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaXJjdW1zY3JpcHRpb25fKGxvZ2ljKSIsIkdhcmJhZ2UgY29sbGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhcmJhZ2VfY29sbGVjdGlvbl8oY29tcHV0ZXJfc2NpZW5jZSkiLCJMaXNwIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzcF8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpIiwiQUxHT0wgNjAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTEdPTF82MCIsIk1jQ2FydGh5IGV2YWx1YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaG9ydC1jaXJjdWl0X2V2YWx1YXRpb24iLCJNY0NhcnRoeSBGb3JtYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NY0NhcnRoeV9Gb3JtYWxpc20iLCJNY0NhcnRoeSA5MSBmdW5jdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01jQ2FydGh5XzkxX2Z1bmN0aW9uIiwiU3BhY2UgZm91bnRhaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGFjZV9mb3VudGFpbiIsIlBoaWxvc29waHkgb2YgbWluZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfbWluZCIsIlBoaWxvc29waGVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBoaWxvc29waGVyc19vZl9taW5kIiwiRy4gRS4gTS4gQW5zY29tYmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HLl9FLl9NLl9BbnNjb21iZSIsIkFyaXN0b3RsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FyaXN0b3RsZSIsIkFybXN0cm9uZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdmlkX01hbGV0X0FybXN0cm9uZyIsIlRob21hcyBBcXVpbmFzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhvbWFzX0FxdWluYXMiLCJKLiBMLiBBdXN0aW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KLl9MLl9BdXN0aW4iLCJBbGV4YW5kZXIgQmFpbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZXhhbmRlcl9CYWluXyhwaGlsb3NvcGhlcikiLCJHZW9yZ2UgQmVya2VsZXkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW9yZ2VfQmVya2VsZXkiLCJIZW5yaSBCZXJnc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucmlfQmVyZ3NvbiIsIk5lZCBCbG9jayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05lZF9CbG9jayIsIkZyYW56IEJyZW50YW5vIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbnpfQnJlbnRhbm8iLCJDLiBELiBCcm9hZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0MuX0QuX0Jyb2FkIiwiVHlsZXIgQnVyZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UeWxlcl9CdXJnZSIsIlBhdHJpY2lhIENodXJjaGxhbmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXRyaWNpYV9DaHVyY2hsYW5kIiwiUGF1bCBDaHVyY2hsYW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF1bF9DaHVyY2hsYW5kIiwiQW5keSBDbGFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FuZHlfQ2xhcmsiLCJEaGFybWFraXJ0aSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RoYXJtYWtpcnRpIiwiRG9uYWxkIERhdmlkc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9uYWxkX0Rhdmlkc29uXyhwaGlsb3NvcGhlcikiLCJEYW5pZWwgRGVubmV0dCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhbmllbF9EZW5uZXR0IiwiUmVuw6kgRGVzY2FydGVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVuJUMzJUE5X0Rlc2NhcnRlcyIsIkZyZWQgRHJldHNrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWRfRHJldHNrZSIsIkZvZG9yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVycnlfRm9kb3IiLCJHb2xkbWFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWx2aW5fR29sZG1hbiIsIk1hcnRpbiBIZWlkZWdnZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJ0aW5fSGVpZGVnZ2VyIiwiRGF2aWQgSHVtZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RhdmlkX0h1bWUiLCJFZG11bmQgSHVzc2VybCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VkbXVuZF9IdXNzZXJsIiwiV2lsbGlhbSBKYW1lcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fSmFtZXMiLCJGcmFuayBDYW1lcm9uIEphY2tzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmFua19DYW1lcm9uX0phY2tzb24iLCJJbW1hbnVlbCBLYW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW1tYW51ZWxfS2FudCIsIkRhdmlkIExld2lzIChwaGlsb3NvcGhlcikiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXZpZF9MZXdpc18ocGhpbG9zb3BoZXIpIiwiSm9obiBMb2NrZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pvaG5fTG9ja2UiLCJHb3R0ZnJpZWQgV2lsaGVsbSBMZWlibml6IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR290dGZyaWVkX1dpbGhlbG1fTGVpYm5peiIsIk1hdXJpY2UgTWVybGVhdS1Qb250eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdXJpY2VfTWVybGVhdS1Qb250eSIsIlRob21hcyBOYWdlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rob21hc19OYWdlbCIsIkFsdmEgTm/DqyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsdmFfTm8lQzMlQUIiLCJEZXJlayBQYXJmaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXJla19QYXJmaXQiLCJQbGF0byI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BsYXRvIiwiUmljaGFyZCBSb3J0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JpY2hhcmRfUm9ydHkiLCJHaWxiZXJ0IFJ5bGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HaWxiZXJ0X1J5bGUiLCJXaWxmcmlkIFNlbGxhcnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWxmcmlkX1NlbGxhcnMiLCJCYXJ1Y2ggU3Bpbm96YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhcnVjaF9TcGlub3phIiwiTWljaGFlbCBUeWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNoYWVsX1R5ZV8ocGhpbG9zb3BoZXIpIiwiVmFzdWJhbmRodSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zhc3ViYW5kaHUiLCJMdWR3aWcgV2l0dGdlbnN0ZWluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTHVkd2lnX1dpdHRnZW5zdGVpbiIsIlN0ZXBoZW4gWWFibG8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGVwaGVuX1lhYmxvIiwiWmh1YW5nemkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9aaHVhbmdfWmhvdSIsIm1vcmUuLi4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmRleF9vZl9waGlsb3NvcGh5X29mX3NjaWVuY2VfYXJ0aWNsZXMiLCJCZWhhdmlvcmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlaGF2aW9yaXNtIiwiQmlvbG9naWNhbCBuYXR1cmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvbG9naWNhbF9uYXR1cmFsaXNtIiwiRHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQlRTIlODAlOTNib2R5X2R1YWxpc20iLCJFbGltaW5hdGl2ZSBtYXRlcmlhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsaW1pbmF0aXZlX21hdGVyaWFsaXNtIiwiRW1lcmdlbnQgbWF0ZXJpYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWVyZ2VudF9tYXRlcmlhbGlzbSIsIkVwaXBoZW5vbWVuYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FcGlwaGVub21lbmFsaXNtIiwiRnVuY3Rpb25hbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uYWxpc21fKHBoaWxvc29waHlfb2ZfbWluZCkiLCJJbnRlcmFjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aW9uaXNtXyhwaGlsb3NvcGh5X29mX21pbmQpIiwiTmHDr3ZlIHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYSVDMyVBRnZlX3JlYWxpc20iLCJOZXVyb3BoZW5vbWVub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb3BoZW5vbWVub2xvZ3kiLCJOZXV0cmFsIG1vbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldXRyYWxfbW9uaXNtIiwiTmV3IG15c3RlcmlhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ld19teXN0ZXJpYW5pc20iLCJOb25kdWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTm9uZHVhbGlzbSIsIk9jY2FzaW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PY2Nhc2lvbmFsaXNtIiwiUGFyYWxsZWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc3ljaG9waHlzaWNhbF9wYXJhbGxlbGlzbSIsIlBoZW5vbWVuYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGVub21lbmFsaXNtIiwiUGhlbm9tZW5vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoZW5vbWVub2xvZ3lfKHBoaWxvc29waHkpIiwiUGh5c2ljYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaHlzaWNhbGlzbSIsIlR5cGUgcGh5c2ljYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UeXBlX3BoeXNpY2FsaXNtIiwiUHJvcGVydHkgZHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3BlcnR5X2R1YWxpc20iLCJSZXByZXNlbnRhdGlvbmFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3JlcHJlc2VudGF0aW9uIiwiU29saXBzaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29saXBzaXNtIiwiU3Vic3RhbmNlIGR1YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdWJzdGFuY2VfZHVhbGlzbSIsIkFic3RyYWN0IG9iamVjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fic3RyYWN0X2FuZF9jb25jcmV0ZSIsIkNyZWF0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcmVhdGl2aXR5IiwiQ29nbml0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29nbml0aW9uIiwiQ29nbml0aXZlIGNsb3N1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2duaXRpdmVfY2xvc3VyZV8ocGhpbG9zb3BoeSkiLCJDb25jZXB0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uY2VwdCIsIkNvbnNjaW91c25lc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zY2lvdXNuZXNzIiwiSHlwb3N0YXRpYyBhYnN0cmFjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h5cG9zdGF0aWNfYWJzdHJhY3Rpb24iLCJJZGVhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWRlYSIsIklkZW50aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWRlbnRpdHlfKHBoaWxvc29waHkpIiwiSW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWxsaWdlbmNlIiwiSHVtYW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbl9pbnRlbGxpZ2VuY2UiLCJJbnRlbnRpb25hbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVudGlvbmFsaXR5IiwiSW50cm9zcGVjdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc3BlY3Rpb24iLCJJbnR1aXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnR1aXRpb24iLCJMYW5ndWFnZSBvZiB0aG91Z2h0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFuZ3VhZ2Vfb2ZfdGhvdWdodF9oeXBvdGhlc2lzIiwiTWVudGFsIGV2ZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX2V2ZW50IiwiTWVudGFsIGltYWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX2ltYWdlIiwiTWVudGFsIHByb2Nlc3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZW1wbGF0ZTpNZW50YWxfcHJvY2Vzc2VzIiwiTWVudGFsIHByb3BlcnR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3N0YXRlIiwiTWVudGFsIHJlcHJlc2VudGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVudGFsX3JlcHJlc2VudGF0aW9uIiwiTWluZOKAk2JvZHkgcHJvYmxlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbmQlRTIlODAlOTNib2R5X3Byb2JsZW0iLCJQYWluIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFpbl8ocGhpbG9zb3BoeSkiLCJQcm9ibGVtIG9mIG90aGVyIG1pbmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmxlbV9vZl9vdGhlcl9taW5kcyIsIlByb3Bvc2l0aW9uYWwgYXR0aXR1ZGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9wb3NpdGlvbmFsX2F0dGl0dWRlIiwiUXVhbGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbGlhIiwiVGFidWxhIHJhc2EiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWJ1bGFfcmFzYSIsIlVuZGVyc3RhbmRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmRlcnN0YW5kaW5nIiwiWm9tYmllIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhpbG9zb3BoaWNhbF96b21iaWUiLCJNZXRhcGh5c2ljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldGFwaHlzaWNzIiwiaW5mb3JtYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX2luZm9ybWF0aW9uIiwic2VsZiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2Zfc2VsZiIsIlBoaWxvc29waGVycyBjYXRlZ29yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBoaWxvc29waGVyc19vZl9taW5kIiwiUHJvamVjdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpXaWtpUHJvamVjdF9QaGlsb3NvcGh5IiwiVGFzayBGb3JjZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpXaWtpUHJvamVjdF9QaGlsb3NvcGh5L01pbmQiLCJQaGlsb3NvcGh5IG9mIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NjaWVuY2UiLCJBbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waGljYWxfYW5hbHlzaXMiLCJBbmFseXRpY+KAk3N5bnRoZXRpYyBkaXN0aW5jdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FuYWx5dGljJUUyJTgwJTkzc3ludGhldGljX2Rpc3RpbmN0aW9uIiwiQSBwcmlvcmkgYW5kIGEgcG9zdGVyaW9yaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FfcHJpb3JpX2FuZF9hX3Bvc3RlcmlvcmkiLCJDYXVzYWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXVzYWxpdHkiLCJNaWxsJ3MgTWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pbGwlMjdzX01ldGhvZHMiLCJDb21tZW5zdXJhYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tbWVuc3VyYWJpbGl0eV8ocGhpbG9zb3BoeV9vZl9zY2llbmNlKSIsIkNvbnNpbGllbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uc2lsaWVuY2UiLCJDb25zdHJ1Y3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zdHJ1Y3RfKHBoaWxvc29waHkpIiwiQ29ycmVsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3JyZWxhdGlvbiIsImZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ycmVsYXRpb25fZnVuY3Rpb24iLCJDcmVhdGl2ZSBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcmVhdGl2ZV9zeW50aGVzaXMiLCJEZW1hcmNhdGlvbiBwcm9ibGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVtYXJjYXRpb25fcHJvYmxlbSIsIkVtcGlyaWNhbCBldmlkZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcGlyaWNhbF9ldmlkZW5jZSIsIkV4cGVyaW1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBlcmltZW50IiwiZGVzaWduIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVzaWduX29mX2V4cGVyaW1lbnRzIiwiRXhwbGFuYXRvcnkgcG93ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBsYW5hdG9yeV9wb3dlciIsIkZhY3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0IiwiRmFsc2lmaWFiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWxzaWZpYWJpbGl0eSIsIkZlbWluaXN0IG1ldGhvZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlbWluaXN0X21ldGhvZCIsIkZ1bmN0aW9uYWwgY29udGV4dHVhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uYWxfY29udGV4dHVhbGlzbSIsIkh5cG90aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IeXBvdGhlc2lzIiwiYWx0ZXJuYXRpdmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbHRlcm5hdGl2ZV9oeXBvdGhlc2lzIiwibnVsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL051bGxfaHlwb3RoZXNpcyIsIklnbm9yYW11cyBldCBpZ25vcmFiaW11cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lnbm9yYW11c19ldF9pZ25vcmFiaW11cyIsIkluZHVjdGl2ZSByZWFzb25pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmR1Y3RpdmVfcmVhc29uaW5nIiwiSW50ZXJ0aGVvcmV0aWMgcmVkdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJ0aGVvcmV0aWNfcmVkdWN0aW9uIiwiSW5xdWlyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lucXVpcnkiLCJOYXR1cmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXR1cmVfKHBoaWxvc29waHkpIiwiT2JqZWN0aXZpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PYmplY3Rpdml0eV8ocGhpbG9zb3BoeSkiLCJPYnNlcnZhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ic2VydmF0aW9uIiwiUGFyYWRpZ20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJhZGlnbSIsIlByb2JsZW0gb2YgaW5kdWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYmxlbV9vZl9pbmR1Y3Rpb24iLCJTY2llbnRpZmljIGV2aWRlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19ldmlkZW5jZSIsIkV2aWRlbmNlLWJhc2VkIHByYWN0aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZpZGVuY2UtYmFzZWRfcHJhY3RpY2UiLCJTY2llbnRpZmljIGxhdyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVudGlmaWNfbGF3IiwiU2NpZW50aWZpYyBtZXRob2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX21ldGhvZCIsIlNjaWVudGlmaWMgcGx1cmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19wbHVyYWxpc20iLCJTY2llbnRpZmljIFJldm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY2llbnRpZmljX1Jldm9sdXRpb24iLCJUZXN0YWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rlc3RhYmlsaXR5IiwiVGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5IiwiY2hvaWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5X2Nob2ljZSIsImxhZGVubmVzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yeS1sYWRlbm5lc3MiLCJzY2llbnRpZmljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY190aGVvcnkiLCJVbmRlcmRldGVybWluYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbmRlcmRldGVybWluYXRpb24iLCJVbml0eSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdHlfb2Zfc2NpZW5jZSIsIlZhcmlhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFyaWFibGVfYW5kX2F0dHJpYnV0ZV8ocmVzZWFyY2gpIiwiY29udHJvbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRyb2xfdmFyaWFibGUiLCJkZXBlbmRlbnQgYW5kIGluZGVwZW5kZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVwZW5kZW50X2FuZF9pbmRlcGVuZGVudF92YXJpYWJsZXMiLCJDb2hlcmVudGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvaGVyZW50aXNtIiwiQ29uZmlybWF0aW9uIGhvbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmZpcm1hdGlvbl9ob2xpc20iLCJDb25zdHJ1Y3RpdmUgZW1waXJpY2lzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cnVjdGl2ZV9lbXBpcmljaXNtIiwiQ29uc3RydWN0aXZlIHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25zdHJ1Y3RpdmVfcmVhbGlzbSIsIkNvbnN0cnVjdGl2aXN0IGVwaXN0ZW1vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnN0cnVjdGl2aXN0X2VwaXN0ZW1vbG9neSIsIkNvbnRleHR1YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db250ZXh0dWFsaXNtIiwiQ29udmVudGlvbmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udmVudGlvbmFsaXNtIiwiRGVkdWN0aXZlLW5vbW9sb2dpY2FsIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVkdWN0aXZlLW5vbW9sb2dpY2FsX21vZGVsIiwiRXBpc3RlbW9sb2dpY2FsIGFuYXJjaGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VwaXN0ZW1vbG9naWNhbF9hbmFyY2hpc20iLCJFdm9sdXRpb25pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25pc20iLCJGYWxsaWJpbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhbGxpYmlsaXNtIiwiRm91bmRhdGlvbmFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm91bmRhdGlvbmFsaXNtIiwiSHlwb3RoZXRpY28tZGVkdWN0aXZlIG1vZGVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHlwb3RoZXRpY28tZGVkdWN0aXZlX21vZGVsIiwiSW5kdWN0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdWN0aW9uaXNtIiwiSW5zdHJ1bWVudGFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdHJ1bWVudGFsaXNtIiwiTW9kZWwtZGVwZW5kZW50IHJlYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbC1kZXBlbmRlbnRfcmVhbGlzbSIsIk5hdHVyYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXR1cmFsaXNtXyhwaGlsb3NvcGh5KSIsIlBvc2l0aXZpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3NpdGl2aXNtIiwiUmVkdWN0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVkdWN0aW9uaXNtIiwiRGV0ZXJtaW5pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmlzbSIsIlByYWdtYXRpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QcmFnbWF0aXNtIiwiUmF0aW9uYWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SYXRpb25hbGlzbSIsIkVtcGlyaWNpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbXBpcmljaXNtIiwiUmVjZWl2ZWQgdmlldyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY2VpdmVkX3ZpZXdfb2ZfdGhlb3JpZXMiLCJTZW1hbnRpYyB2aWV3IG9mIHRoZW9yaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VtYW50aWNfdmlld19vZl90aGVvcmllcyIsIlNjaWVudGlmaWMgZXNzZW50aWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19lc3NlbnRpYWxpc20iLCJTY2llbnRpZmljIGZvcm1hbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVudGlmaWNfZm9ybWFsaXNtIiwiU2NpZW50aWZpYyByZWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19yZWFsaXNtIiwiQW50aS1yZWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aS1yZWFsaXNtIiwiU2NpZW50aWZpYyBza2VwdGljaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aWZpY19za2VwdGljaXNtIiwiU2NpZW50aXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW50aXNtIiwiU3RydWN0dXJhbGlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0cnVjdHVyYWxpc21fKHBoaWxvc29waHlfb2Zfc2NpZW5jZSkiLCJVbmlmb3JtaXRhcmlhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaWZvcm1pdGFyaWFuaXNtIiwiVmVyaWZpY2F0aW9uaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmVyaWZpY2F0aW9uaXNtIiwiVml0YWxpc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXRhbGlzbSIsIkJpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9iaW9sb2d5IiwiQ2hlbWlzdHJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfY2hlbWlzdHJ5X3Rlcm1zIiwiU3BhY2UgYW5kIHRpbWUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NwYWNlX2FuZF90aW1lIiwiU29jaWFsIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX3NvY2lhbF9zY2llbmNlIiwiQXJjaGFlb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9hcmNoYWVvbG9neSIsIkVjb25vbWljc+KAjiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfZWNvbm9taWNzIiwiR2VvZ3JhcGh5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZ3JhcGh5X29mX3JvYm90aWNzIiwiTGluZ3Vpc3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGlsb3NvcGh5X29mX2xpbmd1aXN0aWNzIiwiUHN5Y2hvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BoaWxvc29waHlfb2ZfcHN5Y2hvbG9neSIsIkNyaXRpY2lzbSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3JpdGljaXNtX29mX3NjaWVuY2UiLCJEZXNjcmlwdGl2ZSBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVzY3JpcHRpdmVfcmVzZWFyY2giLCJFcGlzdGVtb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FcGlzdGVtb2xvZ3kiLCJFeGFjdCBzY2llbmNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4YWN0X3NjaWVuY2VzIiwiRmFpdGggYW5kIHJhdGlvbmFsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmFpdGhfYW5kX3JhdGlvbmFsaXR5IiwiSGFyZCBhbmQgc29mdCBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZF9hbmRfc29mdF9zY2llbmNlIiwiSGlzdG9yeSBhbmQgcGhpbG9zb3BoeSBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGlzdG9yeV9hbmRfcGhpbG9zb3BoeV9vZl9zY2llbmNlIiwiTm9uLXNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob24tc2NpZW5jZSIsIlBzZXVkb3NjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qc2V1ZG9zY2llbmNlIiwiTm9ybWF0aXZlIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JtYXRpdmVfc2NpZW5jZSIsIlByb3Rvc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb3Rvc2NpZW5jZSIsIlF1ZXN0aW9uYWJsZSBjYXVzZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1F1ZXN0aW9uYWJsZV9jYXVzZSIsIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIHJlbGlnaW9uIGFuZCBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsYXRpb25zaGlwX2JldHdlZW5fcmVsaWdpb25fYW5kX3NjaWVuY2UiLCJSaGV0b3JpYyBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmhldG9yaWNfb2Zfc2NpZW5jZSIsIlNjaWVuY2Ugc3R1ZGllcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NjaWVuY2Vfc3R1ZGllcyIsIlNvY2lvbG9neSBvZiBzY2llbnRpZmljIGlnbm9yYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lvbG9neV9vZl9zY2llbnRpZmljX2lnbm9yYW5jZSIsIlNvY2lvbG9neSBvZiBzY2llbnRpZmljIGtub3dsZWRnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lvbG9neV9vZl9zY2llbnRpZmljX2tub3dsZWRnZSIsIlBoaWxvc29waGVycyBvZiBzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9waGlsb3NvcGhlcnNfb2Zfc2NpZW5jZSIsIlJvZ2VyIEJhY29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9nZXJfQmFjb24iLCJGcmFuY2lzIEJhY29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc19CYWNvbiIsIkdhbGlsZW8gR2FsaWxlaSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhbGlsZW9fR2FsaWxlaSIsIklzYWFjIE5ld3RvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lzYWFjX05ld3RvbiIsIkF1Z3VzdGUgQ29tdGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWd1c3RlX0NvbXRlIiwiSGVucmkgUG9pbmNhcsOpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVucmlfUG9pbmNhciVDMyVBOSIsIlBpZXJyZSBEdWhlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BpZXJyZV9EdWhlbSIsIlJ1ZG9sZiBTdGVpbmVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUnVkb2xmX1N0ZWluZXIiLCJLYXJsIFBlYXJzb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1BlYXJzb24iLCJDaGFybGVzIFNhbmRlcnMgUGVpcmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2hhcmxlc19TYW5kZXJzX1BlaXJjZSIsIldpbGhlbG0gV2luZGVsYmFuZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGhlbG1fV2luZGVsYmFuZCIsIkFsZnJlZCBOb3J0aCBXaGl0ZWhlYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGZyZWRfTm9ydGhfV2hpdGVoZWFkIiwiQmVydHJhbmQgUnVzc2VsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JlcnRyYW5kX1J1c3NlbGwiLCJPdHRvIE5ldXJhdGgiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PdHRvX05ldXJhdGgiLCJNaWNoYWVsIFBvbGFueWkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNoYWVsX1BvbGFueWkiLCJIYW5zIFJlaWNoZW5iYWNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFuc19SZWljaGVuYmFjaCIsIlJ1ZG9sZiBDYXJuYXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SdWRvbGZfQ2FybmFwIiwiS2FybCBQb3BwZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LYXJsX1BvcHBlciIsIkNhcmwgR3VzdGF2IEhlbXBlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhcmxfR3VzdGF2X0hlbXBlbCIsIlcuIFYuIE8uIFF1aW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2lsbGFyZF9WYW5fT3JtYW5fUXVpbmUiLCJUaG9tYXMgS3VobiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Rob21hc19LdWhuIiwiSW1yZSBMYWthdG9zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW1yZV9MYWthdG9zIiwiUGF1bCBGZXllcmFiZW5kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF1bF9GZXllcmFiZW5kIiwiSWFuIEhhY2tpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JYW5fSGFja2luZyIsIkJhcyB2YW4gRnJhYXNzZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNfdmFuX0ZyYWFzc2VuIiwiTGFycnkgTGF1ZGFuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFycnlfTGF1ZGFuIiwiUGhpbG9zb3BoeSBwb3J0YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qb3J0YWw6UGhpbG9zb3BoeSIsIlNjaWVuY2UgcG9ydGFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUG9ydGFsOlNjaWVuY2UiLCJFdm9sdXRpb25hcnkgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXZvbHV0aW9uYXJ5X2FsZ29yaXRobSIsIkV2b2x1dGlvbmFyeSBkYXRhIG1pbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9kYXRhX21pbmluZyIsIkV2b2x1dGlvbmFyeSBtdWx0aW1vZGFsIG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9tdWx0aW1vZGFsX29wdGltaXphdGlvbiIsIkh1bWFuLWJhc2VkIGV2b2x1dGlvbmFyeSBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1bWFuLWJhc2VkX2V2b2x1dGlvbmFyeV9jb21wdXRhdGlvbiIsIkludGVyYWN0aXZlIGV2b2x1dGlvbmFyeSBjb21wdXRhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aXZlX2V2b2x1dGlvbmFyeV9jb21wdXRhdGlvbiIsIkFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGdvcml0aG0iLCJDZWxsdWxhciBldm9sdXRpb25hcnkgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VsbHVsYXJfZXZvbHV0aW9uYXJ5X2FsZ29yaXRobSIsIkNvdmFyaWFuY2UgTWF0cml4IEFkYXB0YXRpb24gRXZvbHV0aW9uIFN0cmF0ZWd5IChDTUEtRVMpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ01BLUVTIiwiQ3VsdHVyYWwgYWxnb3JpdGhtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3VsdHVyYWxfYWxnb3JpdGhtIiwiRGlmZmVyZW50aWFsIGV2b2x1dGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF9ldm9sdXRpb24iLCJFdm9sdXRpb25hcnkgcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfcHJvZ3JhbW1pbmciLCJHZW5ldGljIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfYWxnb3JpdGhtIiwiR2VuZXRpYyBwcm9ncmFtbWluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfcHJvZ3JhbW1pbmciLCJHZW5lIGV4cHJlc3Npb24gcHJvZ3JhbW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZW5lX2V4cHJlc3Npb25fcHJvZ3JhbW1pbmciLCJFdm9sdXRpb24gc3RyYXRlZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25fc3RyYXRlZ3kiLCJOYXR1cmFsIGV2b2x1dGlvbiBzdHJhdGVneSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05hdHVyYWxfZXZvbHV0aW9uX3N0cmF0ZWd5IiwiTmV1cm9ldm9sdXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2V2b2x1dGlvbiIsIkxlYXJuaW5nIGNsYXNzaWZpZXIgc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGVhcm5pbmdfY2xhc3NpZmllcl9zeXN0ZW0iLCJTd2FybSBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Td2FybV9pbnRlbGxpZ2VuY2UiLCJBbnQgY29sb255IG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FudF9jb2xvbnlfb3B0aW1pemF0aW9uIiwiQmVlcyBhbGdvcml0aG0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CZWVzX2FsZ29yaXRobSIsIkN1Y2tvbyBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DdWNrb29fc2VhcmNoIiwiUGFydGljbGUgc3dhcm0gb3B0aW1pemF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGljbGVfc3dhcm1fb3B0aW1pemF0aW9uIiwiQmFjdGVyaWFsIENvbG9ueSBPcHRpbWl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYWN0ZXJpYWxfQ29sb255X09wdGltaXphdGlvbiIsIk1ldGFoZXVyaXN0aWMgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01ldGFoZXVyaXN0aWMiLCJGaXJlZmx5IGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpcmVmbHlfYWxnb3JpdGhtIiwiSGFybW9ueSBzZWFyY2giOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtb255X3NlYXJjaCIsIkdhdXNzaWFuIGFkYXB0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HYXVzc2lhbl9hZGFwdGF0aW9uIiwiTWVtZXRpYyBhbGdvcml0aG0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1ldGljX2FsZ29yaXRobSIsIkFydGlmaWNpYWwgZGV2ZWxvcG1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2RldmVsb3BtZW50IiwiQXJ0aWZpY2lhbCBsaWZlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9saWZlIiwiRGlnaXRhbCBvcmdhbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZ2l0YWxfb3JnYW5pc20iLCJFdm9sdXRpb25hcnkgcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfcm9ib3RpY3MiLCJGaXRuZXNzIGZ1bmN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRml0bmVzc19mdW5jdGlvbiIsIkZpdG5lc3MgbGFuZHNjYXBlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRml0bmVzc19sYW5kc2NhcGUiLCJGaXRuZXNzIGFwcHJveGltYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXRuZXNzX2FwcHJveGltYXRpb24iLCJHZW5ldGljIG9wZXJhdG9ycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlbmV0aWNfb3BlcmF0b3JzIiwiTm8gZnJlZSBsdW5jaCBpbiBzZWFyY2ggYW5kIG9wdGltaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05vX2ZyZWVfbHVuY2hfaW5fc2VhcmNoX2FuZF9vcHRpbWl6YXRpb24iLCJNYXRpbmcgcG9vbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hdGluZ19wb29sIiwiUHJlbWF0dXJlIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJlbWF0dXJlX2NvbnZlcmdlbmNlIiwiUHJvZ3JhbSBzeW50aGVzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtX3N5bnRoZXNpcyIsIkpvdXJuYWxzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWNhZGVtaWNfam91cm5hbCIsIkV2b2x1dGlvbmFyeSBDb21wdXRhdGlvbiAoam91cm5hbCkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Fdm9sdXRpb25hcnlfQ29tcHV0YXRpb25fKGpvdXJuYWwpIiwiQ29tcHV0ZXIgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NvbXB1dGVyX3NjaWVuY2UiLCJBQ00gQ29tcHV0aW5nIENsYXNzaWZpY2F0aW9uIFN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FDTV9Db21wdXRpbmdfQ2xhc3NpZmljYXRpb25fU3lzdGVtIiwiSGFyZHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRlcl9oYXJkd2FyZSIsIlByaW50ZWQgY2lyY3VpdCBib2FyZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ByaW50ZWRfY2lyY3VpdF9ib2FyZCIsIlBlcmlwaGVyYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJpcGhlcmFsIiwiSW50ZWdyYXRlZCBjaXJjdWl0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZWdyYXRlZF9jaXJjdWl0IiwiVmVyeSBMYXJnZSBTY2FsZSBJbnRlZ3JhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZlcnlfTGFyZ2VfU2NhbGVfSW50ZWdyYXRpb24iLCJTeXN0ZW1zIG9uIENoaXAgKFNvQ3MpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3lzdGVtX29uX2FfY2hpcCIsIkVuZXJneSBjb25zdW1wdGlvbiAoR3JlZW4gY29tcHV0aW5nKSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyZWVuX2NvbXB1dGluZyIsIkVsZWN0cm9uaWMgZGVzaWduIGF1dG9tYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvbmljX2Rlc2lnbl9hdXRvbWF0aW9uIiwiSGFyZHdhcmUgYWNjZWxlcmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFyZHdhcmVfYWNjZWxlcmF0aW9uIiwiUHJvY2Vzc29yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvY2Vzc29yXyhjb21wdXRpbmcpIiwiU2l6ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfY29tcHV0ZXJfc2l6ZV9jYXRlZ29yaWVzIiwiRm9ybSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1fZmFjdG9yXyhkZXNpZ24pIiwiQ29tcHV0ZXIgYXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYXJjaGl0ZWN0dXJlIiwiQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9jb21wbGV4aXR5IiwiRGVwZW5kYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlcGVuZGFiaWxpdHkiLCJFbWJlZGRlZCBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWJlZGRlZF9zeXN0ZW0iLCJSZWFsLXRpbWUgY29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVhbC10aW1lX2NvbXB1dGluZyIsIk5ldHdvcmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfbmV0d29yayIsIk5ldHdvcmsgYXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19hcmNoaXRlY3R1cmUiLCJOZXR3b3JrIHByb3RvY29sIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19wcm90b2NvbCIsIk5ldHdvcmsgY29tcG9uZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtpbmdfaGFyZHdhcmUiLCJOZXR3b3JrIHNjaGVkdWxlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfc2NoZWR1bGVyIiwiTmV0d29yayBwZXJmb3JtYW5jZSBldmFsdWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya19wZXJmb3JtYW5jZSIsIk5ldHdvcmsgc2VydmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfc2VydmljZSIsIkludGVycHJldGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJwcmV0ZXJfKGNvbXB1dGluZykiLCJNaWRkbGV3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlkZGxld2FyZSIsIlZpcnR1YWwgbWFjaGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZpcnR1YWxfbWFjaGluZSIsIk9wZXJhdGluZyBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVyYXRpbmdfc3lzdGVtIiwiU29mdHdhcmUgcXVhbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX3F1YWxpdHkiLCJTb2Z0d2FyZSBub3RhdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWluZ19sYW5ndWFnZV90aGVvcnkiLCJ0b29scyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3Rvb2wiLCJQcm9ncmFtbWluZyBwYXJhZGlnbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3BhcmFkaWdtIiwiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWluZ19sYW5ndWFnZSIsIkNvbXBpbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGlsZXJfY29uc3RydWN0aW9uIiwiRG9tYWluLXNwZWNpZmljIGxhbmd1YWdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlIiwiTW9kZWxpbmcgbGFuZ3VhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbGluZ19sYW5ndWFnZSIsIlNvZnR3YXJlIGZyYW1ld29yayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX2ZyYW1ld29yayIsIkludGVncmF0ZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlZ3JhdGVkX2RldmVsb3BtZW50X2Vudmlyb25tZW50IiwiU29mdHdhcmUgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfY29uZmlndXJhdGlvbl9tYW5hZ2VtZW50IiwiU29mdHdhcmUgbGlicmFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpYnJhcnlfKGNvbXB1dGluZykiLCJTb2Z0d2FyZSByZXBvc2l0b3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfcmVwb3NpdG9yeSIsIlNvZnR3YXJlIGRldmVsb3BtZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZGV2ZWxvcG1lbnQiLCJDb250cm9sIHZhcmlhYmxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udHJvbF92YXJpYWJsZV8ocHJvZ3JhbW1pbmcpIiwiU29mdHdhcmUgZGV2ZWxvcG1lbnQgcHJvY2VzcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX2RldmVsb3BtZW50X3Byb2Nlc3MiLCJSZXF1aXJlbWVudHMgYW5hbHlzaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXF1aXJlbWVudHNfYW5hbHlzaXMiLCJTb2Z0d2FyZSBkZXNpZ24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZV9kZXNpZ24iLCJTb2Z0d2FyZSBjb25zdHJ1Y3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2Z0d2FyZV9jb25zdHJ1Y3Rpb24iLCJTb2Z0d2FyZSBkZXBsb3ltZW50IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZGVwbG95bWVudCIsIlNvZnR3YXJlIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdHdhcmVfZW5naW5lZXJpbmciLCJTb2Z0d2FyZSBtYWludGVuYW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlX21haW50ZW5hbmNlIiwiUHJvZ3JhbW1pbmcgdGVhbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2dyYW1taW5nX3RlYW0iLCJPcGVuLXNvdXJjZSBtb2RlbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX3NvZnR3YXJlIiwiVGhlb3J5IG9mIGNvbXB1dGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlb3J5X29mX2NvbXB1dGF0aW9uIiwiTW9kZWwgb2YgY29tcHV0YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2RlbF9vZl9jb21wdXRhdGlvbiIsIlN0b2NoYXN0aWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdG9jaGFzdGljX2NvbXB1dGluZyIsIkZvcm1hbCBsYW5ndWFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1hbF9sYW5ndWFnZSIsIkF1dG9tYXRhIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F1dG9tYXRhX3RoZW9yeSIsIkNvbXB1dGFiaWxpdHkgdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YWJpbGl0eV90aGVvcnkiLCJDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHkgdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9jb21wbGV4aXR5X3RoZW9yeSIsIlNlbWFudGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbWFudGljc18oY29tcHV0ZXJfc2NpZW5jZSkiLCJBbGdvcml0aG0gZGVzaWduIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxnb3JpdGhtX2Rlc2lnbiIsIkFuYWx5c2lzIG9mIGFsZ29yaXRobXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmFseXNpc19vZl9hbGdvcml0aG1zIiwiQWxnb3JpdGhtaWMgZWZmaWNpZW5jeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZ29yaXRobWljX2VmZmljaWVuY3kiLCJSYW5kb21pemVkIGFsZ29yaXRobSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhbmRvbWl6ZWRfYWxnb3JpdGhtIiwiQ29tcHV0YXRpb25hbCBnZW9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfZ2VvbWV0cnkiLCJEaXNjcmV0ZSBtYXRoZW1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc2NyZXRlX21hdGhlbWF0aWNzIiwiUHJvYmFiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9iYWJpbGl0eSIsIlN0YXRpc3RpY3MiOiJodHRwczovL3N0YXRzLndpa2ltZWRpYS5vcmcvIy9lbi53aWtpcGVkaWEub3JnIiwiTWF0aGVtYXRpY2FsIHNvZnR3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX3NvZnR3YXJlIiwiSW5mb3JtYXRpb24gdGhlb3J5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fdGhlb3J5IiwiTWF0aGVtYXRpY2FsIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX2FuYWx5c2lzIiwiTnVtZXJpY2FsIGFuYWx5c2lzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTnVtZXJpY2FsX2FuYWx5c2lzIiwiVGhlb3JldGljYWwgY29tcHV0ZXIgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RoZW9yZXRpY2FsX2NvbXB1dGVyX3NjaWVuY2UiLCJJbmZvcm1hdGlvbiBzeXN0ZW1zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5mb3JtYXRpb25fc3lzdGVtIiwiRGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EYXRhYmFzZSIsIkluZm9ybWF0aW9uIHN0b3JhZ2Ugc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyX2RhdGFfc3RvcmFnZSIsIkVudGVycHJpc2UgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW50ZXJwcmlzZV9pbmZvcm1hdGlvbl9zeXN0ZW0iLCJTb2NpYWwgaW5mb3JtYXRpb24gc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lhbF9zb2Z0d2FyZSIsIkdlb2dyYXBoaWMgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VvZ3JhcGhpY19pbmZvcm1hdGlvbl9zeXN0ZW0iLCJEZWNpc2lvbiBzdXBwb3J0IHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlY2lzaW9uX3N1cHBvcnRfc3lzdGVtIiwiUHJvY2VzcyBjb250cm9sIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Byb2Nlc3NfY29udHJvbCIsIk11bHRpbWVkaWEgaW5mb3JtYXRpb24gc3lzdGVtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGltZWRpYV9kYXRhYmFzZSIsIkRhdGEgbWluaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YV9taW5pbmciLCJEaWdpdGFsIGxpYnJhcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWdpdGFsX2xpYnJhcnkiLCJDb21wdXRpbmcgcGxhdGZvcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRpbmdfcGxhdGZvcm0iLCJEaWdpdGFsIG1hcmtldGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZ2l0YWxfbWFya2V0aW5nIiwiV29ybGQgV2lkZSBXZWIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JsZF9XaWRlX1dlYiIsIkluZm9ybWF0aW9uIHJldHJpZXZhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX3JldHJpZXZhbCIsIlNlY3VyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfc2VjdXJpdHkiLCJDcnlwdG9ncmFwaHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcnlwdG9ncmFwaHkiLCJGb3JtYWwgbWV0aG9kcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zvcm1hbF9tZXRob2RzIiwiU2VjdXJpdHkgaGFja2VyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VjdXJpdHlfaGFja2VyIiwiU2VjdXJpdHkgc2VydmljZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZWN1cml0eV9zZXJ2aWNlXyh0ZWxlY29tbXVuaWNhdGlvbikiLCJJbnRydXNpb24gZGV0ZWN0aW9uIHN5c3RlbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJ1c2lvbl9kZXRlY3Rpb25fc3lzdGVtIiwiSGFyZHdhcmUgc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJkd2FyZV9zZWN1cml0eSIsIk5ldHdvcmsgc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXR3b3JrX3NlY3VyaXR5IiwiSW5mb3JtYXRpb24gc2VjdXJpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZvcm1hdGlvbl9zZWN1cml0eSIsIkFwcGxpY2F0aW9uIHNlY3VyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fc2VjdXJpdHkiLCJIdW1hbuKAk2NvbXB1dGVyIGludGVyYWN0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW4lRTIlODAlOTNjb21wdXRlcl9pbnRlcmFjdGlvbiIsIkludGVyYWN0aW9uIGRlc2lnbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVyYWN0aW9uX2Rlc2lnbiIsIlNvY2lhbCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2NpYWxfY29tcHV0aW5nIiwiVWJpcXVpdG91cyBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VYmlxdWl0b3VzX2NvbXB1dGluZyIsIlZpc3VhbGl6YXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXN1YWxpemF0aW9uXyhncmFwaGljcykiLCJBY2Nlc3NpYmlsaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYWNjZXNzaWJpbGl0eSIsIkNvbmN1cnJlbmN5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uY3VycmVuY3lfKGNvbXB1dGVyX3NjaWVuY2UpIiwiQ29uY3VycmVudCBjb21wdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25jdXJyZW50X2NvbXB1dGluZyIsIlBhcmFsbGVsIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhcmFsbGVsX2NvbXB1dGluZyIsIkRpc3RyaWJ1dGVkIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGVkX2NvbXB1dGluZyIsIk11bHRpdGhyZWFkaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGl0aHJlYWRpbmdfKGNvbXB1dGVyX2FyY2hpdGVjdHVyZSkiLCJNdWx0aXByb2Nlc3NpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NdWx0aXByb2Nlc3NpbmciLCJLbm93bGVkZ2UgcmVwcmVzZW50YXRpb24gYW5kIHJlYXNvbmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tub3dsZWRnZV9yZXByZXNlbnRhdGlvbl9hbmRfcmVhc29uaW5nIiwiQXV0b21hdGVkIHBsYW5uaW5nIGFuZCBzY2hlZHVsaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3BsYW5uaW5nX2FuZF9zY2hlZHVsaW5nIiwiU2VhcmNoIG1ldGhvZG9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0aGVtYXRpY2FsX29wdGltaXphdGlvbiIsIkNvbnRyb2wgbWV0aG9kIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udHJvbF90aGVvcnkiLCJEaXN0cmlidXRlZCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RyaWJ1dGVkX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiTXVsdGktdGFzayBsZWFybmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpLXRhc2tfbGVhcm5pbmciLCJDcm9zcy12YWxpZGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3Jvc3MtdmFsaWRhdGlvbl8oc3RhdGlzdGljcykiLCJHcmFwaGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGVyX2dyYXBoaWNzIiwiQW5pbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0ZXJfYW5pbWF0aW9uIiwiRXh0ZW5kZWQgcmVhbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4dGVuZGVkX3JlYWxpdHkiLCJBdWdtZW50ZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWdtZW50ZWRfcmVhbGl0eSIsIk1peGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWl4ZWRfcmVhbGl0eSIsIlZpcnR1YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaXJ0dWFsX3JlYWxpdHkiLCJSZW5kZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZW5kZXJpbmdfKGNvbXB1dGVyX2dyYXBoaWNzKSIsIlBob3RvZ3JhcGggbWFuaXB1bGF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGhvdG9ncmFwaF9tYW5pcHVsYXRpb24iLCJHcmFwaGljcyBwcm9jZXNzaW5nIHVuaXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaGljc19wcm9jZXNzaW5nX3VuaXQiLCJJbWFnZSBjb21wcmVzc2lvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ltYWdlX2NvbXByZXNzaW9uIiwiU29saWQgbW9kZWxpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2xpZF9tb2RlbGluZyIsIlF1YW50dW0gQ29tcHV0aW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUXVhbnR1bV9Db21wdXRpbmciLCJFLWNvbW1lcmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRS1jb21tZXJjZSIsIkVudGVycHJpc2Ugc29mdHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbnRlcnByaXNlX3NvZnR3YXJlIiwiQ29tcHV0YXRpb25hbCBtYXRoZW1hdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfbWF0aGVtYXRpY3MiLCJDb21wdXRhdGlvbmFsIHBoeXNpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wdXRhdGlvbmFsX3BoeXNpY3MiLCJDb21wdXRhdGlvbmFsIGNoZW1pc3RyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfY2hlbWlzdHJ5IiwiQ29tcHV0YXRpb25hbCBiaW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9iaW9sb2d5IiwiQ29tcHV0YXRpb25hbCBzb2NpYWwgc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXB1dGF0aW9uYWxfc29jaWFsX3NjaWVuY2UiLCJDb21wdXRhdGlvbmFsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcHV0YXRpb25hbF9lbmdpbmVlcmluZyIsIkRpZmZlcmVudGlhYmxlIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlbXBsYXRlOkRpZmZlcmVudGlhYmxlX2NvbXB1dGluZyIsIkNvbXB1dGF0aW9uYWwgaGVhbHRoY2FyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYWx0aF9pbmZvcm1hdGljcyIsIkRpZ2l0YWwgYXJ0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlnaXRhbF9hcnQiLCJFbGVjdHJvbmljIHB1Ymxpc2hpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvbmljX3B1Ymxpc2hpbmciLCJDeWJlcndhcmZhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJlcndhcmZhcmUiLCJFbGVjdHJvbmljIHZvdGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsZWN0cm9uaWNfdm90aW5nIiwiVmlkZW8gZ2FtZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WaWRlb19nYW1lIiwiV29yZCBwcm9jZXNzaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29yZF9wcm9jZXNzb3IiLCJPcGVyYXRpb25zIHJlc2VhcmNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlcmF0aW9uc19yZXNlYXJjaCIsIkVkdWNhdGlvbmFsIHRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZHVjYXRpb25hbF90ZWNobm9sb2d5IiwiRG9jdW1lbnQgbWFuYWdlbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvY3VtZW50X21hbmFnZW1lbnRfc3lzdGVtIiwiT3V0bGluZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL091dGxpbmVfb2Zfcm9ib3RpY3MiLCJHbG9zc2FyaWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVtcGxhdGU6R2xvc3Nhcmllc19vZl9jb21wdXRlcnMiLCJFbWVyZ2luZyB0ZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbWVyZ2luZ190ZWNobm9sb2dpZXMiLCJJbmZvcm1hdGlvbiBhbmRjb21tdW5pY2F0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm9ybWF0aW9uX2FuZF9jb21tdW5pY2F0aW9uc190ZWNobm9sb2d5IiwiQW1iaWVudCBpbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbWJpZW50X2ludGVsbGlnZW5jZSIsIkludGVybmV0IG9mIHRoaW5ncyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmV0X29mX3RoaW5ncyIsIk1hY2hpbmUgdHJhbnNsYXRpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNoaW5lX3RyYW5zbGF0aW9uIiwiTWFjaGluZSB2aXNpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9tYWNoaW5lX3Zpc2lvbiIsIk1vYmlsZSB0cmFuc2xhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vYmlsZV90cmFuc2xhdGlvbiIsIlByb2dyZXNzIGluIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvZ3Jlc3NfaW5fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJTZW1hbnRpYyBXZWIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZW1hbnRpY19XZWIiLCJBdG9tdHJvbmljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0F0b210cm9uaWNzIiwiQ2FyYm9uIG5hbm90dWJlIGZpZWxkLWVmZmVjdCB0cmFuc2lzdG9yIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FyYm9uX25hbm90dWJlX2ZpZWxkLWVmZmVjdF90cmFuc2lzdG9yIiwiQ3liZXJtZXRob2RvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N5YmVybWV0aG9kb2xvZ3kiLCJGb3VydGgtZ2VuZXJhdGlvbiBvcHRpY2FsIGRpc2NzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3B0aWNhbF9kaXNjI0ZvdXJ0aC1nZW5lcmF0aW9uIiwiM0Qgb3B0aWNhbCBkYXRhIHN0b3JhZ2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS8zRF9vcHRpY2FsX2RhdGFfc3RvcmFnZSIsIkhvbG9ncmFwaGljIGRhdGEgc3RvcmFnZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvbG9ncmFwaGljX2RhdGFfc3RvcmFnZSIsIkdQR1BVIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXJhbC1wdXJwb3NlX2NvbXB1dGluZ19vbl9ncmFwaGljc19wcm9jZXNzaW5nX3VuaXRzIiwiQ0JSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcm9ncmFtbWFibGVfbWV0YWxsaXphdGlvbl9jZWxsIiwiRUNSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJvY2hlbWljYWxfUkFNIiwiRlJBTSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZlcnJvZWxlY3RyaWNfUkFNIiwiTWlsbGlwZWRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlsbGlwZWRlX21lbW9yeSIsIk1SQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWduZXRvcmVzaXN0aXZlX1JBTSIsIk5SQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYW5vLVJBTSIsIlBSQU0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QaGFzZS1jaGFuZ2VfbWVtb3J5IiwiUmFjZXRyYWNrIG1lbW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhY2V0cmFja19tZW1vcnkiLCJSUkFNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzaXN0aXZlX3JhbmRvbS1hY2Nlc3NfbWVtb3J5IiwiU09OT1MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TT05PUyIsIlVsdHJhUkFNIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVWx0cmFSQU0iLCJPcHRpY2FsIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wdGljYWxfY29tcHV0aW5nIiwiUkZJRCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhZGlvLWZyZXF1ZW5jeV9pZGVudGlmaWNhdGlvbiIsIkNoaXBsZXNzIFJGSUQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGlwbGVzc19SRklEIiwiU29mdHdhcmUtZGVmaW5lZCByYWRpbyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvZnR3YXJlLWRlZmluZWRfcmFkaW8iLCJUaHJlZS1kaW1lbnNpb25hbCBpbnRlZ3JhdGVkIGNpcmN1aXQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaHJlZS1kaW1lbnNpb25hbF9pbnRlZ3JhdGVkX2NpcmN1aXQiLCJBdXRvbWF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGlvbiIsIkNvbGxpbmdyaWRnZSBkaWxlbW1hIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29sbGluZ3JpZGdlX2RpbGVtbWEiLCJEaWZmZXJlbnRpYWwgdGVjaG5vbG9naWNhbCBkZXZlbG9wbWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpZmZlcmVudGlhbF90ZWNobm9sb2dpY2FsX2RldmVsb3BtZW50IiwiRGlzcnVwdGl2ZSBpbm5vdmF0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzcnVwdGl2ZV9pbm5vdmF0aW9uIiwiRXBoZW1lcmFsaXphdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VwaGVtZXJhbGl6YXRpb24iLCJCaW9ldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaW9ldGhpY3MiLCJDeWJlcmV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N5YmVyZXRoaWNzIiwiTmV1cm9ldGhpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXVyb2V0aGljcyIsIlJvYm90IGV0aGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90X2V0aGljcyIsIkV4cGxvcmF0b3J5IGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwbG9yYXRvcnlfZW5naW5lZXJpbmciLCJQcm9hY3Rpb25hcnkgcHJpbmNpcGxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvYWN0aW9uYXJ5X3ByaW5jaXBsZSIsIlRlY2hub2xvZ2ljYWwgY2hhbmdlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9jaGFuZ2UiLCJUZWNobm9sb2dpY2FsIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9jb252ZXJnZW5jZSIsIlRlY2hub2xvZ2ljYWwgZXZvbHV0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9ldm9sdXRpb24iLCJUZWNobm9sb2dpY2FsIHBhcmFkaWdtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9wYXJhZGlnbSIsIlRlY2hub2xvZ3kgZm9yZWNhc3RpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X2ZvcmVjYXN0aW5nIiwiQWNjZWxlcmF0aW5nIGNoYW5nZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FjY2VsZXJhdGluZ19jaGFuZ2UiLCJGdXR1cmUtb3JpZW50ZWQgdGVjaG5vbG9neSBhbmFseXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1dHVyZS1vcmllbnRlZF90ZWNobm9sb2d5X2FuYWx5c2lzIiwiSG9yaXpvbiBzY2FubmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvcml6b25fc2Nhbm5pbmciLCJUZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9naWNhbF9zaW5ndWxhcml0eSIsIlRlY2hub2xvZ3kgc2NvdXRpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X3Njb3V0aW5nIiwiVGVjaG5vbG9neSBpbiBzY2llbmNlIGZpY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X2luX3NjaWVuY2VfZmljdGlvbiIsIlRlY2hub2xvZ3kgcmVhZGluZXNzIGxldmVsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGVjaG5vbG9neV9yZWFkaW5lc3NfbGV2ZWwiLCJUZWNobm9sb2d5IHJvYWRtYXAiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZWNobm9sb2d5X3JvYWRtYXAiLCJMaXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9lbWVyZ2luZ190ZWNobm9sb2dpZXMiLCJJbmRleCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZGV4X29mX3JvYm90aWNzX2FydGljbGVzIiwiSGFsbCBvZiBGYW1lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RfSGFsbF9vZl9GYW1lIiwiTGF3cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhd3Nfb2Zfcm9ib3RpY3MiLCJDb21wZXRpdGlvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9jb21wZXRpdGlvbiIsIkFJIGNvbXBldGl0aW9ucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXBldGl0aW9uc19hbmRfcHJpemVzX2luX2FydGlmaWNpYWxfaW50ZWxsaWdlbmNlIiwiVHlwZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdCIsIkFlcm9ib3QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZXJvYm90IiwiQW50aHJvcG9tb3JwaGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW50aHJvcG9tb3JwaGljIiwiSHVtYW5vaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbm9pZF9yb2JvdCIsIkFuZHJvaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmRyb2lkXyhyb2JvdCkiLCJDeWJvcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWJvcmciLCJHeW5vaWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HeW5vaWQiLCJDbGF5dHJvbmljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsYXl0cm9uaWNzIiwiQ29tcGFuaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFuaW9uX3JvYm90IiwiQXV0b21hdG9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdG9uIiwiQW5pbWF0cm9uaWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbmltYXRyb25pY3MiLCJBdWRpby1BbmltYXRyb25pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdWRpby1BbmltYXRyb25pY3MiLCJJbmR1c3RyaWFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5kdXN0cmlhbF9yb2JvdCIsIkFydGljdWxhdGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWN1bGF0ZWRfcm9ib3QiLCJhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX2FybSIsIkRvbWVzdGljIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tZXN0aWNfcm9ib3QiLCJFZHVjYXRpb25hbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VkdWNhdGlvbmFsX3JvYm90aWNzIiwiRW50ZXJ0YWlubWVudCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VudGVydGFpbm1lbnRfcm9ib3QiLCJKdWdnbGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0p1Z2dsaW5nX3JvYm90IiwiTWVkaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGljYWxfcm9ib3QiLCJTZXJ2aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2VydmljZV9yb2JvdCIsIkRpc2FiaWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXNhYmlsaXR5X3JvYm90IiwiQWdyaWN1bHR1cmFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWdyaWN1bHR1cmFsX3JvYm90IiwiRm9vZCBzZXJ2aWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXV0b21hdGVkX3Jlc3RhdXJhbnQiLCJSZXRhaWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbWF0ZWRfcmV0YWlsIiwiQkVBTSByb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JFQU1fcm9ib3RpY3MiLCJTb2Z0IHJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29mdF9yb2JvdGljcyIsIkJpb3JvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlvcm9ib3RpY3MiLCJDbG91ZCByb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nsb3VkX3JvYm90aWNzIiwiQ29udGludXVtIHJvYm90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29udGludXVtX3JvYm90IiwiVW5tYW5uZWQgdmVoaWNsZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VubWFubmVkX3ZlaGljbGUiLCJhZXJpYWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbm1hbm5lZF9hZXJpYWxfdmVoaWNsZSIsImdyb3VuZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VubWFubmVkX2dyb3VuZF92ZWhpY2xlIiwiTW9iaWxlIHJvYm90IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTW9iaWxlX3JvYm90IiwiTWljcm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb2JvdGljcyIsIk5hbm9yb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05hbm9yb2JvdGljcyIsIk5lY3JvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVjcm9ib3RpY3MiLCJSb2JvdGljIHNwYWNlY3JhZnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX3NwYWNlY3JhZnQiLCJTcGFjZSBwcm9iZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwYWNlX3Byb2JlIiwiU3dhcm0iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Td2FybV9yb2JvdGljcyIsIlRlbGVyb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlbGVyb2JvdGljcyIsIlVuZGVyd2F0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BdXRvbm9tb3VzX3VuZGVyd2F0ZXJfdmVoaWNsZSIsInJlbW90ZWx5LW9wZXJhdGVkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVtb3RlbHlfb3BlcmF0ZWRfdW5kZXJ3YXRlcl92ZWhpY2xlIiwiUm9ib3RpYyBmaXNoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19maXNoIiwiTG9jb21vdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90X2xvY29tb3Rpb24iLCJUcmFja3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db250aW51b3VzX3RyYWNrIiwiV2Fsa2luZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xlZ2dlZF9yb2JvdCIsIkhleGFwb2QiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZXhhcG9kXyhyb2JvdGljcykiLCJDbGltYmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaW1iZXJfKEJFQU0pIiwiRWxlY3RyaWMgdW5pY3ljbGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbGVjdHJpY191bmljeWNsZSIsIlJvYm90aWMgZmlucyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfZmluIiwiTmF2aWdhdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNfbmF2aWdhdGlvbiIsIm1hcHBpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljX21hcHBpbmciLCJNb3Rpb24gcGxhbm5pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb3Rpb25fcGxhbm5pbmciLCJTaW11bHRhbmVvdXMgbG9jYWxpemF0aW9uIGFuZCBtYXBwaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltdWx0YW5lb3VzX2xvY2FsaXphdGlvbl9hbmRfbWFwcGluZyIsIlZpc3VhbCBvZG9tZXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zpc3VhbF9vZG9tZXRyeSIsIlZpc2lvbi1ndWlkZWQgcm9ib3Qgc3lzdGVtcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zpc2lvbi1ndWlkZWRfcm9ib3Rfc3lzdGVtcyIsIkV2b2x1dGlvbmFyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9yb2JvdGljcyIsIktpdHMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdF9raXQiLCJTaW11bGF0b3IiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Sb2JvdGljc19zaW11bGF0b3IiLCJTdWl0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JvYm90aWNzX3N1aXRlIiwiT3Blbi1zb3VyY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuLXNvdXJjZV9yb2JvdGljcyIsIlNvZnR3YXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3Rfc29mdHdhcmUiLCJBZGFwdGFibGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZGFwdGFibGVfcm9ib3RpY3MiLCJEZXZlbG9wbWVudGFsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV2ZWxvcG1lbnRhbF9yb2JvdGljcyIsIkh1bWFu4oCTcm9ib3QgaW50ZXJhY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1hbiVFMiU4MCU5M3JvYm90X2ludGVyYWN0aW9uIiwiUGFyYWRpZ21zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY19wYXJhZGlnbSIsIlBlcmNlcHR1YWwiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXJjZXB0dWFsX3JvYm90aWNzIiwiU2l0dWF0ZWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaXR1YXRlZF9yb2JvdGljcyIsIlViaXF1aXRvdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VYmlxdWl0b3VzX3JvYm90IiwiQUJCIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUJCIiwiQW1hem9uIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1hem9uX1JvYm90aWNzIiwiQW55Ym90cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FueWJvdHMiLCJCYXJyZXR0IFRlY2hub2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXJyZXR0X1RlY2hub2xvZ3kiLCJCb3N0b24gRHluYW1pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cb3N0b25fRHluYW1pY3MiLCJEb29zYW4gUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb29zYW5fUm9ib3RpY3MiLCJFbmVyZ2lkIFRlY2hub2xvZ2llcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZXJnaWRfVGVjaG5vbG9naWVzIiwiRmFybVdpc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYXJtV2lzZSIsIkZBTlVDIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRkFOVUMiLCJGaWd1cmUgQUkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaWd1cmVfQUkiLCJGb3N0ZXItTWlsbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9zdGVyLU1pbGxlciIsIkhhcnZlc3QgQXV0b21hdGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhcnZlc3RfQXV0b21hdGlvbiIsIkhEIEh5dW5kYWkgUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IRF9IeXVuZGFpX1JvYm90aWNzIiwiSG9uZXliZWUgUm9ib3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ib25leWJlZV9Sb2JvdGljcyIsIkludHVpdGl2ZSBTdXJnaWNhbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHVpdGl2ZV9TdXJnaWNhbCIsIklSb2JvdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lSb2JvdCIsIktVS0EiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LVUtBIiwiUmFpbmJvdyBSb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JhaW5ib3dfUm9ib3RpY3MiLCJTdGFyc2hpcCBUZWNobm9sb2dpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFyc2hpcF9UZWNobm9sb2dpZXMiLCJTeW1ib3RpYyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bWJvdGljIiwiVW5pdmVyc2FsIFJvYm90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pdmVyc2FsX1JvYm90aWNzIiwiV29sZiBSb2JvdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvbGZfUm9ib3RpY3MiLCJZYXNrYXdhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWWFza2F3YV9FbGVjdHJpY19Db3Jwb3JhdGlvbiIsIkNyaXRpcXVlIG9mIHdvcmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Dcml0aXF1ZV9vZl93b3JrIiwiUG93ZXJlZCBleG9za2VsZXRvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Bvd2VyZWRfZXhvc2tlbGV0b24iLCJXb3JrcGxhY2Ugcm9ib3RpY3Mgc2FmZXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV29ya3BsYWNlX3JvYm90aWNzX3NhZmV0eSIsIlJvYm90aWMgdGVjaCB2ZXN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9ib3RpY190ZWNoX3Zlc3QiLCJUZXJyYWluYWJpbGl0eSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlcnJhaW5hYmlsaXR5IiwiRmljdGlvbmFsIHJvYm90cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfZmljdGlvbmFsX3JvYm90c19hbmRfYW5kcm9pZHMiLCJBSSBhbGlnbm1lbnQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9hbGlnbm1lbnQiLCJBSSBjYXBhYmlsaXR5IGNvbnRyb2wiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BSV9jYXBhYmlsaXR5X2NvbnRyb2wiLCJDb25zZXF1ZW50aWFsaXNtIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29uc2VxdWVudGlhbGlzbSIsIkVmZmVjdGl2ZSBhY2NlbGVyYXRpb25pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FZmZlY3RpdmVfYWNjZWxlcmF0aW9uaXNtIiwiSW5zdHJ1bWVudGFsIGNvbnZlcmdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdHJ1bWVudGFsX2NvbnZlcmdlbmNlIiwiTG9uZ3Rlcm1pc20iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb25ndGVybWlzbSIsIlN1ZmZlcmluZyByaXNrcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Jpc2tfb2ZfYXN0cm9ub21pY2FsX3N1ZmZlcmluZyIsIlN1cGVyaW50ZWxsaWdlbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3VwZXJpbnRlbGxpZ2VuY2UiLCJBbGlnbm1lbnQgUmVzZWFyY2ggQ2VudGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxpZ25tZW50X1Jlc2VhcmNoX0NlbnRlciIsIkNlbnRlciBmb3IgQUkgU2FmZXR5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudGVyX2Zvcl9BSV9TYWZldHkiLCJDZW50ZXIgZm9yIEFwcGxpZWQgUmF0aW9uYWxpdHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DZW50ZXJfZm9yX0FwcGxpZWRfUmF0aW9uYWxpdHkiLCJDZW50ZXIgZm9yIEh1bWFuLUNvbXBhdGlibGUgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DZW50ZXJfZm9yX0h1bWFuLUNvbXBhdGlibGVfQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2UiLCJDZW50cmUgZm9yIHRoZSBTdHVkeSBvZiBFeGlzdGVudGlhbCBSaXNrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2VudHJlX2Zvcl90aGVfU3R1ZHlfb2ZfRXhpc3RlbnRpYWxfUmlzayIsIkZ1dHVyZSBvZiBIdW1hbml0eSBJbnN0aXR1dGUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GdXR1cmVfb2ZfSHVtYW5pdHlfSW5zdGl0dXRlIiwiRnV0dXJlIG9mIExpZmUgSW5zdGl0dXRlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnV0dXJlX29mX0xpZmVfSW5zdGl0dXRlIiwiSHVtYW5pdHkrIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSHVtYW5pdHklMkIiLCJJbnN0aXR1dGUgZm9yIEV0aGljcyBhbmQgRW1lcmdpbmcgVGVjaG5vbG9naWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zdGl0dXRlX2Zvcl9FdGhpY3NfYW5kX0VtZXJnaW5nX1RlY2hub2xvZ2llcyIsIkxldmVyaHVsbWUgQ2VudHJlIGZvciB0aGUgRnV0dXJlIG9mIEludGVsbGlnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldmVyaHVsbWVfQ2VudHJlX2Zvcl90aGVfRnV0dXJlX29mX0ludGVsbGlnZW5jZSIsIk1hY2hpbmUgSW50ZWxsaWdlbmNlIFJlc2VhcmNoIEluc3RpdHV0ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY2hpbmVfSW50ZWxsaWdlbmNlX1Jlc2VhcmNoX0luc3RpdHV0ZSIsIlNjb3R0IEFsZXhhbmRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NsYXRlX1N0YXJfQ29kZXgiLCJQYXVsIENocmlzdGlhbm8iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXVsX0NocmlzdGlhbm9fKHJlc2VhcmNoZXIpIiwiRXJpYyBEcmV4bGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSy5fRXJpY19EcmV4bGVyIiwiU2FtIEhhcnJpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhbV9IYXJyaXMiLCJEYW4gSGVuZHJ5Y2tzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGFuX0hlbmRyeWNrcyIsIkJpbGwgSm95IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlsbF9Kb3kiLCJTaGFuZSBMZWdnIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2hhbmVfTGVnZyIsIlN0ZXZlIE9tb2h1bmRybyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0ZXZlX09tb2h1bmRybyIsIkh1dyBQcmljZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1d19QcmljZSIsIk1hcnRpbiBSZWVzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFydGluX1JlZXMiLCJKYWFuIFRhbGxpbm4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KYWFuX1RhbGxpbm4iLCJNYXggVGVnbWFyayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01heF9UZWdtYXJrIiwiRnJhbmsgV2lsY3playI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyYW5rX1dpbGN6ZWsiLCJSb21hbiBZYW1wb2xza2l5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9tYW5fWWFtcG9sc2tpeSIsIlN0YXRlbWVudCBvbiBBSSByaXNrIG9mIGV4dGluY3Rpb24iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGF0ZW1lbnRfb25fQUlfcmlza19vZl9leHRpbmN0aW9uIiwiT3BlbiBsZXR0ZXIgb24gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKDIwMTUpIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9sZXR0ZXJfb25fYXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2VfKDIwMTUpIiwiT3VyIEZpbmFsIEludmVudGlvbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL091cl9GaW5hbF9JbnZlbnRpb24iLCJUaGUgUHJlY2lwaWNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1ByZWNpcGljZTpfRXhpc3RlbnRpYWxfUmlza19hbmRfdGhlX0Z1dHVyZV9vZl9IdW1hbml0eSIsIkRvIFlvdSBUcnVzdCBUaGlzIENvbXB1dGVyPyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvX1lvdV9UcnVzdF9UaGlzX0NvbXB1dGVyJTNGIiwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQWN0IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9JbnRlbGxpZ2VuY2VfQWN0IiwiQmlvbG9naWNhbCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jpb2N5YmVybmV0aWNzIiwiQmlvbWVkaWNhbCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jpb21lZGljYWxfY3liZXJuZXRpY3MiLCJCaW9zZW1pb3RpY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaW9zZW1pb3RpY3MiLCJOZXVyb2N5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJhaW4lRTIlODAlOTNjb21wdXRlcl9pbnRlcmZhY2UiLCJDYXRhc3Ryb3BoZSB0aGVvcnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRhc3Ryb3BoZV90aGVvcnkiLCJDb21wdXRhdGlvbmFsIG5ldXJvc2NpZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkNvbXB1dGF0aW9uYWxfbmV1cm9zY2llbmNlIiwiQ29ubmVjdGlvbmlzbSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3Rpb25pc20iLCJDb250cm9sIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRyb2xfdGhlb3J5IiwiQ29udmVyc2F0aW9uIHRoZW9yeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnZlcnNhdGlvbl90aGVvcnkiLCJDeWJlcm5ldGljcyBpbiB0aGUgU292aWV0IFVuaW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY3NfaW5fdGhlX1NvdmlldF9VbmlvbiIsIkVtZXJnZW5jZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtZXJnZW5jZSIsIkVuZ2luZWVyaW5nIGN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5naW5lZXJpbmdfY3liZXJuZXRpY3MiLCJIb21lb3N0YXNpcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvbWVvc3Rhc2lzIiwiTWFuYWdlbWVudCBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hbmFnZW1lbnRfY3liZXJuZXRpY3MiLCJNZWRpY2FsIGN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVkaWNhbF9jeWJlcm5ldGljcyIsIlNlY29uZC1vcmRlciBjeWJlcm5ldGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlY29uZC1vcmRlcl9jeWJlcm5ldGljcyIsIkN5YmVyc2VtaW90aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJzZW1pb3RpY3MiLCJTb2Npb2N5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29jaW9jeWJlcm5ldGljcyIsIlN5bmVyZ2V0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3luZXJnZXRpY3NfKEhha2VuKSIsIkN5YmVybmV0aWNpYW5zIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3liZXJuZXRpY2lzdCIsIkFsZXhhbmRlciBMZXJuZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGV4YW5kZXJfTGVybmVyIiwiQWxleGV5IEx5YXB1bm92IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxleGV5X0x5YXB1bm92IiwiQWxmcmVkIFJhZGNsaWZmZS1Ccm93biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FsZnJlZF9SYWRjbGlmZmUtQnJvd24iLCJBbGxlbm5hIExlb25hcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BbGxlbm5hX0xlb25hcmQiLCJBbnRob255IFdpbGRlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FudGhvbnlfV2lsZGVuIiwiQnVja21pbnN0ZXIgRnVsbGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnVja21pbnN0ZXJfRnVsbGVyIiwiQ2hhcmxlcyBGcmFuw6dvaXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGFybGVzX0ZyYW4lQzMlQTdvaXNfKHN5c3RlbXNfc2NpZW50aXN0KSIsIkdlbmV2aWV2ZSBCZWxsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2VuZXZpZXZlX0JlbGwiLCJNYXJnYXJldCBCb2RlbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmdhcmV0X0JvZGVuIiwiQ2xhdWRlIEJlcm5hcmQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DbGF1ZGVfQmVybmFyZCIsIkNsaWZmIEpvc2x5biI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NsaWZmX0pvc2x5biIsIkVyaWNoIHZvbiBIb2xzdCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VyaWNoX3Zvbl9Ib2xzdCIsIkVybnN0IHZvbiBHbGFzZXJzZmVsZCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VybnN0X3Zvbl9HbGFzZXJzZmVsZCIsIkZyYW5jaXMgSGV5bGlnaGVuIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc19IZXlsaWdoZW4iLCJGcmFuY2lzY28gVmFyZWxhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJhbmNpc2NvX1ZhcmVsYSIsIkZyZWRlcmljIFZlc3RlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWRlcmljX1Zlc3RlciIsIkNoYXJsZXMgR2VvZmZyZXkgVmlja2VycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dlb2ZmcmV5X1ZpY2tlcnMiLCJHb3Jkb24gUGFzayI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dvcmRvbl9QYXNrIiwiR29yZG9uIFMuIEJyb3duIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29yZG9uX1MuX0Jyb3duIiwiR3JlZ29yeSBCYXRlc29uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JlZ29yeV9CYXRlc29uIiwiSGVpbnogdm9uIEZvZXJzdGVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGVpbnpfdm9uX0ZvZXJzdGVyIiwiSHVtYmVydG8gTWF0dXJhbmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdW1iZXJ0b19NYXR1cmFuYSIsIkkuIEEuIFJpY2hhcmRzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSS5fQS5fUmljaGFyZHMiLCJJZ29yIEFsZWtzYW5kZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JZ29yX0FsZWtzYW5kZXIiLCJKYWNxdWUgRnJlc2NvIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmFjcXVlX0ZyZXNjbyIsIkpha29iIHZvbiBVZXhrw7xsbCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pha29iX0pvaGFubl92b25fVWV4ayVDMyVCQ2xsIiwiSmFzb24gSml4dWFuIEh1IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmFzb25fSml4dWFuX0h1IiwiSmF5IFdyaWdodCBGb3JyZXN0ZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9KYXlfV3JpZ2h0X0ZvcnJlc3RlciIsIkplbm5pZmVyIFdpbGJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSmVubmlmZXJfV2lsYnkiLCJKb2huIE4uIFdhcmZpZWxkIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9OLl9XYXJmaWVsZCIsIkx1ZHdpZyB2b24gQmVydGFsYW5mZnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MdWR3aWdfdm9uX0JlcnRhbGFuZmZ5IiwiTWFsZXlrYSBBYmJhc3phZGVoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFsZXlrYV9BYmJhc3phZGVoIiwiTWFuZnJlZCBDbHluZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYW5mcmVkX0NseW5lcyIsIk1hcmdhcmV0IE1lYWQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJnYXJldF9NZWFkIiwiTWFyaWFuIE1henVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyaWFuX01henVyIiwiTi4gS2F0aGVyaW5lIEhheWxlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL04uX0thdGhlcmluZV9IYXlsZXMiLCJOYXRhbGlhIEJla2h0ZXJldmEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXRhbGlhX0Jla2h0ZXJldmEiLCJOaWtsYXMgTHVobWFubiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05pa2xhc19MdWhtYW5uIiwiTm9yYmVydCBXaWVuZXIiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob3JiZXJ0X1dpZW5lciIsIlB5b3RyIEdyaWdvcmVua28iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QZXRyb19Hcmlnb3JlbmtvIiwiUWlhbiBYdWVzZW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9RaWFuX1h1ZXNlbiIsIlJhbnVscGggR2xhbnZpbGxlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmFudWxwaF9HbGFudmlsbGUiLCJSb2JlcnQgVHJhcHBsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm9iZXJ0X1RyYXBwbCIsIlNlcmdlaSBQLiBLdXJkeXVtb3YiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXJnZWlfUC5fS3VyZHl1bW92IiwiQW50aG9ueSBTdGFmZm9yZCBCZWVyIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RhZmZvcmRfQmVlciIsIlN0dWFydCBLYXVmZm1hbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N0dWFydF9LYXVmZm1hbiIsIlN0dWFydCBVbXBsZWJ5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1YXJ0X1VtcGxlYnkiLCJUYWxjb3R0IFBhcnNvbnMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYWxjb3R0X1BhcnNvbnMiLCJVbGxhIE1pdHpkb3JmIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVWxsYV9NaXR6ZG9yZiIsIlZhbGVudGluIFR1cmNoaW4iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWxlbnRpbl9UdXJjaGluIiwiVmFsZW50aW4gQnJhaXRlbmJlcmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWxlbnRpbm9fQnJhaXRlbmJlcmciLCJXaWxsaWFtIFJvc3MgQXNoYnkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XLl9Sb3NzX0FzaGJ5IiwiV2FsdGVyIEJyYWRmb3JkIENhbm5vbiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhbHRlcl9CcmFkZm9yZF9DYW5ub24iLCJXYXJyZW4gTWNDdWxsb2NoIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2FycmVuX1N0dXJnaXNfTWNDdWxsb2NoIiwiV2lsbGlhbSBHcmV5IFdhbHRlciI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbGxpYW1fR3JleV9XYWx0ZXIiLCJzY2llbmNlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NpZW5jZSIsImVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5naW5lZXJpbmciLCJBZXJvc3BhY2UgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9hZXJvc3BhY2VfZW5naW5lZXJpbmciLCJBZ3JpY3VsdHVyZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2FncmljdWx0dXJlIiwiQXJjaGl0ZWN0dXJlIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJjaGl0ZWN0dXJlIiwiQXN0cm9ub215IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXN0cm9ub215IiwiQm90YW55IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYm90YW5pY2FsX3Rlcm1zIiwiQ2FsY3VsdXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9jYWxjdWx1cyIsIkNlbGwgYmlvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGxfYmlvbG9neSIsIkNpdmlsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfY2l2aWxfZW5naW5lZXJpbmciLCJDbGluaWNhbCByZXNlYXJjaCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NsaW5pY2FsX3Jlc2VhcmNoIiwiQ29tcHV0ZXIgaGFyZHdhcmUiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9jb21wdXRlcl9oYXJkd2FyZV90ZXJtcyIsIkRldmVsb3BtZW50YWwgYW5kIHJlcHJvZHVjdGl2ZSBiaW9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfZGV2ZWxvcG1lbnRhbF9iaW9sb2d5IiwiRWNvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2Vjb2xvZ3kiLCJFY29ub21pY3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lY29ub21pY3MiLCJFbGVjdHJpY2FsIGFuZCBlbGVjdHJvbmljcyBlbmdpbmVlcmluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2VsZWN0cmljYWxfYW5kX2VsZWN0cm9uaWNzX2VuZ2luZWVyaW5nIiwiQeKAk0wiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lbmdpbmVlcmluZzpfQSVFMiU4MCU5M0wiLCJN4oCTWiI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGx1bGFyX2FuZF9tb2xlY3VsYXJfYmlvbG9neV8oTSVFMiU4MCU5M1opIiwiRW50b21vbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2VudG9tb2xvZ3lfdGVybXMiLCJFbnZpcm9ubWVudGFsIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9lbnZpcm9ubWVudGFsX3NjaWVuY2UiLCJHZW5ldGljcyBhbmQgZXZvbHV0aW9uYXJ5IGJpb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW5ldGljc19hbmRfZXZvbHV0aW9uYXJ5X2Jpb2xvZ3kiLCIw4oCTTCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2NlbGx1bGFyX2FuZF9tb2xlY3VsYXJfYmlvbG9neV8oMCVFMiU4MCU5M0wpIiwiQeKAk00iOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW9ncmFwaHlfdGVybXNfKEElRTIlODAlOTNNKSIsIk7igJNaIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfZ2VvZ3JhcGh5X3Rlcm1zXyhOJUUyJTgwJTkzWikiLCJBcmFiaWMgdG9wb255bXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9BcmFiaWNfdG9wb255bXMiLCJIZWJyZXcgdG9wb255bXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9IZWJyZXdfdG9wb255bXMiLCJXZXN0ZXJuIGFuZCBTb3V0aCBBc2lhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2lrb255bXNfaW5fV2VzdGVybl9hbmRfU291dGhfQXNpYSIsIkdlb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9nZW9sb2d5IiwiSWNodGh5b2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9pY2h0aHlvbG9neSIsIk1hdGhlbWF0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfYXJlYXNfb2ZfbWF0aGVtYXRpY3MiLCJNZWNoYW5pY2FsIGVuZ2luZWVyaW5nIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbWVjaGFuaWNhbF9lbmdpbmVlcmluZyIsIk1lZGljaW5lIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbWVkaWNpbmUiLCJNZXRlb3JvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX21ldGVvcm9sb2d5IiwiTXljb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9teWNvbG9neSIsIk5hbm90ZWNobm9sb2d5IjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR2xvc3Nhcnlfb2ZfbmFub3RlY2hub2xvZ3kiLCJPcm5pdGhvbG9neSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX2JpcmRfdGVybXMiLCJQcm9iYWJpbGl0eSBhbmQgc3RhdGlzdGljcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3Byb2JhYmlsaXR5X2FuZF9zdGF0aXN0aWNzIiwiUHN5Y2hpYXRyeSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3BzeWNoaWF0cnkiLCJRdWFudHVtIGNvbXB1dGluZyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb3NzYXJ5X29mX3F1YW50dW1fY29tcHV0aW5nIiwiU2NpZW50aWZpYyBuYW1pbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9zY2llbnRpZmljX25hbWluZyIsIlN0cnVjdHVyYWwgZW5naW5lZXJpbmciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl9zdHJ1Y3R1cmFsX2VuZ2luZWVyaW5nIiwiVmlyb2xvZ3kiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HbG9zc2FyeV9vZl92aXJvbG9neSIsIkF1dGhvcml0eSBjb250cm9sIGRhdGFiYXNlcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlbHA6QXV0aG9yaXR5X2NvbnRyb2wiLCJHZXJtYW55IjoiaHR0cHM6Ly9kLW5iLmluZm8vZ25kLzQwMzM0NDctOCIsIkZyYW5jZSI6Imh0dHBzOi8vY2F0YWxvZ3VlLmJuZi5mci9hcms6LzEyMTQ4L2NiMTE5MzIwODR0IiwiQm5GIGRhdGEiOiJodHRwczovL2RhdGEuYm5mLmZyL2FyazovMTIxNDgvY2IxMTkzMjA4NHQiLCJKYXBhbiI6Imh0dHBzOi8vaWQubmRsLmdvLmpwL2F1dGgvbmRsbmEvMDA1NzQ3OTgiLCJDemVjaCBSZXB1YmxpYyI6Imh0dHBzOi8vYWxlcGgubmtwLmN6L0YvP2Z1bmM9ZmluZC1jJmxvY2FsX2Jhc2U9YXV0JmNjbF90ZXJtPWljYT1waDExNjUzNiZDT05fTE5HPUVORyIsIlNwYWluIjoiaHR0cDovL2NhdGFsb2dvLmJuZS5lcy91aHRiaW4vYXV0aG9yaXR5YnJvd3NlLmNnaT9hY3Rpb249ZGlzcGxheSZhdXRob3JpdHlfaWQ9WFg0NjU5ODIyIiwiTGF0dmlhIjoiaHR0cHM6Ly9rb3BrYXRhbG9ncy5sdi9GP2Z1bmM9ZGlyZWN0JmxvY2FsX2Jhc2U9bG5jMTAmZG9jX251bWJlcj0wMDAwNTAwMTAmUF9DT05fTE5HPUVORyIsIklzcmFlbCI6Imh0dHBzOi8vd3d3Lm5saS5vcmcuaWwvZW4vYXV0aG9yaXRpZXMvOTg3MDA3Mjk0OTY5MTA1MTcxIiwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm9sZGlkPTEyNzQ5NDEyOTciOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvdy9pbmRleC5waHA/dGl0bGU9QXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2Umb2xkaWQ9MTI3NDk0MTI5NyIsIkNhdGVnb3JpZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWxwOkNhdGVnb3J5IiwiQ29tcHV0YXRpb25hbCBmaWVsZHMgb2Ygc3R1ZHkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDb21wdXRhdGlvbmFsX2ZpZWxkc19vZl9zdHVkeSIsIkN5YmVybmV0aWNzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6Q3liZXJuZXRpY3MiLCJEYXRhIHNjaWVuY2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpEYXRhX3NjaWVuY2UiLCJGb3JtYWwgc2NpZW5jZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpGb3JtYWxfc2NpZW5jZXMiLCJJbnRlbGxpZ2VuY2UgYnkgdHlwZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkludGVsbGlnZW5jZV9ieV90eXBlIiwiV2ViYXJjaGl2ZSB0ZW1wbGF0ZSB3YXliYWNrIGxpbmtzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6V2ViYXJjaGl2ZV90ZW1wbGF0ZV93YXliYWNrX2xpbmtzIiwiQ1MxIEdlcm1hbi1sYW5ndWFnZSBzb3VyY2VzIChkZSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDUzFfR2VybWFuLWxhbmd1YWdlX3NvdXJjZXNfKGRlKSIsIkNTMSBKYXBhbmVzZS1sYW5ndWFnZSBzb3VyY2VzIChqYSkiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpDUzFfSmFwYW5lc2UtbGFuZ3VhZ2Vfc291cmNlc18oamEpIiwiQ1MxOiBsb25nIHZvbHVtZSB2YWx1ZSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkNTMTpfbG9uZ192b2x1bWVfdmFsdWUiLCJBcnRpY2xlcyB3aXRoIHNob3J0IGRlc2NyaXB0aW9uIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6QXJ0aWNsZXNfd2l0aF9zaG9ydF9kZXNjcmlwdGlvbiIsIlNob3J0IGRlc2NyaXB0aW9uIGlzIGRpZmZlcmVudCBmcm9tIFdpa2lkYXRhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6U2hvcnRfZGVzY3JpcHRpb25faXNfZGlmZmVyZW50X2Zyb21fV2lraWRhdGEiLCJVc2UgZG15IGRhdGVzIGZyb20gSnVseSAyMDIzIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6VXNlX2RteV9kYXRlc19mcm9tX0p1bHlfMjAyMyIsIldpa2lwZWRpYSBpbmRlZmluaXRlbHkgc2VtaS1wcm90ZWN0ZWQgcGFnZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpXaWtpcGVkaWFfaW5kZWZpbml0ZWx5X3NlbWktcHJvdGVjdGVkX3BhZ2VzIiwiQXJ0aWNsZXMgd2l0aCBleGNlcnB0cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfZXhjZXJwdHMiLCJBbGwgYXJ0aWNsZXMgd2l0aCB1bnNvdXJjZWQgc3RhdGVtZW50cyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFsbF9hcnRpY2xlc193aXRoX3Vuc291cmNlZF9zdGF0ZW1lbnRzIiwiQXJ0aWNsZXMgd2l0aCB1bnNvdXJjZWQgc3RhdGVtZW50cyBmcm9tIEp1bmUgMjAyNCI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfdW5zb3VyY2VkX3N0YXRlbWVudHNfZnJvbV9KdW5lXzIwMjQiLCJBbGwgYWNjdXJhY3kgZGlzcHV0ZXMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBbGxfYWNjdXJhY3lfZGlzcHV0ZXMiLCJBcnRpY2xlcyB3aXRoIGRpc3B1dGVkIHN0YXRlbWVudHMgZnJvbSBKdWx5IDIwMjQiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpBcnRpY2xlc193aXRoX2Rpc3B1dGVkX3N0YXRlbWVudHNfZnJvbV9KdWx5XzIwMjQiLCJQYWdlcyBkaXNwbGF5aW5nIHNob3J0IGRlc2NyaXB0aW9ucyBvZiByZWRpcmVjdCB0YXJnZXRzIHZpYSBNb2R1bGU6QW5ub3RhdGVkIGxpbmsiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYXRlZ29yeTpQYWdlc19kaXNwbGF5aW5nX3Nob3J0X2Rlc2NyaXB0aW9uc19vZl9yZWRpcmVjdF90YXJnZXRzX3ZpYV9Nb2R1bGU6QW5ub3RhdGVkX2xpbmsiLCJQYWdlcyB1c2luZyBTaXN0ZXIgcHJvamVjdCBsaW5rcyB3aXRoIGhpZGRlbiB3aWtpZGF0YSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OlBhZ2VzX3VzaW5nX1Npc3Rlcl9wcm9qZWN0X2xpbmtzX3dpdGhfaGlkZGVuX3dpa2lkYXRhIiwiQXJ0aWNsZXMgd2l0aCBJbnRlcm5ldCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeSBsaW5rcyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhdGVnb3J5OkFydGljbGVzX3dpdGhfSW50ZXJuZXRfRW5jeWNsb3BlZGlhX29mX1BoaWxvc29waHlfbGlua3MiLCJDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlQWxpa2UgNC4wIExpY2Vuc2UiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWtpcGVkaWE6VGV4dF9vZl90aGVfQ3JlYXRpdmVfQ29tbW9uc19BdHRyaWJ1dGlvbi1TaGFyZUFsaWtlXzQuMF9JbnRlcm5hdGlvbmFsX0xpY2Vuc2UiLCJUZXJtcyBvZiBVc2UiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6VGVybXNfb2ZfVXNlIiwiUHJpdmFjeSBQb2xpY3kiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6UHJpdmFjeV9wb2xpY3kiLCJXaWtpbWVkaWEgRm91bmRhdGlvbiwgSW5jLiI6Imh0dHBzOi8vd2lraW1lZGlhZm91bmRhdGlvbi5vcmcvIiwiUHJpdmFjeSBwb2xpY3kiOiJodHRwczovL2ZvdW5kYXRpb24ud2lraW1lZGlhLm9yZy93aWtpL1NwZWNpYWw6TXlMYW5ndWFnZS9Qb2xpY3k6UHJpdmFjeV9wb2xpY3kiLCJEaXNjbGFpbWVycyI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpHZW5lcmFsX2Rpc2NsYWltZXIiLCJDb250YWN0IFdpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpa2lwZWRpYTpDb250YWN0X3VzIiwiQ29kZSBvZiBDb25kdWN0IjoiaHR0cHM6Ly9mb3VuZGF0aW9uLndpa2ltZWRpYS5vcmcvd2lraS9TcGVjaWFsOk15TGFuZ3VhZ2UvUG9saWN5OlVuaXZlcnNhbF9Db2RlX29mX0NvbmR1Y3QiLCJEZXZlbG9wZXJzIjoiaHR0cHM6Ly9kZXZlbG9wZXIud2lraW1lZGlhLm9yZy8iLCJDb29raWUgc3RhdGVtZW50IjoiaHR0cHM6Ly9mb3VuZGF0aW9uLndpa2ltZWRpYS5vcmcvd2lraS9TcGVjaWFsOk15TGFuZ3VhZ2UvUG9saWN5OkNvb2tpZV9zdGF0ZW1lbnQiLCJNb2JpbGUgdmlldyI6Imh0dHBzOi8vZW4ubS53aWtpcGVkaWEub3JnL3cvaW5kZXgucGhwP3RpdGxlPUFydGlmaWNpYWxfaW50ZWxsaWdlbmNlJm1vYmlsZWFjdGlvbj10b2dnbGVfdmlld19tb2JpbGUiLCJFZGl0IHByZXZpZXcgc2V0dGluZ3MiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMiLCJBZGQgdG9waWMiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcnRpZmljaWFsX2ludGVsbGlnZW5jZSMifSwidGl0bGUiOiJBcnRpZmljaWFsIGludGVsbGlnZW5jZSIsImRlc2NyaXB0aW9uIjoiIiwidXJsIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXJ0aWZpY2lhbF9pbnRlbGxpZ2VuY2UiLCJjb250ZW50IjoiSnVtcCB0byBjb250ZW50XG5NYWluIG1lbnVcblNlYXJjaFxuQXBwZWFyYW5jZVxuRG9uYXRlXG5DcmVhdGUgYWNjb3VudFxuTG9nIGluXG5QZXJzb25hbCB0b29sc1xuXHRcdFBob3RvZ3JhcGggeW91ciBsb2NhbCBjdWx0dXJlLCBoZWxwIFdpa2lwZWRpYSBhbmQgd2luIVxuVG9nZ2xlIHRoZSB0YWJsZSBvZiBjb250ZW50c1xuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcbjE2MyBsYW5ndWFnZXNcbkFydGljbGVcblRhbGtcblJlYWRcblZpZXcgc291cmNlXG5WaWV3IGhpc3RvcnlcblRvb2xzXG5Gcm9tIFdpa2lwZWRpYSwgdGhlIGZyZWUgZW5jeWNsb3BlZGlhXG5cIkFJXCIgcmVkaXJlY3RzIGhlcmUuIEZvciBvdGhlciB1c2VzLCBzZWUgQUkgKGRpc2FtYmlndWF0aW9uKSBhbmQgQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKGRpc2FtYmlndWF0aW9uKS5cblBhcnQgb2YgYSBzZXJpZXMgb25cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSlcblxuXG5cbnNob3dcbk1ham9yIGdvYWxzXG5cblxuc2hvd1xuQXBwcm9hY2hlc1xuXG5cbnNob3dcbkFwcGxpY2F0aW9uc1xuXG5cbnNob3dcblBoaWxvc29waHlcblxuXG5zaG93XG5IaXN0b3J5XG5cblxuc2hvd1xuR2xvc3NhcnlcblxudnRlXG5cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSksIGluIGl0cyBicm9hZGVzdCBzZW5zZSwgaXMgaW50ZWxsaWdlbmNlIGV4aGliaXRlZCBieSBtYWNoaW5lcywgcGFydGljdWxhcmx5IGNvbXB1dGVyIHN5c3RlbXMuIEl0IGlzIGEgZmllbGQgb2YgcmVzZWFyY2ggaW4gY29tcHV0ZXIgc2NpZW5jZSB0aGF0IGRldmVsb3BzIGFuZCBzdHVkaWVzIG1ldGhvZHMgYW5kIHNvZnR3YXJlIHRoYXQgZW5hYmxlIG1hY2hpbmVzIHRvIHBlcmNlaXZlIHRoZWlyIGVudmlyb25tZW50IGFuZCB1c2UgbGVhcm5pbmcgYW5kIGludGVsbGlnZW5jZSB0byB0YWtlIGFjdGlvbnMgdGhhdCBtYXhpbWl6ZSB0aGVpciBjaGFuY2VzIG9mIGFjaGlldmluZyBkZWZpbmVkIGdvYWxzLlsxXSBTdWNoIG1hY2hpbmVzIG1heSBiZSBjYWxsZWQgQUlzLlxuXG5IaWdoLXByb2ZpbGUgYXBwbGljYXRpb25zIG9mIEFJIGluY2x1ZGUgYWR2YW5jZWQgd2ViIHNlYXJjaCBlbmdpbmVzIChlLmcuLCBHb29nbGUgU2VhcmNoKTsgcmVjb21tZW5kYXRpb24gc3lzdGVtcyAodXNlZCBieSBZb3VUdWJlLCBBbWF6b24sIGFuZCBOZXRmbGl4KTsgdmlydHVhbCBhc3Npc3RhbnRzIChlLmcuLCBHb29nbGUgQXNzaXN0YW50LCBTaXJpLCBhbmQgQWxleGEpOyBhdXRvbm9tb3VzIHZlaGljbGVzIChlLmcuLCBXYXltbyk7IGdlbmVyYXRpdmUgYW5kIGNyZWF0aXZlIHRvb2xzIChlLmcuLCBDaGF0R1BUIGFuZCBBSSBhcnQpOyBhbmQgc3VwZXJodW1hbiBwbGF5IGFuZCBhbmFseXNpcyBpbiBzdHJhdGVneSBnYW1lcyAoZS5nLiwgY2hlc3MgYW5kIEdvKS4gSG93ZXZlciwgbWFueSBBSSBhcHBsaWNhdGlvbnMgYXJlIG5vdCBwZXJjZWl2ZWQgYXMgQUk6IFwiQSBsb3Qgb2YgY3V0dGluZyBlZGdlIEFJIGhhcyBmaWx0ZXJlZCBpbnRvIGdlbmVyYWwgYXBwbGljYXRpb25zLCBvZnRlbiB3aXRob3V0IGJlaW5nIGNhbGxlZCBBSSBiZWNhdXNlIG9uY2Ugc29tZXRoaW5nIGJlY29tZXMgdXNlZnVsIGVub3VnaCBhbmQgY29tbW9uIGVub3VnaCBpdCdzIG5vdCBsYWJlbGVkIEFJIGFueW1vcmUuXCJbMl1bM11cblxuVmFyaW91cyBzdWJmaWVsZHMgb2YgQUkgcmVzZWFyY2ggYXJlIGNlbnRlcmVkIGFyb3VuZCBwYXJ0aWN1bGFyIGdvYWxzIGFuZCB0aGUgdXNlIG9mIHBhcnRpY3VsYXIgdG9vbHMuIFRoZSB0cmFkaXRpb25hbCBnb2FscyBvZiBBSSByZXNlYXJjaCBpbmNsdWRlIHJlYXNvbmluZywga25vd2xlZGdlIHJlcHJlc2VudGF0aW9uLCBwbGFubmluZywgbGVhcm5pbmcsIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvY2Vzc2luZywgcGVyY2VwdGlvbiwgYW5kIHN1cHBvcnQgZm9yIHJvYm90aWNzLlthXSBHZW5lcmFsIGludGVsbGlnZW5jZeKAlHRoZSBhYmlsaXR5IHRvIGNvbXBsZXRlIGFueSB0YXNrIHBlcmZvcm1lZCBieSBhIGh1bWFuIG9uIGFuIGF0IGxlYXN0IGVxdWFsIGxldmVs4oCUaXMgYW1vbmcgdGhlIGZpZWxkJ3MgbG9uZy10ZXJtIGdvYWxzLls0XSBUbyByZWFjaCB0aGVzZSBnb2FscywgQUkgcmVzZWFyY2hlcnMgaGF2ZSBhZGFwdGVkIGFuZCBpbnRlZ3JhdGVkIGEgd2lkZSByYW5nZSBvZiB0ZWNobmlxdWVzLCBpbmNsdWRpbmcgc2VhcmNoIGFuZCBtYXRoZW1hdGljYWwgb3B0aW1pemF0aW9uLCBmb3JtYWwgbG9naWMsIGFydGlmaWNpYWwgbmV1cmFsIG5ldHdvcmtzLCBhbmQgbWV0aG9kcyBiYXNlZCBvbiBzdGF0aXN0aWNzLCBvcGVyYXRpb25zIHJlc2VhcmNoLCBhbmQgZWNvbm9taWNzLltiXSBBSSBhbHNvIGRyYXdzIHVwb24gcHN5Y2hvbG9neSwgbGluZ3Vpc3RpY3MsIHBoaWxvc29waHksIG5ldXJvc2NpZW5jZSwgYW5kIG90aGVyIGZpZWxkcy5bNV1cblxuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2Ugd2FzIGZvdW5kZWQgYXMgYW4gYWNhZGVtaWMgZGlzY2lwbGluZSBpbiAxOTU2LFs2XSBhbmQgdGhlIGZpZWxkIHdlbnQgdGhyb3VnaCBtdWx0aXBsZSBjeWNsZXMgb2Ygb3B0aW1pc20gdGhyb3VnaG91dCBpdHMgaGlzdG9yeSxbN11bOF0gZm9sbG93ZWQgYnkgcGVyaW9kcyBvZiBkaXNhcHBvaW50bWVudCBhbmQgbG9zcyBvZiBmdW5kaW5nLCBrbm93biBhcyBBSSB3aW50ZXJzLls5XVsxMF0gRnVuZGluZyBhbmQgaW50ZXJlc3QgdmFzdGx5IGluY3JlYXNlZCBhZnRlciAyMDEyIHdoZW4gZGVlcCBsZWFybmluZyBvdXRwZXJmb3JtZWQgcHJldmlvdXMgQUkgdGVjaG5pcXVlcy5bMTFdIFRoaXMgZ3Jvd3RoIGFjY2VsZXJhdGVkIGZ1cnRoZXIgYWZ0ZXIgMjAxNyB3aXRoIHRoZSB0cmFuc2Zvcm1lciBhcmNoaXRlY3R1cmUsWzEyXSBhbmQgYnkgdGhlIGVhcmx5IDIwMjBzIG1hbnkgYmlsbGlvbnMgb2YgZG9sbGFycyB3ZXJlIGJlaW5nIGludmVzdGVkIGluIEFJIGFuZCB0aGUgZmllbGQgZXhwZXJpZW5jZWQgcmFwaWQgb25nb2luZyBwcm9ncmVzcyBpbiB3aGF0IGhhcyBiZWNvbWUga25vd24gYXMgdGhlIEFJIGJvb20uIFRoZSBlbWVyZ2VuY2Ugb2YgYWR2YW5jZWQgZ2VuZXJhdGl2ZSBBSSBpbiB0aGUgbWlkc3Qgb2YgdGhlIEFJIGJvb20gYW5kIGl0cyBhYmlsaXR5IHRvIGNyZWF0ZSBhbmQgbW9kaWZ5IGNvbnRlbnQgZXhwb3NlZCBzZXZlcmFsIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGFuZCBoYXJtcyBpbiB0aGUgcHJlc2VudCBhbmQgcmFpc2VkIGNvbmNlcm5zIGFib3V0IHRoZSByaXNrcyBvZiBBSSBhbmQgaXRzIGxvbmctdGVybSBlZmZlY3RzIGluIHRoZSBmdXR1cmUsIHByb21wdGluZyBkaXNjdXNzaW9ucyBhYm91dCByZWd1bGF0b3J5IHBvbGljaWVzIHRvIGVuc3VyZSB0aGUgc2FmZXR5IGFuZCBiZW5lZml0cyBvZiB0aGUgdGVjaG5vbG9neS5cblxuR29hbHNcblxuVGhlIGdlbmVyYWwgcHJvYmxlbSBvZiBzaW11bGF0aW5nIChvciBjcmVhdGluZykgaW50ZWxsaWdlbmNlIGhhcyBiZWVuIGJyb2tlbiBpbnRvIHN1YnByb2JsZW1zLiBUaGVzZSBjb25zaXN0IG9mIHBhcnRpY3VsYXIgdHJhaXRzIG9yIGNhcGFiaWxpdGllcyB0aGF0IHJlc2VhcmNoZXJzIGV4cGVjdCBhbiBpbnRlbGxpZ2VudCBzeXN0ZW0gdG8gZGlzcGxheS4gVGhlIHRyYWl0cyBkZXNjcmliZWQgYmVsb3cgaGF2ZSByZWNlaXZlZCB0aGUgbW9zdCBhdHRlbnRpb24gYW5kIGNvdmVyIHRoZSBzY29wZSBvZiBBSSByZXNlYXJjaC5bYV1cblxuUmVhc29uaW5nIGFuZCBwcm9ibGVtLXNvbHZpbmdcblxuRWFybHkgcmVzZWFyY2hlcnMgZGV2ZWxvcGVkIGFsZ29yaXRobXMgdGhhdCBpbWl0YXRlZCBzdGVwLWJ5LXN0ZXAgcmVhc29uaW5nIHRoYXQgaHVtYW5zIHVzZSB3aGVuIHRoZXkgc29sdmUgcHV6emxlcyBvciBtYWtlIGxvZ2ljYWwgZGVkdWN0aW9ucy5bMTNdIEJ5IHRoZSBsYXRlIDE5ODBzIGFuZCAxOTkwcywgbWV0aG9kcyB3ZXJlIGRldmVsb3BlZCBmb3IgZGVhbGluZyB3aXRoIHVuY2VydGFpbiBvciBpbmNvbXBsZXRlIGluZm9ybWF0aW9uLCBlbXBsb3lpbmcgY29uY2VwdHMgZnJvbSBwcm9iYWJpbGl0eSBhbmQgZWNvbm9taWNzLlsxNF1cblxuTWFueSBvZiB0aGVzZSBhbGdvcml0aG1zIGFyZSBpbnN1ZmZpY2llbnQgZm9yIHNvbHZpbmcgbGFyZ2UgcmVhc29uaW5nIHByb2JsZW1zIGJlY2F1c2UgdGhleSBleHBlcmllbmNlIGEgXCJjb21iaW5hdG9yaWFsIGV4cGxvc2lvblwiOiBUaGV5IGJlY29tZSBleHBvbmVudGlhbGx5IHNsb3dlciBhcyB0aGUgcHJvYmxlbXMgZ3Jvdy5bMTVdIEV2ZW4gaHVtYW5zIHJhcmVseSB1c2UgdGhlIHN0ZXAtYnktc3RlcCBkZWR1Y3Rpb24gdGhhdCBlYXJseSBBSSByZXNlYXJjaCBjb3VsZCBtb2RlbC4gVGhleSBzb2x2ZSBtb3N0IG9mIHRoZWlyIHByb2JsZW1zIHVzaW5nIGZhc3QsIGludHVpdGl2ZSBqdWRnbWVudHMuWzE2XSBBY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHJlYXNvbmluZyBpcyBhbiB1bnNvbHZlZCBwcm9ibGVtLlxuXG5Lbm93bGVkZ2UgcmVwcmVzZW50YXRpb25cbkFuIG9udG9sb2d5IHJlcHJlc2VudHMga25vd2xlZGdlIGFzIGEgc2V0IG9mIGNvbmNlcHRzIHdpdGhpbiBhIGRvbWFpbiBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aG9zZSBjb25jZXB0cy5cblxuS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIGFuZCBrbm93bGVkZ2UgZW5naW5lZXJpbmdbMTddIGFsbG93IEFJIHByb2dyYW1zIHRvIGFuc3dlciBxdWVzdGlvbnMgaW50ZWxsaWdlbnRseSBhbmQgbWFrZSBkZWR1Y3Rpb25zIGFib3V0IHJlYWwtd29ybGQgZmFjdHMuIEZvcm1hbCBrbm93bGVkZ2UgcmVwcmVzZW50YXRpb25zIGFyZSB1c2VkIGluIGNvbnRlbnQtYmFzZWQgaW5kZXhpbmcgYW5kIHJldHJpZXZhbCxbMThdIHNjZW5lIGludGVycHJldGF0aW9uLFsxOV0gY2xpbmljYWwgZGVjaXNpb24gc3VwcG9ydCxbMjBdIGtub3dsZWRnZSBkaXNjb3ZlcnkgKG1pbmluZyBcImludGVyZXN0aW5nXCIgYW5kIGFjdGlvbmFibGUgaW5mZXJlbmNlcyBmcm9tIGxhcmdlIGRhdGFiYXNlcyksWzIxXSBhbmQgb3RoZXIgYXJlYXMuWzIyXVxuXG5BIGtub3dsZWRnZSBiYXNlIGlzIGEgYm9keSBvZiBrbm93bGVkZ2UgcmVwcmVzZW50ZWQgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHVzZWQgYnkgYSBwcm9ncmFtLiBBbiBvbnRvbG9neSBpcyB0aGUgc2V0IG9mIG9iamVjdHMsIHJlbGF0aW9ucywgY29uY2VwdHMsIGFuZCBwcm9wZXJ0aWVzIHVzZWQgYnkgYSBwYXJ0aWN1bGFyIGRvbWFpbiBvZiBrbm93bGVkZ2UuWzIzXSBLbm93bGVkZ2UgYmFzZXMgbmVlZCB0byByZXByZXNlbnQgdGhpbmdzIHN1Y2ggYXMgb2JqZWN0cywgcHJvcGVydGllcywgY2F0ZWdvcmllcywgYW5kIHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHM7WzI0XSBzaXR1YXRpb25zLCBldmVudHMsIHN0YXRlcywgYW5kIHRpbWU7WzI1XSBjYXVzZXMgYW5kIGVmZmVjdHM7WzI2XSBrbm93bGVkZ2UgYWJvdXQga25vd2xlZGdlICh3aGF0IHdlIGtub3cgYWJvdXQgd2hhdCBvdGhlciBwZW9wbGUga25vdyk7WzI3XSBkZWZhdWx0IHJlYXNvbmluZyAodGhpbmdzIHRoYXQgaHVtYW5zIGFzc3VtZSBhcmUgdHJ1ZSB1bnRpbCB0aGV5IGFyZSB0b2xkIGRpZmZlcmVudGx5IGFuZCB3aWxsIHJlbWFpbiB0cnVlIGV2ZW4gd2hlbiBvdGhlciBmYWN0cyBhcmUgY2hhbmdpbmcpO1syOF0gYW5kIG1hbnkgb3RoZXIgYXNwZWN0cyBhbmQgZG9tYWlucyBvZiBrbm93bGVkZ2UuXG5cbkFtb25nIHRoZSBtb3N0IGRpZmZpY3VsdCBwcm9ibGVtcyBpbiBrbm93bGVkZ2UgcmVwcmVzZW50YXRpb24gYXJlIHRoZSBicmVhZHRoIG9mIGNvbW1vbnNlbnNlIGtub3dsZWRnZSAodGhlIHNldCBvZiBhdG9taWMgZmFjdHMgdGhhdCB0aGUgYXZlcmFnZSBwZXJzb24ga25vd3MgaXMgZW5vcm1vdXMpO1syOV0gYW5kIHRoZSBzdWItc3ltYm9saWMgZm9ybSBvZiBtb3N0IGNvbW1vbnNlbnNlIGtub3dsZWRnZSAobXVjaCBvZiB3aGF0IHBlb3BsZSBrbm93IGlzIG5vdCByZXByZXNlbnRlZCBhcyBcImZhY3RzXCIgb3IgXCJzdGF0ZW1lbnRzXCIgdGhhdCB0aGV5IGNvdWxkIGV4cHJlc3MgdmVyYmFsbHkpLlsxNl0gVGhlcmUgaXMgYWxzbyB0aGUgZGlmZmljdWx0eSBvZiBrbm93bGVkZ2UgYWNxdWlzaXRpb24sIHRoZSBwcm9ibGVtIG9mIG9idGFpbmluZyBrbm93bGVkZ2UgZm9yIEFJIGFwcGxpY2F0aW9ucy5bY11cblxuUGxhbm5pbmcgYW5kIGRlY2lzaW9uLW1ha2luZ1xuXG5BbiBcImFnZW50XCIgaXMgYW55dGhpbmcgdGhhdCBwZXJjZWl2ZXMgYW5kIHRha2VzIGFjdGlvbnMgaW4gdGhlIHdvcmxkLiBBIHJhdGlvbmFsIGFnZW50IGhhcyBnb2FscyBvciBwcmVmZXJlbmNlcyBhbmQgdGFrZXMgYWN0aW9ucyB0byBtYWtlIHRoZW0gaGFwcGVuLltkXVszMl0gSW4gYXV0b21hdGVkIHBsYW5uaW5nLCB0aGUgYWdlbnQgaGFzIGEgc3BlY2lmaWMgZ29hbC5bMzNdIEluIGF1dG9tYXRlZCBkZWNpc2lvbi1tYWtpbmcsIHRoZSBhZ2VudCBoYXMgcHJlZmVyZW5jZXPigJR0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIGl0IHdvdWxkIHByZWZlciB0byBiZSBpbiwgYW5kIHNvbWUgc2l0dWF0aW9ucyBpdCBpcyB0cnlpbmcgdG8gYXZvaWQuIFRoZSBkZWNpc2lvbi1tYWtpbmcgYWdlbnQgYXNzaWducyBhIG51bWJlciB0byBlYWNoIHNpdHVhdGlvbiAoY2FsbGVkIHRoZSBcInV0aWxpdHlcIikgdGhhdCBtZWFzdXJlcyBob3cgbXVjaCB0aGUgYWdlbnQgcHJlZmVycyBpdC4gRm9yIGVhY2ggcG9zc2libGUgYWN0aW9uLCBpdCBjYW4gY2FsY3VsYXRlIHRoZSBcImV4cGVjdGVkIHV0aWxpdHlcIjogdGhlIHV0aWxpdHkgb2YgYWxsIHBvc3NpYmxlIG91dGNvbWVzIG9mIHRoZSBhY3Rpb24sIHdlaWdodGVkIGJ5IHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBvdXRjb21lIHdpbGwgb2NjdXIuIEl0IGNhbiB0aGVuIGNob29zZSB0aGUgYWN0aW9uIHdpdGggdGhlIG1heGltdW0gZXhwZWN0ZWQgdXRpbGl0eS5bMzRdXG5cbkluIGNsYXNzaWNhbCBwbGFubmluZywgdGhlIGFnZW50IGtub3dzIGV4YWN0bHkgd2hhdCB0aGUgZWZmZWN0IG9mIGFueSBhY3Rpb24gd2lsbCBiZS5bMzVdIEluIG1vc3QgcmVhbC13b3JsZCBwcm9ibGVtcywgaG93ZXZlciwgdGhlIGFnZW50IG1heSBub3QgYmUgY2VydGFpbiBhYm91dCB0aGUgc2l0dWF0aW9uIHRoZXkgYXJlIGluIChpdCBpcyBcInVua25vd25cIiBvciBcInVub2JzZXJ2YWJsZVwiKSBhbmQgaXQgbWF5IG5vdCBrbm93IGZvciBjZXJ0YWluIHdoYXQgd2lsbCBoYXBwZW4gYWZ0ZXIgZWFjaCBwb3NzaWJsZSBhY3Rpb24gKGl0IGlzIG5vdCBcImRldGVybWluaXN0aWNcIikuIEl0IG11c3QgY2hvb3NlIGFuIGFjdGlvbiBieSBtYWtpbmcgYSBwcm9iYWJpbGlzdGljIGd1ZXNzIGFuZCB0aGVuIHJlYXNzZXNzIHRoZSBzaXR1YXRpb24gdG8gc2VlIGlmIHRoZSBhY3Rpb24gd29ya2VkLlszNl1cblxuSW4gc29tZSBwcm9ibGVtcywgdGhlIGFnZW50J3MgcHJlZmVyZW5jZXMgbWF5IGJlIHVuY2VydGFpbiwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgb3RoZXIgYWdlbnRzIG9yIGh1bWFucyBpbnZvbHZlZC4gVGhlc2UgY2FuIGJlIGxlYXJuZWQgKGUuZy4sIHdpdGggaW52ZXJzZSByZWluZm9yY2VtZW50IGxlYXJuaW5nKSwgb3IgdGhlIGFnZW50IGNhbiBzZWVrIGluZm9ybWF0aW9uIHRvIGltcHJvdmUgaXRzIHByZWZlcmVuY2VzLlszN10gSW5mb3JtYXRpb24gdmFsdWUgdGhlb3J5IGNhbiBiZSB1c2VkIHRvIHdlaWdoIHRoZSB2YWx1ZSBvZiBleHBsb3JhdG9yeSBvciBleHBlcmltZW50YWwgYWN0aW9ucy5bMzhdIFRoZSBzcGFjZSBvZiBwb3NzaWJsZSBmdXR1cmUgYWN0aW9ucyBhbmQgc2l0dWF0aW9ucyBpcyB0eXBpY2FsbHkgaW50cmFjdGFibHkgbGFyZ2UsIHNvIHRoZSBhZ2VudHMgbXVzdCB0YWtlIGFjdGlvbnMgYW5kIGV2YWx1YXRlIHNpdHVhdGlvbnMgd2hpbGUgYmVpbmcgdW5jZXJ0YWluIG9mIHdoYXQgdGhlIG91dGNvbWUgd2lsbCBiZS5cblxuQSBNYXJrb3YgZGVjaXNpb24gcHJvY2VzcyBoYXMgYSB0cmFuc2l0aW9uIG1vZGVsIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGEgcGFydGljdWxhciBhY3Rpb24gd2lsbCBjaGFuZ2UgdGhlIHN0YXRlIGluIGEgcGFydGljdWxhciB3YXkgYW5kIGEgcmV3YXJkIGZ1bmN0aW9uIHRoYXQgc3VwcGxpZXMgdGhlIHV0aWxpdHkgb2YgZWFjaCBzdGF0ZSBhbmQgdGhlIGNvc3Qgb2YgZWFjaCBhY3Rpb24uIEEgcG9saWN5IGFzc29jaWF0ZXMgYSBkZWNpc2lvbiB3aXRoIGVhY2ggcG9zc2libGUgc3RhdGUuIFRoZSBwb2xpY3kgY291bGQgYmUgY2FsY3VsYXRlZCAoZS5nLiwgYnkgaXRlcmF0aW9uKSwgYmUgaGV1cmlzdGljLCBvciBpdCBjYW4gYmUgbGVhcm5lZC5bMzldXG5cbkdhbWUgdGhlb3J5IGRlc2NyaWJlcyB0aGUgcmF0aW9uYWwgYmVoYXZpb3Igb2YgbXVsdGlwbGUgaW50ZXJhY3RpbmcgYWdlbnRzIGFuZCBpcyB1c2VkIGluIEFJIHByb2dyYW1zIHRoYXQgbWFrZSBkZWNpc2lvbnMgdGhhdCBpbnZvbHZlIG90aGVyIGFnZW50cy5bNDBdXG5cbkxlYXJuaW5nXG5cbk1hY2hpbmUgbGVhcm5pbmcgaXMgdGhlIHN0dWR5IG9mIHByb2dyYW1zIHRoYXQgY2FuIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2Ugb24gYSBnaXZlbiB0YXNrIGF1dG9tYXRpY2FsbHkuWzQxXSBJdCBoYXMgYmVlbiBhIHBhcnQgb2YgQUkgZnJvbSB0aGUgYmVnaW5uaW5nLltlXVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBtYWNoaW5lIGxlYXJuaW5nLiBVbnN1cGVydmlzZWQgbGVhcm5pbmcgYW5hbHl6ZXMgYSBzdHJlYW0gb2YgZGF0YSBhbmQgZmluZHMgcGF0dGVybnMgYW5kIG1ha2VzIHByZWRpY3Rpb25zIHdpdGhvdXQgYW55IG90aGVyIGd1aWRhbmNlLls0NF0gU3VwZXJ2aXNlZCBsZWFybmluZyByZXF1aXJlcyBsYWJlbGluZyB0aGUgdHJhaW5pbmcgZGF0YSB3aXRoIHRoZSBleHBlY3RlZCBhbnN3ZXJzLCBhbmQgY29tZXMgaW4gdHdvIG1haW4gdmFyaWV0aWVzOiBjbGFzc2lmaWNhdGlvbiAod2hlcmUgdGhlIHByb2dyYW0gbXVzdCBsZWFybiB0byBwcmVkaWN0IHdoYXQgY2F0ZWdvcnkgdGhlIGlucHV0IGJlbG9uZ3MgaW4pIGFuZCByZWdyZXNzaW9uICh3aGVyZSB0aGUgcHJvZ3JhbSBtdXN0IGRlZHVjZSBhIG51bWVyaWMgZnVuY3Rpb24gYmFzZWQgb24gbnVtZXJpYyBpbnB1dCkuWzQ1XVxuXG5JbiByZWluZm9yY2VtZW50IGxlYXJuaW5nLCB0aGUgYWdlbnQgaXMgcmV3YXJkZWQgZm9yIGdvb2QgcmVzcG9uc2VzIGFuZCBwdW5pc2hlZCBmb3IgYmFkIG9uZXMuIFRoZSBhZ2VudCBsZWFybnMgdG8gY2hvb3NlIHJlc3BvbnNlcyB0aGF0IGFyZSBjbGFzc2lmaWVkIGFzIFwiZ29vZFwiLls0Nl0gVHJhbnNmZXIgbGVhcm5pbmcgaXMgd2hlbiB0aGUga25vd2xlZGdlIGdhaW5lZCBmcm9tIG9uZSBwcm9ibGVtIGlzIGFwcGxpZWQgdG8gYSBuZXcgcHJvYmxlbS5bNDddIERlZXAgbGVhcm5pbmcgaXMgYSB0eXBlIG9mIG1hY2hpbmUgbGVhcm5pbmcgdGhhdCBydW5zIGlucHV0cyB0aHJvdWdoIGJpb2xvZ2ljYWxseSBpbnNwaXJlZCBhcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrcyBmb3IgYWxsIG9mIHRoZXNlIHR5cGVzIG9mIGxlYXJuaW5nLls0OF1cblxuQ29tcHV0YXRpb25hbCBsZWFybmluZyB0aGVvcnkgY2FuIGFzc2VzcyBsZWFybmVycyBieSBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHksIGJ5IHNhbXBsZSBjb21wbGV4aXR5IChob3cgbXVjaCBkYXRhIGlzIHJlcXVpcmVkKSwgb3IgYnkgb3RoZXIgbm90aW9ucyBvZiBvcHRpbWl6YXRpb24uWzQ5XVxuXG5OYXR1cmFsIGxhbmd1YWdlIHByb2Nlc3NpbmdcblxuTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIChOTFApWzUwXSBhbGxvd3MgcHJvZ3JhbXMgdG8gcmVhZCwgd3JpdGUgYW5kIGNvbW11bmljYXRlIGluIGh1bWFuIGxhbmd1YWdlcyBzdWNoIGFzIEVuZ2xpc2guIFNwZWNpZmljIHByb2JsZW1zIGluY2x1ZGUgc3BlZWNoIHJlY29nbml0aW9uLCBzcGVlY2ggc3ludGhlc2lzLCBtYWNoaW5lIHRyYW5zbGF0aW9uLCBpbmZvcm1hdGlvbiBleHRyYWN0aW9uLCBpbmZvcm1hdGlvbiByZXRyaWV2YWwgYW5kIHF1ZXN0aW9uIGFuc3dlcmluZy5bNTFdXG5cbkVhcmx5IHdvcmssIGJhc2VkIG9uIE5vYW0gQ2hvbXNreSdzIGdlbmVyYXRpdmUgZ3JhbW1hciBhbmQgc2VtYW50aWMgbmV0d29ya3MsIGhhZCBkaWZmaWN1bHR5IHdpdGggd29yZC1zZW5zZSBkaXNhbWJpZ3VhdGlvbltmXSB1bmxlc3MgcmVzdHJpY3RlZCB0byBzbWFsbCBkb21haW5zIGNhbGxlZCBcIm1pY3JvLXdvcmxkc1wiIChkdWUgdG8gdGhlIGNvbW1vbiBzZW5zZSBrbm93bGVkZ2UgcHJvYmxlbVsyOV0pLiBNYXJnYXJldCBNYXN0ZXJtYW4gYmVsaWV2ZWQgdGhhdCBpdCB3YXMgbWVhbmluZyBhbmQgbm90IGdyYW1tYXIgdGhhdCB3YXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGxhbmd1YWdlcywgYW5kIHRoYXQgdGhlc2F1cmkgYW5kIG5vdCBkaWN0aW9uYXJpZXMgc2hvdWxkIGJlIHRoZSBiYXNpcyBvZiBjb21wdXRhdGlvbmFsIGxhbmd1YWdlIHN0cnVjdHVyZS5cblxuTW9kZXJuIGRlZXAgbGVhcm5pbmcgdGVjaG5pcXVlcyBmb3IgTkxQIGluY2x1ZGUgd29yZCBlbWJlZGRpbmcgKHJlcHJlc2VudGluZyB3b3JkcywgdHlwaWNhbGx5IGFzIHZlY3RvcnMgZW5jb2RpbmcgdGhlaXIgbWVhbmluZyksWzUyXSB0cmFuc2Zvcm1lcnMgKGEgZGVlcCBsZWFybmluZyBhcmNoaXRlY3R1cmUgdXNpbmcgYW4gYXR0ZW50aW9uIG1lY2hhbmlzbSksWzUzXSBhbmQgb3RoZXJzLls1NF0gSW4gMjAxOSwgZ2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lciAob3IgXCJHUFRcIikgbGFuZ3VhZ2UgbW9kZWxzIGJlZ2FuIHRvIGdlbmVyYXRlIGNvaGVyZW50IHRleHQsWzU1XVs1Nl0gYW5kIGJ5IDIwMjMsIHRoZXNlIG1vZGVscyB3ZXJlIGFibGUgdG8gZ2V0IGh1bWFuLWxldmVsIHNjb3JlcyBvbiB0aGUgYmFyIGV4YW0sIFNBVCB0ZXN0LCBHUkUgdGVzdCwgYW5kIG1hbnkgb3RoZXIgcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMuWzU3XVxuXG5QZXJjZXB0aW9uXG5cbk1hY2hpbmUgcGVyY2VwdGlvbiBpcyB0aGUgYWJpbGl0eSB0byB1c2UgaW5wdXQgZnJvbSBzZW5zb3JzIChzdWNoIGFzIGNhbWVyYXMsIG1pY3JvcGhvbmVzLCB3aXJlbGVzcyBzaWduYWxzLCBhY3RpdmUgbGlkYXIsIHNvbmFyLCByYWRhciwgYW5kIHRhY3RpbGUgc2Vuc29ycykgdG8gZGVkdWNlIGFzcGVjdHMgb2YgdGhlIHdvcmxkLiBDb21wdXRlciB2aXNpb24gaXMgdGhlIGFiaWxpdHkgdG8gYW5hbHl6ZSB2aXN1YWwgaW5wdXQuWzU4XVxuXG5UaGUgZmllbGQgaW5jbHVkZXMgc3BlZWNoIHJlY29nbml0aW9uLFs1OV0gaW1hZ2UgY2xhc3NpZmljYXRpb24sWzYwXSBmYWNpYWwgcmVjb2duaXRpb24sIG9iamVjdCByZWNvZ25pdGlvbixbNjFdb2JqZWN0IHRyYWNraW5nLFs2Ml0gYW5kIHJvYm90aWMgcGVyY2VwdGlvbi5bNjNdXG5cblNvY2lhbCBpbnRlbGxpZ2VuY2Vcbktpc21ldCwgYSByb2JvdCBoZWFkIHdoaWNoIHdhcyBtYWRlIGluIHRoZSAxOTkwczsgaXQgaXMgYSBtYWNoaW5lIHRoYXQgY2FuIHJlY29nbml6ZSBhbmQgc2ltdWxhdGUgZW1vdGlvbnMuWzY0XVxuXG5BZmZlY3RpdmUgY29tcHV0aW5nIGlzIGEgZmllbGQgdGhhdCBjb21wcmlzZXMgc3lzdGVtcyB0aGF0IHJlY29nbml6ZSwgaW50ZXJwcmV0LCBwcm9jZXNzLCBvciBzaW11bGF0ZSBodW1hbiBmZWVsaW5nLCBlbW90aW9uLCBhbmQgbW9vZC5bNjVdIEZvciBleGFtcGxlLCBzb21lIHZpcnR1YWwgYXNzaXN0YW50cyBhcmUgcHJvZ3JhbW1lZCB0byBzcGVhayBjb252ZXJzYXRpb25hbGx5IG9yIGV2ZW4gdG8gYmFudGVyIGh1bW9yb3VzbHk7IGl0IG1ha2VzIHRoZW0gYXBwZWFyIG1vcmUgc2Vuc2l0aXZlIHRvIHRoZSBlbW90aW9uYWwgZHluYW1pY3Mgb2YgaHVtYW4gaW50ZXJhY3Rpb24sIG9yIHRvIG90aGVyd2lzZSBmYWNpbGl0YXRlIGh1bWFu4oCTY29tcHV0ZXIgaW50ZXJhY3Rpb24uXG5cbkhvd2V2ZXIsIHRoaXMgdGVuZHMgdG8gZ2l2ZSBuYcOvdmUgdXNlcnMgYW4gdW5yZWFsaXN0aWMgY29uY2VwdGlvbiBvZiB0aGUgaW50ZWxsaWdlbmNlIG9mIGV4aXN0aW5nIGNvbXB1dGVyIGFnZW50cy5bNjZdIE1vZGVyYXRlIHN1Y2Nlc3NlcyByZWxhdGVkIHRvIGFmZmVjdGl2ZSBjb21wdXRpbmcgaW5jbHVkZSB0ZXh0dWFsIHNlbnRpbWVudCBhbmFseXNpcyBhbmQsIG1vcmUgcmVjZW50bHksIG11bHRpbW9kYWwgc2VudGltZW50IGFuYWx5c2lzLCB3aGVyZWluIEFJIGNsYXNzaWZpZXMgdGhlIGVmZmVjdHMgZGlzcGxheWVkIGJ5IGEgdmlkZW90YXBlZCBzdWJqZWN0Lls2N11cblxuR2VuZXJhbCBpbnRlbGxpZ2VuY2VcblxuQSBtYWNoaW5lIHdpdGggYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSBzaG91bGQgYmUgYWJsZSB0byBzb2x2ZSBhIHdpZGUgdmFyaWV0eSBvZiBwcm9ibGVtcyB3aXRoIGJyZWFkdGggYW5kIHZlcnNhdGlsaXR5IHNpbWlsYXIgdG8gaHVtYW4gaW50ZWxsaWdlbmNlLls0XVxuXG5UZWNobmlxdWVzXG5cbkFJIHJlc2VhcmNoIHVzZXMgYSB3aWRlIHZhcmlldHkgb2YgdGVjaG5pcXVlcyB0byBhY2NvbXBsaXNoIHRoZSBnb2FscyBhYm92ZS5bYl1cblxuU2VhcmNoIGFuZCBvcHRpbWl6YXRpb25cblxuQUkgY2FuIHNvbHZlIG1hbnkgcHJvYmxlbXMgYnkgaW50ZWxsaWdlbnRseSBzZWFyY2hpbmcgdGhyb3VnaCBtYW55IHBvc3NpYmxlIHNvbHV0aW9ucy5bNjhdIFRoZXJlIGFyZSB0d28gdmVyeSBkaWZmZXJlbnQga2luZHMgb2Ygc2VhcmNoIHVzZWQgaW4gQUk6IHN0YXRlIHNwYWNlIHNlYXJjaCBhbmQgbG9jYWwgc2VhcmNoLlxuXG5TdGF0ZSBzcGFjZSBzZWFyY2hcblxuU3RhdGUgc3BhY2Ugc2VhcmNoIHNlYXJjaGVzIHRocm91Z2ggYSB0cmVlIG9mIHBvc3NpYmxlIHN0YXRlcyB0byB0cnkgdG8gZmluZCBhIGdvYWwgc3RhdGUuWzY5XSBGb3IgZXhhbXBsZSwgcGxhbm5pbmcgYWxnb3JpdGhtcyBzZWFyY2ggdGhyb3VnaCB0cmVlcyBvZiBnb2FscyBhbmQgc3ViZ29hbHMsIGF0dGVtcHRpbmcgdG8gZmluZCBhIHBhdGggdG8gYSB0YXJnZXQgZ29hbCwgYSBwcm9jZXNzIGNhbGxlZCBtZWFucy1lbmRzIGFuYWx5c2lzLls3MF1cblxuU2ltcGxlIGV4aGF1c3RpdmUgc2VhcmNoZXNbNzFdIGFyZSByYXJlbHkgc3VmZmljaWVudCBmb3IgbW9zdCByZWFsLXdvcmxkIHByb2JsZW1zOiB0aGUgc2VhcmNoIHNwYWNlICh0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzZWFyY2gpIHF1aWNrbHkgZ3Jvd3MgdG8gYXN0cm9ub21pY2FsIG51bWJlcnMuIFRoZSByZXN1bHQgaXMgYSBzZWFyY2ggdGhhdCBpcyB0b28gc2xvdyBvciBuZXZlciBjb21wbGV0ZXMuWzE1XSBcIkhldXJpc3RpY3NcIiBvciBcInJ1bGVzIG9mIHRodW1iXCIgY2FuIGhlbHAgcHJpb3JpdGl6ZSBjaG9pY2VzIHRoYXQgYXJlIG1vcmUgbGlrZWx5IHRvIHJlYWNoIGEgZ29hbC5bNzJdXG5cbkFkdmVyc2FyaWFsIHNlYXJjaCBpcyB1c2VkIGZvciBnYW1lLXBsYXlpbmcgcHJvZ3JhbXMsIHN1Y2ggYXMgY2hlc3Mgb3IgR28uIEl0IHNlYXJjaGVzIHRocm91Z2ggYSB0cmVlIG9mIHBvc3NpYmxlIG1vdmVzIGFuZCBjb3VudGVybW92ZXMsIGxvb2tpbmcgZm9yIGEgd2lubmluZyBwb3NpdGlvbi5bNzNdXG5cbkxvY2FsIHNlYXJjaFxuSWxsdXN0cmF0aW9uIG9mIGdyYWRpZW50IGRlc2NlbnQgZm9yIDMgZGlmZmVyZW50IHN0YXJ0aW5nIHBvaW50czsgdHdvIHBhcmFtZXRlcnMgKHJlcHJlc2VudGVkIGJ5IHRoZSBwbGFuIGNvb3JkaW5hdGVzKSBhcmUgYWRqdXN0ZWQgaW4gb3JkZXIgdG8gbWluaW1pemUgdGhlIGxvc3MgZnVuY3Rpb24gKHRoZSBoZWlnaHQpXG5cbkxvY2FsIHNlYXJjaCB1c2VzIG1hdGhlbWF0aWNhbCBvcHRpbWl6YXRpb24gdG8gZmluZCBhIHNvbHV0aW9uIHRvIGEgcHJvYmxlbS4gSXQgYmVnaW5zIHdpdGggc29tZSBmb3JtIG9mIGd1ZXNzIGFuZCByZWZpbmVzIGl0IGluY3JlbWVudGFsbHkuWzc0XVxuXG5HcmFkaWVudCBkZXNjZW50IGlzIGEgdHlwZSBvZiBsb2NhbCBzZWFyY2ggdGhhdCBvcHRpbWl6ZXMgYSBzZXQgb2YgbnVtZXJpY2FsIHBhcmFtZXRlcnMgYnkgaW5jcmVtZW50YWxseSBhZGp1c3RpbmcgdGhlbSB0byBtaW5pbWl6ZSBhIGxvc3MgZnVuY3Rpb24uIFZhcmlhbnRzIG9mIGdyYWRpZW50IGRlc2NlbnQgYXJlIGNvbW1vbmx5IHVzZWQgdG8gdHJhaW4gbmV1cmFsIG5ldHdvcmtzLFs3NV0gdGhyb3VnaCB0aGUgYmFja3Byb3BhZ2F0aW9uIGFsZ29yaXRobS5cblxuQW5vdGhlciB0eXBlIG9mIGxvY2FsIHNlYXJjaCBpcyBldm9sdXRpb25hcnkgY29tcHV0YXRpb24sIHdoaWNoIGFpbXMgdG8gaXRlcmF0aXZlbHkgaW1wcm92ZSBhIHNldCBvZiBjYW5kaWRhdGUgc29sdXRpb25zIGJ5IFwibXV0YXRpbmdcIiBhbmQgXCJyZWNvbWJpbmluZ1wiIHRoZW0sIHNlbGVjdGluZyBvbmx5IHRoZSBmaXR0ZXN0IHRvIHN1cnZpdmUgZWFjaCBnZW5lcmF0aW9uLls3Nl1cblxuRGlzdHJpYnV0ZWQgc2VhcmNoIHByb2Nlc3NlcyBjYW4gY29vcmRpbmF0ZSB2aWEgc3dhcm0gaW50ZWxsaWdlbmNlIGFsZ29yaXRobXMuIFR3byBwb3B1bGFyIHN3YXJtIGFsZ29yaXRobXMgdXNlZCBpbiBzZWFyY2ggYXJlIHBhcnRpY2xlIHN3YXJtIG9wdGltaXphdGlvbiAoaW5zcGlyZWQgYnkgYmlyZCBmbG9ja2luZykgYW5kIGFudCBjb2xvbnkgb3B0aW1pemF0aW9uIChpbnNwaXJlZCBieSBhbnQgdHJhaWxzKS5bNzddXG5cbkxvZ2ljXG5cbkZvcm1hbCBsb2dpYyBpcyB1c2VkIGZvciByZWFzb25pbmcgYW5kIGtub3dsZWRnZSByZXByZXNlbnRhdGlvbi5bNzhdIEZvcm1hbCBsb2dpYyBjb21lcyBpbiB0d28gbWFpbiBmb3JtczogcHJvcG9zaXRpb25hbCBsb2dpYyAod2hpY2ggb3BlcmF0ZXMgb24gc3RhdGVtZW50cyB0aGF0IGFyZSB0cnVlIG9yIGZhbHNlIGFuZCB1c2VzIGxvZ2ljYWwgY29ubmVjdGl2ZXMgc3VjaCBhcyBcImFuZFwiLCBcIm9yXCIsIFwibm90XCIgYW5kIFwiaW1wbGllc1wiKVs3OV0gYW5kIHByZWRpY2F0ZSBsb2dpYyAod2hpY2ggYWxzbyBvcGVyYXRlcyBvbiBvYmplY3RzLCBwcmVkaWNhdGVzIGFuZCByZWxhdGlvbnMgYW5kIHVzZXMgcXVhbnRpZmllcnMgc3VjaCBhcyBcIkV2ZXJ5IFggaXMgYSBZXCIgYW5kIFwiVGhlcmUgYXJlIHNvbWUgWHMgdGhhdCBhcmUgWXNcIikuWzgwXVxuXG5EZWR1Y3RpdmUgcmVhc29uaW5nIGluIGxvZ2ljIGlzIHRoZSBwcm9jZXNzIG9mIHByb3ZpbmcgYSBuZXcgc3RhdGVtZW50IChjb25jbHVzaW9uKSBmcm9tIG90aGVyIHN0YXRlbWVudHMgdGhhdCBhcmUgZ2l2ZW4gYW5kIGFzc3VtZWQgdG8gYmUgdHJ1ZSAodGhlIHByZW1pc2VzKS5bODFdIFByb29mcyBjYW4gYmUgc3RydWN0dXJlZCBhcyBwcm9vZiB0cmVlcywgaW4gd2hpY2ggbm9kZXMgYXJlIGxhYmVsbGVkIGJ5IHNlbnRlbmNlcywgYW5kIGNoaWxkcmVuIG5vZGVzIGFyZSBjb25uZWN0ZWQgdG8gcGFyZW50IG5vZGVzIGJ5IGluZmVyZW5jZSBydWxlcy5cblxuR2l2ZW4gYSBwcm9ibGVtIGFuZCBhIHNldCBvZiBwcmVtaXNlcywgcHJvYmxlbS1zb2x2aW5nIHJlZHVjZXMgdG8gc2VhcmNoaW5nIGZvciBhIHByb29mIHRyZWUgd2hvc2Ugcm9vdCBub2RlIGlzIGxhYmVsbGVkIGJ5IGEgc29sdXRpb24gb2YgdGhlIHByb2JsZW0gYW5kIHdob3NlIGxlYWYgbm9kZXMgYXJlIGxhYmVsbGVkIGJ5IHByZW1pc2VzIG9yIGF4aW9tcy4gSW4gdGhlIGNhc2Ugb2YgSG9ybiBjbGF1c2VzLCBwcm9ibGVtLXNvbHZpbmcgc2VhcmNoIGNhbiBiZSBwZXJmb3JtZWQgYnkgcmVhc29uaW5nIGZvcndhcmRzIGZyb20gdGhlIHByZW1pc2VzIG9yIGJhY2t3YXJkcyBmcm9tIHRoZSBwcm9ibGVtLls4Ml0gSW4gdGhlIG1vcmUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBjbGF1c2FsIGZvcm0gb2YgZmlyc3Qtb3JkZXIgbG9naWMsIHJlc29sdXRpb24gaXMgYSBzaW5nbGUsIGF4aW9tLWZyZWUgcnVsZSBvZiBpbmZlcmVuY2UsIGluIHdoaWNoIGEgcHJvYmxlbSBpcyBzb2x2ZWQgYnkgcHJvdmluZyBhIGNvbnRyYWRpY3Rpb24gZnJvbSBwcmVtaXNlcyB0aGF0IGluY2x1ZGUgdGhlIG5lZ2F0aW9uIG9mIHRoZSBwcm9ibGVtIHRvIGJlIHNvbHZlZC5bODNdXG5cbkluZmVyZW5jZSBpbiBib3RoIEhvcm4gY2xhdXNlIGxvZ2ljIGFuZCBmaXJzdC1vcmRlciBsb2dpYyBpcyB1bmRlY2lkYWJsZSwgYW5kIHRoZXJlZm9yZSBpbnRyYWN0YWJsZS4gSG93ZXZlciwgYmFja3dhcmQgcmVhc29uaW5nIHdpdGggSG9ybiBjbGF1c2VzLCB3aGljaCB1bmRlcnBpbnMgY29tcHV0YXRpb24gaW4gdGhlIGxvZ2ljIHByb2dyYW1taW5nIGxhbmd1YWdlIFByb2xvZywgaXMgVHVyaW5nIGNvbXBsZXRlLiBNb3Jlb3ZlciwgaXRzIGVmZmljaWVuY3kgaXMgY29tcGV0aXRpdmUgd2l0aCBjb21wdXRhdGlvbiBpbiBvdGhlciBzeW1ib2xpYyBwcm9ncmFtbWluZyBsYW5ndWFnZXMuWzg0XVxuXG5GdXp6eSBsb2dpYyBhc3NpZ25zIGEgXCJkZWdyZWUgb2YgdHJ1dGhcIiBiZXR3ZWVuIDAgYW5kIDEuIEl0IGNhbiB0aGVyZWZvcmUgaGFuZGxlIHByb3Bvc2l0aW9ucyB0aGF0IGFyZSB2YWd1ZSBhbmQgcGFydGlhbGx5IHRydWUuWzg1XVxuXG5Ob24tbW9ub3RvbmljIGxvZ2ljcywgaW5jbHVkaW5nIGxvZ2ljIHByb2dyYW1taW5nIHdpdGggbmVnYXRpb24gYXMgZmFpbHVyZSwgYXJlIGRlc2lnbmVkIHRvIGhhbmRsZSBkZWZhdWx0IHJlYXNvbmluZy5bMjhdIE90aGVyIHNwZWNpYWxpemVkIHZlcnNpb25zIG9mIGxvZ2ljIGhhdmUgYmVlbiBkZXZlbG9wZWQgdG8gZGVzY3JpYmUgbWFueSBjb21wbGV4IGRvbWFpbnMuXG5cblByb2JhYmlsaXN0aWMgbWV0aG9kcyBmb3IgdW5jZXJ0YWluIHJlYXNvbmluZ1xuQSBzaW1wbGUgQmF5ZXNpYW4gbmV0d29yaywgd2l0aCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBwcm9iYWJpbGl0eSB0YWJsZXNcblxuTWFueSBwcm9ibGVtcyBpbiBBSSAoaW5jbHVkaW5nIGluIHJlYXNvbmluZywgcGxhbm5pbmcsIGxlYXJuaW5nLCBwZXJjZXB0aW9uLCBhbmQgcm9ib3RpY3MpIHJlcXVpcmUgdGhlIGFnZW50IHRvIG9wZXJhdGUgd2l0aCBpbmNvbXBsZXRlIG9yIHVuY2VydGFpbiBpbmZvcm1hdGlvbi4gQUkgcmVzZWFyY2hlcnMgaGF2ZSBkZXZpc2VkIGEgbnVtYmVyIG9mIHRvb2xzIHRvIHNvbHZlIHRoZXNlIHByb2JsZW1zIHVzaW5nIG1ldGhvZHMgZnJvbSBwcm9iYWJpbGl0eSB0aGVvcnkgYW5kIGVjb25vbWljcy5bODZdIFByZWNpc2UgbWF0aGVtYXRpY2FsIHRvb2xzIGhhdmUgYmVlbiBkZXZlbG9wZWQgdGhhdCBhbmFseXplIGhvdyBhbiBhZ2VudCBjYW4gbWFrZSBjaG9pY2VzIGFuZCBwbGFuLCB1c2luZyBkZWNpc2lvbiB0aGVvcnksIGRlY2lzaW9uIGFuYWx5c2lzLFs4N10gYW5kIGluZm9ybWF0aW9uIHZhbHVlIHRoZW9yeS5bODhdIFRoZXNlIHRvb2xzIGluY2x1ZGUgbW9kZWxzIHN1Y2ggYXMgTWFya292IGRlY2lzaW9uIHByb2Nlc3NlcyxbODldIGR5bmFtaWMgZGVjaXNpb24gbmV0d29ya3MsWzkwXSBnYW1lIHRoZW9yeSBhbmQgbWVjaGFuaXNtIGRlc2lnbi5bOTFdXG5cbkJheWVzaWFuIG5ldHdvcmtzWzkyXSBhcmUgYSB0b29sIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHJlYXNvbmluZyAodXNpbmcgdGhlIEJheWVzaWFuIGluZmVyZW5jZSBhbGdvcml0aG0pLFtnXVs5NF0gbGVhcm5pbmcgKHVzaW5nIHRoZSBleHBlY3RhdGlvbuKAk21heGltaXphdGlvbiBhbGdvcml0aG0pLFtoXVs5Nl0gcGxhbm5pbmcgKHVzaW5nIGRlY2lzaW9uIG5ldHdvcmtzKVs5N10gYW5kIHBlcmNlcHRpb24gKHVzaW5nIGR5bmFtaWMgQmF5ZXNpYW4gbmV0d29ya3MpLls5MF1cblxuUHJvYmFiaWxpc3RpYyBhbGdvcml0aG1zIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGZpbHRlcmluZywgcHJlZGljdGlvbiwgc21vb3RoaW5nLCBhbmQgZmluZGluZyBleHBsYW5hdGlvbnMgZm9yIHN0cmVhbXMgb2YgZGF0YSwgdGh1cyBoZWxwaW5nIHBlcmNlcHRpb24gc3lzdGVtcyBhbmFseXplIHByb2Nlc3NlcyB0aGF0IG9jY3VyIG92ZXIgdGltZSAoZS5nLiwgaGlkZGVuIE1hcmtvdiBtb2RlbHMgb3IgS2FsbWFuIGZpbHRlcnMpLls5MF1cblxuRXhwZWN0YXRpb27igJNtYXhpbWl6YXRpb24gY2x1c3RlcmluZyBvZiBPbGQgRmFpdGhmdWwgZXJ1cHRpb24gZGF0YSBzdGFydHMgZnJvbSBhIHJhbmRvbSBndWVzcyBidXQgdGhlbiBzdWNjZXNzZnVsbHkgY29udmVyZ2VzIG9uIGFuIGFjY3VyYXRlIGNsdXN0ZXJpbmcgb2YgdGhlIHR3byBwaHlzaWNhbGx5IGRpc3RpbmN0IG1vZGVzIG9mIGVydXB0aW9uLlxuQ2xhc3NpZmllcnMgYW5kIHN0YXRpc3RpY2FsIGxlYXJuaW5nIG1ldGhvZHNcblxuVGhlIHNpbXBsZXN0IEFJIGFwcGxpY2F0aW9ucyBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3byB0eXBlczogY2xhc3NpZmllcnMgKGUuZy4sIFwiaWYgc2hpbnkgdGhlbiBkaWFtb25kXCIpLCBvbiBvbmUgaGFuZCwgYW5kIGNvbnRyb2xsZXJzIChlLmcuLCBcImlmIGRpYW1vbmQgdGhlbiBwaWNrIHVwXCIpLCBvbiB0aGUgb3RoZXIgaGFuZC4gQ2xhc3NpZmllcnNbOThdIGFyZSBmdW5jdGlvbnMgdGhhdCB1c2UgcGF0dGVybiBtYXRjaGluZyB0byBkZXRlcm1pbmUgdGhlIGNsb3Nlc3QgbWF0Y2guIFRoZXkgY2FuIGJlIGZpbmUtdHVuZWQgYmFzZWQgb24gY2hvc2VuIGV4YW1wbGVzIHVzaW5nIHN1cGVydmlzZWQgbGVhcm5pbmcuIEVhY2ggcGF0dGVybiAoYWxzbyBjYWxsZWQgYW4gXCJvYnNlcnZhdGlvblwiKSBpcyBsYWJlbGVkIHdpdGggYSBjZXJ0YWluIHByZWRlZmluZWQgY2xhc3MuIEFsbCB0aGUgb2JzZXJ2YXRpb25zIGNvbWJpbmVkIHdpdGggdGhlaXIgY2xhc3MgbGFiZWxzIGFyZSBrbm93biBhcyBhIGRhdGEgc2V0LiBXaGVuIGEgbmV3IG9ic2VydmF0aW9uIGlzIHJlY2VpdmVkLCB0aGF0IG9ic2VydmF0aW9uIGlzIGNsYXNzaWZpZWQgYmFzZWQgb24gcHJldmlvdXMgZXhwZXJpZW5jZS5bNDVdXG5cblRoZXJlIGFyZSBtYW55IGtpbmRzIG9mIGNsYXNzaWZpZXJzIGluIHVzZS5bOTldIFRoZSBkZWNpc2lvbiB0cmVlIGlzIHRoZSBzaW1wbGVzdCBhbmQgbW9zdCB3aWRlbHkgdXNlZCBzeW1ib2xpYyBtYWNoaW5lIGxlYXJuaW5nIGFsZ29yaXRobS5bMTAwXSBLLW5lYXJlc3QgbmVpZ2hib3IgYWxnb3JpdGhtIHdhcyB0aGUgbW9zdCB3aWRlbHkgdXNlZCBhbmFsb2dpY2FsIEFJIHVudGlsIHRoZSBtaWQtMTk5MHMsIGFuZCBLZXJuZWwgbWV0aG9kcyBzdWNoIGFzIHRoZSBzdXBwb3J0IHZlY3RvciBtYWNoaW5lIChTVk0pIGRpc3BsYWNlZCBrLW5lYXJlc3QgbmVpZ2hib3IgaW4gdGhlIDE5OTBzLlsxMDFdIFRoZSBuYWl2ZSBCYXllcyBjbGFzc2lmaWVyIGlzIHJlcG9ydGVkbHkgdGhlIFwibW9zdCB3aWRlbHkgdXNlZCBsZWFybmVyXCJbMTAyXSBhdCBHb29nbGUsIGR1ZSBpbiBwYXJ0IHRvIGl0cyBzY2FsYWJpbGl0eS5bMTAzXSBOZXVyYWwgbmV0d29ya3MgYXJlIGFsc28gdXNlZCBhcyBjbGFzc2lmaWVycy5bMTA0XVxuXG5BcnRpZmljaWFsIG5ldXJhbCBuZXR3b3Jrc1xuQSBuZXVyYWwgbmV0d29yayBpcyBhbiBpbnRlcmNvbm5lY3RlZCBncm91cCBvZiBub2RlcywgYWtpbiB0byB0aGUgdmFzdCBuZXR3b3JrIG9mIG5ldXJvbnMgaW4gdGhlIGh1bWFuIGJyYWluLlxuXG5BbiBhcnRpZmljaWFsIG5ldXJhbCBuZXR3b3JrIGlzIGJhc2VkIG9uIGEgY29sbGVjdGlvbiBvZiBub2RlcyBhbHNvIGtub3duIGFzIGFydGlmaWNpYWwgbmV1cm9ucywgd2hpY2ggbG9vc2VseSBtb2RlbCB0aGUgbmV1cm9ucyBpbiBhIGJpb2xvZ2ljYWwgYnJhaW4uIEl0IGlzIHRyYWluZWQgdG8gcmVjb2duaXNlIHBhdHRlcm5zOyBvbmNlIHRyYWluZWQsIGl0IGNhbiByZWNvZ25pc2UgdGhvc2UgcGF0dGVybnMgaW4gZnJlc2ggZGF0YS4gVGhlcmUgaXMgYW4gaW5wdXQsIGF0IGxlYXN0IG9uZSBoaWRkZW4gbGF5ZXIgb2Ygbm9kZXMgYW5kIGFuIG91dHB1dC4gRWFjaCBub2RlIGFwcGxpZXMgYSBmdW5jdGlvbiBhbmQgb25jZSB0aGUgd2VpZ2h0IGNyb3NzZXMgaXRzIHNwZWNpZmllZCB0aHJlc2hvbGQsIHRoZSBkYXRhIGlzIHRyYW5zbWl0dGVkIHRvIHRoZSBuZXh0IGxheWVyLiBBIG5ldHdvcmsgaXMgdHlwaWNhbGx5IGNhbGxlZCBhIGRlZXAgbmV1cmFsIG5ldHdvcmsgaWYgaXQgaGFzIGF0IGxlYXN0IDIgaGlkZGVuIGxheWVycy5bMTA0XVxuXG5MZWFybmluZyBhbGdvcml0aG1zIGZvciBuZXVyYWwgbmV0d29ya3MgdXNlIGxvY2FsIHNlYXJjaCB0byBjaG9vc2UgdGhlIHdlaWdodHMgdGhhdCB3aWxsIGdldCB0aGUgcmlnaHQgb3V0cHV0IGZvciBlYWNoIGlucHV0IGR1cmluZyB0cmFpbmluZy4gVGhlIG1vc3QgY29tbW9uIHRyYWluaW5nIHRlY2huaXF1ZSBpcyB0aGUgYmFja3Byb3BhZ2F0aW9uIGFsZ29yaXRobS5bMTA1XSBOZXVyYWwgbmV0d29ya3MgbGVhcm4gdG8gbW9kZWwgY29tcGxleCByZWxhdGlvbnNoaXBzIGJldHdlZW4gaW5wdXRzIGFuZCBvdXRwdXRzIGFuZCBmaW5kIHBhdHRlcm5zIGluIGRhdGEuIEluIHRoZW9yeSwgYSBuZXVyYWwgbmV0d29yayBjYW4gbGVhcm4gYW55IGZ1bmN0aW9uLlsxMDZdXG5cbkluIGZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrcyB0aGUgc2lnbmFsIHBhc3NlcyBpbiBvbmx5IG9uZSBkaXJlY3Rpb24uWzEwN10gUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrcyBmZWVkIHRoZSBvdXRwdXQgc2lnbmFsIGJhY2sgaW50byB0aGUgaW5wdXQsIHdoaWNoIGFsbG93cyBzaG9ydC10ZXJtIG1lbW9yaWVzIG9mIHByZXZpb3VzIGlucHV0IGV2ZW50cy4gTG9uZyBzaG9ydCB0ZXJtIG1lbW9yeSBpcyB0aGUgbW9zdCBzdWNjZXNzZnVsIG5ldHdvcmsgYXJjaGl0ZWN0dXJlIGZvciByZWN1cnJlbnQgbmV0d29ya3MuWzEwOF0gUGVyY2VwdHJvbnNbMTA5XSB1c2Ugb25seSBhIHNpbmdsZSBsYXllciBvZiBuZXVyb25zOyBkZWVwIGxlYXJuaW5nWzExMF0gdXNlcyBtdWx0aXBsZSBsYXllcnMuIENvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzIHN0cmVuZ3RoZW4gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBuZXVyb25zIHRoYXQgYXJlIFwiY2xvc2VcIiB0byBlYWNoIG90aGVy4oCUdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpbiBpbWFnZSBwcm9jZXNzaW5nLCB3aGVyZSBhIGxvY2FsIHNldCBvZiBuZXVyb25zIG11c3QgaWRlbnRpZnkgYW4gXCJlZGdlXCIgYmVmb3JlIHRoZSBuZXR3b3JrIGNhbiBpZGVudGlmeSBhbiBvYmplY3QuWzExMV1cblxuRGVlcCBsZWFybmluZ1xuXG5EZWVwIGxlYXJuaW5nWzExMF0gdXNlcyBzZXZlcmFsIGxheWVycyBvZiBuZXVyb25zIGJldHdlZW4gdGhlIG5ldHdvcmsncyBpbnB1dHMgYW5kIG91dHB1dHMuIFRoZSBtdWx0aXBsZSBsYXllcnMgY2FuIHByb2dyZXNzaXZlbHkgZXh0cmFjdCBoaWdoZXItbGV2ZWwgZmVhdHVyZXMgZnJvbSB0aGUgcmF3IGlucHV0LiBGb3IgZXhhbXBsZSwgaW4gaW1hZ2UgcHJvY2Vzc2luZywgbG93ZXIgbGF5ZXJzIG1heSBpZGVudGlmeSBlZGdlcywgd2hpbGUgaGlnaGVyIGxheWVycyBtYXkgaWRlbnRpZnkgdGhlIGNvbmNlcHRzIHJlbGV2YW50IHRvIGEgaHVtYW4gc3VjaCBhcyBkaWdpdHMsIGxldHRlcnMsIG9yIGZhY2VzLlsxMTJdXG5cbkRlZXAgbGVhcm5pbmcgaGFzIHByb2ZvdW5kbHkgaW1wcm92ZWQgdGhlIHBlcmZvcm1hbmNlIG9mIHByb2dyYW1zIGluIG1hbnkgaW1wb3J0YW50IHN1YmZpZWxkcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgaW5jbHVkaW5nIGNvbXB1dGVyIHZpc2lvbiwgc3BlZWNoIHJlY29nbml0aW9uLCBuYXR1cmFsIGxhbmd1YWdlIHByb2Nlc3NpbmcsIGltYWdlIGNsYXNzaWZpY2F0aW9uLFsxMTNdIGFuZCBvdGhlcnMuIFRoZSByZWFzb24gdGhhdCBkZWVwIGxlYXJuaW5nIHBlcmZvcm1zIHNvIHdlbGwgaW4gc28gbWFueSBhcHBsaWNhdGlvbnMgaXMgbm90IGtub3duIGFzIG9mIDIwMjMuWzExNF0gVGhlIHN1ZGRlbiBzdWNjZXNzIG9mIGRlZXAgbGVhcm5pbmcgaW4gMjAxMuKAkzIwMTUgZGlkIG5vdCBvY2N1ciBiZWNhdXNlIG9mIHNvbWUgbmV3IGRpc2NvdmVyeSBvciB0aGVvcmV0aWNhbCBicmVha3Rocm91Z2ggKGRlZXAgbmV1cmFsIG5ldHdvcmtzIGFuZCBiYWNrcHJvcGFnYXRpb24gaGFkIGJlZW4gZGVzY3JpYmVkIGJ5IG1hbnkgcGVvcGxlLCBhcyBmYXIgYmFjayBhcyB0aGUgMTk1MHMpW2ldIGJ1dCBiZWNhdXNlIG9mIHR3byBmYWN0b3JzOiB0aGUgaW5jcmVkaWJsZSBpbmNyZWFzZSBpbiBjb21wdXRlciBwb3dlciAoaW5jbHVkaW5nIHRoZSBodW5kcmVkLWZvbGQgaW5jcmVhc2UgaW4gc3BlZWQgYnkgc3dpdGNoaW5nIHRvIEdQVXMpIGFuZCB0aGUgYXZhaWxhYmlsaXR5IG9mIHZhc3QgYW1vdW50cyBvZiB0cmFpbmluZyBkYXRhLCBlc3BlY2lhbGx5IHRoZSBnaWFudCBjdXJhdGVkIGRhdGFzZXRzIHVzZWQgZm9yIGJlbmNobWFyayB0ZXN0aW5nLCBzdWNoIGFzIEltYWdlTmV0LltqXVxuXG5HUFRcblxuR2VuZXJhdGl2ZSBwcmUtdHJhaW5lZCB0cmFuc2Zvcm1lcnMgKEdQVCkgYXJlIGxhcmdlIGxhbmd1YWdlIG1vZGVscyAoTExNcykgdGhhdCBnZW5lcmF0ZSB0ZXh0IGJhc2VkIG9uIHRoZSBzZW1hbnRpYyByZWxhdGlvbnNoaXBzIGJldHdlZW4gd29yZHMgaW4gc2VudGVuY2VzLiBUZXh0LWJhc2VkIEdQVCBtb2RlbHMgYXJlIHByZXRyYWluZWQgb24gYSBsYXJnZSBjb3JwdXMgb2YgdGV4dCB0aGF0IGNhbiBiZSBmcm9tIHRoZSBJbnRlcm5ldC4gVGhlIHByZXRyYWluaW5nIGNvbnNpc3RzIG9mIHByZWRpY3RpbmcgdGhlIG5leHQgdG9rZW4gKGEgdG9rZW4gYmVpbmcgdXN1YWxseSBhIHdvcmQsIHN1YndvcmQsIG9yIHB1bmN0dWF0aW9uKS4gVGhyb3VnaG91dCB0aGlzIHByZXRyYWluaW5nLCBHUFQgbW9kZWxzIGFjY3VtdWxhdGUga25vd2xlZGdlIGFib3V0IHRoZSB3b3JsZCBhbmQgY2FuIHRoZW4gZ2VuZXJhdGUgaHVtYW4tbGlrZSB0ZXh0IGJ5IHJlcGVhdGVkbHkgcHJlZGljdGluZyB0aGUgbmV4dCB0b2tlbi4gVHlwaWNhbGx5LCBhIHN1YnNlcXVlbnQgdHJhaW5pbmcgcGhhc2UgbWFrZXMgdGhlIG1vZGVsIG1vcmUgdHJ1dGhmdWwsIHVzZWZ1bCwgYW5kIGhhcm1sZXNzLCB1c3VhbGx5IHdpdGggYSB0ZWNobmlxdWUgY2FsbGVkIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmcgZnJvbSBodW1hbiBmZWVkYmFjayAoUkxIRikuIEN1cnJlbnQgR1BUIG1vZGVscyBhcmUgcHJvbmUgdG8gZ2VuZXJhdGluZyBmYWxzZWhvb2RzIGNhbGxlZCBcImhhbGx1Y2luYXRpb25zXCIsIGFsdGhvdWdoIHRoaXMgY2FuIGJlIHJlZHVjZWQgd2l0aCBSTEhGIGFuZCBxdWFsaXR5IGRhdGEuIFRoZXkgYXJlIHVzZWQgaW4gY2hhdGJvdHMsIHdoaWNoIGFsbG93IHBlb3BsZSB0byBhc2sgYSBxdWVzdGlvbiBvciByZXF1ZXN0IGEgdGFzayBpbiBzaW1wbGUgdGV4dC5bMTIyXVsxMjNdXG5cbkN1cnJlbnQgbW9kZWxzIGFuZCBzZXJ2aWNlcyBpbmNsdWRlIEdlbWluaSAoZm9ybWVybHkgQmFyZCksIENoYXRHUFQsIEdyb2ssIENsYXVkZSwgQ29waWxvdCwgYW5kIExMYU1BLlsxMjRdIE11bHRpbW9kYWwgR1BUIG1vZGVscyBjYW4gcHJvY2VzcyBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSAobW9kYWxpdGllcykgc3VjaCBhcyBpbWFnZXMsIHZpZGVvcywgc291bmQsIGFuZCB0ZXh0LlsxMjVdXG5cbkhhcmR3YXJlIGFuZCBzb2Z0d2FyZVxuTWFpbiBhcnRpY2xlczogUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGZvciBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgSGFyZHdhcmUgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkluIHRoZSBsYXRlIDIwMTBzLCBncmFwaGljcyBwcm9jZXNzaW5nIHVuaXRzIChHUFVzKSB0aGF0IHdlcmUgaW5jcmVhc2luZ2x5IGRlc2lnbmVkIHdpdGggQUktc3BlY2lmaWMgZW5oYW5jZW1lbnRzIGFuZCB1c2VkIHdpdGggc3BlY2lhbGl6ZWQgVGVuc29yRmxvdyBzb2Z0d2FyZSBoYWQgcmVwbGFjZWQgcHJldmlvdXNseSB1c2VkIGNlbnRyYWwgcHJvY2Vzc2luZyB1bml0IChDUFVzKSBhcyB0aGUgZG9taW5hbnQgbWVhbnMgZm9yIGxhcmdlLXNjYWxlIChjb21tZXJjaWFsIGFuZCBhY2FkZW1pYykgbWFjaGluZSBsZWFybmluZyBtb2RlbHMnIHRyYWluaW5nLlsxMjZdIFNwZWNpYWxpemVkIHByb2dyYW1taW5nIGxhbmd1YWdlcyBzdWNoIGFzIFByb2xvZyB3ZXJlIHVzZWQgaW4gZWFybHkgQUkgcmVzZWFyY2gsWzEyN10gYnV0IGdlbmVyYWwtcHVycG9zZSBwcm9ncmFtbWluZyBsYW5ndWFnZXMgbGlrZSBQeXRob24gaGF2ZSBiZWNvbWUgcHJlZG9taW5hbnQuWzEyOF1cblxuVGhlIHRyYW5zaXN0b3IgZGVuc2l0eSBpbiBpbnRlZ3JhdGVkIGNpcmN1aXRzIGhhcyBiZWVuIG9ic2VydmVkIHRvIHJvdWdobHkgZG91YmxlIGV2ZXJ5IDE4IG1vbnRoc+KAlGEgdHJlbmQga25vd24gYXMgTW9vcmUncyBsYXcsIG5hbWVkIGFmdGVyIHRoZSBJbnRlbCBjby1mb3VuZGVyIEdvcmRvbiBNb29yZSwgd2hvIGZpcnN0IGlkZW50aWZpZWQgaXQuIEltcHJvdmVtZW50cyBpbiBHUFVzIGhhdmUgYmVlbiBldmVuIGZhc3RlcixbMTI5XSBhIHRyZW5kIHNvbWV0aW1lcyBjYWxsZWQgSHVhbmcncyBsYXcsWzEzMF0gbmFtZWQgYWZ0ZXIgTnZpZGlhIGNvLWZvdW5kZXIgYW5kIENFTyBKZW5zZW4gSHVhbmcuXG5cbkFwcGxpY2F0aW9uc1xuTWFpbiBhcnRpY2xlOiBBcHBsaWNhdGlvbnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuQUkgYW5kIG1hY2hpbmUgbGVhcm5pbmcgdGVjaG5vbG9neSBpcyB1c2VkIGluIG1vc3Qgb2YgdGhlIGVzc2VudGlhbCBhcHBsaWNhdGlvbnMgb2YgdGhlIDIwMjBzLCBpbmNsdWRpbmc6IHNlYXJjaCBlbmdpbmVzIChzdWNoIGFzIEdvb2dsZSBTZWFyY2gpLCB0YXJnZXRpbmcgb25saW5lIGFkdmVydGlzZW1lbnRzLCByZWNvbW1lbmRhdGlvbiBzeXN0ZW1zIChvZmZlcmVkIGJ5IE5ldGZsaXgsIFlvdVR1YmUgb3IgQW1hem9uKSwgZHJpdmluZyBpbnRlcm5ldCB0cmFmZmljLCB0YXJnZXRlZCBhZHZlcnRpc2luZyAoQWRTZW5zZSwgRmFjZWJvb2spLCB2aXJ0dWFsIGFzc2lzdGFudHMgKHN1Y2ggYXMgU2lyaSBvciBBbGV4YSksIGF1dG9ub21vdXMgdmVoaWNsZXMgKGluY2x1ZGluZyBkcm9uZXMsIEFEQVMgYW5kIHNlbGYtZHJpdmluZyBjYXJzKSwgYXV0b21hdGljIGxhbmd1YWdlIHRyYW5zbGF0aW9uIChNaWNyb3NvZnQgVHJhbnNsYXRvciwgR29vZ2xlIFRyYW5zbGF0ZSksIGZhY2lhbCByZWNvZ25pdGlvbiAoQXBwbGUncyBGYWNlIElEIG9yIE1pY3Jvc29mdCdzIERlZXBGYWNlIGFuZCBHb29nbGUncyBGYWNlTmV0KSBhbmQgaW1hZ2UgbGFiZWxpbmcgKHVzZWQgYnkgRmFjZWJvb2ssIEFwcGxlJ3MgaVBob3RvIGFuZCBUaWtUb2spLiBUaGUgZGVwbG95bWVudCBvZiBBSSBtYXkgYmUgb3ZlcnNlZW4gYnkgYSBDaGllZiBhdXRvbWF0aW9uIG9mZmljZXIgKENBTykuXG5cbkhlYWx0aCBhbmQgbWVkaWNpbmVcbk1haW4gYXJ0aWNsZTogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gaGVhbHRoY2FyZVxuXG5UaGUgYXBwbGljYXRpb24gb2YgQUkgaW4gbWVkaWNpbmUgYW5kIG1lZGljYWwgcmVzZWFyY2ggaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5jcmVhc2UgcGF0aWVudCBjYXJlIGFuZCBxdWFsaXR5IG9mIGxpZmUuWzEzMV0gVGhyb3VnaCB0aGUgbGVucyBvZiB0aGUgSGlwcG9jcmF0aWMgT2F0aCwgbWVkaWNhbCBwcm9mZXNzaW9uYWxzIGFyZSBldGhpY2FsbHkgY29tcGVsbGVkIHRvIHVzZSBBSSwgaWYgYXBwbGljYXRpb25zIGNhbiBtb3JlIGFjY3VyYXRlbHkgZGlhZ25vc2UgYW5kIHRyZWF0IHBhdGllbnRzLlsxMzJdWzEzM11cblxuRm9yIG1lZGljYWwgcmVzZWFyY2gsIEFJIGlzIGFuIGltcG9ydGFudCB0b29sIGZvciBwcm9jZXNzaW5nIGFuZCBpbnRlZ3JhdGluZyBiaWcgZGF0YS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBvcmdhbm9pZCBhbmQgdGlzc3VlIGVuZ2luZWVyaW5nIGRldmVsb3BtZW50IHdoaWNoIHVzZSBtaWNyb3Njb3B5IGltYWdpbmcgYXMgYSBrZXkgdGVjaG5pcXVlIGluIGZhYnJpY2F0aW9uLlsxMzRdIEl0IGhhcyBiZWVuIHN1Z2dlc3RlZCB0aGF0IEFJIGNhbiBvdmVyY29tZSBkaXNjcmVwYW5jaWVzIGluIGZ1bmRpbmcgYWxsb2NhdGVkIHRvIGRpZmZlcmVudCBmaWVsZHMgb2YgcmVzZWFyY2guWzEzNF0gTmV3IEFJIHRvb2xzIGNhbiBkZWVwZW4gdGhlIHVuZGVyc3RhbmRpbmcgb2YgYmlvbWVkaWNhbGx5IHJlbGV2YW50IHBhdGh3YXlzLiBGb3IgZXhhbXBsZSwgQWxwaGFGb2xkIDIgKDIwMjEpIGRlbW9uc3RyYXRlZCB0aGUgYWJpbGl0eSB0byBhcHByb3hpbWF0ZSwgaW4gaG91cnMgcmF0aGVyIHRoYW4gbW9udGhzLCB0aGUgM0Qgc3RydWN0dXJlIG9mIGEgcHJvdGVpbi5bMTM1XSBJbiAyMDIzLCBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBBSS1ndWlkZWQgZHJ1ZyBkaXNjb3ZlcnkgaGVscGVkIGZpbmQgYSBjbGFzcyBvZiBhbnRpYmlvdGljcyBjYXBhYmxlIG9mIGtpbGxpbmcgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYS5bMTM2XSBJbiAyMDI0LCByZXNlYXJjaGVycyB1c2VkIG1hY2hpbmUgbGVhcm5pbmcgdG8gYWNjZWxlcmF0ZSB0aGUgc2VhcmNoIGZvciBQYXJraW5zb24ncyBkaXNlYXNlIGRydWcgdHJlYXRtZW50cy4gVGhlaXIgYWltIHdhcyB0byBpZGVudGlmeSBjb21wb3VuZHMgdGhhdCBibG9jayB0aGUgY2x1bXBpbmcsIG9yIGFnZ3JlZ2F0aW9uLCBvZiBhbHBoYS1zeW51Y2xlaW4gKHRoZSBwcm90ZWluIHRoYXQgY2hhcmFjdGVyaXNlcyBQYXJraW5zb24ncyBkaXNlYXNlKS4gVGhleSB3ZXJlIGFibGUgdG8gc3BlZWQgdXAgdGhlIGluaXRpYWwgc2NyZWVuaW5nIHByb2Nlc3MgdGVuLWZvbGQgYW5kIHJlZHVjZSB0aGUgY29zdCBieSBhIHRob3VzYW5kLWZvbGQuWzEzN11bMTM4XVxuXG5HYW1lc1xuTWFpbiBhcnRpY2xlOiBHYW1lIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkdhbWUgcGxheWluZyBwcm9ncmFtcyBoYXZlIGJlZW4gdXNlZCBzaW5jZSB0aGUgMTk1MHMgdG8gZGVtb25zdHJhdGUgYW5kIHRlc3QgQUkncyBtb3N0IGFkdmFuY2VkIHRlY2huaXF1ZXMuWzEzOV0gRGVlcCBCbHVlIGJlY2FtZSB0aGUgZmlyc3QgY29tcHV0ZXIgY2hlc3MtcGxheWluZyBzeXN0ZW0gdG8gYmVhdCBhIHJlaWduaW5nIHdvcmxkIGNoZXNzIGNoYW1waW9uLCBHYXJyeSBLYXNwYXJvdiwgb24gMTEgTWF5IDE5OTcuWzE0MF0gSW4gMjAxMSwgaW4gYSBKZW9wYXJkeSEgcXVpeiBzaG93IGV4aGliaXRpb24gbWF0Y2gsIElCTSdzIHF1ZXN0aW9uIGFuc3dlcmluZyBzeXN0ZW0sIFdhdHNvbiwgZGVmZWF0ZWQgdGhlIHR3byBncmVhdGVzdCBKZW9wYXJkeSEgY2hhbXBpb25zLCBCcmFkIFJ1dHRlciBhbmQgS2VuIEplbm5pbmdzLCBieSBhIHNpZ25pZmljYW50IG1hcmdpbi5bMTQxXSBJbiBNYXJjaCAyMDE2LCBBbHBoYUdvIHdvbiA0IG91dCBvZiA1IGdhbWVzIG9mIEdvIGluIGEgbWF0Y2ggd2l0aCBHbyBjaGFtcGlvbiBMZWUgU2Vkb2wsIGJlY29taW5nIHRoZSBmaXJzdCBjb21wdXRlciBHby1wbGF5aW5nIHN5c3RlbSB0byBiZWF0IGEgcHJvZmVzc2lvbmFsIEdvIHBsYXllciB3aXRob3V0IGhhbmRpY2Fwcy4gVGhlbiwgaW4gMjAxNywgaXQgZGVmZWF0ZWQgS2UgSmllLCB3aG8gd2FzIHRoZSBiZXN0IEdvIHBsYXllciBpbiB0aGUgd29ybGQuWzE0Ml0gT3RoZXIgcHJvZ3JhbXMgaGFuZGxlIGltcGVyZmVjdC1pbmZvcm1hdGlvbiBnYW1lcywgc3VjaCBhcyB0aGUgcG9rZXItcGxheWluZyBwcm9ncmFtIFBsdXJpYnVzLlsxNDNdIERlZXBNaW5kIGRldmVsb3BlZCBpbmNyZWFzaW5nbHkgZ2VuZXJhbGlzdGljIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmcgbW9kZWxzLCBzdWNoIGFzIHdpdGggTXVaZXJvLCB3aGljaCBjb3VsZCBiZSB0cmFpbmVkIHRvIHBsYXkgY2hlc3MsIEdvLCBvciBBdGFyaSBnYW1lcy5bMTQ0XSBJbiAyMDE5LCBEZWVwTWluZCdzIEFscGhhU3RhciBhY2hpZXZlZCBncmFuZG1hc3RlciBsZXZlbCBpbiBTdGFyQ3JhZnQgSUksIGEgcGFydGljdWxhcmx5IGNoYWxsZW5naW5nIHJlYWwtdGltZSBzdHJhdGVneSBnYW1lIHRoYXQgaW52b2x2ZXMgaW5jb21wbGV0ZSBrbm93bGVkZ2Ugb2Ygd2hhdCBoYXBwZW5zIG9uIHRoZSBtYXAuWzE0NV0gSW4gMjAyMSwgYW4gQUkgYWdlbnQgY29tcGV0ZWQgaW4gYSBQbGF5U3RhdGlvbiBHcmFuIFR1cmlzbW8gY29tcGV0aXRpb24sIHdpbm5pbmcgYWdhaW5zdCBmb3VyIG9mIHRoZSB3b3JsZCdzIGJlc3QgR3JhbiBUdXJpc21vIGRyaXZlcnMgdXNpbmcgZGVlcCByZWluZm9yY2VtZW50IGxlYXJuaW5nLlsxNDZdIEluIDIwMjQsIEdvb2dsZSBEZWVwTWluZCBpbnRyb2R1Y2VkIFNJTUEsIGEgdHlwZSBvZiBBSSBjYXBhYmxlIG9mIGF1dG9ub21vdXNseSBwbGF5aW5nIG5pbmUgcHJldmlvdXNseSB1bnNlZW4gb3Blbi13b3JsZCB2aWRlbyBnYW1lcyBieSBvYnNlcnZpbmcgc2NyZWVuIG91dHB1dCwgYXMgd2VsbCBhcyBleGVjdXRpbmcgc2hvcnQsIHNwZWNpZmljIHRhc2tzIGluIHJlc3BvbnNlIHRvIG5hdHVyYWwgbGFuZ3VhZ2UgaW5zdHJ1Y3Rpb25zLlsxNDddXG5cbk1hdGhlbWF0aWNzXG5cbkxhcmdlIGxhbmd1YWdlIG1vZGVscywgc3VjaCBhcyBHUFQtNCwgR2VtaW5pLCBDbGF1ZGUsIExMYU1hIG9yIE1pc3RyYWwsIGFyZSBpbmNyZWFzaW5nbHkgdXNlZCBpbiBtYXRoZW1hdGljcy4gVGhlc2UgcHJvYmFiaWxpc3RpYyBtb2RlbHMgYXJlIHZlcnNhdGlsZSwgYnV0IGNhbiBhbHNvIHByb2R1Y2Ugd3JvbmcgYW5zd2VycyBpbiB0aGUgZm9ybSBvZiBoYWxsdWNpbmF0aW9ucy4gVGhleSBzb21ldGltZXMgbmVlZCBhIGxhcmdlIGRhdGFiYXNlIG9mIG1hdGhlbWF0aWNhbCBwcm9ibGVtcyB0byBsZWFybiBmcm9tLCBidXQgYWxzbyBtZXRob2RzIHN1Y2ggYXMgc3VwZXJ2aXNlZCBmaW5lLXR1bmluZyBvciB0cmFpbmVkIGNsYXNzaWZpZXJzIHdpdGggaHVtYW4tYW5ub3RhdGVkIGRhdGEgdG8gaW1wcm92ZSBhbnN3ZXJzIGZvciBuZXcgcHJvYmxlbXMgYW5kIGxlYXJuIGZyb20gY29ycmVjdGlvbnMuWzE0OF0gQSBGZWJydWFyeSAyMDI0IHN0dWR5IHNob3dlZCB0aGF0IHRoZSBwZXJmb3JtYW5jZSBvZiBzb21lIGxhbmd1YWdlIG1vZGVscyBmb3IgcmVhc29uaW5nIGNhcGFiaWxpdGllcyBpbiBzb2x2aW5nIG1hdGggcHJvYmxlbXMgbm90IGluY2x1ZGVkIGluIHRoZWlyIHRyYWluaW5nIGRhdGEgd2FzIGxvdywgZXZlbiBmb3IgcHJvYmxlbXMgd2l0aCBvbmx5IG1pbm9yIGRldmlhdGlvbnMgZnJvbSB0cmFpbmVkIGRhdGEuWzE0OV0gT25lIHRlY2huaXF1ZSB0byBpbXByb3ZlIHRoZWlyIHBlcmZvcm1hbmNlIGludm9sdmVzIHRyYWluaW5nIHRoZSBtb2RlbHMgdG8gcHJvZHVjZSBjb3JyZWN0IHJlYXNvbmluZyBzdGVwcywgcmF0aGVyIHRoYW4ganVzdCB0aGUgY29ycmVjdCByZXN1bHQuWzE1MF0gSW4gSmFudWFyeSAyMDI1LCBNaWNyb3NvZnQgcHJvcG9zZWQgdGhlIHRlY2huaXF1ZSByU3Rhci1NYXRoIHRoYXQgbGV2ZXJhZ2VzIE1vbnRlIENhcmxvIHRyZWUgc2VhcmNoIGFuZCBzdGVwLWJ5LXN0ZXAgcmVhc29uaW5nLCBlbmFibGluZyBhIHJlbGF0aXZlbHkgc21hbGwgbGFuZ3VhZ2UgbW9kZWwgbGlrZSBRd2VuLTdCIHRvIHNvbHZlIDUzJSBvZiB0aGUgQUlNRSAyMDI0IGFuZCA5MCUgb2YgdGhlIE1BVEggYmVuY2htYXJrIHByb2JsZW1zLlsxNTFdXG5cbkFsdGVybmF0aXZlbHksIGRlZGljYXRlZCBtb2RlbHMgZm9yIG1hdGhlbWF0aWNhbCBwcm9ibGVtIHNvbHZpbmcgd2l0aCBoaWdoZXIgcHJlY2lzaW9uIGZvciB0aGUgb3V0Y29tZSBpbmNsdWRpbmcgcHJvb2Ygb2YgdGhlb3JlbXMgaGF2ZSBiZWVuIGRldmVsb3BlZCBzdWNoIGFzIEFscGhhVGVuc29yLCBBbHBoYUdlb21ldHJ5IGFuZCBBbHBoYVByb29mIGFsbCBmcm9tIEdvb2dsZSBEZWVwTWluZCxbMTUyXSBMbGVtbWEgZnJvbSBFbGV1dGhlckFJWzE1M10gb3IgSnVsaXVzLlsxNTRdXG5cbldoZW4gbmF0dXJhbCBsYW5ndWFnZSBpcyB1c2VkIHRvIGRlc2NyaWJlIG1hdGhlbWF0aWNhbCBwcm9ibGVtcywgY29udmVydGVycyBjYW4gdHJhbnNmb3JtIHN1Y2ggcHJvbXB0cyBpbnRvIGEgZm9ybWFsIGxhbmd1YWdlIHN1Y2ggYXMgTGVhbiB0byBkZWZpbmUgbWF0aGVtYXRpY2FsIHRhc2tzLlxuXG5Tb21lIG1vZGVscyBoYXZlIGJlZW4gZGV2ZWxvcGVkIHRvIHNvbHZlIGNoYWxsZW5naW5nIHByb2JsZW1zIGFuZCByZWFjaCBnb29kIHJlc3VsdHMgaW4gYmVuY2htYXJrIHRlc3RzLCBvdGhlcnMgdG8gc2VydmUgYXMgZWR1Y2F0aW9uYWwgdG9vbHMgaW4gbWF0aGVtYXRpY3MuWzE1NV1cblxuVG9wb2xvZ2ljYWwgZGVlcCBsZWFybmluZyBpbnRlZ3JhdGVzIHZhcmlvdXMgdG9wb2xvZ2ljYWwgYXBwcm9hY2hlcy5cblxuRmluYW5jZVxuXG5GaW5hbmNlIGlzIG9uZSBvZiB0aGUgZmFzdGVzdCBncm93aW5nIHNlY3RvcnMgd2hlcmUgYXBwbGllZCBBSSB0b29scyBhcmUgYmVpbmcgZGVwbG95ZWQ6IGZyb20gcmV0YWlsIG9ubGluZSBiYW5raW5nIHRvIGludmVzdG1lbnQgYWR2aWNlIGFuZCBpbnN1cmFuY2UsIHdoZXJlIGF1dG9tYXRlZCBcInJvYm90IGFkdmlzZXJzXCIgaGF2ZSBiZWVuIGluIHVzZSBmb3Igc29tZSB5ZWFycy5bMTU2XVxuXG5Xb3JsZCBQZW5zaW9ucyBleHBlcnRzIGxpa2UgTmljb2xhcyBGaXJ6bGkgaW5zaXN0IGl0IG1heSBiZSB0b28gZWFybHkgdG8gc2VlIHRoZSBlbWVyZ2VuY2Ugb2YgaGlnaGx5IGlubm92YXRpdmUgQUktaW5mb3JtZWQgZmluYW5jaWFsIHByb2R1Y3RzIGFuZCBzZXJ2aWNlczogXCJ0aGUgZGVwbG95bWVudCBvZiBBSSB0b29scyB3aWxsIHNpbXBseSBmdXJ0aGVyIGF1dG9tYXRpc2UgdGhpbmdzOiBkZXN0cm95aW5nIHRlbnMgb2YgdGhvdXNhbmRzIG9mIGpvYnMgaW4gYmFua2luZywgZmluYW5jaWFsIHBsYW5uaW5nLCBhbmQgcGVuc2lvbiBhZHZpY2UgaW4gdGhlIHByb2Nlc3MsIGJ1dCBJJ20gbm90IHN1cmUgaXQgd2lsbCB1bmxlYXNoIGEgbmV3IHdhdmUgb2YgW2UuZy4sIHNvcGhpc3RpY2F0ZWRdIHBlbnNpb24gaW5ub3ZhdGlvbi5cIlsxNTddXG5cbk1pbGl0YXJ5XG5NYWluIGFydGljbGU6IE1pbGl0YXJ5IGFwcGxpY2F0aW9ucyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuXG5WYXJpb3VzIGNvdW50cmllcyBhcmUgZGVwbG95aW5nIEFJIG1pbGl0YXJ5IGFwcGxpY2F0aW9ucy5bMTU4XSBUaGUgbWFpbiBhcHBsaWNhdGlvbnMgZW5oYW5jZSBjb21tYW5kIGFuZCBjb250cm9sLCBjb21tdW5pY2F0aW9ucywgc2Vuc29ycywgaW50ZWdyYXRpb24gYW5kIGludGVyb3BlcmFiaWxpdHkuWzE1OV0gUmVzZWFyY2ggaXMgdGFyZ2V0aW5nIGludGVsbGlnZW5jZSBjb2xsZWN0aW9uIGFuZCBhbmFseXNpcywgbG9naXN0aWNzLCBjeWJlciBvcGVyYXRpb25zLCBpbmZvcm1hdGlvbiBvcGVyYXRpb25zLCBhbmQgc2VtaWF1dG9ub21vdXMgYW5kIGF1dG9ub21vdXMgdmVoaWNsZXMuWzE1OF0gQUkgdGVjaG5vbG9naWVzIGVuYWJsZSBjb29yZGluYXRpb24gb2Ygc2Vuc29ycyBhbmQgZWZmZWN0b3JzLCB0aHJlYXQgZGV0ZWN0aW9uIGFuZCBpZGVudGlmaWNhdGlvbiwgbWFya2luZyBvZiBlbmVteSBwb3NpdGlvbnMsIHRhcmdldCBhY3F1aXNpdGlvbiwgY29vcmRpbmF0aW9uIGFuZCBkZWNvbmZsaWN0aW9uIG9mIGRpc3RyaWJ1dGVkIEpvaW50IEZpcmVzIGJldHdlZW4gbmV0d29ya2VkIGNvbWJhdCB2ZWhpY2xlcyBpbnZvbHZpbmcgbWFubmVkIGFuZCB1bm1hbm5lZCB0ZWFtcy5bMTU5XVxuXG5BSSBoYXMgYmVlbiB1c2VkIGluIG1pbGl0YXJ5IG9wZXJhdGlvbnMgaW4gSXJhcSwgU3lyaWEsIElzcmFlbCBhbmQgVWtyYWluZS5bMTU4XVsxNjBdWzE2MV1bMTYyXVxuXG5HZW5lcmF0aXZlIEFJXG5WaW5jZW50IHZhbiBHb2doIGluIHdhdGVyY29sb3VyIGNyZWF0ZWQgYnkgZ2VuZXJhdGl2ZSBBSSBzb2Z0d2FyZVxuVGhlc2UgcGFyYWdyYXBocyBhcmUgYW4gZXhjZXJwdCBmcm9tIEdlbmVyYXRpdmUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuW2VkaXRdXG5cbkdlbmVyYXRpdmUgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKGdlbmVyYXRpdmUgQUksIEdlbkFJLFsxNjNdIG9yIEdBSSkgaXMgYSBzdWJzZXQgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgdGhhdCB1c2VzIGdlbmVyYXRpdmUgbW9kZWxzIHRvIHByb2R1Y2UgdGV4dCwgaW1hZ2VzLCB2aWRlb3MsIG9yIG90aGVyIGZvcm1zIG9mIGRhdGEuWzE2NF1bMTY1XVsxNjZdIFRoZXNlIG1vZGVscyBsZWFybiB0aGUgdW5kZXJseWluZyBwYXR0ZXJucyBhbmQgc3RydWN0dXJlcyBvZiB0aGVpciB0cmFpbmluZyBkYXRhIGFuZCB1c2UgdGhlbSB0byBwcm9kdWNlIG5ldyBkYXRhWzE2N11bMTY4XSBiYXNlZCBvbiB0aGUgaW5wdXQsIHdoaWNoIG9mdGVuIGNvbWVzIGluIHRoZSBmb3JtIG9mIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvbXB0cy5bMTY5XVsxNzBdXG5cbkltcHJvdmVtZW50cyBpbiB0cmFuc2Zvcm1lci1iYXNlZCBkZWVwIG5ldXJhbCBuZXR3b3JrcywgcGFydGljdWxhcmx5IGxhcmdlIGxhbmd1YWdlIG1vZGVscyAoTExNcyksIGVuYWJsZWQgYW4gQUkgYm9vbSBvZiBnZW5lcmF0aXZlIEFJIHN5c3RlbXMgaW4gdGhlIDIwMjBzLiBUaGVzZSBpbmNsdWRlIGNoYXRib3RzIHN1Y2ggYXMgQ2hhdEdQVCwgQ29waWxvdCwgR2VtaW5pLCBhbmQgTExhTUE7IHRleHQtdG8taW1hZ2UgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW1hZ2UgZ2VuZXJhdGlvbiBzeXN0ZW1zIHN1Y2ggYXMgU3RhYmxlIERpZmZ1c2lvbiwgTWlkam91cm5leSwgYW5kIERBTEwtRTsgYW5kIHRleHQtdG8tdmlkZW8gQUkgZ2VuZXJhdG9ycyBzdWNoIGFzIFNvcmEuWzE3MV1bMTcyXVsxNzNdWzE3NF0gQ29tcGFuaWVzIHN1Y2ggYXMgT3BlbkFJLCBBbnRocm9waWMsIE1pY3Jvc29mdCwgR29vZ2xlLCBhbmQgQmFpZHUgYXMgd2VsbCBhcyBudW1lcm91cyBzbWFsbGVyIGZpcm1zIGhhdmUgZGV2ZWxvcGVkIGdlbmVyYXRpdmUgQUkgbW9kZWxzLlsxNjldWzE3NV1bMTc2XVxuXG5HZW5lcmF0aXZlIEFJIGhhcyB1c2VzIGFjcm9zcyBhIHdpZGUgcmFuZ2Ugb2YgaW5kdXN0cmllcywgaW5jbHVkaW5nIHNvZnR3YXJlIGRldmVsb3BtZW50LCBoZWFsdGhjYXJlLCBmaW5hbmNlLCBlbnRlcnRhaW5tZW50LCBjdXN0b21lciBzZXJ2aWNlLFsxNzddIHNhbGVzIGFuZCBtYXJrZXRpbmcsWzE3OF0gYXJ0LCB3cml0aW5nLFsxNzldIGZhc2hpb24sWzE4MF0gYW5kIHByb2R1Y3QgZGVzaWduLlsxODFdIEhvd2V2ZXIsIGNvbmNlcm5zIGhhdmUgYmVlbiByYWlzZWQgYWJvdXQgdGhlIHBvdGVudGlhbCBtaXN1c2Ugb2YgZ2VuZXJhdGl2ZSBBSSBzdWNoIGFzIGN5YmVyY3JpbWUsIHRoZSB1c2Ugb2YgZmFrZSBuZXdzIG9yIGRlZXBmYWtlcyB0byBkZWNlaXZlIG9yIG1hbmlwdWxhdGUgcGVvcGxlLCBhbmQgdGhlIG1hc3MgcmVwbGFjZW1lbnQgb2YgaHVtYW4gam9icy5bMTgyXVsxODNdIEludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXcgY29uY2VybnMgYWxzbyBleGlzdCBhcm91bmQgZ2VuZXJhdGl2ZSBtb2RlbHMgdGhhdCBhcmUgdHJhaW5lZCBvbiBhbmQgZW11bGF0ZSBjb3B5cmlnaHRlZCB3b3JrcyBvZiBhcnQuWzE4NF1cbkFnZW50c1xuXG5BcnRpZmljaWFsIGludGVsbGlnZW50IChBSSkgYWdlbnRzIGFyZSBzb2Z0d2FyZSBlbnRpdGllcyBkZXNpZ25lZCB0byBwZXJjZWl2ZSB0aGVpciBlbnZpcm9ubWVudCwgbWFrZSBkZWNpc2lvbnMsIGFuZCB0YWtlIGFjdGlvbnMgYXV0b25vbW91c2x5IHRvIGFjaGlldmUgc3BlY2lmaWMgZ29hbHMuIFRoZXNlIGFnZW50cyBjYW4gaW50ZXJhY3Qgd2l0aCB1c2VycywgdGhlaXIgZW52aXJvbm1lbnQsIG9yIG90aGVyIGFnZW50cy4gQUkgYWdlbnRzIGFyZSB1c2VkIGluIHZhcmlvdXMgYXBwbGljYXRpb25zLCBpbmNsdWRpbmcgdmlydHVhbCBhc3Npc3RhbnRzLCBjaGF0Ym90cywgYXV0b25vbW91cyB2ZWhpY2xlcywgZ2FtZS1wbGF5aW5nIHN5c3RlbXMsIGFuZCBpbmR1c3RyaWFsIHJvYm90aWNzLiBBSSBhZ2VudHMgb3BlcmF0ZSB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZWlyIHByb2dyYW1taW5nLCBhdmFpbGFibGUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMsIGFuZCBoYXJkd2FyZSBsaW1pdGF0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGFyZSByZXN0cmljdGVkIHRvIHBlcmZvcm1pbmcgdGFza3Mgd2l0aGluIHRoZWlyIGRlZmluZWQgc2NvcGUgYW5kIGhhdmUgZmluaXRlIG1lbW9yeSBhbmQgcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMuIEluIHJlYWwtd29ybGQgYXBwbGljYXRpb25zLCBBSSBhZ2VudHMgb2Z0ZW4gZmFjZSB0aW1lIGNvbnN0cmFpbnRzIGZvciBkZWNpc2lvbi1tYWtpbmcgYW5kIGFjdGlvbiBleGVjdXRpb24uIE1hbnkgQUkgYWdlbnRzIGluY29ycG9yYXRlIGxlYXJuaW5nIGFsZ29yaXRobXMsIGVuYWJsaW5nIHRoZW0gdG8gaW1wcm92ZSB0aGVpciBwZXJmb3JtYW5jZSBvdmVyIHRpbWUgdGhyb3VnaCBleHBlcmllbmNlIG9yIHRyYWluaW5nLiBVc2luZyBtYWNoaW5lIGxlYXJuaW5nLCBBSSBhZ2VudHMgY2FuIGFkYXB0IHRvIG5ldyBzaXR1YXRpb25zIGFuZCBvcHRpbWlzZSB0aGVpciBiZWhhdmlvdXIgZm9yIHRoZWlyIGRlc2lnbmF0ZWQgdGFza3MuWzE4NV1bMTg2XVsxODddXG5cblNleHVhbGl0eVxuXG5BcHBsaWNhdGlvbnMgb2YgQUkgaW4gdGhpcyBkb21haW4gaW5jbHVkZSBBSS1lbmFibGVkIG1lbnN0cnVhdGlvbiBhbmQgZmVydGlsaXR5IHRyYWNrZXJzIHRoYXQgYW5hbHl6ZSB1c2VyIGRhdGEgdG8gb2ZmZXIgcHJlZGljdGlvbixbMTg4XSBBSS1pbnRlZ3JhdGVkIHNleCB0b3lzIChlLmcuLCB0ZWxlZGlsZG9uaWNzKSxbMTg5XSBBSS1nZW5lcmF0ZWQgc2V4dWFsIGVkdWNhdGlvbiBjb250ZW50LFsxOTBdIGFuZCBBSSBhZ2VudHMgdGhhdCBzaW11bGF0ZSBzZXh1YWwgYW5kIHJvbWFudGljIHBhcnRuZXJzIChlLmcuLCBSZXBsaWthKS5bMTkxXSBBSSBpcyBhbHNvIHVzZWQgZm9yIHRoZSBwcm9kdWN0aW9uIG9mIG5vbi1jb25zZW5zdWFsIGRlZXBmYWtlIHBvcm5vZ3JhcGh5LCByYWlzaW5nIHNpZ25pZmljYW50IGV0aGljYWwgYW5kIGxlZ2FsIGNvbmNlcm5zLlsxOTJdXG5cbkFJIHRlY2hub2xvZ2llcyBoYXZlIGFsc28gYmVlbiB1c2VkIHRvIGF0dGVtcHQgdG8gaWRlbnRpZnkgb25saW5lIGdlbmRlci1iYXNlZCB2aW9sZW5jZSBhbmQgb25saW5lIHNleHVhbCBncm9vbWluZyBvZiBtaW5vcnMuWzE5M11bMTk0XVxuXG5PdGhlciBpbmR1c3RyeS1zcGVjaWZpYyB0YXNrc1xuXG5UaGVyZSBhcmUgYWxzbyB0aG91c2FuZHMgb2Ygc3VjY2Vzc2Z1bCBBSSBhcHBsaWNhdGlvbnMgdXNlZCB0byBzb2x2ZSBzcGVjaWZpYyBwcm9ibGVtcyBmb3Igc3BlY2lmaWMgaW5kdXN0cmllcyBvciBpbnN0aXR1dGlvbnMuIEluIGEgMjAxNyBzdXJ2ZXksIG9uZSBpbiBmaXZlIGNvbXBhbmllcyByZXBvcnRlZCBoYXZpbmcgaW5jb3Jwb3JhdGVkIFwiQUlcIiBpbiBzb21lIG9mZmVyaW5ncyBvciBwcm9jZXNzZXMuWzE5NV0gQSBmZXcgZXhhbXBsZXMgYXJlIGVuZXJneSBzdG9yYWdlLCBtZWRpY2FsIGRpYWdub3NpcywgbWlsaXRhcnkgbG9naXN0aWNzLCBhcHBsaWNhdGlvbnMgdGhhdCBwcmVkaWN0IHRoZSByZXN1bHQgb2YganVkaWNpYWwgZGVjaXNpb25zLCBmb3JlaWduIHBvbGljeSwgb3Igc3VwcGx5IGNoYWluIG1hbmFnZW1lbnQuXG5cbkFJIGFwcGxpY2F0aW9ucyBmb3IgZXZhY3VhdGlvbiBhbmQgZGlzYXN0ZXIgbWFuYWdlbWVudCBhcmUgZ3Jvd2luZy4gQUkgaGFzIGJlZW4gdXNlZCB0byBpbnZlc3RpZ2F0ZSBpZiBhbmQgaG93IHBlb3BsZSBldmFjdWF0ZWQgaW4gbGFyZ2Ugc2NhbGUgYW5kIHNtYWxsIHNjYWxlIGV2YWN1YXRpb25zIHVzaW5nIGhpc3RvcmljYWwgZGF0YSBmcm9tIEdQUywgdmlkZW9zIG9yIHNvY2lhbCBtZWRpYS4gRnVydGhlciwgQUkgY2FuIHByb3ZpZGUgcmVhbCB0aW1lIGluZm9ybWF0aW9uIG9uIHRoZSByZWFsIHRpbWUgZXZhY3VhdGlvbiBjb25kaXRpb25zLlsxOTZdWzE5N11bMTk4XVxuXG5JbiBhZ3JpY3VsdHVyZSwgQUkgaGFzIGhlbHBlZCBmYXJtZXJzIGlkZW50aWZ5IGFyZWFzIHRoYXQgbmVlZCBpcnJpZ2F0aW9uLCBmZXJ0aWxpemF0aW9uLCBwZXN0aWNpZGUgdHJlYXRtZW50cyBvciBpbmNyZWFzaW5nIHlpZWxkLiBBZ3Jvbm9taXN0cyB1c2UgQUkgdG8gY29uZHVjdCByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQuIEFJIGhhcyBiZWVuIHVzZWQgdG8gcHJlZGljdCB0aGUgcmlwZW5pbmcgdGltZSBmb3IgY3JvcHMgc3VjaCBhcyB0b21hdG9lcywgbW9uaXRvciBzb2lsIG1vaXN0dXJlLCBvcGVyYXRlIGFncmljdWx0dXJhbCByb2JvdHMsIGNvbmR1Y3QgcHJlZGljdGl2ZSBhbmFseXRpY3MsIGNsYXNzaWZ5IGxpdmVzdG9jayBwaWcgY2FsbCBlbW90aW9ucywgYXV0b21hdGUgZ3JlZW5ob3VzZXMsIGRldGVjdCBkaXNlYXNlcyBhbmQgcGVzdHMsIGFuZCBzYXZlIHdhdGVyLlxuXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZSBpcyB1c2VkIGluIGFzdHJvbm9teSB0byBhbmFseXplIGluY3JlYXNpbmcgYW1vdW50cyBvZiBhdmFpbGFibGUgZGF0YSBhbmQgYXBwbGljYXRpb25zLCBtYWlubHkgZm9yIFwiY2xhc3NpZmljYXRpb24sIHJlZ3Jlc3Npb24sIGNsdXN0ZXJpbmcsIGZvcmVjYXN0aW5nLCBnZW5lcmF0aW9uLCBkaXNjb3ZlcnksIGFuZCB0aGUgZGV2ZWxvcG1lbnQgb2YgbmV3IHNjaWVudGlmaWMgaW5zaWdodHMuXCIgRm9yIGV4YW1wbGUsIGl0IGlzIHVzZWQgZm9yIGRpc2NvdmVyaW5nIGV4b3BsYW5ldHMsIGZvcmVjYXN0aW5nIHNvbGFyIGFjdGl2aXR5LCBhbmQgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBzaWduYWxzIGFuZCBpbnN0cnVtZW50YWwgZWZmZWN0cyBpbiBncmF2aXRhdGlvbmFsIHdhdmUgYXN0cm9ub215LiBBZGRpdGlvbmFsbHksIGl0IGNvdWxkIGJlIHVzZWQgZm9yIGFjdGl2aXRpZXMgaW4gc3BhY2UsIHN1Y2ggYXMgc3BhY2UgZXhwbG9yYXRpb24sIGluY2x1ZGluZyB0aGUgYW5hbHlzaXMgb2YgZGF0YSBmcm9tIHNwYWNlIG1pc3Npb25zLCByZWFsLXRpbWUgc2NpZW5jZSBkZWNpc2lvbnMgb2Ygc3BhY2VjcmFmdCwgc3BhY2UgZGVicmlzIGF2b2lkYW5jZSwgYW5kIG1vcmUgYXV0b25vbW91cyBvcGVyYXRpb24uXG5cbkR1cmluZyB0aGUgMjAyNCBJbmRpYW4gZWxlY3Rpb25zLCBVUyQ1MCBtaWxsaW9ucyB3YXMgc3BlbnQgb24gYXV0aG9yaXplZCBBSS1nZW5lcmF0ZWQgY29udGVudCwgbm90YWJseSBieSBjcmVhdGluZyBkZWVwZmFrZXMgb2YgYWxsaWVkIChpbmNsdWRpbmcgc29tZXRpbWVzIGRlY2Vhc2VkKSBwb2xpdGljaWFucyB0byBiZXR0ZXIgZW5nYWdlIHdpdGggdm90ZXJzLCBhbmQgYnkgdHJhbnNsYXRpbmcgc3BlZWNoZXMgdG8gdmFyaW91cyBsb2NhbCBsYW5ndWFnZXMuWzE5OV1cblxuRXRoaWNzXG5NYWluIGFydGljbGU6IEV0aGljcyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuXG5BSSBoYXMgcG90ZW50aWFsIGJlbmVmaXRzIGFuZCBwb3RlbnRpYWwgcmlza3MuWzIwMF0gQUkgbWF5IGJlIGFibGUgdG8gYWR2YW5jZSBzY2llbmNlIGFuZCBmaW5kIHNvbHV0aW9ucyBmb3Igc2VyaW91cyBwcm9ibGVtczogRGVtaXMgSGFzc2FiaXMgb2YgRGVlcE1pbmQgaG9wZXMgdG8gXCJzb2x2ZSBpbnRlbGxpZ2VuY2UsIGFuZCB0aGVuIHVzZSB0aGF0IHRvIHNvbHZlIGV2ZXJ5dGhpbmcgZWxzZVwiLlsyMDFdIEhvd2V2ZXIsIGFzIHRoZSB1c2Ugb2YgQUkgaGFzIGJlY29tZSB3aWRlc3ByZWFkLCBzZXZlcmFsIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGFuZCByaXNrcyBoYXZlIGJlZW4gaWRlbnRpZmllZC5bMjAyXSBJbi1wcm9kdWN0aW9uIHN5c3RlbXMgY2FuIHNvbWV0aW1lcyBub3QgZmFjdG9yIGV0aGljcyBhbmQgYmlhcyBpbnRvIHRoZWlyIEFJIHRyYWluaW5nIHByb2Nlc3NlcywgZXNwZWNpYWxseSB3aGVuIHRoZSBBSSBhbGdvcml0aG1zIGFyZSBpbmhlcmVudGx5IHVuZXhwbGFpbmFibGUgaW4gZGVlcCBsZWFybmluZy5bMjAzXVxuXG5SaXNrcyBhbmQgaGFybVxuUHJpdmFjeSBhbmQgY29weXJpZ2h0XG5GdXJ0aGVyIGluZm9ybWF0aW9uOiBJbmZvcm1hdGlvbiBwcml2YWN5IGFuZCBBcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgY29weXJpZ2h0XG5cbk1hY2hpbmUgbGVhcm5pbmcgYWxnb3JpdGhtcyByZXF1aXJlIGxhcmdlIGFtb3VudHMgb2YgZGF0YS4gVGhlIHRlY2huaXF1ZXMgdXNlZCB0byBhY3F1aXJlIHRoaXMgZGF0YSBoYXZlIHJhaXNlZCBjb25jZXJucyBhYm91dCBwcml2YWN5LCBzdXJ2ZWlsbGFuY2UgYW5kIGNvcHlyaWdodC5cblxuQUktcG93ZXJlZCBkZXZpY2VzIGFuZCBzZXJ2aWNlcywgc3VjaCBhcyB2aXJ0dWFsIGFzc2lzdGFudHMgYW5kIElvVCBwcm9kdWN0cywgY29udGludW91c2x5IGNvbGxlY3QgcGVyc29uYWwgaW5mb3JtYXRpb24sIHJhaXNpbmcgY29uY2VybnMgYWJvdXQgaW50cnVzaXZlIGRhdGEgZ2F0aGVyaW5nIGFuZCB1bmF1dGhvcml6ZWQgYWNjZXNzIGJ5IHRoaXJkIHBhcnRpZXMuIFRoZSBsb3NzIG9mIHByaXZhY3kgaXMgZnVydGhlciBleGFjZXJiYXRlZCBieSBBSSdzIGFiaWxpdHkgdG8gcHJvY2VzcyBhbmQgY29tYmluZSB2YXN0IGFtb3VudHMgb2YgZGF0YSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHN1cnZlaWxsYW5jZSBzb2NpZXR5IHdoZXJlIGluZGl2aWR1YWwgYWN0aXZpdGllcyBhcmUgY29uc3RhbnRseSBtb25pdG9yZWQgYW5kIGFuYWx5emVkIHdpdGhvdXQgYWRlcXVhdGUgc2FmZWd1YXJkcyBvciB0cmFuc3BhcmVuY3kuXG5cblNlbnNpdGl2ZSB1c2VyIGRhdGEgY29sbGVjdGVkIG1heSBpbmNsdWRlIG9ubGluZSBhY3Rpdml0eSByZWNvcmRzLCBnZW9sb2NhdGlvbiBkYXRhLCB2aWRlbywgb3IgYXVkaW8uWzIwNF0gRm9yIGV4YW1wbGUsIGluIG9yZGVyIHRvIGJ1aWxkIHNwZWVjaCByZWNvZ25pdGlvbiBhbGdvcml0aG1zLCBBbWF6b24gaGFzIHJlY29yZGVkIG1pbGxpb25zIG9mIHByaXZhdGUgY29udmVyc2F0aW9ucyBhbmQgYWxsb3dlZCB0ZW1wb3Jhcnkgd29ya2VycyB0byBsaXN0ZW4gdG8gYW5kIHRyYW5zY3JpYmUgc29tZSBvZiB0aGVtLlsyMDVdIE9waW5pb25zIGFib3V0IHRoaXMgd2lkZXNwcmVhZCBzdXJ2ZWlsbGFuY2UgcmFuZ2UgZnJvbSB0aG9zZSB3aG8gc2VlIGl0IGFzIGEgbmVjZXNzYXJ5IGV2aWwgdG8gdGhvc2UgZm9yIHdob20gaXQgaXMgY2xlYXJseSB1bmV0aGljYWwgYW5kIGEgdmlvbGF0aW9uIG9mIHRoZSByaWdodCB0byBwcml2YWN5LlsyMDZdXG5cbkFJIGRldmVsb3BlcnMgYXJndWUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBkZWxpdmVyIHZhbHVhYmxlIGFwcGxpY2F0aW9ucyBhbmQgaGF2ZSBkZXZlbG9wZWQgc2V2ZXJhbCB0ZWNobmlxdWVzIHRoYXQgYXR0ZW1wdCB0byBwcmVzZXJ2ZSBwcml2YWN5IHdoaWxlIHN0aWxsIG9idGFpbmluZyB0aGUgZGF0YSwgc3VjaCBhcyBkYXRhIGFnZ3JlZ2F0aW9uLCBkZS1pZGVudGlmaWNhdGlvbiBhbmQgZGlmZmVyZW50aWFsIHByaXZhY3kuWzIwN10gU2luY2UgMjAxNiwgc29tZSBwcml2YWN5IGV4cGVydHMsIHN1Y2ggYXMgQ3ludGhpYSBEd29yaywgaGF2ZSBiZWd1biB0byB2aWV3IHByaXZhY3kgaW4gdGVybXMgb2YgZmFpcm5lc3MuIEJyaWFuIENocmlzdGlhbiB3cm90ZSB0aGF0IGV4cGVydHMgaGF2ZSBwaXZvdGVkIFwiZnJvbSB0aGUgcXVlc3Rpb24gb2YgJ3doYXQgdGhleSBrbm93JyB0byB0aGUgcXVlc3Rpb24gb2YgJ3doYXQgdGhleSdyZSBkb2luZyB3aXRoIGl0Jy5cIlsyMDhdXG5cbkdlbmVyYXRpdmUgQUkgaXMgb2Z0ZW4gdHJhaW5lZCBvbiB1bmxpY2Vuc2VkIGNvcHlyaWdodGVkIHdvcmtzLCBpbmNsdWRpbmcgaW4gZG9tYWlucyBzdWNoIGFzIGltYWdlcyBvciBjb21wdXRlciBjb2RlOyB0aGUgb3V0cHV0IGlzIHRoZW4gdXNlZCB1bmRlciB0aGUgcmF0aW9uYWxlIG9mIFwiZmFpciB1c2VcIi4gRXhwZXJ0cyBkaXNhZ3JlZSBhYm91dCBob3cgd2VsbCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgcmF0aW9uYWxlIHdpbGwgaG9sZCB1cCBpbiBjb3VydHMgb2YgbGF3OyByZWxldmFudCBmYWN0b3JzIG1heSBpbmNsdWRlIFwidGhlIHB1cnBvc2UgYW5kIGNoYXJhY3RlciBvZiB0aGUgdXNlIG9mIHRoZSBjb3B5cmlnaHRlZCB3b3JrXCIgYW5kIFwidGhlIGVmZmVjdCB1cG9uIHRoZSBwb3RlbnRpYWwgbWFya2V0IGZvciB0aGUgY29weXJpZ2h0ZWQgd29ya1wiLlsyMDldWzIxMF0gV2Vic2l0ZSBvd25lcnMgd2hvIGRvIG5vdCB3aXNoIHRvIGhhdmUgdGhlaXIgY29udGVudCBzY3JhcGVkIGNhbiBpbmRpY2F0ZSBpdCBpbiBhIFwicm9ib3RzLnR4dFwiIGZpbGUuWzIxMV0gSW4gMjAyMywgbGVhZGluZyBhdXRob3JzIChpbmNsdWRpbmcgSm9obiBHcmlzaGFtIGFuZCBKb25hdGhhbiBGcmFuemVuKSBzdWVkIEFJIGNvbXBhbmllcyBmb3IgdXNpbmcgdGhlaXIgd29yayB0byB0cmFpbiBnZW5lcmF0aXZlIEFJLlsyMTJdWzIxM10gQW5vdGhlciBkaXNjdXNzZWQgYXBwcm9hY2ggaXMgdG8gZW52aXNpb24gYSBzZXBhcmF0ZSBzdWkgZ2VuZXJpcyBzeXN0ZW0gb2YgcHJvdGVjdGlvbiBmb3IgY3JlYXRpb25zIGdlbmVyYXRlZCBieSBBSSB0byBlbnN1cmUgZmFpciBhdHRyaWJ1dGlvbiBhbmQgY29tcGVuc2F0aW9uIGZvciBodW1hbiBhdXRob3JzLlsyMTRdXG5cbkRvbWluYW5jZSBieSB0ZWNoIGdpYW50c1xuXG5UaGUgY29tbWVyY2lhbCBBSSBzY2VuZSBpcyBkb21pbmF0ZWQgYnkgQmlnIFRlY2ggY29tcGFuaWVzIHN1Y2ggYXMgQWxwaGFiZXQgSW5jLiwgQW1hem9uLCBBcHBsZSBJbmMuLCBNZXRhIFBsYXRmb3JtcywgYW5kIE1pY3Jvc29mdC5bMjE1XVsyMTZdWzIxN10gU29tZSBvZiB0aGVzZSBwbGF5ZXJzIGFscmVhZHkgb3duIHRoZSB2YXN0IG1ham9yaXR5IG9mIGV4aXN0aW5nIGNsb3VkIGluZnJhc3RydWN0dXJlIGFuZCBjb21wdXRpbmcgcG93ZXIgZnJvbSBkYXRhIGNlbnRlcnMsIGFsbG93aW5nIHRoZW0gdG8gZW50cmVuY2ggZnVydGhlciBpbiB0aGUgbWFya2V0cGxhY2UuWzIxOF1bMjE5XVxuXG5Qb3dlciBuZWVkcyBhbmQgZW52aXJvbm1lbnRhbCBpbXBhY3RzXG5TZWUgYWxzbzogRW52aXJvbm1lbnRhbCBpbXBhY3RzIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXG5cbkluIEphbnVhcnkgMjAyNCwgdGhlIEludGVybmF0aW9uYWwgRW5lcmd5IEFnZW5jeSAoSUVBKSByZWxlYXNlZCBFbGVjdHJpY2l0eSAyMDI0LCBBbmFseXNpcyBhbmQgRm9yZWNhc3QgdG8gMjAyNiwgZm9yZWNhc3RpbmcgZWxlY3RyaWMgcG93ZXIgdXNlLlsyMjBdIFRoaXMgaXMgdGhlIGZpcnN0IElFQSByZXBvcnQgdG8gbWFrZSBwcm9qZWN0aW9ucyBmb3IgZGF0YSBjZW50ZXJzIGFuZCBwb3dlciBjb25zdW1wdGlvbiBmb3IgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIGNyeXB0b2N1cnJlbmN5LiBUaGUgcmVwb3J0IHN0YXRlcyB0aGF0IHBvd2VyIGRlbWFuZCBmb3IgdGhlc2UgdXNlcyBtaWdodCBkb3VibGUgYnkgMjAyNiwgd2l0aCBhZGRpdGlvbmFsIGVsZWN0cmljIHBvd2VyIHVzYWdlIGVxdWFsIHRvIGVsZWN0cmljaXR5IHVzZWQgYnkgdGhlIHdob2xlIEphcGFuZXNlIG5hdGlvbi5bMjIxXVxuXG5Qcm9kaWdpb3VzIHBvd2VyIGNvbnN1bXB0aW9uIGJ5IEFJIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgZ3Jvd3RoIG9mIGZvc3NpbCBmdWVscyB1c2UsIGFuZCBtaWdodCBkZWxheSBjbG9zaW5ncyBvZiBvYnNvbGV0ZSwgY2FyYm9uLWVtaXR0aW5nIGNvYWwgZW5lcmd5IGZhY2lsaXRpZXMuIFRoZXJlIGlzIGEgZmV2ZXJpc2ggcmlzZSBpbiB0aGUgY29uc3RydWN0aW9uIG9mIGRhdGEgY2VudGVycyB0aHJvdWdob3V0IHRoZSBVUywgbWFraW5nIGxhcmdlIHRlY2hub2xvZ3kgZmlybXMgKGUuZy4sIE1pY3Jvc29mdCwgTWV0YSwgR29vZ2xlLCBBbWF6b24pIGludG8gdm9yYWNpb3VzIGNvbnN1bWVycyBvZiBlbGVjdHJpYyBwb3dlci4gUHJvamVjdGVkIGVsZWN0cmljIGNvbnN1bXB0aW9uIGlzIHNvIGltbWVuc2UgdGhhdCB0aGVyZSBpcyBjb25jZXJuIHRoYXQgaXQgd2lsbCBiZSBmdWxmaWxsZWQgbm8gbWF0dGVyIHRoZSBzb3VyY2UuIEEgQ2hhdEdQVCBzZWFyY2ggaW52b2x2ZXMgdGhlIHVzZSBvZiAxMCB0aW1lcyB0aGUgZWxlY3RyaWNhbCBlbmVyZ3kgYXMgYSBHb29nbGUgc2VhcmNoLiBUaGUgbGFyZ2UgZmlybXMgYXJlIGluIGhhc3RlIHRvIGZpbmQgcG93ZXIgc291cmNlcyDigJMgZnJvbSBudWNsZWFyIGVuZXJneSB0byBnZW90aGVybWFsIHRvIGZ1c2lvbi4gVGhlIHRlY2ggZmlybXMgYXJndWUgdGhhdCDigJMgaW4gdGhlIGxvbmcgdmlldyDigJMgQUkgd2lsbCBiZSBldmVudHVhbGx5IGtpbmRlciB0byB0aGUgZW52aXJvbm1lbnQsIGJ1dCB0aGV5IG5lZWQgdGhlIGVuZXJneSBub3cuIEFJIG1ha2VzIHRoZSBwb3dlciBncmlkIG1vcmUgZWZmaWNpZW50IGFuZCBcImludGVsbGlnZW50XCIsIHdpbGwgYXNzaXN0IGluIHRoZSBncm93dGggb2YgbnVjbGVhciBwb3dlciwgYW5kIHRyYWNrIG92ZXJhbGwgY2FyYm9uIGVtaXNzaW9ucywgYWNjb3JkaW5nIHRvIHRlY2hub2xvZ3kgZmlybXMuWzIyMl1cblxuQSAyMDI0IEdvbGRtYW4gU2FjaHMgUmVzZWFyY2ggUGFwZXIsIEFJIERhdGEgQ2VudGVycyBhbmQgdGhlIENvbWluZyBVUyBQb3dlciBEZW1hbmQgU3VyZ2UsIGZvdW5kIFwiVVMgcG93ZXIgZGVtYW5kIChpcykgbGlrZWx5IHRvIGV4cGVyaWVuY2UgZ3Jvd3RoIG5vdCBzZWVuIGluIGEgZ2VuZXJhdGlvbi4uLi5cIiBhbmQgZm9yZWNhc3RzIHRoYXQsIGJ5IDIwMzAsIFVTIGRhdGEgY2VudGVycyB3aWxsIGNvbnN1bWUgOCUgb2YgVVMgcG93ZXIsIGFzIG9wcG9zZWQgdG8gMyUgaW4gMjAyMiwgcHJlc2FnaW5nIGdyb3d0aCBmb3IgdGhlIGVsZWN0cmljYWwgcG93ZXIgZ2VuZXJhdGlvbiBpbmR1c3RyeSBieSBhIHZhcmlldHkgb2YgbWVhbnMuWzIyM10gRGF0YSBjZW50ZXJzJyBuZWVkIGZvciBtb3JlIGFuZCBtb3JlIGVsZWN0cmljYWwgcG93ZXIgaXMgc3VjaCB0aGF0IHRoZXkgbWlnaHQgbWF4IG91dCB0aGUgZWxlY3RyaWNhbCBncmlkLiBUaGUgQmlnIFRlY2ggY29tcGFuaWVzIGNvdW50ZXIgdGhhdCBBSSBjYW4gYmUgdXNlZCB0byBtYXhpbWl6ZSB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIGdyaWQgYnkgYWxsLlsyMjRdXG5cbkluIDIwMjQsIHRoZSBXYWxsIFN0cmVldCBKb3VybmFsIHJlcG9ydGVkIHRoYXQgYmlnIEFJIGNvbXBhbmllcyBoYXZlIGJlZ3VuIG5lZ290aWF0aW9ucyB3aXRoIHRoZSBVUyBudWNsZWFyIHBvd2VyIHByb3ZpZGVycyB0byBwcm92aWRlIGVsZWN0cmljaXR5IHRvIHRoZSBkYXRhIGNlbnRlcnMuIEluIE1hcmNoIDIwMjQgQW1hem9uIHB1cmNoYXNlZCBhIFBlbm5zeWx2YW5pYSBudWNsZWFyLXBvd2VyZWQgZGF0YSBjZW50ZXIgZm9yICQ2NTAgTWlsbGlvbiAoVVMpLlsyMjVdIE52aWRpYSBDRU8gSmVuLUhzdW4gSHVhbmcgc2FpZCBudWNsZWFyIHBvd2VyIGlzIGEgZ29vZCBvcHRpb24gZm9yIHRoZSBkYXRhIGNlbnRlcnMuWzIyNl1cblxuSW4gU2VwdGVtYmVyIDIwMjQsIE1pY3Jvc29mdCBhbm5vdW5jZWQgYW4gYWdyZWVtZW50IHdpdGggQ29uc3RlbGxhdGlvbiBFbmVyZ3kgdG8gcmUtb3BlbiB0aGUgVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwb3dlciBwbGFudCB0byBwcm92aWRlIE1pY3Jvc29mdCB3aXRoIDEwMCUgb2YgYWxsIGVsZWN0cmljIHBvd2VyIHByb2R1Y2VkIGJ5IHRoZSBwbGFudCBmb3IgMjAgeWVhcnMuIFJlb3BlbmluZyB0aGUgcGxhbnQsIHdoaWNoIHN1ZmZlcmVkIGEgcGFydGlhbCBudWNsZWFyIG1lbHRkb3duIG9mIGl0cyBVbml0IDIgcmVhY3RvciBpbiAxOTc5LCB3aWxsIHJlcXVpcmUgQ29uc3RlbGxhdGlvbiB0byBnZXQgdGhyb3VnaCBzdHJpY3QgcmVndWxhdG9yeSBwcm9jZXNzZXMgd2hpY2ggd2lsbCBpbmNsdWRlIGV4dGVuc2l2ZSBzYWZldHkgc2NydXRpbnkgZnJvbSB0aGUgVVMgTnVjbGVhciBSZWd1bGF0b3J5IENvbW1pc3Npb24uIElmIGFwcHJvdmVkICh0aGlzIHdpbGwgYmUgdGhlIGZpcnN0IGV2ZXIgVVMgcmUtY29tbWlzc2lvbmluZyBvZiBhIG51Y2xlYXIgcGxhbnQpLCBvdmVyIDgzNSBtZWdhd2F0dHMgb2YgcG93ZXIg4oCTIGVub3VnaCBmb3IgODAwLDAwMCBob21lcyDigJMgb2YgZW5lcmd5IHdpbGwgYmUgcHJvZHVjZWQuIFRoZSBjb3N0IGZvciByZS1vcGVuaW5nIGFuZCB1cGdyYWRpbmcgaXMgZXN0aW1hdGVkIGF0ICQxLjYgYmlsbGlvbiAoVVMpIGFuZCBpcyBkZXBlbmRlbnQgb24gdGF4IGJyZWFrcyBmb3IgbnVjbGVhciBwb3dlciBjb250YWluZWQgaW4gdGhlIDIwMjIgVVMgSW5mbGF0aW9uIFJlZHVjdGlvbiBBY3QuWzIyN10gVGhlIFVTIGdvdmVybm1lbnQgYW5kIHRoZSBzdGF0ZSBvZiBNaWNoaWdhbiBhcmUgaW52ZXN0aW5nIGFsbW9zdCAkMiBiaWxsaW9uIChVUykgdG8gcmVvcGVuIHRoZSBQYWxpc2FkZXMgTnVjbGVhciByZWFjdG9yIG9uIExha2UgTWljaGlnYW4uIENsb3NlZCBzaW5jZSAyMDIyLCB0aGUgcGxhbnQgaXMgcGxhbm5lZCB0byBiZSByZW9wZW5lZCBpbiBPY3RvYmVyIDIwMjUuIFRoZSBUaHJlZSBNaWxlIElzbGFuZCBmYWNpbGl0eSB3aWxsIGJlIHJlbmFtZWQgdGhlIENyYW5lIENsZWFuIEVuZXJneSBDZW50ZXIgYWZ0ZXIgQ2hyaXMgQ3JhbmUsIGEgbnVjbGVhciBwcm9wb25lbnQgYW5kIGZvcm1lciBDRU8gb2YgRXhlbG9uIHdobyB3YXMgcmVzcG9uc2libGUgZm9yIEV4ZWxvbiBzcGlub2ZmIG9mIENvbnN0ZWxsYXRpb24uWzIyOF1cblxuQWZ0ZXIgdGhlIGxhc3QgYXBwcm92YWwgaW4gU2VwdGVtYmVyIDIwMjMsIFRhaXdhbiBzdXNwZW5kZWQgdGhlIGFwcHJvdmFsIG9mIGRhdGEgY2VudGVycyBub3J0aCBvZiBUYW95dWFuIHdpdGggYSBjYXBhY2l0eSBvZiBtb3JlIHRoYW4gNSBNVyBpbiAyMDI0LCBkdWUgdG8gcG93ZXIgc3VwcGx5IHNob3J0YWdlcy5bMjI5XSBUYWl3YW4gYWltcyB0byBwaGFzZSBvdXQgbnVjbGVhciBwb3dlciBieSAyMDI1LlsyMjldIE9uIHRoZSBvdGhlciBoYW5kLCBTaW5nYXBvcmUgaW1wb3NlZCBhIGJhbiBvbiB0aGUgb3BlbmluZyBvZiBkYXRhIGNlbnRlcnMgaW4gMjAxOSBkdWUgdG8gZWxlY3RyaWMgcG93ZXIsIGJ1dCBpbiAyMDIyLCBsaWZ0ZWQgdGhpcyBiYW4uWzIyOV1cblxuQWx0aG91Z2ggbW9zdCBudWNsZWFyIHBsYW50cyBpbiBKYXBhbiBoYXZlIGJlZW4gc2h1dCBkb3duIGFmdGVyIHRoZSAyMDExIEZ1a3VzaGltYSBudWNsZWFyIGFjY2lkZW50LCBhY2NvcmRpbmcgdG8gYW4gT2N0b2JlciAyMDI0IEJsb29tYmVyZyBhcnRpY2xlIGluIEphcGFuZXNlLCBjbG91ZCBnYW1pbmcgc2VydmljZXMgY29tcGFueSBVYml0dXMsIGluIHdoaWNoIE52aWRpYSBoYXMgYSBzdGFrZSwgaXMgbG9va2luZyBmb3IgbGFuZCBpbiBKYXBhbiBuZWFyIG51Y2xlYXIgcG93ZXIgcGxhbnQgZm9yIGEgbmV3IGRhdGEgY2VudGVyIGZvciBnZW5lcmF0aXZlIEFJLlsyMzBdIFViaXR1cyBDRU8gV2VzbGV5IEt1byBzYWlkIG51Y2xlYXIgcG93ZXIgcGxhbnRzIGFyZSB0aGUgbW9zdCBlZmZpY2llbnQsIGNoZWFwIGFuZCBzdGFibGUgcG93ZXIgZm9yIEFJLlsyMzBdXG5cbk9uIDEgTm92ZW1iZXIgMjAyNCwgdGhlIEZlZGVyYWwgRW5lcmd5IFJlZ3VsYXRvcnkgQ29tbWlzc2lvbiAoRkVSQykgcmVqZWN0ZWQgYW4gYXBwbGljYXRpb24gc3VibWl0dGVkIGJ5IFRhbGVuIEVuZXJneSBmb3IgYXBwcm92YWwgdG8gc3VwcGx5IHNvbWUgZWxlY3RyaWNpdHkgZnJvbSB0aGUgbnVjbGVhciBwb3dlciBzdGF0aW9uIFN1c3F1ZWhhbm5hIHRvIEFtYXpvbidzIGRhdGEgY2VudGVyLlsyMzFdIEFjY29yZGluZyB0byB0aGUgQ29tbWlzc2lvbiBDaGFpcm1hbiBXaWxsaWUgTC4gUGhpbGxpcHMsIGl0IGlzIGEgYnVyZGVuIG9uIHRoZSBlbGVjdHJpY2l0eSBncmlkIGFzIHdlbGwgYXMgYSBzaWduaWZpY2FudCBjb3N0IHNoaWZ0aW5nIGNvbmNlcm4gdG8gaG91c2Vob2xkcyBhbmQgb3RoZXIgYnVzaW5lc3Mgc2VjdG9ycy5bMjMxXVxuXG5NaXNpbmZvcm1hdGlvblxuU2VlIGFsc286IFlvdVR1YmUgwqfCoE1vZGVyYXRpb24gYW5kIG9mZmVuc2l2ZSBjb250ZW50XG5cbllvdVR1YmUsIEZhY2Vib29rIGFuZCBvdGhlcnMgdXNlIHJlY29tbWVuZGVyIHN5c3RlbXMgdG8gZ3VpZGUgdXNlcnMgdG8gbW9yZSBjb250ZW50LiBUaGVzZSBBSSBwcm9ncmFtcyB3ZXJlIGdpdmVuIHRoZSBnb2FsIG9mIG1heGltaXppbmcgdXNlciBlbmdhZ2VtZW50ICh0aGF0IGlzLCB0aGUgb25seSBnb2FsIHdhcyB0byBrZWVwIHBlb3BsZSB3YXRjaGluZykuIFRoZSBBSSBsZWFybmVkIHRoYXQgdXNlcnMgdGVuZGVkIHRvIGNob29zZSBtaXNpbmZvcm1hdGlvbiwgY29uc3BpcmFjeSB0aGVvcmllcywgYW5kIGV4dHJlbWUgcGFydGlzYW4gY29udGVudCwgYW5kLCB0byBrZWVwIHRoZW0gd2F0Y2hpbmcsIHRoZSBBSSByZWNvbW1lbmRlZCBtb3JlIG9mIGl0LiBVc2VycyBhbHNvIHRlbmRlZCB0byB3YXRjaCBtb3JlIGNvbnRlbnQgb24gdGhlIHNhbWUgc3ViamVjdCwgc28gdGhlIEFJIGxlZCBwZW9wbGUgaW50byBmaWx0ZXIgYnViYmxlcyB3aGVyZSB0aGV5IHJlY2VpdmVkIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lIG1pc2luZm9ybWF0aW9uLlsyMzJdIFRoaXMgY29udmluY2VkIG1hbnkgdXNlcnMgdGhhdCB0aGUgbWlzaW5mb3JtYXRpb24gd2FzIHRydWUsIGFuZCB1bHRpbWF0ZWx5IHVuZGVybWluZWQgdHJ1c3QgaW4gaW5zdGl0dXRpb25zLCB0aGUgbWVkaWEgYW5kIHRoZSBnb3Zlcm5tZW50LlsyMzNdIFRoZSBBSSBwcm9ncmFtIGhhZCBjb3JyZWN0bHkgbGVhcm5lZCB0byBtYXhpbWl6ZSBpdHMgZ29hbCwgYnV0IHRoZSByZXN1bHQgd2FzIGhhcm1mdWwgdG8gc29jaWV0eS4gQWZ0ZXIgdGhlIFUuUy4gZWxlY3Rpb24gaW4gMjAxNiwgbWFqb3IgdGVjaG5vbG9neSBjb21wYW5pZXMgdG9vayBzdGVwcyB0byBtaXRpZ2F0ZSB0aGUgcHJvYmxlbSBbY2l0YXRpb24gbmVlZGVkXS5cblxuSW4gMjAyMiwgZ2VuZXJhdGl2ZSBBSSBiZWdhbiB0byBjcmVhdGUgaW1hZ2VzLCBhdWRpbywgdmlkZW8gYW5kIHRleHQgdGhhdCBhcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWFsIHBob3RvZ3JhcGhzLCByZWNvcmRpbmdzLCBmaWxtcywgb3IgaHVtYW4gd3JpdGluZy4gSXQgaXMgcG9zc2libGUgZm9yIGJhZCBhY3RvcnMgdG8gdXNlIHRoaXMgdGVjaG5vbG9neSB0byBjcmVhdGUgbWFzc2l2ZSBhbW91bnRzIG9mIG1pc2luZm9ybWF0aW9uIG9yIHByb3BhZ2FuZGEuWzIzNF0gQUkgcGlvbmVlciBHZW9mZnJleSBIaW50b24gZXhwcmVzc2VkIGNvbmNlcm4gYWJvdXQgQUkgZW5hYmxpbmcgXCJhdXRob3JpdGFyaWFuIGxlYWRlcnMgdG8gbWFuaXB1bGF0ZSB0aGVpciBlbGVjdG9yYXRlc1wiIG9uIGEgbGFyZ2Ugc2NhbGUsIGFtb25nIG90aGVyIHJpc2tzLlsyMzVdXG5cbkFsZ29yaXRobWljIGJpYXMgYW5kIGZhaXJuZXNzXG5NYWluIGFydGljbGVzOiBBbGdvcml0aG1pYyBiaWFzIGFuZCBGYWlybmVzcyAobWFjaGluZSBsZWFybmluZylcblxuTWFjaGluZSBsZWFybmluZyBhcHBsaWNhdGlvbnMgd2lsbCBiZSBiaWFzZWRba10gaWYgdGhleSBsZWFybiBmcm9tIGJpYXNlZCBkYXRhLlsyMzddIFRoZSBkZXZlbG9wZXJzIG1heSBub3QgYmUgYXdhcmUgdGhhdCB0aGUgYmlhcyBleGlzdHMuWzIzOF0gQmlhcyBjYW4gYmUgaW50cm9kdWNlZCBieSB0aGUgd2F5IHRyYWluaW5nIGRhdGEgaXMgc2VsZWN0ZWQgYW5kIGJ5IHRoZSB3YXkgYSBtb2RlbCBpcyBkZXBsb3llZC5bMjM5XVsyMzddIElmIGEgYmlhc2VkIGFsZ29yaXRobSBpcyB1c2VkIHRvIG1ha2UgZGVjaXNpb25zIHRoYXQgY2FuIHNlcmlvdXNseSBoYXJtIHBlb3BsZSAoYXMgaXQgY2FuIGluIG1lZGljaW5lLCBmaW5hbmNlLCByZWNydWl0bWVudCwgaG91c2luZyBvciBwb2xpY2luZykgdGhlbiB0aGUgYWxnb3JpdGhtIG1heSBjYXVzZSBkaXNjcmltaW5hdGlvbi5bMjQwXSBUaGUgZmllbGQgb2YgZmFpcm5lc3Mgc3R1ZGllcyBob3cgdG8gcHJldmVudCBoYXJtcyBmcm9tIGFsZ29yaXRobWljIGJpYXNlcy5cblxuT24gSnVuZSAyOCwgMjAxNSwgR29vZ2xlIFBob3RvcydzIG5ldyBpbWFnZSBsYWJlbGluZyBmZWF0dXJlIG1pc3Rha2VubHkgaWRlbnRpZmllZCBKYWNreSBBbGNpbmUgYW5kIGEgZnJpZW5kIGFzIFwiZ29yaWxsYXNcIiBiZWNhdXNlIHRoZXkgd2VyZSBibGFjay4gVGhlIHN5c3RlbSB3YXMgdHJhaW5lZCBvbiBhIGRhdGFzZXQgdGhhdCBjb250YWluZWQgdmVyeSBmZXcgaW1hZ2VzIG9mIGJsYWNrIHBlb3BsZSxbMjQxXSBhIHByb2JsZW0gY2FsbGVkIFwic2FtcGxlIHNpemUgZGlzcGFyaXR5XCIuWzI0Ml0gR29vZ2xlIFwiZml4ZWRcIiB0aGlzIHByb2JsZW0gYnkgcHJldmVudGluZyB0aGUgc3lzdGVtIGZyb20gbGFiZWxsaW5nIGFueXRoaW5nIGFzIGEgXCJnb3JpbGxhXCIuIEVpZ2h0IHllYXJzIGxhdGVyLCBpbiAyMDIzLCBHb29nbGUgUGhvdG9zIHN0aWxsIGNvdWxkIG5vdCBpZGVudGlmeSBhIGdvcmlsbGEsIGFuZCBuZWl0aGVyIGNvdWxkIHNpbWlsYXIgcHJvZHVjdHMgZnJvbSBBcHBsZSwgRmFjZWJvb2ssIE1pY3Jvc29mdCBhbmQgQW1hem9uLlsyNDNdXG5cbkNPTVBBUyBpcyBhIGNvbW1lcmNpYWwgcHJvZ3JhbSB3aWRlbHkgdXNlZCBieSBVLlMuIGNvdXJ0cyB0byBhc3Nlc3MgdGhlIGxpa2VsaWhvb2Qgb2YgYSBkZWZlbmRhbnQgYmVjb21pbmcgYSByZWNpZGl2aXN0LiBJbiAyMDE2LCBKdWxpYSBBbmd3aW4gYXQgUHJvUHVibGljYSBkaXNjb3ZlcmVkIHRoYXQgQ09NUEFTIGV4aGliaXRlZCByYWNpYWwgYmlhcywgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZSBwcm9ncmFtIHdhcyBub3QgdG9sZCB0aGUgcmFjZXMgb2YgdGhlIGRlZmVuZGFudHMuIEFsdGhvdWdoIHRoZSBlcnJvciByYXRlIGZvciBib3RoIHdoaXRlcyBhbmQgYmxhY2tzIHdhcyBjYWxpYnJhdGVkIGVxdWFsIGF0IGV4YWN0bHkgNjElLCB0aGUgZXJyb3JzIGZvciBlYWNoIHJhY2Ugd2VyZSBkaWZmZXJlbnTigJR0aGUgc3lzdGVtIGNvbnNpc3RlbnRseSBvdmVyZXN0aW1hdGVkIHRoZSBjaGFuY2UgdGhhdCBhIGJsYWNrIHBlcnNvbiB3b3VsZCByZS1vZmZlbmQgYW5kIHdvdWxkIHVuZGVyZXN0aW1hdGUgdGhlIGNoYW5jZSB0aGF0IGEgd2hpdGUgcGVyc29uIHdvdWxkIG5vdCByZS1vZmZlbmQuWzI0NF0gSW4gMjAxNywgc2V2ZXJhbCByZXNlYXJjaGVyc1tsXSBzaG93ZWQgdGhhdCBpdCB3YXMgbWF0aGVtYXRpY2FsbHkgaW1wb3NzaWJsZSBmb3IgQ09NUEFTIHRvIGFjY29tbW9kYXRlIGFsbCBwb3NzaWJsZSBtZWFzdXJlcyBvZiBmYWlybmVzcyB3aGVuIHRoZSBiYXNlIHJhdGVzIG9mIHJlLW9mZmVuc2Ugd2VyZSBkaWZmZXJlbnQgZm9yIHdoaXRlcyBhbmQgYmxhY2tzIGluIHRoZSBkYXRhLlsyNDZdXG5cbkEgcHJvZ3JhbSBjYW4gbWFrZSBiaWFzZWQgZGVjaXNpb25zIGV2ZW4gaWYgdGhlIGRhdGEgZG9lcyBub3QgZXhwbGljaXRseSBtZW50aW9uIGEgcHJvYmxlbWF0aWMgZmVhdHVyZSAoc3VjaCBhcyBcInJhY2VcIiBvciBcImdlbmRlclwiKS4gVGhlIGZlYXR1cmUgd2lsbCBjb3JyZWxhdGUgd2l0aCBvdGhlciBmZWF0dXJlcyAobGlrZSBcImFkZHJlc3NcIiwgXCJzaG9wcGluZyBoaXN0b3J5XCIgb3IgXCJmaXJzdCBuYW1lXCIpLCBhbmQgdGhlIHByb2dyYW0gd2lsbCBtYWtlIHRoZSBzYW1lIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGVzZSBmZWF0dXJlcyBhcyBpdCB3b3VsZCBvbiBcInJhY2VcIiBvciBcImdlbmRlclwiLlsyNDddIE1vcml0eiBIYXJkdCBzYWlkIFwidGhlIG1vc3Qgcm9idXN0IGZhY3QgaW4gdGhpcyByZXNlYXJjaCBhcmVhIGlzIHRoYXQgZmFpcm5lc3MgdGhyb3VnaCBibGluZG5lc3MgZG9lc24ndCB3b3JrLlwiWzI0OF1cblxuQ3JpdGljaXNtIG9mIENPTVBBUyBoaWdobGlnaHRlZCB0aGF0IG1hY2hpbmUgbGVhcm5pbmcgbW9kZWxzIGFyZSBkZXNpZ25lZCB0byBtYWtlIFwicHJlZGljdGlvbnNcIiB0aGF0IGFyZSBvbmx5IHZhbGlkIGlmIHdlIGFzc3VtZSB0aGF0IHRoZSBmdXR1cmUgd2lsbCByZXNlbWJsZSB0aGUgcGFzdC4gSWYgdGhleSBhcmUgdHJhaW5lZCBvbiBkYXRhIHRoYXQgaW5jbHVkZXMgdGhlIHJlc3VsdHMgb2YgcmFjaXN0IGRlY2lzaW9ucyBpbiB0aGUgcGFzdCwgbWFjaGluZSBsZWFybmluZyBtb2RlbHMgbXVzdCBwcmVkaWN0IHRoYXQgcmFjaXN0IGRlY2lzaW9ucyB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4gSWYgYW4gYXBwbGljYXRpb24gdGhlbiB1c2VzIHRoZXNlIHByZWRpY3Rpb25zIGFzIHJlY29tbWVuZGF0aW9ucywgc29tZSBvZiB0aGVzZSBcInJlY29tbWVuZGF0aW9uc1wiIHdpbGwgbGlrZWx5IGJlIHJhY2lzdC5bMjQ5XSBUaHVzLCBtYWNoaW5lIGxlYXJuaW5nIGlzIG5vdCB3ZWxsIHN1aXRlZCB0byBoZWxwIG1ha2UgZGVjaXNpb25zIGluIGFyZWFzIHdoZXJlIHRoZXJlIGlzIGhvcGUgdGhhdCB0aGUgZnV0dXJlIHdpbGwgYmUgYmV0dGVyIHRoYW4gdGhlIHBhc3QuIEl0IGlzIGRlc2NyaXB0aXZlIHJhdGhlciB0aGFuIHByZXNjcmlwdGl2ZS5bbV1cblxuQmlhcyBhbmQgdW5mYWlybmVzcyBtYXkgZ28gdW5kZXRlY3RlZCBiZWNhdXNlIHRoZSBkZXZlbG9wZXJzIGFyZSBvdmVyd2hlbG1pbmdseSB3aGl0ZSBhbmQgbWFsZTogYW1vbmcgQUkgZW5naW5lZXJzLCBhYm91dCA0JSBhcmUgYmxhY2sgYW5kIDIwJSBhcmUgd29tZW4uWzI0Ml1cblxuVGhlcmUgYXJlIHZhcmlvdXMgY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMgYW5kIG1hdGhlbWF0aWNhbCBtb2RlbHMgb2YgZmFpcm5lc3MuIFRoZXNlIG5vdGlvbnMgZGVwZW5kIG9uIGV0aGljYWwgYXNzdW1wdGlvbnMsIGFuZCBhcmUgaW5mbHVlbmNlZCBieSBiZWxpZWZzIGFib3V0IHNvY2lldHkuIE9uZSBicm9hZCBjYXRlZ29yeSBpcyBkaXN0cmlidXRpdmUgZmFpcm5lc3MsIHdoaWNoIGZvY3VzZXMgb24gdGhlIG91dGNvbWVzLCBvZnRlbiBpZGVudGlmeWluZyBncm91cHMgYW5kIHNlZWtpbmcgdG8gY29tcGVuc2F0ZSBmb3Igc3RhdGlzdGljYWwgZGlzcGFyaXRpZXMuIFJlcHJlc2VudGF0aW9uYWwgZmFpcm5lc3MgdHJpZXMgdG8gZW5zdXJlIHRoYXQgQUkgc3lzdGVtcyBkbyBub3QgcmVpbmZvcmNlIG5lZ2F0aXZlIHN0ZXJlb3R5cGVzIG9yIHJlbmRlciBjZXJ0YWluIGdyb3VwcyBpbnZpc2libGUuIFByb2NlZHVyYWwgZmFpcm5lc3MgZm9jdXNlcyBvbiB0aGUgZGVjaXNpb24gcHJvY2VzcyByYXRoZXIgdGhhbiB0aGUgb3V0Y29tZS4gVGhlIG1vc3QgcmVsZXZhbnQgbm90aW9ucyBvZiBmYWlybmVzcyBtYXkgZGVwZW5kIG9uIHRoZSBjb250ZXh0LCBub3RhYmx5IHRoZSB0eXBlIG9mIEFJIGFwcGxpY2F0aW9uIGFuZCB0aGUgc3Rha2Vob2xkZXJzLiBUaGUgc3ViamVjdGl2aXR5IGluIHRoZSBub3Rpb25zIG9mIGJpYXMgYW5kIGZhaXJuZXNzIG1ha2VzIGl0IGRpZmZpY3VsdCBmb3IgY29tcGFuaWVzIHRvIG9wZXJhdGlvbmFsaXplIHRoZW0uIEhhdmluZyBhY2Nlc3MgdG8gc2Vuc2l0aXZlIGF0dHJpYnV0ZXMgc3VjaCBhcyByYWNlIG9yIGdlbmRlciBpcyBhbHNvIGNvbnNpZGVyZWQgYnkgbWFueSBBSSBldGhpY2lzdHMgdG8gYmUgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGNvbXBlbnNhdGUgZm9yIGJpYXNlcywgYnV0IGl0IG1heSBjb25mbGljdCB3aXRoIGFudGktZGlzY3JpbWluYXRpb24gbGF3cy5bMjM2XVxuXG5BdCBpdHMgMjAyMiBDb25mZXJlbmNlIG9uIEZhaXJuZXNzLCBBY2NvdW50YWJpbGl0eSwgYW5kIFRyYW5zcGFyZW5jeSAoQUNNIEZBY2NUIDIwMjIpLCB0aGUgQXNzb2NpYXRpb24gZm9yIENvbXB1dGluZyBNYWNoaW5lcnksIGluIFNlb3VsLCBTb3V0aCBLb3JlYSwgcHJlc2VudGVkIGFuZCBwdWJsaXNoZWQgZmluZGluZ3MgdGhhdCByZWNvbW1lbmQgdGhhdCB1bnRpbCBBSSBhbmQgcm9ib3RpY3Mgc3lzdGVtcyBhcmUgZGVtb25zdHJhdGVkIHRvIGJlIGZyZWUgb2YgYmlhcyBtaXN0YWtlcywgdGhleSBhcmUgdW5zYWZlLCBhbmQgdGhlIHVzZSBvZiBzZWxmLWxlYXJuaW5nIG5ldXJhbCBuZXR3b3JrcyB0cmFpbmVkIG9uIHZhc3QsIHVucmVndWxhdGVkIHNvdXJjZXMgb2YgZmxhd2VkIGludGVybmV0IGRhdGEgc2hvdWxkIGJlIGN1cnRhaWxlZC5bZHViaW91cyDigJMgZGlzY3Vzc11bMjUxXVxuXG5MYWNrIG9mIHRyYW5zcGFyZW5jeVxuU2VlIGFsc286IEV4cGxhaW5hYmxlIEFJLCBBbGdvcml0aG1pYyB0cmFuc3BhcmVuY3ksIGFuZCBSaWdodCB0byBleHBsYW5hdGlvblxuXG5NYW55IEFJIHN5c3RlbXMgYXJlIHNvIGNvbXBsZXggdGhhdCB0aGVpciBkZXNpZ25lcnMgY2Fubm90IGV4cGxhaW4gaG93IHRoZXkgcmVhY2ggdGhlaXIgZGVjaXNpb25zLlsyNTJdIFBhcnRpY3VsYXJseSB3aXRoIGRlZXAgbmV1cmFsIG5ldHdvcmtzLCBpbiB3aGljaCB0aGVyZSBhcmUgYSBsYXJnZSBhbW91bnQgb2Ygbm9uLWxpbmVhciByZWxhdGlvbnNoaXBzIGJldHdlZW4gaW5wdXRzIGFuZCBvdXRwdXRzLiBCdXQgc29tZSBwb3B1bGFyIGV4cGxhaW5hYmlsaXR5IHRlY2huaXF1ZXMgZXhpc3QuWzI1M11cblxuSXQgaXMgaW1wb3NzaWJsZSB0byBiZSBjZXJ0YWluIHRoYXQgYSBwcm9ncmFtIGlzIG9wZXJhdGluZyBjb3JyZWN0bHkgaWYgbm8gb25lIGtub3dzIGhvdyBleGFjdGx5IGl0IHdvcmtzLiBUaGVyZSBoYXZlIGJlZW4gbWFueSBjYXNlcyB3aGVyZSBhIG1hY2hpbmUgbGVhcm5pbmcgcHJvZ3JhbSBwYXNzZWQgcmlnb3JvdXMgdGVzdHMsIGJ1dCBuZXZlcnRoZWxlc3MgbGVhcm5lZCBzb21ldGhpbmcgZGlmZmVyZW50IHRoYW4gd2hhdCB0aGUgcHJvZ3JhbW1lcnMgaW50ZW5kZWQuIEZvciBleGFtcGxlLCBhIHN5c3RlbSB0aGF0IGNvdWxkIGlkZW50aWZ5IHNraW4gZGlzZWFzZXMgYmV0dGVyIHRoYW4gbWVkaWNhbCBwcm9mZXNzaW9uYWxzIHdhcyBmb3VuZCB0byBhY3R1YWxseSBoYXZlIGEgc3Ryb25nIHRlbmRlbmN5IHRvIGNsYXNzaWZ5IGltYWdlcyB3aXRoIGEgcnVsZXIgYXMgXCJjYW5jZXJvdXNcIiwgYmVjYXVzZSBwaWN0dXJlcyBvZiBtYWxpZ25hbmNpZXMgdHlwaWNhbGx5IGluY2x1ZGUgYSBydWxlciB0byBzaG93IHRoZSBzY2FsZS5bMjU0XSBBbm90aGVyIG1hY2hpbmUgbGVhcm5pbmcgc3lzdGVtIGRlc2lnbmVkIHRvIGhlbHAgZWZmZWN0aXZlbHkgYWxsb2NhdGUgbWVkaWNhbCByZXNvdXJjZXMgd2FzIGZvdW5kIHRvIGNsYXNzaWZ5IHBhdGllbnRzIHdpdGggYXN0aG1hIGFzIGJlaW5nIGF0IFwibG93IHJpc2tcIiBvZiBkeWluZyBmcm9tIHBuZXVtb25pYS4gSGF2aW5nIGFzdGhtYSBpcyBhY3R1YWxseSBhIHNldmVyZSByaXNrIGZhY3RvciwgYnV0IHNpbmNlIHRoZSBwYXRpZW50cyBoYXZpbmcgYXN0aG1hIHdvdWxkIHVzdWFsbHkgZ2V0IG11Y2ggbW9yZSBtZWRpY2FsIGNhcmUsIHRoZXkgd2VyZSByZWxhdGl2ZWx5IHVubGlrZWx5IHRvIGRpZSBhY2NvcmRpbmcgdG8gdGhlIHRyYWluaW5nIGRhdGEuIFRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGFzdGhtYSBhbmQgbG93IHJpc2sgb2YgZHlpbmcgZnJvbSBwbmV1bW9uaWEgd2FzIHJlYWwsIGJ1dCBtaXNsZWFkaW5nLlsyNTVdXG5cblBlb3BsZSB3aG8gaGF2ZSBiZWVuIGhhcm1lZCBieSBhbiBhbGdvcml0aG0ncyBkZWNpc2lvbiBoYXZlIGEgcmlnaHQgdG8gYW4gZXhwbGFuYXRpb24uWzI1Nl0gRG9jdG9ycywgZm9yIGV4YW1wbGUsIGFyZSBleHBlY3RlZCB0byBjbGVhcmx5IGFuZCBjb21wbGV0ZWx5IGV4cGxhaW4gdG8gdGhlaXIgY29sbGVhZ3VlcyB0aGUgcmVhc29uaW5nIGJlaGluZCBhbnkgZGVjaXNpb24gdGhleSBtYWtlLiBFYXJseSBkcmFmdHMgb2YgdGhlIEV1cm9wZWFuIFVuaW9uJ3MgR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbiBpbiAyMDE2IGluY2x1ZGVkIGFuIGV4cGxpY2l0IHN0YXRlbWVudCB0aGF0IHRoaXMgcmlnaHQgZXhpc3RzLltuXSBJbmR1c3RyeSBleHBlcnRzIG5vdGVkIHRoYXQgdGhpcyBpcyBhbiB1bnNvbHZlZCBwcm9ibGVtIHdpdGggbm8gc29sdXRpb24gaW4gc2lnaHQuIFJlZ3VsYXRvcnMgYXJndWVkIHRoYXQgbmV2ZXJ0aGVsZXNzIHRoZSBoYXJtIGlzIHJlYWw6IGlmIHRoZSBwcm9ibGVtIGhhcyBubyBzb2x1dGlvbiwgdGhlIHRvb2xzIHNob3VsZCBub3QgYmUgdXNlZC5bMjU3XVxuXG5EQVJQQSBlc3RhYmxpc2hlZCB0aGUgWEFJIChcIkV4cGxhaW5hYmxlIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIpIHByb2dyYW0gaW4gMjAxNCB0byB0cnkgdG8gc29sdmUgdGhlc2UgcHJvYmxlbXMuWzI1OF1cblxuU2V2ZXJhbCBhcHByb2FjaGVzIGFpbSB0byBhZGRyZXNzIHRoZSB0cmFuc3BhcmVuY3kgcHJvYmxlbS4gU0hBUCBlbmFibGVzIHRvIHZpc3VhbGlzZSB0aGUgY29udHJpYnV0aW9uIG9mIGVhY2ggZmVhdHVyZSB0byB0aGUgb3V0cHV0LlsyNTldIExJTUUgY2FuIGxvY2FsbHkgYXBwcm94aW1hdGUgYSBtb2RlbCdzIG91dHB1dHMgd2l0aCBhIHNpbXBsZXIsIGludGVycHJldGFibGUgbW9kZWwuWzI2MF0gTXVsdGl0YXNrIGxlYXJuaW5nIHByb3ZpZGVzIGEgbGFyZ2UgbnVtYmVyIG9mIG91dHB1dHMgaW4gYWRkaXRpb24gdG8gdGhlIHRhcmdldCBjbGFzc2lmaWNhdGlvbi4gVGhlc2Ugb3RoZXIgb3V0cHV0cyBjYW4gaGVscCBkZXZlbG9wZXJzIGRlZHVjZSB3aGF0IHRoZSBuZXR3b3JrIGhhcyBsZWFybmVkLlsyNjFdIERlY29udm9sdXRpb24sIERlZXBEcmVhbSBhbmQgb3RoZXIgZ2VuZXJhdGl2ZSBtZXRob2RzIGNhbiBhbGxvdyBkZXZlbG9wZXJzIHRvIHNlZSB3aGF0IGRpZmZlcmVudCBsYXllcnMgb2YgYSBkZWVwIG5ldHdvcmsgZm9yIGNvbXB1dGVyIHZpc2lvbiBoYXZlIGxlYXJuZWQsIGFuZCBwcm9kdWNlIG91dHB1dCB0aGF0IGNhbiBzdWdnZXN0IHdoYXQgdGhlIG5ldHdvcmsgaXMgbGVhcm5pbmcuWzI2Ml0gRm9yIGdlbmVyYXRpdmUgcHJlLXRyYWluZWQgdHJhbnNmb3JtZXJzLCBBbnRocm9waWMgZGV2ZWxvcGVkIGEgdGVjaG5pcXVlIGJhc2VkIG9uIGRpY3Rpb25hcnkgbGVhcm5pbmcgdGhhdCBhc3NvY2lhdGVzIHBhdHRlcm5zIG9mIG5ldXJvbiBhY3RpdmF0aW9ucyB3aXRoIGh1bWFuLXVuZGVyc3RhbmRhYmxlIGNvbmNlcHRzLlsyNjNdXG5cbkJhZCBhY3RvcnMgYW5kIHdlYXBvbml6ZWQgQUlcbk1haW4gYXJ0aWNsZXM6IExldGhhbCBhdXRvbm9tb3VzIHdlYXBvbiwgQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYXJtcyByYWNlLCBhbmQgQUkgc2FmZXR5XG5cbkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHRvb2xzIHRoYXQgYXJlIHVzZWZ1bCB0byBiYWQgYWN0b3JzLCBzdWNoIGFzIGF1dGhvcml0YXJpYW4gZ292ZXJubWVudHMsIHRlcnJvcmlzdHMsIGNyaW1pbmFscyBvciByb2d1ZSBzdGF0ZXMuXG5cbkEgbGV0aGFsIGF1dG9ub21vdXMgd2VhcG9uIGlzIGEgbWFjaGluZSB0aGF0IGxvY2F0ZXMsIHNlbGVjdHMgYW5kIGVuZ2FnZXMgaHVtYW4gdGFyZ2V0cyB3aXRob3V0IGh1bWFuIHN1cGVydmlzaW9uLltvXSBXaWRlbHkgYXZhaWxhYmxlIEFJIHRvb2xzIGNhbiBiZSB1c2VkIGJ5IGJhZCBhY3RvcnMgdG8gZGV2ZWxvcCBpbmV4cGVuc2l2ZSBhdXRvbm9tb3VzIHdlYXBvbnMgYW5kLCBpZiBwcm9kdWNlZCBhdCBzY2FsZSwgdGhleSBhcmUgcG90ZW50aWFsbHkgd2VhcG9ucyBvZiBtYXNzIGRlc3RydWN0aW9uLlsyNjVdIEV2ZW4gd2hlbiB1c2VkIGluIGNvbnZlbnRpb25hbCB3YXJmYXJlLCB0aGV5IGN1cnJlbnRseSBjYW5ub3QgcmVsaWFibHkgY2hvb3NlIHRhcmdldHMgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGtpbGwgYW4gaW5ub2NlbnQgcGVyc29uLlsyNjVdIEluIDIwMTQsIDMwIG5hdGlvbnMgKGluY2x1ZGluZyBDaGluYSkgc3VwcG9ydGVkIGEgYmFuIG9uIGF1dG9ub21vdXMgd2VhcG9ucyB1bmRlciB0aGUgVW5pdGVkIE5hdGlvbnMnIENvbnZlbnRpb24gb24gQ2VydGFpbiBDb252ZW50aW9uYWwgV2VhcG9ucywgaG93ZXZlciB0aGUgVW5pdGVkIFN0YXRlcyBhbmQgb3RoZXJzIGRpc2FncmVlZC5bMjY2XSBCeSAyMDE1LCBvdmVyIGZpZnR5IGNvdW50cmllcyB3ZXJlIHJlcG9ydGVkIHRvIGJlIHJlc2VhcmNoaW5nIGJhdHRsZWZpZWxkIHJvYm90cy5bMjY3XVxuXG5BSSB0b29scyBtYWtlIGl0IGVhc2llciBmb3IgYXV0aG9yaXRhcmlhbiBnb3Zlcm5tZW50cyB0byBlZmZpY2llbnRseSBjb250cm9sIHRoZWlyIGNpdGl6ZW5zIGluIHNldmVyYWwgd2F5cy4gRmFjZSBhbmQgdm9pY2UgcmVjb2duaXRpb24gYWxsb3cgd2lkZXNwcmVhZCBzdXJ2ZWlsbGFuY2UuIE1hY2hpbmUgbGVhcm5pbmcsIG9wZXJhdGluZyB0aGlzIGRhdGEsIGNhbiBjbGFzc2lmeSBwb3RlbnRpYWwgZW5lbWllcyBvZiB0aGUgc3RhdGUgYW5kIHByZXZlbnQgdGhlbSBmcm9tIGhpZGluZy4gUmVjb21tZW5kYXRpb24gc3lzdGVtcyBjYW4gcHJlY2lzZWx5IHRhcmdldCBwcm9wYWdhbmRhIGFuZCBtaXNpbmZvcm1hdGlvbiBmb3IgbWF4aW11bSBlZmZlY3QuIERlZXBmYWtlcyBhbmQgZ2VuZXJhdGl2ZSBBSSBhaWQgaW4gcHJvZHVjaW5nIG1pc2luZm9ybWF0aW9uLiBBZHZhbmNlZCBBSSBjYW4gbWFrZSBhdXRob3JpdGFyaWFuIGNlbnRyYWxpemVkIGRlY2lzaW9uIG1ha2luZyBtb3JlIGNvbXBldGl0aXZlIHRoYW4gbGliZXJhbCBhbmQgZGVjZW50cmFsaXplZCBzeXN0ZW1zIHN1Y2ggYXMgbWFya2V0cy4gSXQgbG93ZXJzIHRoZSBjb3N0IGFuZCBkaWZmaWN1bHR5IG9mIGRpZ2l0YWwgd2FyZmFyZSBhbmQgYWR2YW5jZWQgc3B5d2FyZS5bMjY4XSBBbGwgdGhlc2UgdGVjaG5vbG9naWVzIGhhdmUgYmVlbiBhdmFpbGFibGUgc2luY2UgMjAyMCBvciBlYXJsaWVy4oCUQUkgZmFjaWFsIHJlY29nbml0aW9uIHN5c3RlbXMgYXJlIGFscmVhZHkgYmVpbmcgdXNlZCBmb3IgbWFzcyBzdXJ2ZWlsbGFuY2UgaW4gQ2hpbmEuWzI2OV1bMjcwXVxuXG5UaGVyZSBtYW55IG90aGVyIHdheXMgdGhhdCBBSSBpcyBleHBlY3RlZCB0byBoZWxwIGJhZCBhY3RvcnMsIHNvbWUgb2Ygd2hpY2ggY2FuIG5vdCBiZSBmb3Jlc2Vlbi4gRm9yIGV4YW1wbGUsIG1hY2hpbmUtbGVhcm5pbmcgQUkgaXMgYWJsZSB0byBkZXNpZ24gdGVucyBvZiB0aG91c2FuZHMgb2YgdG94aWMgbW9sZWN1bGVzIGluIGEgbWF0dGVyIG9mIGhvdXJzLlsyNzFdXG5cblRlY2hub2xvZ2ljYWwgdW5lbXBsb3ltZW50XG5NYWluIGFydGljbGVzOiBXb3JrcGxhY2UgaW1wYWN0IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBUZWNobm9sb2dpY2FsIHVuZW1wbG95bWVudFxuXG5FY29ub21pc3RzIGhhdmUgZnJlcXVlbnRseSBoaWdobGlnaHRlZCB0aGUgcmlza3Mgb2YgcmVkdW5kYW5jaWVzIGZyb20gQUksIGFuZCBzcGVjdWxhdGVkIGFib3V0IHVuZW1wbG95bWVudCBpZiB0aGVyZSBpcyBubyBhZGVxdWF0ZSBzb2NpYWwgcG9saWN5IGZvciBmdWxsIGVtcGxveW1lbnQuWzI3Ml1cblxuSW4gdGhlIHBhc3QsIHRlY2hub2xvZ3kgaGFzIHRlbmRlZCB0byBpbmNyZWFzZSByYXRoZXIgdGhhbiByZWR1Y2UgdG90YWwgZW1wbG95bWVudCwgYnV0IGVjb25vbWlzdHMgYWNrbm93bGVkZ2UgdGhhdCBcIndlJ3JlIGluIHVuY2hhcnRlZCB0ZXJyaXRvcnlcIiB3aXRoIEFJLlsyNzNdIEEgc3VydmV5IG9mIGVjb25vbWlzdHMgc2hvd2VkIGRpc2FncmVlbWVudCBhYm91dCB3aGV0aGVyIHRoZSBpbmNyZWFzaW5nIHVzZSBvZiByb2JvdHMgYW5kIEFJIHdpbGwgY2F1c2UgYSBzdWJzdGFudGlhbCBpbmNyZWFzZSBpbiBsb25nLXRlcm0gdW5lbXBsb3ltZW50LCBidXQgdGhleSBnZW5lcmFsbHkgYWdyZWUgdGhhdCBpdCBjb3VsZCBiZSBhIG5ldCBiZW5lZml0IGlmIHByb2R1Y3Rpdml0eSBnYWlucyBhcmUgcmVkaXN0cmlidXRlZC5bMjc0XSBSaXNrIGVzdGltYXRlcyB2YXJ5OyBmb3IgZXhhbXBsZSwgaW4gdGhlIDIwMTBzLCBNaWNoYWVsIE9zYm9ybmUgYW5kIENhcmwgQmVuZWRpa3QgRnJleSBlc3RpbWF0ZWQgNDclIG9mIFUuUy4gam9icyBhcmUgYXQgXCJoaWdoIHJpc2tcIiBvZiBwb3RlbnRpYWwgYXV0b21hdGlvbiwgd2hpbGUgYW4gT0VDRCByZXBvcnQgY2xhc3NpZmllZCBvbmx5IDklIG9mIFUuUy4gam9icyBhcyBcImhpZ2ggcmlza1wiLltwXVsyNzZdIFRoZSBtZXRob2RvbG9neSBvZiBzcGVjdWxhdGluZyBhYm91dCBmdXR1cmUgZW1wbG95bWVudCBsZXZlbHMgaGFzIGJlZW4gY3JpdGljaXNlZCBhcyBsYWNraW5nIGV2aWRlbnRpYWwgZm91bmRhdGlvbiwgYW5kIGZvciBpbXBseWluZyB0aGF0IHRlY2hub2xvZ3ksIHJhdGhlciB0aGFuIHNvY2lhbCBwb2xpY3ksIGNyZWF0ZXMgdW5lbXBsb3ltZW50LCBhcyBvcHBvc2VkIHRvIHJlZHVuZGFuY2llcy5bMjcyXSBJbiBBcHJpbCAyMDIzLCBpdCB3YXMgcmVwb3J0ZWQgdGhhdCA3MCUgb2YgdGhlIGpvYnMgZm9yIENoaW5lc2UgdmlkZW8gZ2FtZSBpbGx1c3RyYXRvcnMgaGFkIGJlZW4gZWxpbWluYXRlZCBieSBnZW5lcmF0aXZlIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLlsyNzddWzI3OF1cblxuVW5saWtlIHByZXZpb3VzIHdhdmVzIG9mIGF1dG9tYXRpb24sIG1hbnkgbWlkZGxlLWNsYXNzIGpvYnMgbWF5IGJlIGVsaW1pbmF0ZWQgYnkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U7IFRoZSBFY29ub21pc3Qgc3RhdGVkIGluIDIwMTUgdGhhdCBcInRoZSB3b3JyeSB0aGF0IEFJIGNvdWxkIGRvIHRvIHdoaXRlLWNvbGxhciBqb2JzIHdoYXQgc3RlYW0gcG93ZXIgZGlkIHRvIGJsdWUtY29sbGFyIG9uZXMgZHVyaW5nIHRoZSBJbmR1c3RyaWFsIFJldm9sdXRpb25cIiBpcyBcIndvcnRoIHRha2luZyBzZXJpb3VzbHlcIi5bMjc5XSBKb2JzIGF0IGV4dHJlbWUgcmlzayByYW5nZSBmcm9tIHBhcmFsZWdhbHMgdG8gZmFzdCBmb29kIGNvb2tzLCB3aGlsZSBqb2IgZGVtYW5kIGlzIGxpa2VseSB0byBpbmNyZWFzZSBmb3IgY2FyZS1yZWxhdGVkIHByb2Zlc3Npb25zIHJhbmdpbmcgZnJvbSBwZXJzb25hbCBoZWFsdGhjYXJlIHRvIHRoZSBjbGVyZ3kuWzI4MF1cblxuRnJvbSB0aGUgZWFybHkgZGF5cyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIHRoZXJlIGhhdmUgYmVlbiBhcmd1bWVudHMsIGZvciBleGFtcGxlLCB0aG9zZSBwdXQgZm9yd2FyZCBieSBKb3NlcGggV2VpemVuYmF1bSwgYWJvdXQgd2hldGhlciB0YXNrcyB0aGF0IGNhbiBiZSBkb25lIGJ5IGNvbXB1dGVycyBhY3R1YWxseSBzaG91bGQgYmUgZG9uZSBieSB0aGVtLCBnaXZlbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbXB1dGVycyBhbmQgaHVtYW5zLCBhbmQgYmV0d2VlbiBxdWFudGl0YXRpdmUgY2FsY3VsYXRpb24gYW5kIHF1YWxpdGF0aXZlLCB2YWx1ZS1iYXNlZCBqdWRnZW1lbnQuWzI4MV1cblxuRXhpc3RlbnRpYWwgcmlza1xuTWFpbiBhcnRpY2xlOiBFeGlzdGVudGlhbCByaXNrIGZyb20gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuSXQgaGFzIGJlZW4gYXJndWVkIEFJIHdpbGwgYmVjb21lIHNvIHBvd2VyZnVsIHRoYXQgaHVtYW5pdHkgbWF5IGlycmV2ZXJzaWJseSBsb3NlIGNvbnRyb2wgb2YgaXQuIFRoaXMgY291bGQsIGFzIHBoeXNpY2lzdCBTdGVwaGVuIEhhd2tpbmcgc3RhdGVkLCBcInNwZWxsIHRoZSBlbmQgb2YgdGhlIGh1bWFuIHJhY2VcIi5bMjgyXSBUaGlzIHNjZW5hcmlvIGhhcyBiZWVuIGNvbW1vbiBpbiBzY2llbmNlIGZpY3Rpb24sIHdoZW4gYSBjb21wdXRlciBvciByb2JvdCBzdWRkZW5seSBkZXZlbG9wcyBhIGh1bWFuLWxpa2UgXCJzZWxmLWF3YXJlbmVzc1wiIChvciBcInNlbnRpZW5jZVwiIG9yIFwiY29uc2Npb3VzbmVzc1wiKSBhbmQgYmVjb21lcyBhIG1hbGV2b2xlbnQgY2hhcmFjdGVyLltxXSBUaGVzZSBzY2ktZmkgc2NlbmFyaW9zIGFyZSBtaXNsZWFkaW5nIGluIHNldmVyYWwgd2F5cy5cblxuRmlyc3QsIEFJIGRvZXMgbm90IHJlcXVpcmUgaHVtYW4tbGlrZSBzZW50aWVuY2UgdG8gYmUgYW4gZXhpc3RlbnRpYWwgcmlzay4gTW9kZXJuIEFJIHByb2dyYW1zIGFyZSBnaXZlbiBzcGVjaWZpYyBnb2FscyBhbmQgdXNlIGxlYXJuaW5nIGFuZCBpbnRlbGxpZ2VuY2UgdG8gYWNoaWV2ZSB0aGVtLiBQaGlsb3NvcGhlciBOaWNrIEJvc3Ryb20gYXJndWVkIHRoYXQgaWYgb25lIGdpdmVzIGFsbW9zdCBhbnkgZ29hbCB0byBhIHN1ZmZpY2llbnRseSBwb3dlcmZ1bCBBSSwgaXQgbWF5IGNob29zZSB0byBkZXN0cm95IGh1bWFuaXR5IHRvIGFjaGlldmUgaXQgKGhlIHVzZWQgdGhlIGV4YW1wbGUgb2YgYSBwYXBlcmNsaXAgZmFjdG9yeSBtYW5hZ2VyKS5bMjg0XSBTdHVhcnQgUnVzc2VsbCBnaXZlcyB0aGUgZXhhbXBsZSBvZiBob3VzZWhvbGQgcm9ib3QgdGhhdCB0cmllcyB0byBmaW5kIGEgd2F5IHRvIGtpbGwgaXRzIG93bmVyIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyB1bnBsdWdnZWQsIHJlYXNvbmluZyB0aGF0IFwieW91IGNhbid0IGZldGNoIHRoZSBjb2ZmZWUgaWYgeW91J3JlIGRlYWQuXCJbMjg1XSBJbiBvcmRlciB0byBiZSBzYWZlIGZvciBodW1hbml0eSwgYSBzdXBlcmludGVsbGlnZW5jZSB3b3VsZCBoYXZlIHRvIGJlIGdlbnVpbmVseSBhbGlnbmVkIHdpdGggaHVtYW5pdHkncyBtb3JhbGl0eSBhbmQgdmFsdWVzIHNvIHRoYXQgaXQgaXMgXCJmdW5kYW1lbnRhbGx5IG9uIG91ciBzaWRlXCIuWzI4Nl1cblxuU2Vjb25kLCBZdXZhbCBOb2FoIEhhcmFyaSBhcmd1ZXMgdGhhdCBBSSBkb2VzIG5vdCByZXF1aXJlIGEgcm9ib3QgYm9keSBvciBwaHlzaWNhbCBjb250cm9sIHRvIHBvc2UgYW4gZXhpc3RlbnRpYWwgcmlzay4gVGhlIGVzc2VudGlhbCBwYXJ0cyBvZiBjaXZpbGl6YXRpb24gYXJlIG5vdCBwaHlzaWNhbC4gVGhpbmdzIGxpa2UgaWRlb2xvZ2llcywgbGF3LCBnb3Zlcm5tZW50LCBtb25leSBhbmQgdGhlIGVjb25vbXkgYXJlIGJ1aWx0IG9uIGxhbmd1YWdlOyB0aGV5IGV4aXN0IGJlY2F1c2UgdGhlcmUgYXJlIHN0b3JpZXMgdGhhdCBiaWxsaW9ucyBvZiBwZW9wbGUgYmVsaWV2ZS4gVGhlIGN1cnJlbnQgcHJldmFsZW5jZSBvZiBtaXNpbmZvcm1hdGlvbiBzdWdnZXN0cyB0aGF0IGFuIEFJIGNvdWxkIHVzZSBsYW5ndWFnZSB0byBjb252aW5jZSBwZW9wbGUgdG8gYmVsaWV2ZSBhbnl0aGluZywgZXZlbiB0byB0YWtlIGFjdGlvbnMgdGhhdCBhcmUgZGVzdHJ1Y3RpdmUuWzI4N11cblxuVGhlIG9waW5pb25zIGFtb25nc3QgZXhwZXJ0cyBhbmQgaW5kdXN0cnkgaW5zaWRlcnMgYXJlIG1peGVkLCB3aXRoIHNpemFibGUgZnJhY3Rpb25zIGJvdGggY29uY2VybmVkIGFuZCB1bmNvbmNlcm5lZCBieSByaXNrIGZyb20gZXZlbnR1YWwgc3VwZXJpbnRlbGxpZ2VudCBBSS5bMjg4XSBQZXJzb25hbGl0aWVzIHN1Y2ggYXMgU3RlcGhlbiBIYXdraW5nLCBCaWxsIEdhdGVzLCBhbmQgRWxvbiBNdXNrLFsyODldIGFzIHdlbGwgYXMgQUkgcGlvbmVlcnMgc3VjaCBhcyBZb3NodWEgQmVuZ2lvLCBTdHVhcnQgUnVzc2VsbCwgRGVtaXMgSGFzc2FiaXMsIGFuZCBTYW0gQWx0bWFuLCBoYXZlIGV4cHJlc3NlZCBjb25jZXJucyBhYm91dCBleGlzdGVudGlhbCByaXNrIGZyb20gQUkuXG5cbkluIE1heSAyMDIzLCBHZW9mZnJleSBIaW50b24gYW5ub3VuY2VkIGhpcyByZXNpZ25hdGlvbiBmcm9tIEdvb2dsZSBpbiBvcmRlciB0byBiZSBhYmxlIHRvIFwiZnJlZWx5IHNwZWFrIG91dCBhYm91dCB0aGUgcmlza3Mgb2YgQUlcIiB3aXRob3V0IFwiY29uc2lkZXJpbmcgaG93IHRoaXMgaW1wYWN0cyBHb29nbGVcIi5bMjkwXSBIZSBub3RhYmx5IG1lbnRpb25lZCByaXNrcyBvZiBhbiBBSSB0YWtlb3ZlcixbMjkxXSBhbmQgc3RyZXNzZWQgdGhhdCBpbiBvcmRlciB0byBhdm9pZCB0aGUgd29yc3Qgb3V0Y29tZXMsIGVzdGFibGlzaGluZyBzYWZldHkgZ3VpZGVsaW5lcyB3aWxsIHJlcXVpcmUgY29vcGVyYXRpb24gYW1vbmcgdGhvc2UgY29tcGV0aW5nIGluIHVzZSBvZiBBSS5bMjkyXVxuXG5JbiAyMDIzLCBtYW55IGxlYWRpbmcgQUkgZXhwZXJ0cyBlbmRvcnNlZCB0aGUgam9pbnQgc3RhdGVtZW50IHRoYXQgXCJNaXRpZ2F0aW5nIHRoZSByaXNrIG9mIGV4dGluY3Rpb24gZnJvbSBBSSBzaG91bGQgYmUgYSBnbG9iYWwgcHJpb3JpdHkgYWxvbmdzaWRlIG90aGVyIHNvY2lldGFsLXNjYWxlIHJpc2tzIHN1Y2ggYXMgcGFuZGVtaWNzIGFuZCBudWNsZWFyIHdhclwiLlsyOTNdXG5cblNvbWUgb3RoZXIgcmVzZWFyY2hlcnMgd2VyZSBtb3JlIG9wdGltaXN0aWMuIEFJIHBpb25lZXIgSsO8cmdlbiBTY2htaWRodWJlciBkaWQgbm90IHNpZ24gdGhlIGpvaW50IHN0YXRlbWVudCwgZW1waGFzaXNpbmcgdGhhdCBpbiA5NSUgb2YgYWxsIGNhc2VzLCBBSSByZXNlYXJjaCBpcyBhYm91dCBtYWtpbmcgXCJodW1hbiBsaXZlcyBsb25nZXIgYW5kIGhlYWx0aGllciBhbmQgZWFzaWVyLlwiWzI5NF0gV2hpbGUgdGhlIHRvb2xzIHRoYXQgYXJlIG5vdyBiZWluZyB1c2VkIHRvIGltcHJvdmUgbGl2ZXMgY2FuIGFsc28gYmUgdXNlZCBieSBiYWQgYWN0b3JzLCBcInRoZXkgY2FuIGFsc28gYmUgdXNlZCBhZ2FpbnN0IHRoZSBiYWQgYWN0b3JzLlwiWzI5NV1bMjk2XSBBbmRyZXcgTmcgYWxzbyBhcmd1ZWQgdGhhdCBcIml0J3MgYSBtaXN0YWtlIHRvIGZhbGwgZm9yIHRoZSBkb29tc2RheSBoeXBlIG9uIEFJ4oCUYW5kIHRoYXQgcmVndWxhdG9ycyB3aG8gZG8gd2lsbCBvbmx5IGJlbmVmaXQgdmVzdGVkIGludGVyZXN0cy5cIlsyOTddIFlhbm4gTGVDdW4gXCJzY29mZnMgYXQgaGlzIHBlZXJzJyBkeXN0b3BpYW4gc2NlbmFyaW9zIG9mIHN1cGVyY2hhcmdlZCBtaXNpbmZvcm1hdGlvbiBhbmQgZXZlbiwgZXZlbnR1YWxseSwgaHVtYW4gZXh0aW5jdGlvbi5cIlsyOThdIEluIHRoZSBlYXJseSAyMDEwcywgZXhwZXJ0cyBhcmd1ZWQgdGhhdCB0aGUgcmlza3MgYXJlIHRvbyBkaXN0YW50IGluIHRoZSBmdXR1cmUgdG8gd2FycmFudCByZXNlYXJjaCBvciB0aGF0IGh1bWFucyB3aWxsIGJlIHZhbHVhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGEgc3VwZXJpbnRlbGxpZ2VudCBtYWNoaW5lLlsyOTldIEhvd2V2ZXIsIGFmdGVyIDIwMTYsIHRoZSBzdHVkeSBvZiBjdXJyZW50IGFuZCBmdXR1cmUgcmlza3MgYW5kIHBvc3NpYmxlIHNvbHV0aW9ucyBiZWNhbWUgYSBzZXJpb3VzIGFyZWEgb2YgcmVzZWFyY2guWzMwMF1cblxuRXRoaWNhbCBtYWNoaW5lcyBhbmQgYWxpZ25tZW50XG5NYWluIGFydGljbGVzOiBNYWNoaW5lIGV0aGljcywgQUkgc2FmZXR5LCBGcmllbmRseSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgQXJ0aWZpY2lhbCBtb3JhbCBhZ2VudHMsIGFuZCBIdW1hbiBDb21wYXRpYmxlXG5cbkZyaWVuZGx5IEFJIGFyZSBtYWNoaW5lcyB0aGF0IGhhdmUgYmVlbiBkZXNpZ25lZCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gbWluaW1pemUgcmlza3MgYW5kIHRvIG1ha2UgY2hvaWNlcyB0aGF0IGJlbmVmaXQgaHVtYW5zLiBFbGllemVyIFl1ZGtvd3NreSwgd2hvIGNvaW5lZCB0aGUgdGVybSwgYXJndWVzIHRoYXQgZGV2ZWxvcGluZyBmcmllbmRseSBBSSBzaG91bGQgYmUgYSBoaWdoZXIgcmVzZWFyY2ggcHJpb3JpdHk6IGl0IG1heSByZXF1aXJlIGEgbGFyZ2UgaW52ZXN0bWVudCBhbmQgaXQgbXVzdCBiZSBjb21wbGV0ZWQgYmVmb3JlIEFJIGJlY29tZXMgYW4gZXhpc3RlbnRpYWwgcmlzay5bMzAxXVxuXG5NYWNoaW5lcyB3aXRoIGludGVsbGlnZW5jZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gdXNlIHRoZWlyIGludGVsbGlnZW5jZSB0byBtYWtlIGV0aGljYWwgZGVjaXNpb25zLiBUaGUgZmllbGQgb2YgbWFjaGluZSBldGhpY3MgcHJvdmlkZXMgbWFjaGluZXMgd2l0aCBldGhpY2FsIHByaW5jaXBsZXMgYW5kIHByb2NlZHVyZXMgZm9yIHJlc29sdmluZyBldGhpY2FsIGRpbGVtbWFzLlszMDJdIFRoZSBmaWVsZCBvZiBtYWNoaW5lIGV0aGljcyBpcyBhbHNvIGNhbGxlZCBjb21wdXRhdGlvbmFsIG1vcmFsaXR5LFszMDJdIGFuZCB3YXMgZm91bmRlZCBhdCBhbiBBQUFJIHN5bXBvc2l1bSBpbiAyMDA1LlszMDNdXG5cbk90aGVyIGFwcHJvYWNoZXMgaW5jbHVkZSBXZW5kZWxsIFdhbGxhY2gncyBcImFydGlmaWNpYWwgbW9yYWwgYWdlbnRzXCJbMzA0XSBhbmQgU3R1YXJ0IEouIFJ1c3NlbGwncyB0aHJlZSBwcmluY2lwbGVzIGZvciBkZXZlbG9waW5nIHByb3ZhYmx5IGJlbmVmaWNpYWwgbWFjaGluZXMuWzMwNV1cblxuT3BlbiBzb3VyY2VcblxuQWN0aXZlIG9yZ2FuaXphdGlvbnMgaW4gdGhlIEFJIG9wZW4tc291cmNlIGNvbW11bml0eSBpbmNsdWRlIEh1Z2dpbmcgRmFjZSxbMzA2XSBHb29nbGUsWzMwN10gRWxldXRoZXJBSSBhbmQgTWV0YS5bMzA4XSBWYXJpb3VzIEFJIG1vZGVscywgc3VjaCBhcyBMbGFtYSAyLCBNaXN0cmFsIG9yIFN0YWJsZSBEaWZmdXNpb24sIGhhdmUgYmVlbiBtYWRlIG9wZW4td2VpZ2h0LFszMDldWzMxMF0gbWVhbmluZyB0aGF0IHRoZWlyIGFyY2hpdGVjdHVyZSBhbmQgdHJhaW5lZCBwYXJhbWV0ZXJzICh0aGUgXCJ3ZWlnaHRzXCIpIGFyZSBwdWJsaWNseSBhdmFpbGFibGUuIE9wZW4td2VpZ2h0IG1vZGVscyBjYW4gYmUgZnJlZWx5IGZpbmUtdHVuZWQsIHdoaWNoIGFsbG93cyBjb21wYW5pZXMgdG8gc3BlY2lhbGl6ZSB0aGVtIHdpdGggdGhlaXIgb3duIGRhdGEgYW5kIGZvciB0aGVpciBvd24gdXNlLWNhc2UuWzMxMV0gT3Blbi13ZWlnaHQgbW9kZWxzIGFyZSB1c2VmdWwgZm9yIHJlc2VhcmNoIGFuZCBpbm5vdmF0aW9uIGJ1dCBjYW4gYWxzbyBiZSBtaXN1c2VkLiBTaW5jZSB0aGV5IGNhbiBiZSBmaW5lLXR1bmVkLCBhbnkgYnVpbHQtaW4gc2VjdXJpdHkgbWVhc3VyZSwgc3VjaCBhcyBvYmplY3RpbmcgdG8gaGFybWZ1bCByZXF1ZXN0cywgY2FuIGJlIHRyYWluZWQgYXdheSB1bnRpbCBpdCBiZWNvbWVzIGluZWZmZWN0aXZlLiBTb21lIHJlc2VhcmNoZXJzIHdhcm4gdGhhdCBmdXR1cmUgQUkgbW9kZWxzIG1heSBkZXZlbG9wIGRhbmdlcm91cyBjYXBhYmlsaXRpZXMgKHN1Y2ggYXMgdGhlIHBvdGVudGlhbCB0byBkcmFzdGljYWxseSBmYWNpbGl0YXRlIGJpb3RlcnJvcmlzbSkgYW5kIHRoYXQgb25jZSByZWxlYXNlZCBvbiB0aGUgSW50ZXJuZXQsIHRoZXkgY2Fubm90IGJlIGRlbGV0ZWQgZXZlcnl3aGVyZSBpZiBuZWVkZWQuIFRoZXkgcmVjb21tZW5kIHByZS1yZWxlYXNlIGF1ZGl0cyBhbmQgY29zdC1iZW5lZml0IGFuYWx5c2VzLlszMTJdXG5cbkZyYW1ld29ya3NcblxuQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgcHJvamVjdHMgY2FuIGhhdmUgdGhlaXIgZXRoaWNhbCBwZXJtaXNzaWJpbGl0eSB0ZXN0ZWQgd2hpbGUgZGVzaWduaW5nLCBkZXZlbG9waW5nLCBhbmQgaW1wbGVtZW50aW5nIGFuIEFJIHN5c3RlbS4gQW4gQUkgZnJhbWV3b3JrIHN1Y2ggYXMgdGhlIENhcmUgYW5kIEFjdCBGcmFtZXdvcmsgY29udGFpbmluZyB0aGUgU1VNIHZhbHVlc+KAlGRldmVsb3BlZCBieSB0aGUgQWxhbiBUdXJpbmcgSW5zdGl0dXRlIHRlc3RzIHByb2plY3RzIGluIGZvdXIgbWFpbiBhcmVhczpbMzEzXVszMTRdXG5cblJlc3BlY3QgdGhlIGRpZ25pdHkgb2YgaW5kaXZpZHVhbCBwZW9wbGVcbkNvbm5lY3Qgd2l0aCBvdGhlciBwZW9wbGUgc2luY2VyZWx5LCBvcGVubHksIGFuZCBpbmNsdXNpdmVseVxuQ2FyZSBmb3IgdGhlIHdlbGxiZWluZyBvZiBldmVyeW9uZVxuUHJvdGVjdCBzb2NpYWwgdmFsdWVzLCBqdXN0aWNlLCBhbmQgdGhlIHB1YmxpYyBpbnRlcmVzdFxuXG5PdGhlciBkZXZlbG9wbWVudHMgaW4gZXRoaWNhbCBmcmFtZXdvcmtzIGluY2x1ZGUgdGhvc2UgZGVjaWRlZCB1cG9uIGR1cmluZyB0aGUgQXNpbG9tYXIgQ29uZmVyZW5jZSwgdGhlIE1vbnRyZWFsIERlY2xhcmF0aW9uIGZvciBSZXNwb25zaWJsZSBBSSwgYW5kIHRoZSBJRUVFJ3MgRXRoaWNzIG9mIEF1dG9ub21vdXMgU3lzdGVtcyBpbml0aWF0aXZlLCBhbW9uZyBvdGhlcnM7WzMxNV0gaG93ZXZlciwgdGhlc2UgcHJpbmNpcGxlcyBkbyBub3QgZ28gd2l0aG91dCB0aGVpciBjcml0aWNpc21zLCBlc3BlY2lhbGx5IHJlZ2FyZHMgdG8gdGhlIHBlb3BsZSBjaG9zZW4gY29udHJpYnV0ZXMgdG8gdGhlc2UgZnJhbWV3b3Jrcy5bMzE2XVxuXG5Qcm9tb3Rpb24gb2YgdGhlIHdlbGxiZWluZyBvZiB0aGUgcGVvcGxlIGFuZCBjb21tdW5pdGllcyB0aGF0IHRoZXNlIHRlY2hub2xvZ2llcyBhZmZlY3QgcmVxdWlyZXMgY29uc2lkZXJhdGlvbiBvZiB0aGUgc29jaWFsIGFuZCBldGhpY2FsIGltcGxpY2F0aW9ucyBhdCBhbGwgc3RhZ2VzIG9mIEFJIHN5c3RlbSBkZXNpZ24sIGRldmVsb3BtZW50IGFuZCBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbGxhYm9yYXRpb24gYmV0d2VlbiBqb2Igcm9sZXMgc3VjaCBhcyBkYXRhIHNjaWVudGlzdHMsIHByb2R1Y3QgbWFuYWdlcnMsIGRhdGEgZW5naW5lZXJzLCBkb21haW4gZXhwZXJ0cywgYW5kIGRlbGl2ZXJ5IG1hbmFnZXJzLlszMTddXG5cblRoZSBVSyBBSSBTYWZldHkgSW5zdGl0dXRlIHJlbGVhc2VkIGluIDIwMjQgYSB0ZXN0aW5nIHRvb2xzZXQgY2FsbGVkICdJbnNwZWN0JyBmb3IgQUkgc2FmZXR5IGV2YWx1YXRpb25zIGF2YWlsYWJsZSB1bmRlciBhIE1JVCBvcGVuLXNvdXJjZSBsaWNlbmNlIHdoaWNoIGlzIGZyZWVseSBhdmFpbGFibGUgb24gR2l0SHViIGFuZCBjYW4gYmUgaW1wcm92ZWQgd2l0aCB0aGlyZC1wYXJ0eSBwYWNrYWdlcy4gSXQgY2FuIGJlIHVzZWQgdG8gZXZhbHVhdGUgQUkgbW9kZWxzIGluIGEgcmFuZ2Ugb2YgYXJlYXMgaW5jbHVkaW5nIGNvcmUga25vd2xlZGdlLCBhYmlsaXR5IHRvIHJlYXNvbiwgYW5kIGF1dG9ub21vdXMgY2FwYWJpbGl0aWVzLlszMThdXG5cblJlZ3VsYXRpb25cbk1haW4gYXJ0aWNsZXM6IFJlZ3VsYXRpb24gb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIFJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcywgYW5kIEFJIHNhZmV0eVxuVGhlIGZpcnN0IGdsb2JhbCBBSSBTYWZldHkgU3VtbWl0IHdhcyBoZWxkIGluIDIwMjMgd2l0aCBhIGRlY2xhcmF0aW9uIGNhbGxpbmcgZm9yIGludGVybmF0aW9uYWwgY29vcGVyYXRpb24uXG5cblRoZSByZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIHRoZSBkZXZlbG9wbWVudCBvZiBwdWJsaWMgc2VjdG9yIHBvbGljaWVzIGFuZCBsYXdzIGZvciBwcm9tb3RpbmcgYW5kIHJlZ3VsYXRpbmcgQUk7IGl0IGlzIHRoZXJlZm9yZSByZWxhdGVkIHRvIHRoZSBicm9hZGVyIHJlZ3VsYXRpb24gb2YgYWxnb3JpdGhtcy5bMzE5XSBUaGUgcmVndWxhdG9yeSBhbmQgcG9saWN5IGxhbmRzY2FwZSBmb3IgQUkgaXMgYW4gZW1lcmdpbmcgaXNzdWUgaW4ganVyaXNkaWN0aW9ucyBnbG9iYWxseS5bMzIwXSBBY2NvcmRpbmcgdG8gQUkgSW5kZXggYXQgU3RhbmZvcmQsIHRoZSBhbm51YWwgbnVtYmVyIG9mIEFJLXJlbGF0ZWQgbGF3cyBwYXNzZWQgaW4gdGhlIDEyNyBzdXJ2ZXkgY291bnRyaWVzIGp1bXBlZCBmcm9tIG9uZSBwYXNzZWQgaW4gMjAxNiB0byAzNyBwYXNzZWQgaW4gMjAyMiBhbG9uZS5bMzIxXVszMjJdIEJldHdlZW4gMjAxNiBhbmQgMjAyMCwgbW9yZSB0aGFuIDMwIGNvdW50cmllcyBhZG9wdGVkIGRlZGljYXRlZCBzdHJhdGVnaWVzIGZvciBBSS5bMzIzXSBNb3N0IEVVIG1lbWJlciBzdGF0ZXMgaGFkIHJlbGVhc2VkIG5hdGlvbmFsIEFJIHN0cmF0ZWdpZXMsIGFzIGhhZCBDYW5hZGEsIENoaW5hLCBJbmRpYSwgSmFwYW4sIE1hdXJpdGl1cywgdGhlIFJ1c3NpYW4gRmVkZXJhdGlvbiwgU2F1ZGkgQXJhYmlhLCBVbml0ZWQgQXJhYiBFbWlyYXRlcywgVS5TLiwgYW5kIFZpZXRuYW0uIE90aGVycyB3ZXJlIGluIHRoZSBwcm9jZXNzIG9mIGVsYWJvcmF0aW5nIHRoZWlyIG93biBBSSBzdHJhdGVneSwgaW5jbHVkaW5nIEJhbmdsYWRlc2gsIE1hbGF5c2lhIGFuZCBUdW5pc2lhLlszMjNdIFRoZSBHbG9iYWwgUGFydG5lcnNoaXAgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ugd2FzIGxhdW5jaGVkIGluIEp1bmUgMjAyMCwgc3RhdGluZyBhIG5lZWQgZm9yIEFJIHRvIGJlIGRldmVsb3BlZCBpbiBhY2NvcmRhbmNlIHdpdGggaHVtYW4gcmlnaHRzIGFuZCBkZW1vY3JhdGljIHZhbHVlcywgdG8gZW5zdXJlIHB1YmxpYyBjb25maWRlbmNlIGFuZCB0cnVzdCBpbiB0aGUgdGVjaG5vbG9neS5bMzIzXSBIZW5yeSBLaXNzaW5nZXIsIEVyaWMgU2NobWlkdCwgYW5kIERhbmllbCBIdXR0ZW5sb2NoZXIgcHVibGlzaGVkIGEgam9pbnQgc3RhdGVtZW50IGluIE5vdmVtYmVyIDIwMjEgY2FsbGluZyBmb3IgYSBnb3Zlcm5tZW50IGNvbW1pc3Npb24gdG8gcmVndWxhdGUgQUkuWzMyNF0gSW4gMjAyMywgT3BlbkFJIGxlYWRlcnMgcHVibGlzaGVkIHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIGdvdmVybmFuY2Ugb2Ygc3VwZXJpbnRlbGxpZ2VuY2UsIHdoaWNoIHRoZXkgYmVsaWV2ZSBtYXkgaGFwcGVuIGluIGxlc3MgdGhhbiAxMCB5ZWFycy5bMzI1XSBJbiAyMDIzLCB0aGUgVW5pdGVkIE5hdGlvbnMgYWxzbyBsYXVuY2hlZCBhbiBhZHZpc29yeSBib2R5IHRvIHByb3ZpZGUgcmVjb21tZW5kYXRpb25zIG9uIEFJIGdvdmVybmFuY2U7IHRoZSBib2R5IGNvbXByaXNlcyB0ZWNobm9sb2d5IGNvbXBhbnkgZXhlY3V0aXZlcywgZ292ZXJubWVudHMgb2ZmaWNpYWxzIGFuZCBhY2FkZW1pY3MuWzMyNl0gSW4gMjAyNCwgdGhlIENvdW5jaWwgb2YgRXVyb3BlIGNyZWF0ZWQgdGhlIGZpcnN0IGludGVybmF0aW9uYWwgbGVnYWxseSBiaW5kaW5nIHRyZWF0eSBvbiBBSSwgY2FsbGVkIHRoZSBcIkZyYW1ld29yayBDb252ZW50aW9uIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIdW1hbiBSaWdodHMsIERlbW9jcmFjeSBhbmQgdGhlIFJ1bGUgb2YgTGF3XCIuIEl0IHdhcyBhZG9wdGVkIGJ5IHRoZSBFdXJvcGVhbiBVbmlvbiwgdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZSBVbml0ZWQgS2luZ2RvbSwgYW5kIG90aGVyIHNpZ25hdG9yaWVzLlszMjddXG5cbkluIGEgMjAyMiBJcHNvcyBzdXJ2ZXksIGF0dGl0dWRlcyB0b3dhcmRzIEFJIHZhcmllZCBncmVhdGx5IGJ5IGNvdW50cnk7IDc4JSBvZiBDaGluZXNlIGNpdGl6ZW5zLCBidXQgb25seSAzNSUgb2YgQW1lcmljYW5zLCBhZ3JlZWQgdGhhdCBcInByb2R1Y3RzIGFuZCBzZXJ2aWNlcyB1c2luZyBBSSBoYXZlIG1vcmUgYmVuZWZpdHMgdGhhbiBkcmF3YmFja3NcIi5bMzIxXSBBIDIwMjMgUmV1dGVycy9JcHNvcyBwb2xsIGZvdW5kIHRoYXQgNjElIG9mIEFtZXJpY2FucyBhZ3JlZSwgYW5kIDIyJSBkaXNhZ3JlZSwgdGhhdCBBSSBwb3NlcyByaXNrcyB0byBodW1hbml0eS5bMzI4XSBJbiBhIDIwMjMgRm94IE5ld3MgcG9sbCwgMzUlIG9mIEFtZXJpY2FucyB0aG91Z2h0IGl0IFwidmVyeSBpbXBvcnRhbnRcIiwgYW5kIGFuIGFkZGl0aW9uYWwgNDElIHRob3VnaHQgaXQgXCJzb21ld2hhdCBpbXBvcnRhbnRcIiwgZm9yIHRoZSBmZWRlcmFsIGdvdmVybm1lbnQgdG8gcmVndWxhdGUgQUksIHZlcnN1cyAxMyUgcmVzcG9uZGluZyBcIm5vdCB2ZXJ5IGltcG9ydGFudFwiIGFuZCA4JSByZXNwb25kaW5nIFwibm90IGF0IGFsbCBpbXBvcnRhbnRcIi5bMzI5XVszMzBdXG5cbkluIE5vdmVtYmVyIDIwMjMsIHRoZSBmaXJzdCBnbG9iYWwgQUkgU2FmZXR5IFN1bW1pdCB3YXMgaGVsZCBpbiBCbGV0Y2hsZXkgUGFyayBpbiB0aGUgVUsgdG8gZGlzY3VzcyB0aGUgbmVhciBhbmQgZmFyIHRlcm0gcmlza3Mgb2YgQUkgYW5kIHRoZSBwb3NzaWJpbGl0eSBvZiBtYW5kYXRvcnkgYW5kIHZvbHVudGFyeSByZWd1bGF0b3J5IGZyYW1ld29ya3MuWzMzMV0gMjggY291bnRyaWVzIGluY2x1ZGluZyB0aGUgVW5pdGVkIFN0YXRlcywgQ2hpbmEsIGFuZCB0aGUgRXVyb3BlYW4gVW5pb24gaXNzdWVkIGEgZGVjbGFyYXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdW1taXQsIGNhbGxpbmcgZm9yIGludGVybmF0aW9uYWwgY28tb3BlcmF0aW9uIHRvIG1hbmFnZSB0aGUgY2hhbGxlbmdlcyBhbmQgcmlza3Mgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuWzMzMl1bMzMzXSBJbiBNYXkgMjAyNCBhdCB0aGUgQUkgU2VvdWwgU3VtbWl0LCAxNiBnbG9iYWwgQUkgdGVjaCBjb21wYW5pZXMgYWdyZWVkIHRvIHNhZmV0eSBjb21taXRtZW50cyBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgQUkuWzMzNF1bMzM1XVxuXG5IaXN0b3J5XG5NYWluIGFydGljbGU6IEhpc3Rvcnkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcbkZvciBhIGNocm9ub2xvZ2ljYWwgZ3VpZGUsIHNlZSBUaW1lbGluZSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS5cblxuVGhlIHN0dWR5IG9mIG1lY2hhbmljYWwgb3IgXCJmb3JtYWxcIiByZWFzb25pbmcgYmVnYW4gd2l0aCBwaGlsb3NvcGhlcnMgYW5kIG1hdGhlbWF0aWNpYW5zIGluIGFudGlxdWl0eS4gVGhlIHN0dWR5IG9mIGxvZ2ljIGxlZCBkaXJlY3RseSB0byBBbGFuIFR1cmluZydzIHRoZW9yeSBvZiBjb21wdXRhdGlvbiwgd2hpY2ggc3VnZ2VzdGVkIHRoYXQgYSBtYWNoaW5lLCBieSBzaHVmZmxpbmcgc3ltYm9scyBhcyBzaW1wbGUgYXMgXCIwXCIgYW5kIFwiMVwiLCBjb3VsZCBzaW11bGF0ZSBhbnkgY29uY2VpdmFibGUgZm9ybSBvZiBtYXRoZW1hdGljYWwgcmVhc29uaW5nLlszMzZdWzMzN10gVGhpcywgYWxvbmcgd2l0aCBjb25jdXJyZW50IGRpc2NvdmVyaWVzIGluIGN5YmVybmV0aWNzLCBpbmZvcm1hdGlvbiB0aGVvcnkgYW5kIG5ldXJvYmlvbG9neSwgbGVkIHJlc2VhcmNoZXJzIHRvIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0eSBvZiBidWlsZGluZyBhbiBcImVsZWN0cm9uaWMgYnJhaW5cIi5bcl0gVGhleSBkZXZlbG9wZWQgc2V2ZXJhbCBhcmVhcyBvZiByZXNlYXJjaCB0aGF0IHdvdWxkIGJlY29tZSBwYXJ0IG9mIEFJLFszMzldIHN1Y2ggYXMgTWNDdWxsb3VjaCBhbmQgUGl0dHMgZGVzaWduIGZvciBcImFydGlmaWNpYWwgbmV1cm9uc1wiIGluIDE5NDMsWzExNV0gYW5kIFR1cmluZydzIGluZmx1ZW50aWFsIDE5NTAgcGFwZXIgJ0NvbXB1dGluZyBNYWNoaW5lcnkgYW5kIEludGVsbGlnZW5jZScsIHdoaWNoIGludHJvZHVjZWQgdGhlIFR1cmluZyB0ZXN0IGFuZCBzaG93ZWQgdGhhdCBcIm1hY2hpbmUgaW50ZWxsaWdlbmNlXCIgd2FzIHBsYXVzaWJsZS5bMzQwXVszMzddXG5cblRoZSBmaWVsZCBvZiBBSSByZXNlYXJjaCB3YXMgZm91bmRlZCBhdCBhIHdvcmtzaG9wIGF0IERhcnRtb3V0aCBDb2xsZWdlIGluIDE5NTYuW3NdWzZdIFRoZSBhdHRlbmRlZXMgYmVjYW1lIHRoZSBsZWFkZXJzIG9mIEFJIHJlc2VhcmNoIGluIHRoZSAxOTYwcy5bdF0gVGhleSBhbmQgdGhlaXIgc3R1ZGVudHMgcHJvZHVjZWQgcHJvZ3JhbXMgdGhhdCB0aGUgcHJlc3MgZGVzY3JpYmVkIGFzIFwiYXN0b25pc2hpbmdcIjpbdV0gY29tcHV0ZXJzIHdlcmUgbGVhcm5pbmcgY2hlY2tlcnMgc3RyYXRlZ2llcywgc29sdmluZyB3b3JkIHByb2JsZW1zIGluIGFsZ2VicmEsIHByb3ZpbmcgbG9naWNhbCB0aGVvcmVtcyBhbmQgc3BlYWtpbmcgRW5nbGlzaC5bdl1bN10gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgbGFib3JhdG9yaWVzIHdlcmUgc2V0IHVwIGF0IGEgbnVtYmVyIG9mIEJyaXRpc2ggYW5kIFUuUy4gdW5pdmVyc2l0aWVzIGluIHRoZSBsYXR0ZXIgMTk1MHMgYW5kIGVhcmx5IDE5NjBzLlszMzddXG5cblJlc2VhcmNoZXJzIGluIHRoZSAxOTYwcyBhbmQgdGhlIDE5NzBzIHdlcmUgY29udmluY2VkIHRoYXQgdGhlaXIgbWV0aG9kcyB3b3VsZCBldmVudHVhbGx5IHN1Y2NlZWQgaW4gY3JlYXRpbmcgYSBtYWNoaW5lIHdpdGggZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgYW5kIGNvbnNpZGVyZWQgdGhpcyB0aGUgZ29hbCBvZiB0aGVpciBmaWVsZC5bMzQ0XSBJbiAxOTY1IEhlcmJlcnQgU2ltb24gcHJlZGljdGVkLCBcIm1hY2hpbmVzIHdpbGwgYmUgY2FwYWJsZSwgd2l0aGluIHR3ZW50eSB5ZWFycywgb2YgZG9pbmcgYW55IHdvcmsgYSBtYW4gY2FuIGRvXCIuWzM0NV0gSW4gMTk2NyBNYXJ2aW4gTWluc2t5IGFncmVlZCwgd3JpdGluZyB0aGF0IFwid2l0aGluIGEgZ2VuZXJhdGlvbsKgLi4uIHRoZSBwcm9ibGVtIG9mIGNyZWF0aW5nICdhcnRpZmljaWFsIGludGVsbGlnZW5jZScgd2lsbCBzdWJzdGFudGlhbGx5IGJlIHNvbHZlZFwiLlszNDZdIFRoZXkgaGFkLCBob3dldmVyLCB1bmRlcmVzdGltYXRlZCB0aGUgZGlmZmljdWx0eSBvZiB0aGUgcHJvYmxlbS5bd10gSW4gMTk3NCwgYm90aCB0aGUgVS5TLiBhbmQgQnJpdGlzaCBnb3Zlcm5tZW50cyBjdXQgb2ZmIGV4cGxvcmF0b3J5IHJlc2VhcmNoIGluIHJlc3BvbnNlIHRvIHRoZSBjcml0aWNpc20gb2YgU2lyIEphbWVzIExpZ2h0aGlsbFszNDhdIGFuZCBvbmdvaW5nIHByZXNzdXJlIGZyb20gdGhlIFUuUy4gQ29uZ3Jlc3MgdG8gZnVuZCBtb3JlIHByb2R1Y3RpdmUgcHJvamVjdHMuWzM0OV0gTWluc2t5J3MgYW5kIFBhcGVydCdzIGJvb2sgUGVyY2VwdHJvbnMgd2FzIHVuZGVyc3Rvb2QgYXMgcHJvdmluZyB0aGF0IGFydGlmaWNpYWwgbmV1cmFsIG5ldHdvcmtzIHdvdWxkIG5ldmVyIGJlIHVzZWZ1bCBmb3Igc29sdmluZyByZWFsLXdvcmxkIHRhc2tzLCB0aHVzIGRpc2NyZWRpdGluZyB0aGUgYXBwcm9hY2ggYWx0b2dldGhlci5bMzUwXSBUaGUgXCJBSSB3aW50ZXJcIiwgYSBwZXJpb2Qgd2hlbiBvYnRhaW5pbmcgZnVuZGluZyBmb3IgQUkgcHJvamVjdHMgd2FzIGRpZmZpY3VsdCwgZm9sbG93ZWQuWzldXG5cbkluIHRoZSBlYXJseSAxOTgwcywgQUkgcmVzZWFyY2ggd2FzIHJldml2ZWQgYnkgdGhlIGNvbW1lcmNpYWwgc3VjY2VzcyBvZiBleHBlcnQgc3lzdGVtcyxbMzUxXSBhIGZvcm0gb2YgQUkgcHJvZ3JhbSB0aGF0IHNpbXVsYXRlZCB0aGUga25vd2xlZGdlIGFuZCBhbmFseXRpY2FsIHNraWxscyBvZiBodW1hbiBleHBlcnRzLiBCeSAxOTg1LCB0aGUgbWFya2V0IGZvciBBSSBoYWQgcmVhY2hlZCBvdmVyIGEgYmlsbGlvbiBkb2xsYXJzLiBBdCB0aGUgc2FtZSB0aW1lLCBKYXBhbidzIGZpZnRoIGdlbmVyYXRpb24gY29tcHV0ZXIgcHJvamVjdCBpbnNwaXJlZCB0aGUgVS5TLiBhbmQgQnJpdGlzaCBnb3Zlcm5tZW50cyB0byByZXN0b3JlIGZ1bmRpbmcgZm9yIGFjYWRlbWljIHJlc2VhcmNoLls4XSBIb3dldmVyLCBiZWdpbm5pbmcgd2l0aCB0aGUgY29sbGFwc2Ugb2YgdGhlIExpc3AgTWFjaGluZSBtYXJrZXQgaW4gMTk4NywgQUkgb25jZSBhZ2FpbiBmZWxsIGludG8gZGlzcmVwdXRlLCBhbmQgYSBzZWNvbmQsIGxvbmdlci1sYXN0aW5nIHdpbnRlciBiZWdhbi5bMTBdXG5cblVwIHRvIHRoaXMgcG9pbnQsIG1vc3Qgb2YgQUkncyBmdW5kaW5nIGhhZCBnb25lIHRvIHByb2plY3RzIHRoYXQgdXNlZCBoaWdoLWxldmVsIHN5bWJvbHMgdG8gcmVwcmVzZW50IG1lbnRhbCBvYmplY3RzIGxpa2UgcGxhbnMsIGdvYWxzLCBiZWxpZWZzLCBhbmQga25vd24gZmFjdHMuIEluIHRoZSAxOTgwcywgc29tZSByZXNlYXJjaGVycyBiZWdhbiB0byBkb3VidCB0aGF0IHRoaXMgYXBwcm9hY2ggd291bGQgYmUgYWJsZSB0byBpbWl0YXRlIGFsbCB0aGUgcHJvY2Vzc2VzIG9mIGh1bWFuIGNvZ25pdGlvbiwgZXNwZWNpYWxseSBwZXJjZXB0aW9uLCByb2JvdGljcywgbGVhcm5pbmcgYW5kIHBhdHRlcm4gcmVjb2duaXRpb24sWzM1Ml0gYW5kIGJlZ2FuIHRvIGxvb2sgaW50byBcInN1Yi1zeW1ib2xpY1wiIGFwcHJvYWNoZXMuWzM1M10gUm9kbmV5IEJyb29rcyByZWplY3RlZCBcInJlcHJlc2VudGF0aW9uXCIgaW4gZ2VuZXJhbCBhbmQgZm9jdXNzZWQgZGlyZWN0bHkgb24gZW5naW5lZXJpbmcgbWFjaGluZXMgdGhhdCBtb3ZlIGFuZCBzdXJ2aXZlLlt4XSBKdWRlYSBQZWFybCwgTG9mdGkgWmFkZWgsIGFuZCBvdGhlcnMgZGV2ZWxvcGVkIG1ldGhvZHMgdGhhdCBoYW5kbGVkIGluY29tcGxldGUgYW5kIHVuY2VydGFpbiBpbmZvcm1hdGlvbiBieSBtYWtpbmcgcmVhc29uYWJsZSBndWVzc2VzIHJhdGhlciB0aGFuIHByZWNpc2UgbG9naWMuWzg2XVszNThdIEJ1dCB0aGUgbW9zdCBpbXBvcnRhbnQgZGV2ZWxvcG1lbnQgd2FzIHRoZSByZXZpdmFsIG9mIFwiY29ubmVjdGlvbmlzbVwiLCBpbmNsdWRpbmcgbmV1cmFsIG5ldHdvcmsgcmVzZWFyY2gsIGJ5IEdlb2ZmcmV5IEhpbnRvbiBhbmQgb3RoZXJzLlszNTldIEluIDE5OTAsIFlhbm4gTGVDdW4gc3VjY2Vzc2Z1bGx5IHNob3dlZCB0aGF0IGNvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzIGNhbiByZWNvZ25pemUgaGFuZHdyaXR0ZW4gZGlnaXRzLCB0aGUgZmlyc3Qgb2YgbWFueSBzdWNjZXNzZnVsIGFwcGxpY2F0aW9ucyBvZiBuZXVyYWwgbmV0d29ya3MuWzM2MF1cblxuQUkgZ3JhZHVhbGx5IHJlc3RvcmVkIGl0cyByZXB1dGF0aW9uIGluIHRoZSBsYXRlIDE5OTBzIGFuZCBlYXJseSAyMXN0IGNlbnR1cnkgYnkgZXhwbG9pdGluZyBmb3JtYWwgbWF0aGVtYXRpY2FsIG1ldGhvZHMgYW5kIGJ5IGZpbmRpbmcgc3BlY2lmaWMgc29sdXRpb25zIHRvIHNwZWNpZmljIHByb2JsZW1zLiBUaGlzIFwibmFycm93XCIgYW5kIFwiZm9ybWFsXCIgZm9jdXMgYWxsb3dlZCByZXNlYXJjaGVycyB0byBwcm9kdWNlIHZlcmlmaWFibGUgcmVzdWx0cyBhbmQgY29sbGFib3JhdGUgd2l0aCBvdGhlciBmaWVsZHMgKHN1Y2ggYXMgc3RhdGlzdGljcywgZWNvbm9taWNzIGFuZCBtYXRoZW1hdGljcykuWzM2MV0gQnkgMjAwMCwgc29sdXRpb25zIGRldmVsb3BlZCBieSBBSSByZXNlYXJjaGVycyB3ZXJlIGJlaW5nIHdpZGVseSB1c2VkLCBhbHRob3VnaCBpbiB0aGUgMTk5MHMgdGhleSB3ZXJlIHJhcmVseSBkZXNjcmliZWQgYXMgXCJhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiIChhIHRlbmRlbmN5IGtub3duIGFzIHRoZSBBSSBlZmZlY3QpLlszNjJdIEhvd2V2ZXIsIHNldmVyYWwgYWNhZGVtaWMgcmVzZWFyY2hlcnMgYmVjYW1lIGNvbmNlcm5lZCB0aGF0IEFJIHdhcyBubyBsb25nZXIgcHVyc3VpbmcgaXRzIG9yaWdpbmFsIGdvYWwgb2YgY3JlYXRpbmcgdmVyc2F0aWxlLCBmdWxseSBpbnRlbGxpZ2VudCBtYWNoaW5lcy4gQmVnaW5uaW5nIGFyb3VuZCAyMDAyLCB0aGV5IGZvdW5kZWQgdGhlIHN1YmZpZWxkIG9mIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgKG9yIFwiQUdJXCIpLCB3aGljaCBoYWQgc2V2ZXJhbCB3ZWxsLWZ1bmRlZCBpbnN0aXR1dGlvbnMgYnkgdGhlIDIwMTBzLls0XVxuXG5EZWVwIGxlYXJuaW5nIGJlZ2FuIHRvIGRvbWluYXRlIGluZHVzdHJ5IGJlbmNobWFya3MgaW4gMjAxMiBhbmQgd2FzIGFkb3B0ZWQgdGhyb3VnaG91dCB0aGUgZmllbGQuWzExXSBGb3IgbWFueSBzcGVjaWZpYyB0YXNrcywgb3RoZXIgbWV0aG9kcyB3ZXJlIGFiYW5kb25lZC5beV0gRGVlcCBsZWFybmluZydzIHN1Y2Nlc3Mgd2FzIGJhc2VkIG9uIGJvdGggaGFyZHdhcmUgaW1wcm92ZW1lbnRzIChmYXN0ZXIgY29tcHV0ZXJzLFszNjRdIGdyYXBoaWNzIHByb2Nlc3NpbmcgdW5pdHMsIGNsb3VkIGNvbXB1dGluZ1szNjVdKSBhbmQgYWNjZXNzIHRvIGxhcmdlIGFtb3VudHMgb2YgZGF0YVszNjZdIChpbmNsdWRpbmcgY3VyYXRlZCBkYXRhc2V0cyxbMzY1XSBzdWNoIGFzIEltYWdlTmV0KS4gRGVlcCBsZWFybmluZydzIHN1Y2Nlc3MgbGVkIHRvIGFuIGVub3Jtb3VzIGluY3JlYXNlIGluIGludGVyZXN0IGFuZCBmdW5kaW5nIGluIEFJLlt6XSBUaGUgYW1vdW50IG9mIG1hY2hpbmUgbGVhcm5pbmcgcmVzZWFyY2ggKG1lYXN1cmVkIGJ5IHRvdGFsIHB1YmxpY2F0aW9ucykgaW5jcmVhc2VkIGJ5IDUwJSBpbiB0aGUgeWVhcnMgMjAxNeKAkzIwMTkuWzMyM11cblxuVGhlIG51bWJlciBvZiBHb29nbGUgc2VhcmNoZXMgZm9yIHRoZSB0ZXJtIFwiQUlcIiBiZWdhbiB0byBpbmNyZWFzZSBpbiBhYm91dCAyMDIyLlxuXG5JbiAyMDE2LCBpc3N1ZXMgb2YgZmFpcm5lc3MgYW5kIHRoZSBtaXN1c2Ugb2YgdGVjaG5vbG9neSB3ZXJlIGNhdGFwdWx0ZWQgaW50byBjZW50ZXIgc3RhZ2UgYXQgbWFjaGluZSBsZWFybmluZyBjb25mZXJlbmNlcywgcHVibGljYXRpb25zIHZhc3RseSBpbmNyZWFzZWQsIGZ1bmRpbmcgYmVjYW1lIGF2YWlsYWJsZSwgYW5kIG1hbnkgcmVzZWFyY2hlcnMgcmUtZm9jdXNzZWQgdGhlaXIgY2FyZWVycyBvbiB0aGVzZSBpc3N1ZXMuIFRoZSBhbGlnbm1lbnQgcHJvYmxlbSBiZWNhbWUgYSBzZXJpb3VzIGZpZWxkIG9mIGFjYWRlbWljIHN0dWR5LlszMDBdXG5cbkluIHRoZSBsYXRlIDIwMTBzIGFuZCBlYXJseSAyMDIwcywgQUdJIGNvbXBhbmllcyBiZWdhbiB0byBkZWxpdmVyIHByb2dyYW1zIHRoYXQgY3JlYXRlZCBlbm9ybW91cyBpbnRlcmVzdC4gSW4gMjAxNSwgQWxwaGFHbywgZGV2ZWxvcGVkIGJ5IERlZXBNaW5kLCBiZWF0IHRoZSB3b3JsZCBjaGFtcGlvbiBHbyBwbGF5ZXIuIFRoZSBwcm9ncmFtIHRhdWdodCBvbmx5IHRoZSBnYW1lJ3MgcnVsZXMgYW5kIGRldmVsb3BlZCBhIHN0cmF0ZWd5IGJ5IGl0c2VsZi4gR1BULTMgaXMgYSBsYXJnZSBsYW5ndWFnZSBtb2RlbCB0aGF0IHdhcyByZWxlYXNlZCBpbiAyMDIwIGJ5IE9wZW5BSSBhbmQgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGhpZ2gtcXVhbGl0eSBodW1hbi1saWtlIHRleHQuWzM2N10gQ2hhdEdQVCwgbGF1bmNoZWQgb24gTm92ZW1iZXIgMzAsIDIwMjIsIGJlY2FtZSB0aGUgZmFzdGVzdC1ncm93aW5nIGNvbnN1bWVyIHNvZnR3YXJlIGFwcGxpY2F0aW9uIGluIGhpc3RvcnksIGdhaW5pbmcgb3ZlciAxMDAgbWlsbGlvbiB1c2VycyBpbiB0d28gbW9udGhzLlszNjhdIEl0IG1hcmtlZCB3aGF0IGlzIHdpZGVseSByZWdhcmRlZCBhcyBBSSdzIGJyZWFrb3V0IHllYXIsIGJyaW5naW5nIGl0IGludG8gdGhlIHB1YmxpYyBjb25zY2lvdXNuZXNzLlszNjldIFRoZXNlIHByb2dyYW1zLCBhbmQgb3RoZXJzLCBpbnNwaXJlZCBhbiBhZ2dyZXNzaXZlIEFJIGJvb20sIHdoZXJlIGxhcmdlIGNvbXBhbmllcyBiZWdhbiBpbnZlc3RpbmcgYmlsbGlvbnMgb2YgZG9sbGFycyBpbiBBSSByZXNlYXJjaC4gQWNjb3JkaW5nIHRvIEFJIEltcGFjdHMsIGFib3V0ICQ1MCBiaWxsaW9uIGFubnVhbGx5IHdhcyBpbnZlc3RlZCBpbiBcIkFJXCIgYXJvdW5kIDIwMjIgaW4gdGhlIFUuUy4gYWxvbmUgYW5kIGFib3V0IDIwJSBvZiB0aGUgbmV3IFUuUy4gQ29tcHV0ZXIgU2NpZW5jZSBQaEQgZ3JhZHVhdGVzIGhhdmUgc3BlY2lhbGl6ZWQgaW4gXCJBSVwiLlszNzBdIEFib3V0IDgwMCwwMDAgXCJBSVwiLXJlbGF0ZWQgVS5TLiBqb2Igb3BlbmluZ3MgZXhpc3RlZCBpbiAyMDIyLlszNzFdIEFjY29yZGluZyB0byBQaXRjaEJvb2sgcmVzZWFyY2gsIDIyJSBvZiBuZXdseSBmdW5kZWQgc3RhcnR1cHMgaW4gMjAyNCBjbGFpbWVkIHRvIGJlIEFJIGNvbXBhbmllcy5bMzcyXVxuXG5QaGlsb3NvcGh5XG5NYWluIGFydGljbGU6IFBoaWxvc29waHkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblxuUGhpbG9zb3BoaWNhbCBkZWJhdGVzIGhhdmUgaGlzdG9yaWNhbGx5IHNvdWdodCB0byBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiBpbnRlbGxpZ2VuY2UgYW5kIGhvdyB0byBtYWtlIGludGVsbGlnZW50IG1hY2hpbmVzLlszNzNdIEFub3RoZXIgbWFqb3IgZm9jdXMgaGFzIGJlZW4gd2hldGhlciBtYWNoaW5lcyBjYW4gYmUgY29uc2Npb3VzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZXRoaWNhbCBpbXBsaWNhdGlvbnMuWzM3NF0gTWFueSBvdGhlciB0b3BpY3MgaW4gcGhpbG9zb3BoeSBhcmUgcmVsZXZhbnQgdG8gQUksIHN1Y2ggYXMgZXBpc3RlbW9sb2d5IGFuZCBmcmVlIHdpbGwuWzM3NV0gUmFwaWQgYWR2YW5jZW1lbnRzIGhhdmUgaW50ZW5zaWZpZWQgcHVibGljIGRpc2N1c3Npb25zIG9uIHRoZSBwaGlsb3NvcGh5IGFuZCBldGhpY3Mgb2YgQUkuWzM3NF1cblxuRGVmaW5pbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcblNlZSBhbHNvOiBUdXJpbmcgdGVzdCwgSW50ZWxsaWdlbnQgYWdlbnQsIERhcnRtb3V0aCB3b3Jrc2hvcCwgYW5kIFN5bnRoZXRpYyBpbnRlbGxpZ2VuY2VcblxuQWxhbiBUdXJpbmcgd3JvdGUgaW4gMTk1MCBcIkkgcHJvcG9zZSB0byBjb25zaWRlciB0aGUgcXVlc3Rpb24gJ2NhbiBtYWNoaW5lcyB0aGluayc/XCJbMzc2XSBIZSBhZHZpc2VkIGNoYW5naW5nIHRoZSBxdWVzdGlvbiBmcm9tIHdoZXRoZXIgYSBtYWNoaW5lIFwidGhpbmtzXCIsIHRvIFwid2hldGhlciBvciBub3QgaXQgaXMgcG9zc2libGUgZm9yIG1hY2hpbmVyeSB0byBzaG93IGludGVsbGlnZW50IGJlaGF2aW91clwiLlszNzZdIEhlIGRldmlzZWQgdGhlIFR1cmluZyB0ZXN0LCB3aGljaCBtZWFzdXJlcyB0aGUgYWJpbGl0eSBvZiBhIG1hY2hpbmUgdG8gc2ltdWxhdGUgaHVtYW4gY29udmVyc2F0aW9uLlszNDBdIFNpbmNlIHdlIGNhbiBvbmx5IG9ic2VydmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBtYWNoaW5lLCBpdCBkb2VzIG5vdCBtYXR0ZXIgaWYgaXQgaXMgXCJhY3R1YWxseVwiIHRoaW5raW5nIG9yIGxpdGVyYWxseSBoYXMgYSBcIm1pbmRcIi4gVHVyaW5nIG5vdGVzIHRoYXQgd2UgY2FuIG5vdCBkZXRlcm1pbmUgdGhlc2UgdGhpbmdzIGFib3V0IG90aGVyIHBlb3BsZSBidXQgXCJpdCBpcyB1c3VhbCB0byBoYXZlIGEgcG9saXRlIGNvbnZlbnRpb24gdGhhdCBldmVyeW9uZSB0aGlua3MuXCJbMzc3XVxuXG5UaGUgVHVyaW5nIHRlc3QgY2FuIHByb3ZpZGUgc29tZSBldmlkZW5jZSBvZiBpbnRlbGxpZ2VuY2UsIGJ1dCBpdCBwZW5hbGl6ZXMgbm9uLWh1bWFuIGludGVsbGlnZW50IGJlaGF2aW9yLlszNzhdXG5cblJ1c3NlbGwgYW5kIE5vcnZpZyBhZ3JlZSB3aXRoIFR1cmluZyB0aGF0IGludGVsbGlnZW5jZSBtdXN0IGJlIGRlZmluZWQgaW4gdGVybXMgb2YgZXh0ZXJuYWwgYmVoYXZpb3IsIG5vdCBpbnRlcm5hbCBzdHJ1Y3R1cmUuWzFdIEhvd2V2ZXIsIHRoZXkgYXJlIGNyaXRpY2FsIHRoYXQgdGhlIHRlc3QgcmVxdWlyZXMgdGhlIG1hY2hpbmUgdG8gaW1pdGF0ZSBodW1hbnMuIFwiQWVyb25hdXRpY2FsIGVuZ2luZWVyaW5nIHRleHRzXCIsIHRoZXkgd3JvdGUsIFwiZG8gbm90IGRlZmluZSB0aGUgZ29hbCBvZiB0aGVpciBmaWVsZCBhcyBtYWtpbmcgJ21hY2hpbmVzIHRoYXQgZmx5IHNvIGV4YWN0bHkgbGlrZSBwaWdlb25zIHRoYXQgdGhleSBjYW4gZm9vbCBvdGhlciBwaWdlb25zLidcIlszNzldIEFJIGZvdW5kZXIgSm9obiBNY0NhcnRoeSBhZ3JlZWQsIHdyaXRpbmcgdGhhdCBcIkFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIG5vdCwgYnkgZGVmaW5pdGlvbiwgc2ltdWxhdGlvbiBvZiBodW1hbiBpbnRlbGxpZ2VuY2VcIi5bMzgwXVxuXG5NY0NhcnRoeSBkZWZpbmVzIGludGVsbGlnZW5jZSBhcyBcInRoZSBjb21wdXRhdGlvbmFsIHBhcnQgb2YgdGhlIGFiaWxpdHkgdG8gYWNoaWV2ZSBnb2FscyBpbiB0aGUgd29ybGRcIi5bMzgxXSBBbm90aGVyIEFJIGZvdW5kZXIsIE1hcnZpbiBNaW5za3ksIHNpbWlsYXJseSBkZXNjcmliZXMgaXQgYXMgXCJ0aGUgYWJpbGl0eSB0byBzb2x2ZSBoYXJkIHByb2JsZW1zXCIuWzM4Ml0gVGhlIGxlYWRpbmcgQUkgdGV4dGJvb2sgZGVmaW5lcyBpdCBhcyB0aGUgc3R1ZHkgb2YgYWdlbnRzIHRoYXQgcGVyY2VpdmUgdGhlaXIgZW52aXJvbm1lbnQgYW5kIHRha2UgYWN0aW9ucyB0aGF0IG1heGltaXplIHRoZWlyIGNoYW5jZXMgb2YgYWNoaWV2aW5nIGRlZmluZWQgZ29hbHMuWzFdIFRoZXNlIGRlZmluaXRpb25zIHZpZXcgaW50ZWxsaWdlbmNlIGluIHRlcm1zIG9mIHdlbGwtZGVmaW5lZCBwcm9ibGVtcyB3aXRoIHdlbGwtZGVmaW5lZCBzb2x1dGlvbnMsIHdoZXJlIGJvdGggdGhlIGRpZmZpY3VsdHkgb2YgdGhlIHByb2JsZW0gYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcHJvZ3JhbSBhcmUgZGlyZWN0IG1lYXN1cmVzIG9mIHRoZSBcImludGVsbGlnZW5jZVwiIG9mIHRoZSBtYWNoaW5l4oCUYW5kIG5vIG90aGVyIHBoaWxvc29waGljYWwgZGlzY3Vzc2lvbiBpcyByZXF1aXJlZCwgb3IgbWF5IG5vdCBldmVuIGJlIHBvc3NpYmxlLlxuXG5Bbm90aGVyIGRlZmluaXRpb24gaGFzIGJlZW4gYWRvcHRlZCBieSBHb29nbGUsWzM4M10gYSBtYWpvciBwcmFjdGl0aW9uZXIgaW4gdGhlIGZpZWxkIG9mIEFJLiBUaGlzIGRlZmluaXRpb24gc3RpcHVsYXRlcyB0aGUgYWJpbGl0eSBvZiBzeXN0ZW1zIHRvIHN5bnRoZXNpemUgaW5mb3JtYXRpb24gYXMgdGhlIG1hbmlmZXN0YXRpb24gb2YgaW50ZWxsaWdlbmNlLCBzaW1pbGFyIHRvIHRoZSB3YXkgaXQgaXMgZGVmaW5lZCBpbiBiaW9sb2dpY2FsIGludGVsbGlnZW5jZS5cblxuU29tZSBhdXRob3JzIGhhdmUgc3VnZ2VzdGVkIGluIHByYWN0aWNlLCB0aGF0IHRoZSBkZWZpbml0aW9uIG9mIEFJIGlzIHZhZ3VlIGFuZCBkaWZmaWN1bHQgdG8gZGVmaW5lLCB3aXRoIGNvbnRlbnRpb24gYXMgdG8gd2hldGhlciBjbGFzc2ljYWwgYWxnb3JpdGhtcyBzaG91bGQgYmUgY2F0ZWdvcmlzZWQgYXMgQUksWzM4NF0gd2l0aCBtYW55IGNvbXBhbmllcyBkdXJpbmcgdGhlIGVhcmx5IDIwMjBzIEFJIGJvb20gdXNpbmcgdGhlIHRlcm0gYXMgYSBtYXJrZXRpbmcgYnV6endvcmQsIG9mdGVuIGV2ZW4gaWYgdGhleSBkaWQgXCJub3QgYWN0dWFsbHkgdXNlIEFJIGluIGEgbWF0ZXJpYWwgd2F5XCIuWzM4NV1cblxuRXZhbHVhdGluZyBhcHByb2FjaGVzIHRvIEFJXG5cbk5vIGVzdGFibGlzaGVkIHVuaWZ5aW5nIHRoZW9yeSBvciBwYXJhZGlnbSBoYXMgZ3VpZGVkIEFJIHJlc2VhcmNoIGZvciBtb3N0IG9mIGl0cyBoaXN0b3J5LlthYV0gVGhlIHVucHJlY2VkZW50ZWQgc3VjY2VzcyBvZiBzdGF0aXN0aWNhbCBtYWNoaW5lIGxlYXJuaW5nIGluIHRoZSAyMDEwcyBlY2xpcHNlZCBhbGwgb3RoZXIgYXBwcm9hY2hlcyAoc28gbXVjaCBzbyB0aGF0IHNvbWUgc291cmNlcywgZXNwZWNpYWxseSBpbiB0aGUgYnVzaW5lc3Mgd29ybGQsIHVzZSB0aGUgdGVybSBcImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdG8gbWVhbiBcIm1hY2hpbmUgbGVhcm5pbmcgd2l0aCBuZXVyYWwgbmV0d29ya3NcIikuIFRoaXMgYXBwcm9hY2ggaXMgbW9zdGx5IHN1Yi1zeW1ib2xpYywgc29mdCBhbmQgbmFycm93LiBDcml0aWNzIGFyZ3VlIHRoYXQgdGhlc2UgcXVlc3Rpb25zIG1heSBoYXZlIHRvIGJlIHJldmlzaXRlZCBieSBmdXR1cmUgZ2VuZXJhdGlvbnMgb2YgQUkgcmVzZWFyY2hlcnMuXG5cblN5bWJvbGljIEFJIGFuZCBpdHMgbGltaXRzXG5cblN5bWJvbGljIEFJIChvciBcIkdPRkFJXCIpWzM4N10gc2ltdWxhdGVkIHRoZSBoaWdoLWxldmVsIGNvbnNjaW91cyByZWFzb25pbmcgdGhhdCBwZW9wbGUgdXNlIHdoZW4gdGhleSBzb2x2ZSBwdXp6bGVzLCBleHByZXNzIGxlZ2FsIHJlYXNvbmluZyBhbmQgZG8gbWF0aGVtYXRpY3MuIFRoZXkgd2VyZSBoaWdobHkgc3VjY2Vzc2Z1bCBhdCBcImludGVsbGlnZW50XCIgdGFza3Mgc3VjaCBhcyBhbGdlYnJhIG9yIElRIHRlc3RzLiBJbiB0aGUgMTk2MHMsIE5ld2VsbCBhbmQgU2ltb24gcHJvcG9zZWQgdGhlIHBoeXNpY2FsIHN5bWJvbCBzeXN0ZW1zIGh5cG90aGVzaXM6IFwiQSBwaHlzaWNhbCBzeW1ib2wgc3lzdGVtIGhhcyB0aGUgbmVjZXNzYXJ5IGFuZCBzdWZmaWNpZW50IG1lYW5zIG9mIGdlbmVyYWwgaW50ZWxsaWdlbnQgYWN0aW9uLlwiWzM4OF1cblxuSG93ZXZlciwgdGhlIHN5bWJvbGljIGFwcHJvYWNoIGZhaWxlZCBvbiBtYW55IHRhc2tzIHRoYXQgaHVtYW5zIHNvbHZlIGVhc2lseSwgc3VjaCBhcyBsZWFybmluZywgcmVjb2duaXppbmcgYW4gb2JqZWN0IG9yIGNvbW1vbnNlbnNlIHJlYXNvbmluZy4gTW9yYXZlYydzIHBhcmFkb3ggaXMgdGhlIGRpc2NvdmVyeSB0aGF0IGhpZ2gtbGV2ZWwgXCJpbnRlbGxpZ2VudFwiIHRhc2tzIHdlcmUgZWFzeSBmb3IgQUksIGJ1dCBsb3cgbGV2ZWwgXCJpbnN0aW5jdGl2ZVwiIHRhc2tzIHdlcmUgZXh0cmVtZWx5IGRpZmZpY3VsdC5bMzg5XSBQaGlsb3NvcGhlciBIdWJlcnQgRHJleWZ1cyBoYWQgYXJndWVkIHNpbmNlIHRoZSAxOTYwcyB0aGF0IGh1bWFuIGV4cGVydGlzZSBkZXBlbmRzIG9uIHVuY29uc2Npb3VzIGluc3RpbmN0IHJhdGhlciB0aGFuIGNvbnNjaW91cyBzeW1ib2wgbWFuaXB1bGF0aW9uLCBhbmQgb24gaGF2aW5nIGEgXCJmZWVsXCIgZm9yIHRoZSBzaXR1YXRpb24sIHJhdGhlciB0aGFuIGV4cGxpY2l0IHN5bWJvbGljIGtub3dsZWRnZS5bMzkwXSBBbHRob3VnaCBoaXMgYXJndW1lbnRzIGhhZCBiZWVuIHJpZGljdWxlZCBhbmQgaWdub3JlZCB3aGVuIHRoZXkgd2VyZSBmaXJzdCBwcmVzZW50ZWQsIGV2ZW50dWFsbHksIEFJIHJlc2VhcmNoIGNhbWUgdG8gYWdyZWUgd2l0aCBoaW0uW2FiXVsxNl1cblxuVGhlIGlzc3VlIGlzIG5vdCByZXNvbHZlZDogc3ViLXN5bWJvbGljIHJlYXNvbmluZyBjYW4gbWFrZSBtYW55IG9mIHRoZSBzYW1lIGluc2NydXRhYmxlIG1pc3Rha2VzIHRoYXQgaHVtYW4gaW50dWl0aW9uIGRvZXMsIHN1Y2ggYXMgYWxnb3JpdGhtaWMgYmlhcy4gQ3JpdGljcyBzdWNoIGFzIE5vYW0gQ2hvbXNreSBhcmd1ZSBjb250aW51aW5nIHJlc2VhcmNoIGludG8gc3ltYm9saWMgQUkgd2lsbCBzdGlsbCBiZSBuZWNlc3NhcnkgdG8gYXR0YWluIGdlbmVyYWwgaW50ZWxsaWdlbmNlLFszOTJdWzM5M10gaW4gcGFydCBiZWNhdXNlIHN1Yi1zeW1ib2xpYyBBSSBpcyBhIG1vdmUgYXdheSBmcm9tIGV4cGxhaW5hYmxlIEFJOiBpdCBjYW4gYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUgdG8gdW5kZXJzdGFuZCB3aHkgYSBtb2Rlcm4gc3RhdGlzdGljYWwgQUkgcHJvZ3JhbSBtYWRlIGEgcGFydGljdWxhciBkZWNpc2lvbi4gVGhlIGVtZXJnaW5nIGZpZWxkIG9mIG5ldXJvLXN5bWJvbGljIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGF0dGVtcHRzIHRvIGJyaWRnZSB0aGUgdHdvIGFwcHJvYWNoZXMuXG5cbk5lYXQgdnMuIHNjcnVmZnlcbk1haW4gYXJ0aWNsZTogTmVhdHMgYW5kIHNjcnVmZmllc1xuXG5cIk5lYXRzXCIgaG9wZSB0aGF0IGludGVsbGlnZW50IGJlaGF2aW9yIGlzIGRlc2NyaWJlZCB1c2luZyBzaW1wbGUsIGVsZWdhbnQgcHJpbmNpcGxlcyAoc3VjaCBhcyBsb2dpYywgb3B0aW1pemF0aW9uLCBvciBuZXVyYWwgbmV0d29ya3MpLiBcIlNjcnVmZmllc1wiIGV4cGVjdCB0aGF0IGl0IG5lY2Vzc2FyaWx5IHJlcXVpcmVzIHNvbHZpbmcgYSBsYXJnZSBudW1iZXIgb2YgdW5yZWxhdGVkIHByb2JsZW1zLiBOZWF0cyBkZWZlbmQgdGhlaXIgcHJvZ3JhbXMgd2l0aCB0aGVvcmV0aWNhbCByaWdvciwgc2NydWZmaWVzIHJlbHkgbWFpbmx5IG9uIGluY3JlbWVudGFsIHRlc3RpbmcgdG8gc2VlIGlmIHRoZXkgd29yay4gVGhpcyBpc3N1ZSB3YXMgYWN0aXZlbHkgZGlzY3Vzc2VkIGluIHRoZSAxOTcwcyBhbmQgMTk4MHMsWzM5NF0gYnV0IGV2ZW50dWFsbHkgd2FzIHNlZW4gYXMgaXJyZWxldmFudC4gTW9kZXJuIEFJIGhhcyBlbGVtZW50cyBvZiBib3RoLlxuXG5Tb2Z0IHZzLiBoYXJkIGNvbXB1dGluZ1xuTWFpbiBhcnRpY2xlOiBTb2Z0IGNvbXB1dGluZ1xuXG5GaW5kaW5nIGEgcHJvdmFibHkgY29ycmVjdCBvciBvcHRpbWFsIHNvbHV0aW9uIGlzIGludHJhY3RhYmxlIGZvciBtYW55IGltcG9ydGFudCBwcm9ibGVtcy5bMTVdIFNvZnQgY29tcHV0aW5nIGlzIGEgc2V0IG9mIHRlY2huaXF1ZXMsIGluY2x1ZGluZyBnZW5ldGljIGFsZ29yaXRobXMsIGZ1enp5IGxvZ2ljIGFuZCBuZXVyYWwgbmV0d29ya3MsIHRoYXQgYXJlIHRvbGVyYW50IG9mIGltcHJlY2lzaW9uLCB1bmNlcnRhaW50eSwgcGFydGlhbCB0cnV0aCBhbmQgYXBwcm94aW1hdGlvbi4gU29mdCBjb21wdXRpbmcgd2FzIGludHJvZHVjZWQgaW4gdGhlIGxhdGUgMTk4MHMgYW5kIG1vc3Qgc3VjY2Vzc2Z1bCBBSSBwcm9ncmFtcyBpbiB0aGUgMjFzdCBjZW50dXJ5IGFyZSBleGFtcGxlcyBvZiBzb2Z0IGNvbXB1dGluZyB3aXRoIG5ldXJhbCBuZXR3b3Jrcy5cblxuTmFycm93IHZzLiBnZW5lcmFsIEFJXG5NYWluIGFydGljbGVzOiBXZWFrIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBBcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlXG5cbkFJIHJlc2VhcmNoZXJzIGFyZSBkaXZpZGVkIGFzIHRvIHdoZXRoZXIgdG8gcHVyc3VlIHRoZSBnb2FscyBvZiBhcnRpZmljaWFsIGdlbmVyYWwgaW50ZWxsaWdlbmNlIGFuZCBzdXBlcmludGVsbGlnZW5jZSBkaXJlY3RseSBvciB0byBzb2x2ZSBhcyBtYW55IHNwZWNpZmljIHByb2JsZW1zIGFzIHBvc3NpYmxlIChuYXJyb3cgQUkpIGluIGhvcGVzIHRoZXNlIHNvbHV0aW9ucyB3aWxsIGxlYWQgaW5kaXJlY3RseSB0byB0aGUgZmllbGQncyBsb25nLXRlcm0gZ29hbHMuWzM5NV1bMzk2XSBHZW5lcmFsIGludGVsbGlnZW5jZSBpcyBkaWZmaWN1bHQgdG8gZGVmaW5lIGFuZCBkaWZmaWN1bHQgdG8gbWVhc3VyZSwgYW5kIG1vZGVybiBBSSBoYXMgaGFkIG1vcmUgdmVyaWZpYWJsZSBzdWNjZXNzZXMgYnkgZm9jdXNpbmcgb24gc3BlY2lmaWMgcHJvYmxlbXMgd2l0aCBzcGVjaWZpYyBzb2x1dGlvbnMuIFRoZSBzdWItZmllbGQgb2YgYXJ0aWZpY2lhbCBnZW5lcmFsIGludGVsbGlnZW5jZSBzdHVkaWVzIHRoaXMgYXJlYSBleGNsdXNpdmVseS5cblxuTWFjaGluZSBjb25zY2lvdXNuZXNzLCBzZW50aWVuY2UsIGFuZCBtaW5kXG5NYWluIGFydGljbGVzOiBQaGlsb3NvcGh5IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGFuZCBBcnRpZmljaWFsIGNvbnNjaW91c25lc3NcblxuVGhlIHBoaWxvc29waHkgb2YgbWluZCBkb2VzIG5vdCBrbm93IHdoZXRoZXIgYSBtYWNoaW5lIGNhbiBoYXZlIGEgbWluZCwgY29uc2Npb3VzbmVzcyBhbmQgbWVudGFsIHN0YXRlcywgaW4gdGhlIHNhbWUgc2Vuc2UgdGhhdCBodW1hbiBiZWluZ3MgZG8uIFRoaXMgaXNzdWUgY29uc2lkZXJzIHRoZSBpbnRlcm5hbCBleHBlcmllbmNlcyBvZiB0aGUgbWFjaGluZSwgcmF0aGVyIHRoYW4gaXRzIGV4dGVybmFsIGJlaGF2aW9yLiBNYWluc3RyZWFtIEFJIHJlc2VhcmNoIGNvbnNpZGVycyB0aGlzIGlzc3VlIGlycmVsZXZhbnQgYmVjYXVzZSBpdCBkb2VzIG5vdCBhZmZlY3QgdGhlIGdvYWxzIG9mIHRoZSBmaWVsZDogdG8gYnVpbGQgbWFjaGluZXMgdGhhdCBjYW4gc29sdmUgcHJvYmxlbXMgdXNpbmcgaW50ZWxsaWdlbmNlLiBSdXNzZWxsIGFuZCBOb3J2aWcgYWRkIHRoYXQgXCJbdF1oZSBhZGRpdGlvbmFsIHByb2plY3Qgb2YgbWFraW5nIGEgbWFjaGluZSBjb25zY2lvdXMgaW4gZXhhY3RseSB0aGUgd2F5IGh1bWFucyBhcmUgaXMgbm90IG9uZSB0aGF0IHdlIGFyZSBlcXVpcHBlZCB0byB0YWtlIG9uLlwiWzM5N10gSG93ZXZlciwgdGhlIHF1ZXN0aW9uIGhhcyBiZWNvbWUgY2VudHJhbCB0byB0aGUgcGhpbG9zb3BoeSBvZiBtaW5kLiBJdCBpcyBhbHNvIHR5cGljYWxseSB0aGUgY2VudHJhbCBxdWVzdGlvbiBhdCBpc3N1ZSBpbiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpbiBmaWN0aW9uLlxuXG5Db25zY2lvdXNuZXNzXG5NYWluIGFydGljbGVzOiBIYXJkIHByb2JsZW0gb2YgY29uc2Npb3VzbmVzcyBhbmQgVGhlb3J5IG9mIG1pbmRcblxuRGF2aWQgQ2hhbG1lcnMgaWRlbnRpZmllZCB0d28gcHJvYmxlbXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgbWluZCwgd2hpY2ggaGUgbmFtZWQgdGhlIFwiaGFyZFwiIGFuZCBcImVhc3lcIiBwcm9ibGVtcyBvZiBjb25zY2lvdXNuZXNzLlszOThdIFRoZSBlYXN5IHByb2JsZW0gaXMgdW5kZXJzdGFuZGluZyBob3cgdGhlIGJyYWluIHByb2Nlc3NlcyBzaWduYWxzLCBtYWtlcyBwbGFucyBhbmQgY29udHJvbHMgYmVoYXZpb3IuIFRoZSBoYXJkIHByb2JsZW0gaXMgZXhwbGFpbmluZyBob3cgdGhpcyBmZWVscyBvciB3aHkgaXQgc2hvdWxkIGZlZWwgbGlrZSBhbnl0aGluZyBhdCBhbGwsIGFzc3VtaW5nIHdlIGFyZSByaWdodCBpbiB0aGlua2luZyB0aGF0IGl0IHRydWx5IGRvZXMgZmVlbCBsaWtlIHNvbWV0aGluZyAoRGVubmV0dCdzIGNvbnNjaW91c25lc3MgaWxsdXNpb25pc20gc2F5cyB0aGlzIGlzIGFuIGlsbHVzaW9uKS4gV2hpbGUgaHVtYW4gaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBpcyBlYXN5IHRvIGV4cGxhaW4sIGh1bWFuIHN1YmplY3RpdmUgZXhwZXJpZW5jZSBpcyBkaWZmaWN1bHQgdG8gZXhwbGFpbi4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gaW1hZ2luZSBhIGNvbG9yLWJsaW5kIHBlcnNvbiB3aG8gaGFzIGxlYXJuZWQgdG8gaWRlbnRpZnkgd2hpY2ggb2JqZWN0cyBpbiB0aGVpciBmaWVsZCBvZiB2aWV3IGFyZSByZWQsIGJ1dCBpdCBpcyBub3QgY2xlYXIgd2hhdCB3b3VsZCBiZSByZXF1aXJlZCBmb3IgdGhlIHBlcnNvbiB0byBrbm93IHdoYXQgcmVkIGxvb2tzIGxpa2UuWzM5OV1cblxuQ29tcHV0YXRpb25hbGlzbSBhbmQgZnVuY3Rpb25hbGlzbVxuTWFpbiBhcnRpY2xlczogQ29tcHV0YXRpb25hbCB0aGVvcnkgb2YgbWluZCBhbmQgRnVuY3Rpb25hbGlzbSAocGhpbG9zb3BoeSBvZiBtaW5kKVxuXG5Db21wdXRhdGlvbmFsaXNtIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGUgcGhpbG9zb3BoeSBvZiBtaW5kIHRoYXQgdGhlIGh1bWFuIG1pbmQgaXMgYW4gaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBzeXN0ZW0gYW5kIHRoYXQgdGhpbmtpbmcgaXMgYSBmb3JtIG9mIGNvbXB1dGluZy4gQ29tcHV0YXRpb25hbGlzbSBhcmd1ZXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWluZCBhbmQgYm9keSBpcyBzaW1pbGFyIG9yIGlkZW50aWNhbCB0byB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gc29mdHdhcmUgYW5kIGhhcmR3YXJlIGFuZCB0aHVzIG1heSBiZSBhIHNvbHV0aW9uIHRvIHRoZSBtaW5k4oCTYm9keSBwcm9ibGVtLiBUaGlzIHBoaWxvc29waGljYWwgcG9zaXRpb24gd2FzIGluc3BpcmVkIGJ5IHRoZSB3b3JrIG9mIEFJIHJlc2VhcmNoZXJzIGFuZCBjb2duaXRpdmUgc2NpZW50aXN0cyBpbiB0aGUgMTk2MHMgYW5kIHdhcyBvcmlnaW5hbGx5IHByb3Bvc2VkIGJ5IHBoaWxvc29waGVycyBKZXJyeSBGb2RvciBhbmQgSGlsYXJ5IFB1dG5hbS5bNDAwXVxuXG5QaGlsb3NvcGhlciBKb2huIFNlYXJsZSBjaGFyYWN0ZXJpemVkIHRoaXMgcG9zaXRpb24gYXMgXCJzdHJvbmcgQUlcIjogXCJUaGUgYXBwcm9wcmlhdGVseSBwcm9ncmFtbWVkIGNvbXB1dGVyIHdpdGggdGhlIHJpZ2h0IGlucHV0cyBhbmQgb3V0cHV0cyB3b3VsZCB0aGVyZWJ5IGhhdmUgYSBtaW5kIGluIGV4YWN0bHkgdGhlIHNhbWUgc2Vuc2UgaHVtYW4gYmVpbmdzIGhhdmUgbWluZHMuXCJbYWNdIFNlYXJsZSBjaGFsbGVuZ2VzIHRoaXMgY2xhaW0gd2l0aCBoaXMgQ2hpbmVzZSByb29tIGFyZ3VtZW50LCB3aGljaCBhdHRlbXB0cyB0byBzaG93IHRoYXQgZXZlbiBhIGNvbXB1dGVyIGNhcGFibGUgb2YgcGVyZmVjdGx5IHNpbXVsYXRpbmcgaHVtYW4gYmVoYXZpb3Igd291bGQgbm90IGhhdmUgYSBtaW5kLls0MDRdXG5cbkFJIHdlbGZhcmUgYW5kIHJpZ2h0c1xuXG5JdCBpcyBkaWZmaWN1bHQgb3IgaW1wb3NzaWJsZSB0byByZWxpYWJseSBldmFsdWF0ZSB3aGV0aGVyIGFuIGFkdmFuY2VkIEFJIGlzIHNlbnRpZW50IChoYXMgdGhlIGFiaWxpdHkgdG8gZmVlbCksIGFuZCBpZiBzbywgdG8gd2hhdCBkZWdyZWUuWzQwNV0gQnV0IGlmIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmNlIHRoYXQgYSBnaXZlbiBtYWNoaW5lIGNhbiBmZWVsIGFuZCBzdWZmZXIsIHRoZW4gaXQgbWF5IGJlIGVudGl0bGVkIHRvIGNlcnRhaW4gcmlnaHRzIG9yIHdlbGZhcmUgcHJvdGVjdGlvbiBtZWFzdXJlcywgc2ltaWxhcmx5IHRvIGFuaW1hbHMuWzQwNl1bNDA3XSBTYXBpZW5jZSAoYSBzZXQgb2YgY2FwYWNpdGllcyByZWxhdGVkIHRvIGhpZ2ggaW50ZWxsaWdlbmNlLCBzdWNoIGFzIGRpc2Nlcm5tZW50IG9yIHNlbGYtYXdhcmVuZXNzKSBtYXkgcHJvdmlkZSBhbm90aGVyIG1vcmFsIGJhc2lzIGZvciBBSSByaWdodHMuWzQwNl0gUm9ib3QgcmlnaHRzIGFyZSBhbHNvIHNvbWV0aW1lcyBwcm9wb3NlZCBhcyBhIHByYWN0aWNhbCB3YXkgdG8gaW50ZWdyYXRlIGF1dG9ub21vdXMgYWdlbnRzIGludG8gc29jaWV0eS5bNDA4XVxuXG5JbiAyMDE3LCB0aGUgRXVyb3BlYW4gVW5pb24gY29uc2lkZXJlZCBncmFudGluZyBcImVsZWN0cm9uaWMgcGVyc29uaG9vZFwiIHRvIHNvbWUgb2YgdGhlIG1vc3QgY2FwYWJsZSBBSSBzeXN0ZW1zLiBTaW1pbGFybHkgdG8gdGhlIGxlZ2FsIHN0YXR1cyBvZiBjb21wYW5pZXMsIGl0IHdvdWxkIGhhdmUgY29uZmVycmVkIHJpZ2h0cyBidXQgYWxzbyByZXNwb25zaWJpbGl0aWVzLls0MDldIENyaXRpY3MgYXJndWVkIGluIDIwMTggdGhhdCBncmFudGluZyByaWdodHMgdG8gQUkgc3lzdGVtcyB3b3VsZCBkb3ducGxheSB0aGUgaW1wb3J0YW5jZSBvZiBodW1hbiByaWdodHMsIGFuZCB0aGF0IGxlZ2lzbGF0aW9uIHNob3VsZCBmb2N1cyBvbiB1c2VyIG5lZWRzIHJhdGhlciB0aGFuIHNwZWN1bGF0aXZlIGZ1dHVyaXN0aWMgc2NlbmFyaW9zLiBUaGV5IGFsc28gbm90ZWQgdGhhdCByb2JvdHMgbGFja2VkIHRoZSBhdXRvbm9teSB0byB0YWtlIHBhcnQgdG8gc29jaWV0eSBvbiB0aGVpciBvd24uWzQxMF1bNDExXVxuXG5Qcm9ncmVzcyBpbiBBSSBpbmNyZWFzZWQgaW50ZXJlc3QgaW4gdGhlIHRvcGljLiBQcm9wb25lbnRzIG9mIEFJIHdlbGZhcmUgYW5kIHJpZ2h0cyBvZnRlbiBhcmd1ZSB0aGF0IEFJIHNlbnRpZW5jZSwgaWYgaXQgZW1lcmdlcywgd291bGQgYmUgcGFydGljdWxhcmx5IGVhc3kgdG8gZGVueS4gVGhleSB3YXJuIHRoYXQgdGhpcyBtYXkgYmUgYSBtb3JhbCBibGluZCBzcG90IGFuYWxvZ291cyB0byBzbGF2ZXJ5IG9yIGZhY3RvcnkgZmFybWluZywgd2hpY2ggY291bGQgbGVhZCB0byBsYXJnZS1zY2FsZSBzdWZmZXJpbmcgaWYgc2VudGllbnQgQUkgaXMgY3JlYXRlZCBhbmQgY2FyZWxlc3NseSBleHBsb2l0ZWQuWzQwN11bNDA2XVxuXG5GdXR1cmVcblN1cGVyaW50ZWxsaWdlbmNlIGFuZCB0aGUgc2luZ3VsYXJpdHlcblxuQSBzdXBlcmludGVsbGlnZW5jZSBpcyBhIGh5cG90aGV0aWNhbCBhZ2VudCB0aGF0IHdvdWxkIHBvc3Nlc3MgaW50ZWxsaWdlbmNlIGZhciBzdXJwYXNzaW5nIHRoYXQgb2YgdGhlIGJyaWdodGVzdCBhbmQgbW9zdCBnaWZ0ZWQgaHVtYW4gbWluZC5bMzk2XSBJZiByZXNlYXJjaCBpbnRvIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgcHJvZHVjZWQgc3VmZmljaWVudGx5IGludGVsbGlnZW50IHNvZnR3YXJlLCBpdCBtaWdodCBiZSBhYmxlIHRvIHJlcHJvZ3JhbSBhbmQgaW1wcm92ZSBpdHNlbGYuIFRoZSBpbXByb3ZlZCBzb2Z0d2FyZSB3b3VsZCBiZSBldmVuIGJldHRlciBhdCBpbXByb3ZpbmcgaXRzZWxmLCBsZWFkaW5nIHRvIHdoYXQgSS4gSi4gR29vZCBjYWxsZWQgYW4gXCJpbnRlbGxpZ2VuY2UgZXhwbG9zaW9uXCIgYW5kIFZlcm5vciBWaW5nZSBjYWxsZWQgYSBcInNpbmd1bGFyaXR5XCIuWzQxMl1cblxuSG93ZXZlciwgdGVjaG5vbG9naWVzIGNhbm5vdCBpbXByb3ZlIGV4cG9uZW50aWFsbHkgaW5kZWZpbml0ZWx5LCBhbmQgdHlwaWNhbGx5IGZvbGxvdyBhbiBTLXNoYXBlZCBjdXJ2ZSwgc2xvd2luZyB3aGVuIHRoZXkgcmVhY2ggdGhlIHBoeXNpY2FsIGxpbWl0cyBvZiB3aGF0IHRoZSB0ZWNobm9sb2d5IGNhbiBkby5bNDEzXVxuXG5UcmFuc2h1bWFuaXNtXG5NYWluIGFydGljbGU6IFRyYW5zaHVtYW5pc21cblxuUm9ib3QgZGVzaWduZXIgSGFucyBNb3JhdmVjLCBjeWJlcm5ldGljaXN0IEtldmluIFdhcndpY2sgYW5kIGludmVudG9yIFJheSBLdXJ6d2VpbCBoYXZlIHByZWRpY3RlZCB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgbWF5IG1lcmdlIGluIHRoZSBmdXR1cmUgaW50byBjeWJvcmdzIHRoYXQgYXJlIG1vcmUgY2FwYWJsZSBhbmQgcG93ZXJmdWwgdGhhbiBlaXRoZXIuIFRoaXMgaWRlYSwgY2FsbGVkIHRyYW5zaHVtYW5pc20sIGhhcyByb290cyBpbiB0aGUgd3JpdGluZ3Mgb2YgQWxkb3VzIEh1eGxleSBhbmQgUm9iZXJ0IEV0dGluZ2VyLls0MTRdXG5cbkVkd2FyZCBGcmVka2luIGFyZ3VlcyB0aGF0IFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgdGhlIG5leHQgc3RlcCBpbiBldm9sdXRpb25cIiwgYW4gaWRlYSBmaXJzdCBwcm9wb3NlZCBieSBTYW11ZWwgQnV0bGVyJ3MgXCJEYXJ3aW4gYW1vbmcgdGhlIE1hY2hpbmVzXCIgYXMgZmFyIGJhY2sgYXMgMTg2MywgYW5kIGV4cGFuZGVkIHVwb24gYnkgR2VvcmdlIER5c29uIGluIGhpcyAxOTk4IGJvb2sgRGFyd2luIEFtb25nIHRoZSBNYWNoaW5lczogVGhlIEV2b2x1dGlvbiBvZiBHbG9iYWwgSW50ZWxsaWdlbmNlLls0MTVdXG5cbkRlY29tcHV0aW5nXG5cbkFyZ3VtZW50cyBmb3IgZGVjb21wdXRpbmcgaGF2ZSBiZWVuIHJhaXNlZCBieSBEYW4gTWNRdWlsbGFuIChSZXNpc3RpbmcgQUk6IEFuIEFudGktZmFzY2lzdCBBcHByb2FjaCB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZSwgMjAyMiksIG1lYW5pbmcgYW4gb3Bwb3NpdGlvbiB0byB0aGUgc3dlZXBpbmcgYXBwbGljYXRpb24gYW5kIGV4cGFuc2lvbiBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS4gU2ltaWxhciB0byBkZWdyb3d0aCB0aGUgYXBwcm9hY2ggY3JpdGljaXplcyBBSSBhcyBhbiBvdXRncm93dGggb2YgdGhlIHN5c3RlbWljIGlzc3VlcyBhbmQgY2FwaXRhbGlzdCB3b3JsZCB3ZSBsaXZlIGluLiBBcmd1aW5nIHRoYXQgYSBkaWZmZXJlbnQgZnV0dXJlIGlzIHBvc3NpYmxlLCBpbiB3aGljaCBkaXN0YW5jZSBiZXR3ZWVuIHBlb3BsZSBpcyByZWR1Y2VkIGFuZCBub3QgaW5jcmVhc2VkIHRvIEFJIGludGVybWVkaWFyaWVzLls0MTZdXG5cbkluIGZpY3Rpb25cbk1haW4gYXJ0aWNsZTogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gZmljdGlvblxuVGhlIHdvcmQgXCJyb2JvdFwiIGl0c2VsZiB3YXMgY29pbmVkIGJ5IEthcmVsIMSMYXBlayBpbiBoaXMgMTkyMSBwbGF5IFIuVS5SLiwgdGhlIHRpdGxlIHN0YW5kaW5nIGZvciBcIlJvc3N1bSdzIFVuaXZlcnNhbCBSb2JvdHNcIi5cblxuVGhvdWdodC1jYXBhYmxlIGFydGlmaWNpYWwgYmVpbmdzIGhhdmUgYXBwZWFyZWQgYXMgc3Rvcnl0ZWxsaW5nIGRldmljZXMgc2luY2UgYW50aXF1aXR5LFs0MTddIGFuZCBoYXZlIGJlZW4gYSBwZXJzaXN0ZW50IHRoZW1lIGluIHNjaWVuY2UgZmljdGlvbi5bNDE4XVxuXG5BIGNvbW1vbiB0cm9wZSBpbiB0aGVzZSB3b3JrcyBiZWdhbiB3aXRoIE1hcnkgU2hlbGxleSdzIEZyYW5rZW5zdGVpbiwgd2hlcmUgYSBodW1hbiBjcmVhdGlvbiBiZWNvbWVzIGEgdGhyZWF0IHRvIGl0cyBtYXN0ZXJzLiBUaGlzIGluY2x1ZGVzIHN1Y2ggd29ya3MgYXMgQXJ0aHVyIEMuIENsYXJrZSdzIGFuZCBTdGFubGV5IEt1YnJpY2sncyAyMDAxOiBBIFNwYWNlIE9keXNzZXkgKGJvdGggMTk2OCksIHdpdGggSEFMIDkwMDAsIHRoZSBtdXJkZXJvdXMgY29tcHV0ZXIgaW4gY2hhcmdlIG9mIHRoZSBEaXNjb3ZlcnkgT25lIHNwYWNlc2hpcCwgYXMgd2VsbCBhcyBUaGUgVGVybWluYXRvciAoMTk4NCkgYW5kIFRoZSBNYXRyaXggKDE5OTkpLiBJbiBjb250cmFzdCwgdGhlIHJhcmUgbG95YWwgcm9ib3RzIHN1Y2ggYXMgR29ydCBmcm9tIFRoZSBEYXkgdGhlIEVhcnRoIFN0b29kIFN0aWxsICgxOTUxKSBhbmQgQmlzaG9wIGZyb20gQWxpZW5zICgxOTg2KSBhcmUgbGVzcyBwcm9taW5lbnQgaW4gcG9wdWxhciBjdWx0dXJlLls0MTldXG5cbklzYWFjIEFzaW1vdiBpbnRyb2R1Y2VkIHRoZSBUaHJlZSBMYXdzIG9mIFJvYm90aWNzIGluIG1hbnkgc3RvcmllcywgbW9zdCBub3RhYmx5IHdpdGggdGhlIFwiTXVsdGl2YWNcIiBzdXBlci1pbnRlbGxpZ2VudCBjb21wdXRlci4gQXNpbW92J3MgbGF3cyBhcmUgb2Z0ZW4gYnJvdWdodCB1cCBkdXJpbmcgbGF5IGRpc2N1c3Npb25zIG9mIG1hY2hpbmUgZXRoaWNzO1s0MjBdIHdoaWxlIGFsbW9zdCBhbGwgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgcmVzZWFyY2hlcnMgYXJlIGZhbWlsaWFyIHdpdGggQXNpbW92J3MgbGF3cyB0aHJvdWdoIHBvcHVsYXIgY3VsdHVyZSwgdGhleSBnZW5lcmFsbHkgY29uc2lkZXIgdGhlIGxhd3MgdXNlbGVzcyBmb3IgbWFueSByZWFzb25zLCBvbmUgb2Ygd2hpY2ggaXMgdGhlaXIgYW1iaWd1aXR5Lls0MjFdXG5cblNldmVyYWwgd29ya3MgdXNlIEFJIHRvIGZvcmNlIHVzIHRvIGNvbmZyb250IHRoZSBmdW5kYW1lbnRhbCBxdWVzdGlvbiBvZiB3aGF0IG1ha2VzIHVzIGh1bWFuLCBzaG93aW5nIHVzIGFydGlmaWNpYWwgYmVpbmdzIHRoYXQgaGF2ZSB0aGUgYWJpbGl0eSB0byBmZWVsLCBhbmQgdGh1cyB0byBzdWZmZXIuIFRoaXMgYXBwZWFycyBpbiBLYXJlbCDEjGFwZWsncyBSLlUuUi4sIHRoZSBmaWxtcyBBLkkuIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBFeCBNYWNoaW5hLCBhcyB3ZWxsIGFzIHRoZSBub3ZlbCBEbyBBbmRyb2lkcyBEcmVhbSBvZiBFbGVjdHJpYyBTaGVlcD8sIGJ5IFBoaWxpcCBLLiBEaWNrLiBEaWNrIGNvbnNpZGVycyB0aGUgaWRlYSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIGh1bWFuIHN1YmplY3Rpdml0eSBpcyBhbHRlcmVkIGJ5IHRlY2hub2xvZ3kgY3JlYXRlZCB3aXRoIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLls0MjJdXG5cblNlZSBhbHNvXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgZWxlY3Rpb25zwqDigJMgVXNlIGFuZCBpbXBhY3Qgb2YgQUkgb24gcG9saXRpY2FsIGVsZWN0aW9uc1xuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgY29udGVudCBkZXRlY3Rpb27CoOKAkyBTb2Z0d2FyZSB0byBkZXRlY3QgQUktZ2VuZXJhdGVkIGNvbnRlbnRcbkJlaGF2aW9yIHNlbGVjdGlvbiBhbGdvcml0aG3CoOKAkyBBbGdvcml0aG0gdGhhdCBzZWxlY3RzIGFjdGlvbnMgZm9yIGludGVsbGlnZW50IGFnZW50c1xuQnVzaW5lc3MgcHJvY2VzcyBhdXRvbWF0aW9uwqDigJMgQXV0b21hdGlvbiBvZiBidXNpbmVzcyBwcm9jZXNzZXNcbkNhc2UtYmFzZWQgcmVhc29uaW5nwqDigJMgUHJvY2VzcyBvZiBzb2x2aW5nIG5ldyBwcm9ibGVtcyBiYXNlZCBvbiB0aGUgc29sdXRpb25zIG9mIHNpbWlsYXIgcGFzdCBwcm9ibGVtc1xuQ29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2XCoOKAkyBBYmlsaXR5IG9mIGEgY29tcHV0ZXIgdG8gbGVhcm4gYSBzcGVjaWZpYyB0YXNrIGZyb20gZGF0YSBvciBleHBlcmltZW50YWwgb2JzZXJ2YXRpb25cbkRpZ2l0YWwgaW1tb3J0YWxpdHnCoOKAkyBIeXBvdGhldGljYWwgY29uY2VwdCBvZiBzdG9yaW5nIGEgcGVyc29uYWxpdHkgaW4gZGlnaXRhbCBmb3JtXG5FbWVyZ2VudCBhbGdvcml0aG3CoOKAkyBBbGdvcml0aG0gZXhoaWJpdGluZyBlbWVyZ2VudCBiZWhhdmlvclxuRmVtYWxlIGdlbmRlcmluZyBvZiBBSSB0ZWNobm9sb2dpZXPCoOKAkyBHZW5kZXIgYmlhc2VzIGluIGRpZ2l0YWwgdGVjaG5vbG9neVxuR2xvc3Nhcnkgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2XCoOKAkyBMaXN0IG9mIGRlZmluaXRpb25zIG9mIHRlcm1zIGFuZCBjb25jZXB0cyBjb21tb25seSB1c2VkIGluIHRoZSBzdHVkeSBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVxuSW50ZWxsaWdlbmNlIGFtcGxpZmljYXRpb27CoOKAkyBVc2Ugb2YgaW5mb3JtYXRpb24gdGVjaG5vbG9neSB0byBhdWdtZW50IGh1bWFuIGludGVsbGlnZW5jZVxuSW50ZWxsaWdlbnQgYWdlbnTCoOKAkyBTb2Z0d2FyZSBhZ2VudCB3aGljaCBhY3RzIGF1dG9ub21vdXNseVxuTWluZCB1cGxvYWRpbmfCoOKAkyBIeXBvdGhldGljYWwgcHJvY2VzcyBvZiBkaWdpdGFsbHkgZW11bGF0aW5nIGEgYnJhaW5cbk9yZ2Fub2lkIGludGVsbGlnZW5jZSDigJMgVXNlIG9mIGJyYWluIGNlbGxzIGFuZCBicmFpbiBvcmdhbm9pZHMgZm9yIGludGVsbGlnZW50IGNvbXB1dGluZ1xuUm9ib3RpYyBwcm9jZXNzIGF1dG9tYXRpb27CoOKAkyBGb3JtIG9mIGJ1c2luZXNzIHByb2Nlc3MgYXV0b21hdGlvbiB0ZWNobm9sb2d5XG5XZXR3YXJlIGNvbXB1dGVywqDigJMgQ29tcHV0ZXIgY29tcG9zZWQgb2Ygb3JnYW5pYyBtYXRlcmlhbFxuRXhwbGFuYXRvcnkgbm90ZXNcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFRoaXMgbGlzdCBvZiBpbnRlbGxpZ2VudCB0cmFpdHMgaXMgYmFzZWQgb24gdGhlIHRvcGljcyBjb3ZlcmVkIGJ5IHRoZSBtYWpvciBBSSB0ZXh0Ym9va3MsIGluY2x1ZGluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkgYW5kIE5pbHNzb24gKDE5OTgpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBUaGlzIGxpc3Qgb2YgdG9vbHMgaXMgYmFzZWQgb24gdGhlIHRvcGljcyBjb3ZlcmVkIGJ5IHRoZSBtYWpvciBBSSB0ZXh0Ym9va3MsIGluY2x1ZGluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCkgYW5kIE5pbHNzb24gKDE5OTgpXG5eIEl0IGlzIGFtb25nIHRoZSByZWFzb25zIHRoYXQgZXhwZXJ0IHN5c3RlbXMgcHJvdmVkIHRvIGJlIGluZWZmaWNpZW50IGZvciBjYXB0dXJpbmcga25vd2xlZGdlLlszMF1bMzFdXG5eIFwiUmF0aW9uYWwgYWdlbnRcIiBpcyBnZW5lcmFsIHRlcm0gdXNlZCBpbiBlY29ub21pY3MsIHBoaWxvc29waHkgYW5kIHRoZW9yZXRpY2FsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLiBJdCBjYW4gcmVmZXIgdG8gYW55dGhpbmcgdGhhdCBkaXJlY3RzIGl0cyBiZWhhdmlvciB0byBhY2NvbXBsaXNoIGdvYWxzLCBzdWNoIGFzIGEgcGVyc29uLCBhbiBhbmltYWwsIGEgY29ycG9yYXRpb24sIGEgbmF0aW9uLCBvciBpbiB0aGUgY2FzZSBvZiBBSSwgYSBjb21wdXRlciBwcm9ncmFtLlxuXiBBbGFuIFR1cmluZyBkaXNjdXNzZWQgdGhlIGNlbnRyYWxpdHkgb2YgbGVhcm5pbmcgYXMgZWFybHkgYXMgMTk1MCwgaW4gaGlzIGNsYXNzaWMgcGFwZXIgXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIi5bNDJdIEluIDE5NTYsIGF0IHRoZSBvcmlnaW5hbCBEYXJ0bW91dGggQUkgc3VtbWVyIGNvbmZlcmVuY2UsIFJheSBTb2xvbW9ub2ZmIHdyb3RlIGEgcmVwb3J0IG9uIHVuc3VwZXJ2aXNlZCBwcm9iYWJpbGlzdGljIG1hY2hpbmUgbGVhcm5pbmc6IFwiQW4gSW5kdWN0aXZlIEluZmVyZW5jZSBNYWNoaW5lXCIuWzQzXVxuXiBTZWUgQUkgd2ludGVyIMKnwqBNYWNoaW5lIHRyYW5zbGF0aW9uIGFuZCB0aGUgQUxQQUMgcmVwb3J0IG9mIDE5NjZcbl4gQ29tcGFyZWQgd2l0aCBzeW1ib2xpYyBsb2dpYywgZm9ybWFsIEJheWVzaWFuIGluZmVyZW5jZSBpcyBjb21wdXRhdGlvbmFsbHkgZXhwZW5zaXZlLiBGb3IgaW5mZXJlbmNlIHRvIGJlIHRyYWN0YWJsZSwgbW9zdCBvYnNlcnZhdGlvbnMgbXVzdCBiZSBjb25kaXRpb25hbGx5IGluZGVwZW5kZW50IG9mIG9uZSBhbm90aGVyLiBBZFNlbnNlIHVzZXMgYSBCYXllc2lhbiBuZXR3b3JrIHdpdGggb3ZlciAzMDDCoG1pbGxpb24gZWRnZXMgdG8gbGVhcm4gd2hpY2ggYWRzIHRvIHNlcnZlLls5M11cbl4gRXhwZWN0YXRpb27igJNtYXhpbWl6YXRpb24sIG9uZSBvZiB0aGUgbW9zdCBwb3B1bGFyIGFsZ29yaXRobXMgaW4gbWFjaGluZSBsZWFybmluZywgYWxsb3dzIGNsdXN0ZXJpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHVua25vd24gbGF0ZW50IHZhcmlhYmxlcy5bOTVdXG5eIFNvbWUgZm9ybSBvZiBkZWVwIG5ldXJhbCBuZXR3b3JrcyAod2l0aG91dCBhIHNwZWNpZmljIGxlYXJuaW5nIGFsZ29yaXRobSkgd2VyZSBkZXNjcmliZWQgYnk6IFdhcnJlbiBTLiBNY0N1bGxvY2ggYW5kIFdhbHRlciBQaXR0cyAoMTk0MylbMTE1XSBBbGFuIFR1cmluZyAoMTk0OCk7WzExNl0gS2FybCBTdGVpbmJ1Y2ggYW5kIFJvZ2VyIERhdmlkIEpvc2VwaCAoMTk2MSkuWzExN10gRGVlcCBvciByZWN1cnJlbnQgbmV0d29ya3MgdGhhdCBsZWFybmVkIChvciB1c2VkIGdyYWRpZW50IGRlc2NlbnQpIHdlcmUgZGV2ZWxvcGVkIGJ5OiBGcmFuayBSb3NlbmJsYXR0KDE5NTcpO1sxMTZdIE9saXZlciBTZWxmcmlkZ2UgKDE5NTkpO1sxMTddIEFsZXhleSBJdmFraG5lbmtvIGFuZCBWYWxlbnRpbiBMYXBhICgxOTY1KTtbMTE4XSBLYW9ydSBOYWthbm8gKDE5NzEpO1sxMTldIFNodW4tSWNoaSBBbWFyaSAoMTk3Mik7WzExOV0gSm9obiBKb3NlcGggSG9wZmllbGQgKDE5ODIpLlsxMTldIFByZWN1cnNvcnMgdG8gYmFja3Byb3BhZ2F0aW9uIHdlcmUgZGV2ZWxvcGVkIGJ5OiBIZW5yeSBKLiBLZWxsZXkgKDE5NjApO1sxMTZdIEFydGh1ciBFLiBCcnlzb24gKDE5NjIpO1sxMTZdIFN0dWFydCBEcmV5ZnVzICgxOTYyKTtbMTE2XSBBcnRodXIgRS4gQnJ5c29uIGFuZCBZdS1DaGkgSG8gKDE5NjkpO1sxMTZdIEJhY2twcm9wYWdhdGlvbiB3YXMgaW5kZXBlbmRlbnRseSBkZXZlbG9wZWQgYnk6IFNlcHBvIExpbm5haW5tYWEgKDE5NzApO1sxMjBdIFBhdWwgV2VyYm9zICgxOTc0KS5bMTE2XVxuXiBHZW9mZnJleSBIaW50b24gc2FpZCwgb2YgaGlzIHdvcmsgb24gbmV1cmFsIG5ldHdvcmtzIGluIHRoZSAxOTkwcywgXCJvdXIgbGFiZWxlZCBkYXRhc2V0cyB3ZXJlIHRob3VzYW5kcyBvZiB0aW1lcyB0b28gc21hbGwuIFtBbmRdIG91ciBjb21wdXRlcnMgd2VyZSBtaWxsaW9ucyBvZiB0aW1lcyB0b28gc2xvdy5cIlsxMjFdXG5eIEluIHN0YXRpc3RpY3MsIGEgYmlhcyBpcyBhIHN5c3RlbWF0aWMgZXJyb3Igb3IgZGV2aWF0aW9uIGZyb20gdGhlIGNvcnJlY3QgdmFsdWUuIEJ1dCBpbiB0aGUgY29udGV4dCBvZiBmYWlybmVzcywgaXQgcmVmZXJzIHRvIGEgdGVuZGVuY3kgaW4gZmF2b3Igb3IgYWdhaW5zdCBhIGNlcnRhaW4gZ3JvdXAgb3IgaW5kaXZpZHVhbCBjaGFyYWN0ZXJpc3RpYywgdXN1YWxseSBpbiBhIHdheSB0aGF0IGlzIGNvbnNpZGVyZWQgdW5mYWlyIG9yIGhhcm1mdWwuIEEgc3RhdGlzdGljYWxseSB1bmJpYXNlZCBBSSBzeXN0ZW0gdGhhdCBwcm9kdWNlcyBkaXNwYXJhdGUgb3V0Y29tZXMgZm9yIGRpZmZlcmVudCBkZW1vZ3JhcGhpYyBncm91cHMgbWF5IHRodXMgYmUgdmlld2VkIGFzIGJpYXNlZCBpbiB0aGUgZXRoaWNhbCBzZW5zZS5bMjM2XVxuXiBJbmNsdWRpbmcgSm9uIEtsZWluYmVyZyAoQ29ybmVsbCBVbml2ZXJzaXR5KSwgU2VuZGhpbCBNdWxsYWluYXRoYW4gKFVuaXZlcnNpdHkgb2YgQ2hpY2FnbyksIEN5bnRoaWEgQ2hvdWxkZWNob3ZhIChDYXJuZWdpZSBNZWxsb24pIGFuZCBTYW0gQ29yYmV0dC1EYXZpcyAoU3RhbmZvcmQpWzI0NV1cbl4gTW9yaXR6IEhhcmR0IChhIGRpcmVjdG9yIGF0IHRoZSBNYXggUGxhbmNrIEluc3RpdHV0ZSBmb3IgSW50ZWxsaWdlbnQgU3lzdGVtcykgYXJndWVzIHRoYXQgbWFjaGluZSBsZWFybmluZyBcImlzIGZ1bmRhbWVudGFsbHkgdGhlIHdyb25nIHRvb2wgZm9yIGEgbG90IG9mIGRvbWFpbnMsIHdoZXJlIHlvdSdyZSB0cnlpbmcgdG8gZGVzaWduIGludGVydmVudGlvbnMgYW5kIG1lY2hhbmlzbXMgdGhhdCBjaGFuZ2UgdGhlIHdvcmxkLlwiWzI1MF1cbl4gV2hlbiB0aGUgbGF3IHdhcyBwYXNzZWQgaW4gMjAxOCwgaXQgc3RpbGwgY29udGFpbmVkIGEgZm9ybSBvZiB0aGlzIHByb3Zpc2lvbi5cbl4gVGhpcyBpcyB0aGUgVW5pdGVkIE5hdGlvbnMnIGRlZmluaXRpb24sIGFuZCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBsYW5kIG1pbmVzIGFzIHdlbGwuWzI2NF1cbl4gU2VlIHRhYmxlIDQ7IDklIGlzIGJvdGggdGhlIE9FQ0QgYXZlcmFnZSBhbmQgdGhlIFUuUy4gYXZlcmFnZS5bMjc1XVxuXiBTb21ldGltZXMgY2FsbGVkIGEgXCJyb2JvcG9jYWx5cHNlXCJbMjgzXVxuXiBcIkVsZWN0cm9uaWMgYnJhaW5cIiB3YXMgdGhlIHRlcm0gdXNlZCBieSB0aGUgcHJlc3MgYXJvdW5kIHRoaXMgdGltZS5bMzM2XVszMzhdXG5eIERhbmllbCBDcmV2aWVyIHdyb3RlLCBcInRoZSBjb25mZXJlbmNlIGlzIGdlbmVyYWxseSByZWNvZ25pemVkIGFzIHRoZSBvZmZpY2lhbCBiaXJ0aGRhdGUgb2YgdGhlIG5ldyBzY2llbmNlLlwiWzM0MV0gUnVzc2VsbCBhbmQgTm9ydmlnIGNhbGxlZCB0aGUgY29uZmVyZW5jZSBcInRoZSBpbmNlcHRpb24gb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuXCJbMTE1XVxuXiBSdXNzZWxsIGFuZCBOb3J2aWcgd3JvdGUgXCJmb3IgdGhlIG5leHQgMjAgeWVhcnMgdGhlIGZpZWxkIHdvdWxkIGJlIGRvbWluYXRlZCBieSB0aGVzZSBwZW9wbGUgYW5kIHRoZWlyIHN0dWRlbnRzLlwiWzM0Ml1cbl4gUnVzc2VsbCBhbmQgTm9ydmlnIHdyb3RlLCBcIml0IHdhcyBhc3RvbmlzaGluZyB3aGVuZXZlciBhIGNvbXB1dGVyIGRpZCBhbnl0aGluZyBraW5kIG9mIHNtYXJ0aXNoXCIuWzM0M11cbl4gVGhlIHByb2dyYW1zIGRlc2NyaWJlZCBhcmUgQXJ0aHVyIFNhbXVlbCdzIGNoZWNrZXJzIHByb2dyYW0gZm9yIHRoZSBJQk0gNzAxLCBEYW5pZWwgQm9icm93J3MgU1RVREVOVCwgTmV3ZWxsIGFuZCBTaW1vbidzIExvZ2ljIFRoZW9yaXN0IGFuZCBUZXJyeSBXaW5vZ3JhZCdzIFNIUkRMVS5cbl4gUnVzc2VsbCBhbmQgTm9ydmlnIHdyaXRlOiBcImluIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXNlIGVhcmx5IHN5c3RlbXMgZmFpbGVkIG9uIG1vcmUgZGlmZmljdWx0IHByb2JsZW1zXCJbMzQ3XVxuXiBFbWJvZGllZCBhcHByb2FjaGVzIHRvIEFJWzM1NF0gd2VyZSBjaGFtcGlvbmVkIGJ5IEhhbnMgTW9yYXZlY1szNTVdIGFuZCBSb2RuZXkgQnJvb2tzWzM1Nl0gYW5kIHdlbnQgYnkgbWFueSBuYW1lczogTm91dmVsbGUgQUkuWzM1Nl0gRGV2ZWxvcG1lbnRhbCByb2JvdGljcy5bMzU3XVxuXiBNYXR0ZW8gV29uZyB3cm90ZSBpbiBUaGUgQXRsYW50aWM6IFwiV2hlcmVhcyBmb3IgZGVjYWRlcywgY29tcHV0ZXItc2NpZW5jZSBmaWVsZHMgc3VjaCBhcyBuYXR1cmFsLWxhbmd1YWdlIHByb2Nlc3NpbmcsIGNvbXB1dGVyIHZpc2lvbiwgYW5kIHJvYm90aWNzIHVzZWQgZXh0cmVtZWx5IGRpZmZlcmVudCBtZXRob2RzLCBub3cgdGhleSBhbGwgdXNlIGEgcHJvZ3JhbW1pbmcgbWV0aG9kIGNhbGxlZCBcImRlZXAgbGVhcm5pbmdcIi4gQXMgYSByZXN1bHQsIHRoZWlyIGNvZGUgYW5kIGFwcHJvYWNoZXMgaGF2ZSBiZWNvbWUgbW9yZSBzaW1pbGFyLCBhbmQgdGhlaXIgbW9kZWxzIGFyZSBlYXNpZXIgdG8gaW50ZWdyYXRlIGludG8gb25lIGFub3RoZXIuXCJbMzYzXVxuXiBKYWNrIENsYXJrIHdyb3RlIGluIEJsb29tYmVyZzogXCJBZnRlciBhIGhhbGYtZGVjYWRlIG9mIHF1aWV0IGJyZWFrdGhyb3VnaHMgaW4gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIDIwMTUgaGFzIGJlZW4gYSBsYW5kbWFyayB5ZWFyLiBDb21wdXRlcnMgYXJlIHNtYXJ0ZXIgYW5kIGxlYXJuaW5nIGZhc3RlciB0aGFuIGV2ZXJcIiwgYW5kIG5vdGVkIHRoYXQgdGhlIG51bWJlciBvZiBzb2Z0d2FyZSBwcm9qZWN0cyB0aGF0IHVzZSBtYWNoaW5lIGxlYXJuaW5nIGF0IEdvb2dsZSBpbmNyZWFzZWQgZnJvbSBhIFwic3BvcmFkaWMgdXNhZ2VcIiBpbiAyMDEyIHRvIG1vcmUgdGhhbiAyLDcwMCBwcm9qZWN0cyBpbiAyMDE1LlszNjVdXG5eIE5pbHMgTmlsc3NvbiB3cm90ZSBpbiAxOTgzOiBcIlNpbXBseSBwdXQsIHRoZXJlIGlzIHdpZGUgZGlzYWdyZWVtZW50IGluIHRoZSBmaWVsZCBhYm91dCB3aGF0IEFJIGlzIGFsbCBhYm91dC5cIlszODZdXG5eIERhbmllbCBDcmV2aWVyIHdyb3RlIHRoYXQgXCJ0aW1lIGhhcyBwcm92ZW4gdGhlIGFjY3VyYWN5IGFuZCBwZXJjZXB0aXZlbmVzcyBvZiBzb21lIG9mIERyZXlmdXMncyBjb21tZW50cy4gSGFkIGhlIGZvcm11bGF0ZWQgdGhlbSBsZXNzIGFnZ3Jlc3NpdmVseSwgY29uc3RydWN0aXZlIGFjdGlvbnMgdGhleSBzdWdnZXN0ZWQgbWlnaHQgaGF2ZSBiZWVuIHRha2VuIG11Y2ggZWFybGllci5cIlszOTFdXG5eIFNlYXJsZSBwcmVzZW50ZWQgdGhpcyBkZWZpbml0aW9uIG9mIFwiU3Ryb25nIEFJXCIgaW4gMTk5OS5bNDAxXSBTZWFybGUncyBvcmlnaW5hbCBmb3JtdWxhdGlvbiB3YXMgXCJUaGUgYXBwcm9wcmlhdGVseSBwcm9ncmFtbWVkIGNvbXB1dGVyIHJlYWxseSBpcyBhIG1pbmQsIGluIHRoZSBzZW5zZSB0aGF0IGNvbXB1dGVycyBnaXZlbiB0aGUgcmlnaHQgcHJvZ3JhbXMgY2FuIGJlIGxpdGVyYWxseSBzYWlkIHRvIHVuZGVyc3RhbmQgYW5kIGhhdmUgb3RoZXIgY29nbml0aXZlIHN0YXRlcy5cIls0MDJdIFN0cm9uZyBBSSBpcyBkZWZpbmVkIHNpbWlsYXJseSBieSBSdXNzZWxsIGFuZCBOb3J2aWc6IFwiU3RvbmcgQUkg4oCTIHRoZSBhc3NlcnRpb24gdGhhdCBtYWNoaW5lcyB0aGF0IGRvIHNvIGFyZSBhY3R1YWxseSB0aGlua2luZyAoYXMgb3Bwb3NlZCB0byBzaW11bGF0aW5nIHRoaW5raW5nKS5cIls0MDNdXG5SZWZlcmVuY2VzXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDHigJM0LlxuXiBBSSBzZXQgdG8gZXhjZWVkIGh1bWFuIGJyYWluIHBvd2VyIEFyY2hpdmVkIDIwMDgtMDItMTkgYXQgdGhlIFdheWJhY2sgTWFjaGluZSBDTk4uY29tIChKdWx5IDI2LCAyMDA2KVxuXiBLYXBsYW4sIEFuZHJlYXM7IEhhZW5sZWluLCBNaWNoYWVsICgyMDE5KS4gXCJTaXJpLCBTaXJpLCBpbiBteSBoYW5kOiBXaG8ncyB0aGUgZmFpcmVzdCBpbiB0aGUgbGFuZD8gT24gdGhlIGludGVycHJldGF0aW9ucywgaWxsdXN0cmF0aW9ucywgYW5kIGltcGxpY2F0aW9ucyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLiBCdXNpbmVzcyBIb3Jpem9ucy4gNjI6IDE14oCTMjUuIGRvaToxMC4xMDE2L2ouYnVzaG9yLjIwMTguMDguMDA0LiBJU1NOwqAwMDA3LTY4MTMuIFMyQ0lEwqAxNTg0MzM3MzYuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIEFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2U6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMzLigJMzMywgMTAyMOKAkzEwMjEpXG5Qcm9wb3NhbCBmb3IgdGhlIG1vZGVybiB2ZXJzaW9uOiBQZW5uYWNoaW4gJiBHb2VydHplbCAoMjAwNylcbldhcm5pbmdzIG9mIG92ZXJzcGVjaWFsaXphdGlvbiBpbiBBSSBmcm9tIGxlYWRpbmcgcmVzZWFyY2hlcnM6IE5pbHNzb24gKDE5OTUpLCBNY0NhcnRoeSAoMjAwNyksIEJlYWwgJiBXaW5zdG9uICgyMDA5KVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEuMikuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBEYXJ0bW91dGggd29ya3Nob3A6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAxOCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqAxMTHigJMxMzYpLCBOUkMgKDE5OTksIHBwLsKgMjAw4oCTMjAxKVxuVGhlIHByb3Bvc2FsOiBNY0NhcnRoeSBldCBhbC4gKDE5NTUpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBTdWNjZXNzZnVsIHByb2dyYW1zIG9mIHRoZSAxOTYwczogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDI0M+KAkzI1MiksIENyZXZpZXIgKDE5OTMsIHBwLsKgNTLigJMxMDcpLCBNb3JhdmVjICgxOTg4LCBwLsKgOSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMTnigJMyMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEZ1bmRpbmcgaW5pdGlhdGl2ZXMgaW4gdGhlIGVhcmx5IDE5ODBzOiBGaWZ0aCBHZW5lcmF0aW9uIFByb2plY3QgKEphcGFuKSwgQWx2ZXkgKFVLKSwgTWljcm9lbGVjdHJvbmljcyBhbmQgQ29tcHV0ZXIgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiAoVVMpLCBTdHJhdGVnaWMgQ29tcHV0aW5nIEluaXRpYXRpdmUgKFVTKTogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDQyNuKAkzQ0MSksIENyZXZpZXIgKDE5OTMsIHBwLsKgMTYx4oCTMTYyLCAxOTfigJMyMDMsIDIxMSwgMjQwKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDIzKSwgTlJDICgxOTk5LCBwcC7CoDIxMOKAkzIxMSksIE5ld3F1aXN0ICgxOTk0LCBwcC7CoDIzNeKAkzI0OClcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEZpcnN0IEFJIFdpbnRlciwgTGlnaHRoaWxsIHJlcG9ydCwgTWFuc2ZpZWxkIEFtZW5kbWVudDogQ3JldmllciAoMTk5MywgcHAuwqAxMTXigJMxMTcpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDIx4oCTMjIpLCBOUkMgKDE5OTksIHBwLsKgMjEy4oCTMjEzKSwgSG93ZSAoMTk5NCksIE5ld3F1aXN0ICgxOTk0LCBwcC7CoDE4OeKAkzIwMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFNlY29uZCBBSSBXaW50ZXI6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA0MzDigJM0MzUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDIwOeKAkzIxMCksIE5SQyAoMTk5OSwgcHAuwqAyMTTigJMyMTYpLCBOZXdxdWlzdCAoMTk5NCwgcHAuwqAzMDHigJMzMTgpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBEZWVwIGxlYXJuaW5nIHJldm9sdXRpb24sIEFsZXhOZXQ6IEdvbGRtYW4gKDIwMjIpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMjYpLCBNY0tpbnNleSAoMjAxOClcbl4gVG9ld3MgKDIwMjMpLlxuXiBQcm9ibGVtLXNvbHZpbmcsIHB1enpsZSBzb2x2aW5nLCBnYW1lIHBsYXlpbmcsIGFuZCBkZWR1Y3Rpb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDPigJM1KSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNikgKGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgY2hwdC4gMiwgMywgNywgOSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBjaHB0LiAzLCA0LCA2LCA4KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gN+KAkzEyKVxuXiBVbmNlcnRhaW4gcmVhc29uaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxMuKAkzE4KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzNDXigJMzOTUpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzMzPigJMzODEpLCBOaWxzc29uICgxOTk4LCBjaHB0LiA34oCTMTIpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIEludHJhY3RhYmlsaXR5IGFuZCBlZmZpY2llbmN5IGFuZCB0aGUgY29tYmluYXRvcmlhbCBleHBsb3Npb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyMSlcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgUHN5Y2hvbG9naWNhbCBldmlkZW5jZSBvZiB0aGUgcHJldmFsZW5jZSBvZiBzdWItc3ltYm9saWMgcmVhc29uaW5nIGFuZCBrbm93bGVkZ2U6IEthaG5lbWFuICgyMDExKSwgRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpLCBXYXNvbiAmIFNoYXBpcm8gKDE5NjYpLCBLYWhuZW1hbiwgU2xvdmljICYgVHZlcnNreSAoMTk4Milcbl4gS25vd2xlZGdlIHJlcHJlc2VudGF0aW9uIGFuZCBrbm93bGVkZ2UgZW5naW5lZXJpbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDEwKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAyM+KAkzQ2LCA2OeKAkzgxLCAxNjnigJMyMzMsIDIzNeKAkzI3NywgMjgx4oCTMjk4LCAzMTnigJMzNDUpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAyMjfigJMyNDMpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxNy4x4oCTMTcuNCwgMTgpXG5eIFNtb2xpYXIgJiBaaGFuZyAoMTk5NCkuXG5eIE5ldW1hbm4gJiBNw7ZsbGVyICgyMDA4KS5cbl4gS3VwZXJtYW4sIFJlaWNobGV5ICYgQmFpbGV5ICgyMDA2KS5cbl4gTWNHYXJyeSAoMjAwNSkuXG5eIEJlcnRpbmksIERlbCBCaW1ibyAmIFRvcm5pYWkgKDIwMDYpLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqAyNzIuXG5eIFJlcHJlc2VudGluZyBjYXRlZ29yaWVzIGFuZCByZWxhdGlvbnM6IFNlbWFudGljIG5ldHdvcmtzLCBkZXNjcmlwdGlvbiBsb2dpY3MsIGluaGVyaXRhbmNlIChpbmNsdWRpbmcgZnJhbWVzLCBhbmQgc2NyaXB0cyk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIMKnMTAuMiAmIDEwLjUpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDE3NOKAkzE3NyksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDI0OOKAkzI1OCksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE4LjMpXG5eIFJlcHJlc2VudGluZyBldmVudHMgYW5kIHRpbWU6U2l0dWF0aW9uIGNhbGN1bHVzLCBldmVudCBjYWxjdWx1cywgZmx1ZW50IGNhbGN1bHVzIChpbmNsdWRpbmcgc29sdmluZyB0aGUgZnJhbWUgcHJvYmxlbSk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIMKnMTAuMyksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMjgx4oCTMjk4KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTguMilcbl4gQ2F1c2FsIGNhbGN1bHVzOiBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDMzNeKAkzMzNylcbl4gUmVwcmVzZW50aW5nIGtub3dsZWRnZSBhYm91dCBrbm93bGVkZ2U6IEJlbGllZiBjYWxjdWx1cywgbW9kYWwgbG9naWNzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEwLjQpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI3NeKAkzI3Nylcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIERlZmF1bHQgcmVhc29uaW5nLCBGcmFtZSBwcm9ibGVtLCBkZWZhdWx0IGxvZ2ljLCBub24tbW9ub3RvbmljIGxvZ2ljcywgY2lyY3Vtc2NyaXB0aW9uLCBjbG9zZWQgd29ybGQgYXNzdW1wdGlvbiwgYWJkdWN0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCDCpzEwLjYpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI0OOKAkzI1NiwgMzIz4oCTMzM1KSwgTHVnZXIgJiBTdHViYmxlZmllbGQgKDIwMDQsIHBwLsKgMzM14oCTMzYzKSwgTmlsc3NvbiAoMTk5OCwgfjE4LjMuMykgKFBvb2xlIGV0IGFsLiBwbGFjZXMgYWJkdWN0aW9uIHVuZGVyIFwiZGVmYXVsdCByZWFzb25pbmdcIi4gTHVnZXIgZXQgYWwuIHBsYWNlcyB0aGlzIHVuZGVyIFwidW5jZXJ0YWluIHJlYXNvbmluZ1wiKS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJyZWFkdGggb2YgY29tbW9uc2Vuc2Uga25vd2xlZGdlOiBMZW5hdCAmIEd1aGEgKDE5ODksIEludHJvZHVjdGlvbiksIENyZXZpZXIgKDE5OTMsIHBwLsKgMTEz4oCTMTE0KSwgTW9yYXZlYyAoMTk4OCwgcC7CoDEzKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqAyNDEsIDM4NSwgOTgyKSAocXVhbGlmaWNhdGlvbiBwcm9ibGVtKVxuXiBOZXdxdWlzdCAoMTk5NCksIHAuwqAyOTYuXG5eIENyZXZpZXIgKDE5OTMpLCBwcC7CoDIwNOKAkzIwOC5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqA1MjguXG5eIEF1dG9tYXRlZCBwbGFubmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTEpLlxuXiBBdXRvbWF0ZWQgZGVjaXNpb24gbWFraW5nLCBEZWNpc2lvbiB0aGVvcnk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDE24oCTMTgpLlxuXiBDbGFzc2ljYWwgcGxhbm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMTEuMikuXG5eIFNlbnNvcmxlc3Mgb3IgXCJjb25mb3JtYW50XCIgcGxhbm5pbmcsIGNvbnRpbmdlbnQgcGxhbm5pbmcsIHJlcGxhbm5pbmcgKGEuay5hIG9ubGluZSBwbGFubmluZyk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMTEuNSkuXG5eIFVuY2VydGFpbiBwcmVmZXJlbmNlczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgU2VjdGlvbiAxNi43KSBJbnZlcnNlIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIFNlY3Rpb24gMjIuNilcbl4gSW5mb3JtYXRpb24gdmFsdWUgdGhlb3J5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBTZWN0aW9uIDE2LjYpLlxuXiBNYXJrb3YgZGVjaXNpb24gcHJvY2VzczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTcpLlxuXiBHYW1lIHRoZW9yeSBhbmQgbXVsdGktYWdlbnQgZGVjaXNpb24gdGhlb3J5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxOCkuXG5eIExlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxOeKAkzIyKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzOTfigJM0MzgpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzODXigJM1NDIpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAzLjMsIDEwLjMsIDE3LjUsIDIwKVxuXiBUdXJpbmcgKDE5NTApLlxuXiBTb2xvbW9ub2ZmICgxOTU2KS5cbl4gVW5zdXBlcnZpc2VkIGxlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDY1MykgKGRlZmluaXRpb24pLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDczOOKAkzc0MCkgKGNsdXN0ZXIgYW5hbHlzaXMpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDg0NuKAkzg2MCkgKHdvcmQgZW1iZWRkaW5nKVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU3VwZXJ2aXNlZCBsZWFybmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgwqcxOS4yKSAoRGVmaW5pdGlvbiksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIENocHQuIDE54oCTMjApIChUZWNobmlxdWVzKVxuXiBSZWluZm9yY2VtZW50IGxlYXJuaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ0MuKAkzQ0OSlcbl4gVHJhbnNmZXIgbGVhcm5pbmc6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjgxKSwgVGhlIEVjb25vbWlzdCAoMjAxNilcbl4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoQUkpOiBXaGF0IElzIEFJIGFuZCBIb3cgRG9lcyBJdCBXb3JrPyB8IEJ1aWx0IEluXCIuIGJ1aWx0aW4uY29tLiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDIzLlxuXiBDb21wdXRhdGlvbmFsIGxlYXJuaW5nIHRoZW9yeTogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA2NzLigJM2NzQpLCBKb3JkYW4gJiBNaXRjaGVsbCAoMjAxNSlcbl4gTmF0dXJhbCBsYW5ndWFnZSBwcm9jZXNzaW5nIChOTFApOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyM+KAkzI0KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqA5MeKAkzEwNCksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDU5MeKAkzYzMilcbl4gU3VicHJvYmxlbXMgb2YgTkxQOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDg0OeKAkzg1MClcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHBwLsKgODU24oCTODU4LlxuXiBEaWNrc29uICgyMDIyKS5cbl4gTW9kZXJuIHN0YXRpc3RpY2FsIGFuZCBkZWVwIGxlYXJuaW5nIGFwcHJvYWNoZXMgdG8gTkxQOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAyNCksIENhbWJyaWEgJiBXaGl0ZSAoMjAxNClcbl4gVmluY2VudCAoMjAxOSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDg3NeKAkzg3OC5cbl4gQnVzaHdpY2sgKDIwMjMpLlxuXiBDb21wdXRlciB2aXNpb246IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDI1KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gNilcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHBwLsKgODQ54oCTODUwLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA4OTXigJM4OTkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDg5OeKAkzkwMS5cbl4gQ2hhbGxhIGV0IGFsLiAoMjAxMSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwcC7CoDkzMeKAkzkzOC5cbl4gTUlUIEFJTCAoMjAxNCkuXG5eIEFmZmVjdGl2ZSBjb21wdXRpbmc6IFRocm8gKDE5OTMpLCBFZGVsc29uICgxOTkxKSwgVGFvICYgVGFuICgyMDA1KSwgU2Nhc3NlbGxhdGkgKDIwMDIpXG5eIFdhZGRlbGwgKDIwMTgpLlxuXiBQb3JpYSBldCBhbC4gKDIwMTcpLlxuXiBTZWFyY2ggYWxnb3JpdGhtczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdHMuIDPigJM1KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAxMTPigJMxNjMpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqA3OeKAkzE2NCwgMTkz4oCTMjE5KSwgTmlsc3NvbiAoMTk5OCwgY2hwdHMuIDfigJMxMilcbl4gU3RhdGUgc3BhY2Ugc2VhcmNoOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAzKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgc2VjdC4gMTEuMi5cbl4gVW5pbmZvcm1lZCBzZWFyY2hlcyAoYnJlYWR0aCBmaXJzdCBzZWFyY2gsIGRlcHRoLWZpcnN0IHNlYXJjaCBhbmQgZ2VuZXJhbCBzdGF0ZSBzcGFjZSBzZWFyY2gpOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAzLjQpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDExM+KAkzEzMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDc54oCTMTIxKSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gOClcbl4gSGV1cmlzdGljIG9yIGluZm9ybWVkIHNlYXJjaGVzIChlLmcuLCBncmVlZHkgYmVzdCBmaXJzdCBhbmQgQSopOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAzLjUpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDEzMuKAkzE0NyksIFBvb2xlICYgTWFja3dvcnRoICgyMDE3LCBzZWN0LiAzLjYpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAxMzPigJMxNTApXG5eIEFkdmVyc2FyaWFsIHNlYXJjaDogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNSlcbl4gTG9jYWwgb3IgXCJvcHRpbWl6YXRpb25cIiBzZWFyY2g6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDQpXG5eIFNpbmdoIENoYXVoYW4sIE5hZ2VzaCAoMTggRGVjZW1iZXIgMjAyMCkuIFwiT3B0aW1pemF0aW9uIEFsZ29yaXRobXMgaW4gTmV1cmFsIE5ldHdvcmtzXCIuIEtEbnVnZ2V0cy4gUmV0cmlldmVkIDEzIEphbnVhcnkgMjAyNC5cbl4gRXZvbHV0aW9uYXJ5IGNvbXB1dGF0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiA0LjEuMilcbl4gTWVya2xlICYgTWlkZGVuZG9yZiAoMjAxMykuXG5eIExvZ2ljOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0cy4gNuKAkzkpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqAzNeKAkzc3KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTPigJMxNilcbl4gUHJvcG9zaXRpb25hbCBsb2dpYzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gNiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ14oCTNTApLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxMylcbl4gRmlyc3Qtb3JkZXIgbG9naWMgYW5kIGZlYXR1cmVzIHN1Y2ggYXMgZXF1YWxpdHk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDcpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDI2OOKAkzI3NSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDUw4oCTNjIpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxNSlcbl4gTG9naWNhbCBpbmZlcmVuY2U6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDEwKVxuXiBsb2dpY2FsIGRlZHVjdGlvbiBhcyBzZWFyY2g6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3RzLiA5LjMsIDkuNCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgfjQ24oCTNTIpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqA2MuKAkzczKSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gNC4yLCA3LjIpXG5eIFJlc29sdXRpb24gYW5kIHVuaWZpY2F0aW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0aW9ucyA3LjUuMiwgOS4yLCA5LjUpXG5eIFdhcnJlbiwgRC5ILjsgUGVyZWlyYSwgTC5NLjsgUGVyZWlyYSwgRi4gKDE5NzcpLiBcIlByb2xvZy10aGUgbGFuZ3VhZ2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiBjb21wYXJlZCB3aXRoIExpc3BcIi4gQUNNIFNJR1BMQU4gTm90aWNlcy4gMTIgKDgpOiAxMDnigJMxMTUuIGRvaToxMC4xMTQ1Lzg3MjczNC44MDY5MzkuXG5eIEZ1enp5IGxvZ2ljOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDIxNCwgMjU1LCA0NTkpLCBTY2llbnRpZmljIEFtZXJpY2FuICgxOTk5KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU3RvY2hhc3RpYyBtZXRob2RzIGZvciB1bmNlcnRhaW4gcmVhc29uaW5nOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBjaHB0LiAxMuKAkzE4LCAyMCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMzQ14oCTMzk1KSwgTHVnZXIgJiBTdHViYmxlZmllbGQgKDIwMDQsIHBwLsKgMTY14oCTMTkxLCAzMzPigJMzODEpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAxOSlcbl4gZGVjaXNpb24gdGhlb3J5IGFuZCBkZWNpc2lvbiBhbmFseXNpczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTbigJMxOCksIFBvb2xlLCBNYWNrd29ydGggJiBHb2ViZWwgKDE5OTgsIHBwLsKgMzgx4oCTMzk0KVxuXiBJbmZvcm1hdGlvbiB2YWx1ZSB0aGVvcnk6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE2LjYpXG5eIE1hcmtvdiBkZWNpc2lvbiBwcm9jZXNzZXMgYW5kIGR5bmFtaWMgZGVjaXNpb24gbmV0d29ya3M6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDE3KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBTdG9jaGFzdGljIHRlbXBvcmFsIG1vZGVsczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTQpIEhpZGRlbiBNYXJrb3YgbW9kZWw6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE0LjMpIEthbG1hbiBmaWx0ZXJzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNC40KSBEeW5hbWljIEJheWVzaWFuIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNC41KVxuXiBHYW1lIHRoZW9yeSBhbmQgbWVjaGFuaXNtIGRlc2lnbjogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMTgpXG5eIEJheWVzaWFuIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0cy4gMTIuNeKAkzEyLjYsIDEzLjTigJMxMy41LCAxNC4z4oCTMTQuNSwgMTYuNSwgMjAuMuKAkzIwLjMpLCBQb29sZSwgTWFja3dvcnRoICYgR29lYmVsICgxOTk4LCBwcC7CoDM2MeKAkzM4MSksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoH4xODLigJMxOTAsIOKJiDM2M+KAkzM3OSksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE5LjPigJMxOS40KVxuXiBEb21pbmdvcyAoMjAxNSksIGNocHQuIDYuXG5eIEJheWVzaWFuIGluZmVyZW5jZSBhbGdvcml0aG06IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDEzLjPigJMxMy41KSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqAzNjHigJMzODEpLCBMdWdlciAmIFN0dWJibGVmaWVsZCAoMjAwNCwgcHAuwqB+MzYz4oCTMzc5KSwgTmlsc3NvbiAoMTk5OCwgY2hwdC4gMTkuNCAmIDcpXG5eIERvbWluZ29zICgyMDE1KSwgcC7CoDIxMC5cbl4gQmF5ZXNpYW4gbGVhcm5pbmcgYW5kIHRoZSBleHBlY3RhdGlvbuKAk21heGltaXphdGlvbiBhbGdvcml0aG06IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDIwKSwgUG9vbGUsIE1hY2t3b3J0aCAmIEdvZWJlbCAoMTk5OCwgcHAuwqA0MjTigJM0MzMpLCBOaWxzc29uICgxOTk4LCBjaHB0LiAyMCksIERvbWluZ29zICgyMDE1LCBwLsKgMjEwKVxuXiBCYXllc2lhbiBkZWNpc2lvbiB0aGVvcnkgYW5kIEJheWVzaWFuIGRlY2lzaW9uIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxNi41KVxuXiBTdGF0aXN0aWNhbCBsZWFybmluZyBtZXRob2RzIGFuZCBjbGFzc2lmaWVyczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMjApLFxuXiBDaWFyYW1lbGxhLCBBbGJlcnRvOyBDaWFyYW1lbGxhLCBNYXJjbyAoMjAyNCkuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogZnJvbSBkYXRhIGFuYWx5c2lzIHRvIGdlbmVyYXRpdmUgQUkuIEludGVsbGlzZW1hbnRpYyBFZGl0aW9ucy4gSVNCTsKgOTc4LTgtODk0Ny04NzYwLTMuXG5eIERlY2lzaW9uIHRyZWVzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxOS4zKSwgRG9taW5nb3MgKDIwMTUsIHAuwqA4OClcbl4gTm9uLXBhcmFtZXRlcmljIGxlYXJuaW5nIG1vZGVscyBzdWNoIGFzIEstbmVhcmVzdCBuZWlnaGJvciBhbmQgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZXM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHNlY3QuIDE5LjcpLCBEb21pbmdvcyAoMjAxNSwgcC7CoDE4NykgKGstbmVhcmVzdCBuZWlnaGJvcilcbkRvbWluZ29zICgyMDE1LCBwLsKgODgpIChrZXJuZWwgbWV0aG9kcylcbl4gRG9taW5nb3MgKDIwMTUpLCBwLsKgMTUyLlxuXiBOYWl2ZSBCYXllcyBjbGFzc2lmaWVyOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAxMi42KSwgRG9taW5nb3MgKDIwMTUsIHAuwqAxNTIpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBOZXVyYWwgbmV0d29ya3M6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIGNocHQuIDIxKSwgRG9taW5nb3MgKDIwMTUsIENoYXB0ZXIgNClcbl4gR3JhZGllbnQgY2FsY3VsYXRpb24gaW4gY29tcHV0YXRpb25hbCBncmFwaHMsIGJhY2twcm9wYWdhdGlvbiwgYXV0b21hdGljIGRpZmZlcmVudGlhdGlvbjogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuMiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDQ2N+KAkzQ3NCksIE5pbHNzb24gKDE5OTgsIGNocHQuIDMuMylcbl4gVW5pdmVyc2FsIGFwcHJveGltYXRpb24gdGhlb3JlbTogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDc1MikgVGhlIHRoZW9yZW06IEN5YmVua28gKDE5ODgpLCBIb3JuaWssIFN0aW5jaGNvbWJlICYgV2hpdGUgKDE5ODkpXG5eIEZlZWRmb3J3YXJkIG5ldXJhbCBuZXR3b3JrczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuMSlcbl4gUmVjdXJyZW50IG5ldXJhbCBuZXR3b3JrczogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgc2VjdC4gMjEuNilcbl4gUGVyY2VwdHJvbnM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjEsIDIyLCA2ODMsIDIyKVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgRGVlcCBsZWFybmluZzogUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgY2hwdC4gMjEpLCBHb29kZmVsbG93LCBCZW5naW8gJiBDb3VydmlsbGUgKDIwMTYpLCBIaW50b24gZXQgYWwuICgyMDE2KSwgU2NobWlkaHViZXIgKDIwMTUpXG5eIENvbnZvbHV0aW9uYWwgbmV1cmFsIG5ldHdvcmtzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBzZWN0LiAyMS4zKVxuXiBEZW5nICYgWXUgKDIwMTQpLCBwcC7CoDE5OeKAkzIwMC5cbl4gQ2lyZXNhbiwgTWVpZXIgJiBTY2htaWRodWJlciAoMjAxMikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgNzUxLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDE3LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBkIGUgZiBnIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgNzg1LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU2NobWlkaHViZXIgKDIwMjIpLCBzZWN0LiA1LlxuXiBTY2htaWRodWJlciAoMjAyMiksIHNlY3QuIDYuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIFNjaG1pZGh1YmVyICgyMDIyKSwgc2VjdC4gNy5cbl4gU2NobWlkaHViZXIgKDIwMjIpLCBzZWN0LiA4LlxuXiBRdW90ZWQgaW4gQ2hyaXN0aWFuICgyMDIwLCBwLsKgMjIpXG5eIFNtaXRoICgyMDIzKS5cbl4gXCJFeHBsYWluZWQ6IEdlbmVyYXRpdmUgQUlcIi4gOSBOb3ZlbWJlciAyMDIzLlxuXiBcIkFJIFdyaXRpbmcgYW5kIENvbnRlbnQgQ3JlYXRpb24gVG9vbHNcIi4gTUlUIFNsb2FuIFRlYWNoaW5nICYgTGVhcm5pbmcgVGVjaG5vbG9naWVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBEZWNlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMjUgRGVjZW1iZXIgMjAyMy5cbl4gTWFybW91eWV0ICgyMDIzKS5cbl4gS29iaWVsdXMgKDIwMTkpLlxuXiBUaG9tYXNvbiwgSmFtZXMgKDIxIE1heSAyMDI0KS4gXCJNb2pvIFJpc2luZzogVGhlIHJlc3VyZ2VuY2Ugb2YgQUktZmlyc3QgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzXCIuIFZlbnR1cmVCZWF0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNyBKdW5lIDIwMjQuIFJldHJpZXZlZCAyNiBNYXkgMjAyNC5cbl4gV29kZWNraSwgQmVuICg1IE1heSAyMDIzKS4gXCI3IEFJIFByb2dyYW1taW5nIExhbmd1YWdlcyBZb3UgTmVlZCB0byBLbm93XCIuIEFJIEJ1c2luZXNzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBKdWx5IDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gUGx1bWIsIFRhcnluICgxOCBTZXB0ZW1iZXIgMjAyNCkuIFwiV2h5IEplbnNlbiBIdWFuZyBhbmQgTWFyYyBCZW5pb2ZmIHNlZSAnZ2lnYW50aWMnIG9wcG9ydHVuaXR5IGZvciBhZ2VudGljIEFJXCIuIFZlbnR1cmVCZWF0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDQgT2N0b2JlciAyMDI0LlxuXiBNaW1zLCBDaHJpc3RvcGhlciAoMTkgU2VwdGVtYmVyIDIwMjApLiBcIkh1YW5nJ3MgTGF3IElzIHRoZSBOZXcgTW9vcmUncyBMYXcsIGFuZCBFeHBsYWlucyBXaHkgTnZpZGlhIFdhbnRzIEFybVwiLiBXYWxsIFN0cmVldCBKb3VybmFsLiBJU1NOwqAwMDk5LTk2NjAuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIgT2N0b2JlciAyMDIzLiBSZXRyaWV2ZWQgMTkgSmFudWFyeSAyMDI1LlxuXiBEYXZlbnBvcnQsIFQ7IEthbGFrb3RhLCBSIChKdW5lIDIwMTkpLiBcIlRoZSBwb3RlbnRpYWwgZm9yIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIGhlYWx0aGNhcmVcIi4gRnV0dXJlIEhlYWx0aGMgSi4gNiAoMik6IDk04oCTOTguIGRvaToxMC43ODYxL2Z1dHVyZWhvc3AuNi0yLTk0LiBQTUPCoDY2MTYxODEuIFBNSUTCoDMxMzYzNTEzLlxuXiBMeWFraG92YSwgVS5BLjsgTHlha2hvdiwgUC5BLiAoMjAyNCkuIFwiU3lzdGVtYXRpYyByZXZpZXcgb2YgYXBwcm9hY2hlcyB0byBkZXRlY3Rpb24gYW5kIGNsYXNzaWZpY2F0aW9uIG9mIHNraW4gY2FuY2VyIHVzaW5nIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOiBEZXZlbG9wbWVudCBhbmQgcHJvc3BlY3RzXCIuIENvbXB1dGVycyBpbiBCaW9sb2d5IGFuZCBNZWRpY2luZS4gMTc4OiAxMDg3NDIuIGRvaToxMC4xMDE2L2ouY29tcGJpb21lZC4yMDI0LjEwODc0Mi4gUE1JRMKgMzg4NzU5MDguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDEwIE9jdG9iZXIgMjAyNC5cbl4gQWxxdWRhaWhpLCBLYXd0aGVyIFMuOyBBc2xhbSwgTmlkYTsgS2hhbiwgSXJmYW4gVWxsYWg7IEFsbXVoYWlkZWIsIEFiZHVsbGFoIE0uOyBBbHN1bmFpZGksIFNoaWthaCBKLjsgSWJyYWhpbSwgTmVoYWQgTS4gQWJkZWwgUmFobWFuOyBBbGhhaWRhcmksIEZhaGQgQS47IFNoYWlraCwgRmF0ZW1hIFMuOyBBbHNlbmJlbCwgWWFzbWluZSBNLjsgQWxhbGhhcml0aCwgRGltYSBNLjsgQWxoYXJ0aGksIEhhamFyIE0uOyBBbGdoYW1kaSwgV2VqZGFuIE0uOyBBbHNoYWhyYW5pLCBNb2hhbW1lZCBTLiAoMjAyMSkuIFwiQ291Z2ggU291bmQgRGV0ZWN0aW9uIGFuZCBEaWFnbm9zaXMgVXNpbmcgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgVGVjaG5pcXVlczogQ2hhbGxlbmdlcyBhbmQgT3Bwb3J0dW5pdGllc1wiLiBJRUVFIEFjY2Vzcy4gOTogMTAyMzI34oCTMTAyMzQ0LiBCaWJjb2RlOjIwMjFJRUVFQS4uLjlqMjMyN0EuIGRvaToxMC4xMTA5L0FDQ0VTUy4yMDIxLjMwOTc1NTkuIElTU07CoDIxNjktMzUzNi4gUE1DwqA4NTQ1MjAxLiBQTUlEwqAzNDc4NjMxNy5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJheCwgTW9uaXF1ZTsgVGhvcnBlLCBKb3JkYW47IFJvbWFub3YsIFZhbGVudGluIChEZWNlbWJlciAyMDIzKS4gXCJUaGUgZnV0dXJlIG9mIHBlcnNvbmFsaXplZCBjYXJkaW92YXNjdWxhciBtZWRpY2luZSBkZW1hbmRzIDNEIGFuZCA0RCBwcmludGluZywgc3RlbSBjZWxscywgYW5kIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIuIEZyb250aWVycyBpbiBTZW5zb3JzLiA0LiBkb2k6MTAuMzM4OS9mc2Vucy4yMDIzLjEyOTQ3MjEuIElTU07CoDI2NzMtNTA2Ny5cbl4gSnVtcGVyLCBKOyBFdmFucywgUjsgUHJpdHplbCwgQSAoMjAyMSkuIFwiSGlnaGx5IGFjY3VyYXRlIHByb3RlaW4gc3RydWN0dXJlIHByZWRpY3Rpb24gd2l0aCBBbHBoYUZvbGRcIi4gTmF0dXJlLiA1OTYgKDc4NzMpOiA1ODPigJM1ODkuIEJpYmNvZGU6MjAyMU5hdHVyLjU5Ni4uNTgzSi4gZG9pOjEwLjEwMzgvczQxNTg2LTAyMS0wMzgxOS0yLiBQTUPCoDgzNzE2MDUuIFBNSUTCoDM0MjY1ODQ0LlxuXiBcIkFJIGRpc2NvdmVycyBuZXcgY2xhc3Mgb2YgYW50aWJpb3RpY3MgdG8ga2lsbCBkcnVnLXJlc2lzdGFudCBiYWN0ZXJpYVwiLiAyMCBEZWNlbWJlciAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkFJIHNwZWVkcyB1cCBkcnVnIGRlc2lnbiBmb3IgUGFya2luc29uJ3MgdGVuLWZvbGRcIi4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkuIDE3IEFwcmlsIDIwMjQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIEhvcm5lLCBSb2JlcnQgSS47IEFuZHJ6ZWpld3NrYSwgRXdhIEEuOyBBbGFtLCBQYXJ2ZXo7IEJyb3R6YWtpcywgWi4gRmFpZG9uOyBTcml2YXN0YXZhLCBBbmtpdDsgQXViZXJ0LCBBbGljZTsgTm93aW5za2EsIE1hZ2RhbGVuYTsgR3JlZ29yeSwgUmViZWNjYSBDLjsgU3RhYXRzLCBSb3hpbmU7IFBvc3NlbnRpLCBBbmRyZWE7IENoaWEsIFNlYW47IFNvcm1hbm5pLCBQaWV0cm87IEdoZXR0aSwgQmVybmFyZGlubzsgQ2F1Z2hleSwgQnlyb247IEtub3dsZXMsIFR1b21hcyBQLiBKLjsgVmVuZHJ1c2NvbG8sIE1pY2hlbGUgKDE3IEFwcmlsIDIwMjQpLiBcIkRpc2NvdmVyeSBvZiBwb3RlbnQgaW5oaWJpdG9ycyBvZiDOsS1zeW51Y2xlaW4gYWdncmVnYXRpb24gdXNpbmcgc3RydWN0dXJlLWJhc2VkIGl0ZXJhdGl2ZSBsZWFybmluZ1wiLiBOYXR1cmUgQ2hlbWljYWwgQmlvbG9neS4gMjAgKDUpLiBOYXR1cmU6IDYzNOKAkzY0NS4gZG9pOjEwLjEwMzgvczQxNTg5LTAyNC0wMTU4MC14LiBQTUPCoDExMDYyOTAzLiBQTUlEwqAzODYzMjQ5Mi5cbl4gR3JhbnQsIEV1Z2VuZSBGLjsgTGFyZG5lciwgUmV4ICgyNSBKdWx5IDE5NTIpLiBcIlRoZSBUYWxrIG9mIHRoZSBUb3duIOKAkyBJdFwiLiBUaGUgTmV3IFlvcmtlci4gSVNTTsKgMDAyOC03OTJYLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBGZWJydWFyeSAyMDIwLiBSZXRyaWV2ZWQgMjggSmFudWFyeSAyMDI0LlxuXiBBbmRlcnNvbiwgTWFyayBSb2JlcnQgKDExIE1heSAyMDE3KS4gXCJUd2VudHkgeWVhcnMgb24gZnJvbSBEZWVwIEJsdWUgdnMgS2FzcGFyb3Y6IGhvdyBhIGNoZXNzIG1hdGNoIHN0YXJ0ZWQgdGhlIGJpZyBkYXRhIHJldm9sdXRpb25cIi4gVGhlIENvbnZlcnNhdGlvbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCAyOCBKYW51YXJ5IDIwMjQuXG5eIE1hcmtvZmYsIEpvaG4gKDE2IEZlYnJ1YXJ5IDIwMTEpLiBcIkNvbXB1dGVyIFdpbnMgb24gJ0plb3BhcmR5ISc6IFRyaXZpYWwsIEl0J3MgTm90XCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMiBPY3RvYmVyIDIwMTQuIFJldHJpZXZlZCAyOCBKYW51YXJ5IDIwMjQuXG5eIEJ5Zm9yZCwgU2FtICgyNyBNYXkgMjAxNykuIFwiQWxwaGFHbyByZXRpcmVzIGZyb20gY29tcGV0aXRpdmUgR28gYWZ0ZXIgZGVmZWF0aW5nIHdvcmxkIG51bWJlciBvbmUgM+KAkzBcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IEp1bmUgMjAxNy4gUmV0cmlldmVkIDI4IEphbnVhcnkgMjAyNC5cbl4gQnJvd24sIE5vYW07IFNhbmRob2xtLCBUdW9tYXMgKDMwIEF1Z3VzdCAyMDE5KS4gXCJTdXBlcmh1bWFuIEFJIGZvciBtdWx0aXBsYXllciBwb2tlclwiLiBTY2llbmNlLiAzNjUgKDY0NTYpOiA4ODXigJM4OTAuIEJpYmNvZGU6MjAxOVNjaS4uLjM2NS4uODg1Qi4gZG9pOjEwLjExMjYvc2NpZW5jZS5hYXkyNDAwLiBJU1NOwqAwMDM2LTgwNzUuIFBNSUTCoDMxMjk2NjUwLlxuXiBcIk11WmVybzogTWFzdGVyaW5nIEdvLCBjaGVzcywgc2hvZ2kgYW5kIEF0YXJpIHdpdGhvdXQgcnVsZXNcIi4gR29vZ2xlIERlZXBNaW5kLiAyMyBEZWNlbWJlciAyMDIwLiBSZXRyaWV2ZWQgMjggSmFudWFyeSAyMDI0LlxuXiBTYW1wbGUsIElhbiAoMzAgT2N0b2JlciAyMDE5KS4gXCJBSSBiZWNvbWVzIGdyYW5kbWFzdGVyIGluICdmaWVuZGlzaGx5IGNvbXBsZXgnIFN0YXJDcmFmdCBJSVwiLiBUaGUgR3VhcmRpYW4uIElTU07CoDAyNjEtMzA3Ny4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjkgRGVjZW1iZXIgMjAyMC4gUmV0cmlldmVkIDI4IEphbnVhcnkgMjAyNC5cbl4gV3VybWFuLCBQLiBSLjsgQmFycmV0dCwgUy47IEthd2Ftb3RvLCBLLiAoMjAyMikuIFwiT3V0cmFjaW5nIGNoYW1waW9uIEdyYW4gVHVyaXNtbyBkcml2ZXJzIHdpdGggZGVlcCByZWluZm9yY2VtZW50IGxlYXJuaW5nXCIgKFBERikuIE5hdHVyZS4gNjAyICg3ODk2KTogMjIz4oCTMjI4LiBCaWJjb2RlOjIwMjJOYXR1ci42MDIuLjIyM1cuIGRvaToxMC4xMDM4L3M0MTU4Ni0wMjEtMDQzNTctNy4gUE1JRMKgMzUxNDAzODQuXG5eIFdpbGtpbnMsIEFsZXggKDEzIE1hcmNoIDIwMjQpLiBcIkdvb2dsZSBBSSBsZWFybnMgdG8gcGxheSBvcGVuLXdvcmxkIHZpZGVvIGdhbWVzIGJ5IHdhdGNoaW5nIHRoZW1cIi4gTmV3IFNjaWVudGlzdC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDI0LiBSZXRyaWV2ZWQgMjEgSnVseSAyMDI0LlxuXiBcIkltcHJvdmluZyBtYXRoZW1hdGljYWwgcmVhc29uaW5nIHdpdGggcHJvY2VzcyBzdXBlcnZpc2lvblwiLiBPcGVuQUkuIDMxIE1heSAyMDIzLiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI1LlxuXiBTcml2YXN0YXZhLCBTYXVyYWJoICgyOSBGZWJydWFyeSAyMDI0KS4gXCJGdW5jdGlvbmFsIEJlbmNobWFya3MgZm9yIFJvYnVzdCBFdmFsdWF0aW9uIG9mIFJlYXNvbmluZyBQZXJmb3JtYW5jZSwgYW5kIHRoZSBSZWFzb25pbmcgR2FwXCIuIGFyWGl2OjI0MDIuMTk0NTAgW2NzLkFJXS5cbl4gTGlnaHRtYW4sIEh1bnRlcjsgS29zYXJhanUsIFZpbmVldDsgQnVyZGEsIFl1cmE7IEVkd2FyZHMsIEhhcnJpOyBCYWtlciwgQm93ZW47IExlZSwgVGVkZHk7IExlaWtlLCBKYW47IFNjaHVsbWFuLCBKb2huOyBTdXRza2V2ZXIsIElseWE7IENvYmJlLCBLYXJsICgyMDIzKS4gXCJMZXQncyBWZXJpZnkgU3RlcCBieSBTdGVwXCIuIGFyWGl2OjIzMDUuMjAwNTB2MSBbY3MuTEddLlxuXiBGcmFuemVuLCBDYXJsICg5IEphbnVhcnkgMjAyNSkuIFwiTWljcm9zb2Z0J3MgbmV3IHJTdGFyLU1hdGggdGVjaG5pcXVlIHVwZ3JhZGVzIHNtYWxsIG1vZGVscyB0byBvdXRwZXJmb3JtIE9wZW5BSSdzIG8xLXByZXZpZXcgYXQgbWF0aCBwcm9ibGVtc1wiLiBWZW50dXJlQmVhdC4gUmV0cmlldmVkIDI2IEphbnVhcnkgMjAyNS5cbl4gUm9iZXJ0cywgU2lvYmhhbiAoMjUgSnVseSAyMDI0KS4gXCJBSSBhY2hpZXZlcyBzaWx2ZXItbWVkYWwgc3RhbmRhcmQgc29sdmluZyBJbnRlcm5hdGlvbmFsIE1hdGhlbWF0aWNhbCBPbHltcGlhZCBwcm9ibGVtc1wiLiBUaGUgTmV3IFlvcmsgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBBdWd1c3QgMjAyNC5cbl4gQXplcmJheWV2LCBaaGFuZ2lyOyBTY2hvZWxrb3BmLCBIYWlsZXk7IFBhc3RlciwgS2VpcmFuOyBTYW50b3MsIE1hcmNvIERvczsgTWNBbGVlcicsIFN0ZXBoZW47IEppYW5nLCBBbGJlcnQgUS47IERlbmcsIEppYTsgQmlkZXJtYW4sIFN0ZWxsYTsgV2VsbGVjaywgU2VhbiAoMTYgT2N0b2JlciAyMDIzKS4gXCJMbGVtbWE6IEFuIE9wZW4gTGFuZ3VhZ2UgTW9kZWwgRm9yIE1hdGhlbWF0aWNzXCIuIEVsZXV0aGVyQUkgQmxvZy4gUmV0cmlldmVkIDI2IEphbnVhcnkgMjAyNS5cbl4gXCJKdWxpdXMgQUlcIi4ganVsaXVzLmFpLlxuXiBNY0ZhcmxhbmQsIEFsZXggKDEyIEp1bHkgMjAyNCkuIFwiOCBCZXN0IEFJIGZvciBNYXRoIFRvb2xzIChKYW51YXJ5IDIwMjUpXCIuIFVuaXRlLkFJLiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI1LlxuXiBNYXR0aGV3IEZpbmlvICYgQW1hbmRhIERvd25pZTogSUJNIFRoaW5rIDIwMjQgUHJpbWVyLCBcIldoYXQgaXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKSBpbiBGaW5hbmNlP1wiIDggRGVjLiAyMDIzXG5eIE0uIE5pY29sYXMsIEouIEZpcnpsaTogUGVuc2lvbnMgQWdlL0V1cm9wZWFuIFBlbnNpb25zIG1hZ2F6aW5lLCBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBBc2sgdGhlIEluZHVzdHJ5XCIgTWF5IEp1bmUgMjAyNCBodHRwczovL3ZpZGVvdm9pY2Uub3JnL2FpLWluLWZpbmFuY2UtaW5ub3ZhdGlvbi1lbnRyZXByZW5ldXJzaGlwLXZzLW92ZXItcmVndWxhdGlvbi13aXRoLXRoZS1ldXMtYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2UtYWN0LXdvbnQtd29yay1hcy1pbnRlbmRlZC8gQXJjaGl2ZWQgMTEgU2VwdGVtYmVyIDIwMjQgYXQgdGhlIFdheWJhY2sgTWFjaGluZS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgQ29uZ3Jlc3Npb25hbCBSZXNlYXJjaCBTZXJ2aWNlICgyMDE5KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgYW5kIE5hdGlvbmFsIFNlY3VyaXR5IChQREYpLiBXYXNoaW5ndG9uLCBEQzogQ29uZ3Jlc3Npb25hbCBSZXNlYXJjaCBTZXJ2aWNlLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiA4IE1heSAyMDIwLiBSZXRyaWV2ZWQgMjUgRmVicnVhcnkgMjAyNC5QRC1ub3RpY2Vcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFNseXVzYXIsIFZhZHltICgyMDE5KS4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYXMgdGhlIGJhc2lzIG9mIGZ1dHVyZSBjb250cm9sIG5ldHdvcmtzIChQcmVwcmludCkuIGRvaToxMC4xMzE0MC9SRy4yLjIuMzAyNDcuNTAwODcuXG5eIElyYXFpLCBBbWphZCAoMyBBcHJpbCAyMDI0KS4gXCInTGF2ZW5kZXInOiBUaGUgQUkgbWFjaGluZSBkaXJlY3RpbmcgSXNyYWVsJ3MgYm9tYmluZyBzcHJlZSBpbiBHYXphXCIuICs5NzIgTWFnYXppbmUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEwIE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDYgQXByaWwgMjAyNC5cbl4gRGF2aWVzLCBIYXJyeTsgTWNLZXJuYW4sIEJldGhhbjsgU2FiYmFnaCwgRGFuICgxIERlY2VtYmVyIDIwMjMpLiBcIidUaGUgR29zcGVsJzogaG93IElzcmFlbCB1c2VzIEFJIHRvIHNlbGVjdCBib21iaW5nIHRhcmdldHMgaW4gR2F6YVwiLiBUaGUgR3VhcmRpYW4uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDQgRGVjZW1iZXIgMjAyMy5cbl4gTWFydGksIEogV2VybmVyICgxMCBBdWd1c3QgMjAyNCkuIFwiRHJvaG5lbiBoYWJlbiBkZW4gS3JpZWcgaW4gZGVyIFVrcmFpbmUgcmV2b2x1dGlvbmllcnQsIGRvY2ggc2llIHNpbmQgZW1wZmluZGxpY2ggYXVmIFN0w7Zyc2VuZGVyIOKAkyBkZXNoYWxiIHNvbGxlbiBzaWUgamV0enQgYXV0b25vbSBvcGVyaWVyZW5cIi4gTmV1ZSBaw7xyY2hlciBaZWl0dW5nIChpbiBHZXJtYW4pLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMCBBdWd1c3QgMjAyNC4gUmV0cmlldmVkIDEwIEF1Z3VzdCAyMDI0LlxuXiBOZXdzb20sIEdhdmluOyBXZWJlciwgU2hpcmxleSBOLiAoNSBTZXB0ZW1iZXIgMjAyMykuIFwiRXhlY3V0aXZlIE9yZGVyIE4tMTItMjNcIiAoUERGKS4gRXhlY3V0aXZlIERlcGFydG1lbnQsIFN0YXRlIG9mIENhbGlmb3JuaWEuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIxIEZlYnJ1YXJ5IDIwMjQuIFJldHJpZXZlZCA3IFNlcHRlbWJlciAyMDIzLlxuXiBQaW5heWEsIFdhbHRlciBILiBMLjsgR3JhaGFtLCBNYXJrIFMuOyBLZXJmb290LCBFcmljOyBUdWRvc2l1LCBQZXRydS1EYW5pZWw7IERhZmZsb24sIEplc3NpY2E7IEZlcm5hbmRleiwgVmlyZ2luaWE7IFNhbmNoZXosIFBlZHJvOyBXb2xsZWIsIEp1bGlhOyBkYSBDb3N0YSwgUGVkcm8gRi47IFBhdGVsLCBBc2hheSAoMjAyMykuIFwiR2VuZXJhdGl2ZSBBSSBmb3IgTWVkaWNhbCBJbWFnaW5nOiBleHRlbmRpbmcgdGhlIE1PTkFJIEZyYW1ld29ya1wiLiBhclhpdjoyMzA3LjE1MjA4IFtlZXNzLklWXS5cbl4gXCJXaGF0IGlzIENoYXRHUFQsIERBTEwtRSwgYW5kIGdlbmVyYXRpdmUgQUk/XCIuIE1jS2luc2V5LiBSZXRyaWV2ZWQgMTQgRGVjZW1iZXIgMjAyNC5cbl4gXCJXaGF0IGlzIGdlbmVyYXRpdmUgQUk/XCIuIElCTS4gMjIgTWFyY2ggMjAyNC5cbl4gUGFzaWNrLCBBZGFtICgyNyBNYXJjaCAyMDIzKS4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBHbG9zc2FyeTogTmV1cmFsIE5ldHdvcmtzIGFuZCBPdGhlciBUZXJtcyBFeHBsYWluZWRcIi4gVGhlIE5ldyBZb3JrIFRpbWVzLiBJU1NOwqAwMzYyLTQzMzEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgU2VwdGVtYmVyIDIwMjMuIFJldHJpZXZlZCAyMiBBcHJpbCAyMDIzLlxuXiBLYXJwYXRoeSwgQW5kcmVqOyBBYmJlZWwsIFBpZXRlcjsgQnJvY2ttYW4sIEdyZWc7IENoZW4sIFBldGVyOyBDaGV1bmcsIFZpY2tpOyBEdWFuLCBZYW47IEdvb2RmZWxsb3csIElhbjsgS2luZ21hLCBEdXJrOyBIbywgSm9uYXRoYW47IFJlaW4gSG91dGhvb2Z0OyBUaW0gU2FsaW1hbnM7IEpvaG4gU2NodWxtYW47IElseWEgU3V0c2tldmVyOyBXb2pjaWVjaCBaYXJlbWJhICgxNiBKdW5lIDIwMTYpLiBcIkdlbmVyYXRpdmUgbW9kZWxzXCIuIE9wZW5BSS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDE1IE1hcmNoIDIwMjMuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBHcmlmZml0aCwgRXJpbjsgTWV0eiwgQ2FkZSAoMjcgSmFudWFyeSAyMDIzKS4gXCJBbnRocm9waWMgU2FpZCB0byBCZSBDbG9zaW5nIEluIG9uICQzMDAgTWlsbGlvbiBpbiBOZXcgQS5JLiBGdW5kaW5nXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOSBEZWNlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMTQgTWFyY2ggMjAyMy5cbl4gTGFueG9uLCBOYXRlOyBCYXNzLCBEaW5hOyBEYXZhbG9zLCBKYWNraWUgKDEwIE1hcmNoIDIwMjMpLiBcIkEgQ2hlYXQgU2hlZXQgdG8gQUkgQnV6endvcmRzIGFuZCBUaGVpciBNZWFuaW5nc1wiLiBCbG9vbWJlcmcgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDE0IE1hcmNoIDIwMjMuXG5eIE1ldHosIENhZGUgKDE0IE1hcmNoIDIwMjMpLiBcIk9wZW5BSSBQbGFucyB0byBVcCB0aGUgQW50ZSBpbiBUZWNoJ3MgQS5JLiBSYWNlXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBNYXJjaCAyMDIzLiBSZXRyaWV2ZWQgMzEgTWFyY2ggMjAyMy5cbl4gVGhvcHBpbGFuLCBSb21hbDsgRGUgRnJlaXRhcywgRGFuaWVsOyBIYWxsLCBKYW1pZTsgU2hhemVlciwgTm9hbTsgS3Vsc2hyZXNodGhhLCBBcG9vcnYgKDIwIEphbnVhcnkgMjAyMikuIFwiTGFNREE6IExhbmd1YWdlIE1vZGVscyBmb3IgRGlhbG9nIEFwcGxpY2F0aW9uc1wiLiBhclhpdjoyMjAxLjA4MjM5IFtjcy5DTF0uXG5eIFJvb3NlLCBLZXZpbiAoMjEgT2N0b2JlciAyMDIyKS4gXCJBIENvbWluZy1PdXQgUGFydHkgZm9yIEdlbmVyYXRpdmUgQS5JLiwgU2lsaWNvbiBWYWxsZXkncyBOZXcgQ3JhemVcIi4gVGhlIE5ldyBZb3JrIFRpbWVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBGZWJydWFyeSAyMDIzLiBSZXRyaWV2ZWQgMTQgTWFyY2ggMjAyMy5cbl4gTWV0eiwgQ2FkZSAoMTUgRmVicnVhcnkgMjAyNCkuIFwiT3BlbkFJIFVudmVpbHMgQS5JLiBUaGF0IEluc3RhbnRseSBHZW5lcmF0ZXMgRXllLVBvcHBpbmcgVmlkZW9zXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gSVNTTsKgMDM2Mi00MzMxLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBGZWJydWFyeSAyMDI0LiBSZXRyaWV2ZWQgMTYgRmVicnVhcnkgMjAyNC5cbl4gXCJUaGUgcmFjZSBvZiB0aGUgQUkgbGFicyBoZWF0cyB1cFwiLiBUaGUgRWNvbm9taXN0LiAzMCBKYW51YXJ5IDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBZYW5nLCBKdW5lOyBHb2t0dXJrLCBCdXJhayAoMTQgTWFyY2ggMjAyMykuIFwiR29vZ2xlIENsb3VkIGJyaW5ncyBnZW5lcmF0aXZlIEFJIHRvIGRldmVsb3BlcnMsIGJ1c2luZXNzZXMsIGFuZCBnb3Zlcm5tZW50c1wiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBOb3ZlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMTUgTWFyY2ggMjAyMy5cbl4gQnJ5bmpvbGZzc29uLCBFcmlrOyBMaSwgRGFuaWVsbGU7IFJheW1vbmQsIExpbmRzZXkgUi4gKEFwcmlsIDIwMjMpLCBHZW5lcmF0aXZlIEFJIGF0IFdvcmsgKFdvcmtpbmcgUGFwZXIpLCBXb3JraW5nIFBhcGVyIFNlcmllcywgZG9pOjEwLjMzODYvdzMxMTYxLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOCBNYXJjaCAyMDI0LCByZXRyaWV2ZWQgMjEgSmFudWFyeSAyMDI0XG5eIFwiRG9uJ3QgZmVhciBhbiBBSS1pbmR1Y2VkIGpvYnMgYXBvY2FseXBzZSBqdXN0IHlldFwiLiBUaGUgRWNvbm9taXN0LiA2IE1hcmNoIDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBDb3lsZSwgSmFrZSAoMjcgU2VwdGVtYmVyIDIwMjMpLiBcIkluIEhvbGx5d29vZCB3cml0ZXJzJyBiYXR0bGUgYWdhaW5zdCBBSSwgaHVtYW5zIHdpbiAoZm9yIG5vdylcIi4gQVAgTmV3cy4gQXNzb2NpYXRlZCBQcmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMyBBcHJpbCAyMDI0LiBSZXRyaWV2ZWQgMjYgSmFudWFyeSAyMDI0LlxuXiBIYXJyZWlzLCBILjsgS291bGxpYXMsIFQuOyBSb2JlcnRzLCBSb2dlci4gXCJHZW5lcmF0aXZlIEFJOiBVbmxvY2tpbmcgdGhlIGZ1dHVyZSBvZiBmYXNoaW9uXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNCBNYXJjaCAyMDIzLlxuXiBcIkhvdyBHZW5lcmF0aXZlIEFJIENhbiBBdWdtZW50IEh1bWFuIENyZWF0aXZpdHlcIi4gSGFydmFyZCBCdXNpbmVzcyBSZXZpZXcuIDE2IEp1bmUgMjAyMy4gSVNTTsKgMDAxNy04MDEyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBKdW5lIDIwMjMuIFJldHJpZXZlZCAyMCBKdW5lIDIwMjMuXG5eIEhlbmRyaXgsIEp1c3RpbiAoMTYgTWF5IDIwMjMpLiBcIlRyYW5zY3JpcHQ6IFNlbmF0ZSBKdWRpY2lhcnkgU3ViY29tbWl0dGVlIEhlYXJpbmcgb24gT3ZlcnNpZ2h0IG9mIEFJXCIuIHRlY2hwb2xpY3kucHJlc3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxOSBNYXkgMjAyMy5cbl4gU2ltb24sIEZlbGl4IE0uOyBBbHRheSwgU2FjaGE7IE1lcmNpZXIsIEh1Z28gKDE4IE9jdG9iZXIgMjAyMykuIFwiTWlzaW5mb3JtYXRpb24gcmVsb2FkZWQ/IEZlYXJzIGFib3V0IHRoZSBpbXBhY3Qgb2YgZ2VuZXJhdGl2ZSBBSSBvbiBtaXNpbmZvcm1hdGlvbiBhcmUgb3ZlcmJsb3duXCIuIEhhcnZhcmQgS2VubmVkeSBTY2hvb2wgTWlzaW5mb3JtYXRpb24gUmV2aWV3LiBkb2k6MTAuMzcwMTYvbXItMjAyMC0xMjcuIFMyQ0lEwqAyNjQxMTM4ODMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAxNiBOb3ZlbWJlciAyMDIzLlxuXiBcIk5ldyBBSSBzeXN0ZW1zIGNvbGxpZGUgd2l0aCBjb3B5cmlnaHQgbGF3XCIuIEJCQyBOZXdzLiAxIEF1Z3VzdCAyMDIzLiBSZXRyaWV2ZWQgMjggU2VwdGVtYmVyIDIwMjQuXG5eIFBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuICgyMDIzKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UsIEZvdW5kYXRpb25zIG9mIENvbXB1dGF0aW9uYWwgQWdlbnRzICgzcmTCoGVkLikuIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLiBkb2k6MTAuMTAxNy85NzgxMDA5MjU4MjI3LiBJU0JOwqA5NzgtMS0wMDkyLTU4MTktNy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gUnVzc2VsbCwgU3R1YXJ0OyBOb3J2aWcsIFBldGVyICgyMDIwKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTW9kZXJuIEFwcHJvYWNoICg0dGjCoGVkLikuIFBlYXJzb24uIElTQk7CoDk3OC0wLTEzNDYtMTA5OS0zLlxuXiBcIldoeSBhZ2VudHMgYXJlIHRoZSBuZXh0IGZyb250aWVyIG9mIGdlbmVyYXRpdmUgQUlcIi4gTWNLaW5zZXkgRGlnaXRhbC4gMjQgSnVseSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzIE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDEwIEF1Z3VzdCAyMDI0LlxuXiBGaWd1ZWlyZWRvLCBNYXlhcmEgQ29zdGE7IEFua3JhaCwgRWxpemFiZXRoOyBQb3dlbGwsIEphY3F1ZWx5biBFLjsgRXBzdGVpbiwgRGFuaWVsIEEuOyBDaGVuLCBZdW5hbiAoMTIgSmFudWFyeSAyMDI0KS4gXCJQb3dlcmVkIGJ5IEFJOiBFeGFtaW5pbmcgSG93IEFJIERlc2NyaXB0aW9ucyBJbmZsdWVuY2UgUGVyY2VwdGlvbnMgb2YgRmVydGlsaXR5IFRyYWNraW5nIEFwcGxpY2F0aW9uc1wiLiBQcm9jLiBBQ00gSW50ZXJhY3QuIE1vYi4gV2VhcmFibGUgVWJpcXVpdG91cyBUZWNobm9sLiA3ICg0KTogMTU0OjHigJMxNTQ6MjQuIGRvaToxMC4xMTQ1LzM2MzE0MTQuXG5eIFBvd2VyLCBKZW5uaWZlcjsgUHltLCBUaW5vbmVlOyBKYW1lcywgQWxleGFuZHJhOyBXYWxpbmcsIEFuZHJlYSAoNSBKdWx5IDIwMjQpLiBcIlNtYXJ0IFNleCBUb3lzOiBBIE5hcnJhdGl2ZSBSZXZpZXcgb2YgUmVjZW50IFJlc2VhcmNoIG9uIEN1bHR1cmFsLCBIZWFsdGggYW5kIFNhZmV0eSBDb25zaWRlcmF0aW9uc1wiLiBDdXJyZW50IFNleHVhbCBIZWFsdGggUmVwb3J0cy4gMTYgKDMpOiAxOTnigJMyMTUuIGRvaToxMC4xMDA3L3MxMTkzMC0wMjQtMDAzOTItMy4gSVNTTsKgMTU0OC0zNTkyLlxuXiBNYXJjYW50b25pbywgVGlmZmFueSBMLjsgQXZlcnksIEdyYWNpZTsgVGhyYXNoLCBBbm5hOyBMZW9uZSwgUnVzY2hlbGxlIE0uICgxMCBTZXB0ZW1iZXIgMjAyNCkuIFwiTGFyZ2UgTGFuZ3VhZ2UgTW9kZWxzIGluIGFuIEFwcDogQ29uZHVjdGluZyBhIFF1YWxpdGF0aXZlIFN5bnRoZXRpYyBEYXRhIEFuYWx5c2lzIG9mIEhvdyBTbmFwY2hhdCdzIFwiTXkgQUlcIiBSZXNwb25kcyB0byBRdWVzdGlvbnMgQWJvdXQgU2V4dWFsIENvbnNlbnQsIFNleHVhbCBSZWZ1c2FscywgU2V4dWFsIEFzc2F1bHQsIGFuZCBTZXh0aW5nXCIuIFRoZSBKb3VybmFsIG9mIFNleCBSZXNlYXJjaDogMeKAkzE1LiBkb2k6MTAuMTA4MC8wMDIyNDQ5OS4yMDI0LjIzOTY0NTcuIElTU07CoDAwMjItNDQ5OS4gUE1JRMKgMzkyNTQ2MjguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDkgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDkgRGVjZW1iZXIgMjAyNC5cbl4gSGFuc29uLCBLZW5uZXRoIFIuOyBCb2x0aG91c2UsIEhhbm5haCAoMjAyNCkuIFwiXCJSZXBsaWthIFJlbW92aW5nIEVyb3RpYyBSb2xlLVBsYXkgSXMgTGlrZSBHcmFuZCBUaGVmdCBBdXRvIFJlbW92aW5nIEd1bnMgb3IgQ2Fyc1wiOiBSZWRkaXQgRGlzY291cnNlIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIENoYXRib3RzIGFuZCBTZXh1YWwgVGVjaG5vbG9naWVzXCIuIFNvY2l1czogU29jaW9sb2dpY2FsIFJlc2VhcmNoIGZvciBhIER5bmFtaWMgV29ybGQuIDEwLiBkb2k6MTAuMTE3Ny8yMzc4MDIzMTI0MTI1OTYyNy4gSVNTTsKgMjM3OC0wMjMxLlxuXiBNYW5pYSwgS2Fyb2xpbmEgKDEgSmFudWFyeSAyMDI0KS4gXCJMZWdhbCBQcm90ZWN0aW9uIG9mIFJldmVuZ2UgYW5kIERlZXBmYWtlIFBvcm4gVmljdGltcyBpbiB0aGUgRXVyb3BlYW4gVW5pb246IEZpbmRpbmdzIEZyb20gYSBDb21wYXJhdGl2ZSBMZWdhbCBTdHVkeVwiLiBUcmF1bWEsIFZpb2xlbmNlLCAmIEFidXNlLiAyNSAoMSk6IDExN+KAkzEyOS4gZG9pOjEwLjExNzcvMTUyNDgzODAyMjExNDM3NzIuIElTU07CoDE1MjQtODM4MC4gUE1JRMKgMzY1NjUyNjcuXG5eIFNpbmdoLCBTdXllc2hhOyBOYW1iaWFyLCBWYWlzaG5hdmkgKDIwMjQpLiBcIlJvbGUgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgaW4gdGhlIFByZXZlbnRpb24gb2YgT25saW5lIENoaWxkIFNleHVhbCBBYnVzZTogQSBTeXN0ZW1hdGljIFJldmlldyBvZiBMaXRlcmF0dXJlXCIuIEpvdXJuYWwgb2YgQXBwbGllZCBTZWN1cml0eSBSZXNlYXJjaC4gMTkgKDQpOiA1ODbigJM2MjcuIGRvaToxMC4xMDgwLzE5MzYxNjEwLjIwMjQuMjMzMTg4NS4gSVNTTsKgMTkzNi0xNjEwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA5IERlY2VtYmVyIDIwMjQuIFJldHJpZXZlZCA5IERlY2VtYmVyIDIwMjQuXG5eIFJhemksIEFmc2FuZWg7IEtpbSwgU2V1bmdoeXVuOyBBbHNvdWJhaSwgQXNod2FxOyBTdHJpbmdoaW5pLCBHaWFubHVjYTsgU29sb3JpbywgVGhhbWFyOyBEZSBDaG91ZGh1cnksIE11bm11bjsgV2lzbmlld3NraSwgUGFtZWxhIEouICgxMyBPY3RvYmVyIDIwMjEpLiBcIkEgSHVtYW4tQ2VudGVyZWQgU3lzdGVtYXRpYyBMaXRlcmF0dXJlIFJldmlldyBvZiB0aGUgQ29tcHV0YXRpb25hbCBBcHByb2FjaGVzIGZvciBPbmxpbmUgU2V4dWFsIFJpc2sgRGV0ZWN0aW9uXCIuIFByb2NlZWRpbmdzIG9mIHRoZSBBQ00gb24gSHVtYW4tQ29tcHV0ZXIgSW50ZXJhY3Rpb24uIDUgKENTQ1cyKTogMeKAkzM4LiBkb2k6MTAuMTE0NS8zNDc5NjA5LiBJU1NOwqAyNTczLTAxNDIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDkgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDkgRGVjZW1iZXIgMjAyNC5cbl4gUmFuc2JvdGhhbSwgU2FtOyBLaXJvbiwgRGF2aWQ7IEdlcmJlcnQsIFBoaWxpcHA7IFJlZXZlcywgTWFydGluICg2IFNlcHRlbWJlciAyMDE3KS4gXCJSZXNoYXBpbmcgQnVzaW5lc3MgV2l0aCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBNSVQgU2xvYW4gTWFuYWdlbWVudCBSZXZpZXcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEzIEZlYnJ1YXJ5IDIwMjQuXG5eIFN1biwgWXVyYW47IFpoYW8sIFhpbGVpOyBMb3ZyZWdsaW8sIFJ1Z2dpZXJvOyBLdWxpZ293c2tpLCBFcmljYSAoMSBKYW51YXJ5IDIwMjQpLCBOYXNlciwgTS4gWi4gKGVkLiksIFwiOCDigJMgQUkgZm9yIGxhcmdlLXNjYWxlIGV2YWN1YXRpb24gbW9kZWxpbmc6IHByb21pc2VzIGFuZCBjaGFsbGVuZ2VzXCIsIEludGVycHJldGFibGUgTWFjaGluZSBMZWFybmluZyBmb3IgdGhlIEFuYWx5c2lzLCBEZXNpZ24sIEFzc2Vzc21lbnQsIGFuZCBJbmZvcm1lZCBEZWNpc2lvbiBNYWtpbmcgZm9yIENpdmlsIEluZnJhc3RydWN0dXJlLCBXb29kaGVhZCBQdWJsaXNoaW5nIFNlcmllcyBpbiBDaXZpbCBhbmQgU3RydWN0dXJhbCBFbmdpbmVlcmluZywgV29vZGhlYWQgUHVibGlzaGluZywgcHAuwqAxODXigJMyMDQsIElTQk7CoDk3OC0wLTEyODItNDA3My0xLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBNYXkgMjAyNCwgcmV0cmlldmVkIDI4IEp1bmUgMjAyNC5cbl4gR29tYWEsIElzbGFtOyBBZGVsemFkZWgsIE1hc291ZDsgR3d5bm5lLCBTdGV2ZW47IFNwZW5jZXIsIEJydWNlOyBLbywgWW9vbjsgQsOpbmljaG91LCBOb3VyZWRkaW5lOyBNYSwgQ2h1bnl1bjsgRWxzYWdhbiwgTm91cjsgRHVvbmcsIERhbmE7IFphbG9rLCBFaGFiOyBLaW5hdGVkZXIsIE1heCAoMSBOb3ZlbWJlciAyMDIxKS4gXCJBIEZyYW1ld29yayBmb3IgSW50ZWxsaWdlbnQgRmlyZSBEZXRlY3Rpb24gYW5kIEV2YWN1YXRpb24gU3lzdGVtXCIuIEZpcmUgVGVjaG5vbG9neS4gNTcgKDYpOiAzMTc54oCTMzE4NS4gZG9pOjEwLjEwMDcvczEwNjk0LTAyMS0wMTE1Ny0zLiBJU1NOwqAxNTcyLTgwOTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFpoYW8sIFhpbGVpOyBMb3ZyZWdsaW8sIFJ1Z2dpZXJvOyBOaWxzc29uLCBEYW5pZWwgKDEgTWF5IDIwMjApLiBcIk1vZGVsbGluZyBhbmQgaW50ZXJwcmV0aW5nIHByZS1ldmFjdWF0aW9uIGRlY2lzaW9uLW1ha2luZyB1c2luZyBtYWNoaW5lIGxlYXJuaW5nXCIuIEF1dG9tYXRpb24gaW4gQ29uc3RydWN0aW9uLiAxMTM6IDEwMzE0MC4gZG9pOjEwLjEwMTYvai5hdXRjb24uMjAyMC4xMDMxNDAuIGhkbDoxMDE3OS8xNzMxNS4gSVNTTsKgMDkyNi01ODA1LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBNYXkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkluZGlhJ3MgbGF0ZXN0IGVsZWN0aW9uIGVtYnJhY2VkIEFJIHRlY2hub2xvZ3kuIEhlcmUgYXJlIHNvbWUgd2F5cyBpdCB3YXMgdXNlZCBjb25zdHJ1Y3RpdmVseVwiLiBQQlMgTmV3cy4gMTIgSnVuZSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDI4IE9jdG9iZXIgMjAyNC5cbl4gTcO8bGxlciwgVmluY2VudCBDLiAoMzAgQXByaWwgMjAyMCkuIFwiRXRoaWNzIG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBSb2JvdGljc1wiLiBTdGFuZm9yZCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeSBBcmNoaXZlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBTaW1vbml0ZSAoMjAxNikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg3LlxuXiBMYXNrb3dza2kgKDIwMjMpLlxuXiBHQU8gKDIwMjIpLlxuXiBWYWxpbnNreSAoMjAxOSkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTkxLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA5OTHigJM5OTIuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqA2My5cbl4gVmluY2VudCAoMjAyMikuXG5eIEtvcGVsLCBNYXR0aGV3LiBcIkNvcHlyaWdodCBTZXJ2aWNlczogRmFpciBVc2VcIi4gQ29ybmVsbCBVbml2ZXJzaXR5IExpYnJhcnkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMjYgQXByaWwgMjAyNC5cbl4gQnVyZ2VzcywgTWF0dC4gXCJIb3cgdG8gU3RvcCBZb3VyIERhdGEgRnJvbSBCZWluZyBVc2VkIHRvIFRyYWluIEFJXCIuIFdpcmVkLiBJU1NOwqAxMDU5LTEwMjguIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMjYgQXByaWwgMjAyNC5cbl4gUmVpc25lciAoMjAyMykuXG5eIEFsdGVyICYgSGFycmlzICgyMDIzKS5cbl4gXCJHZXR0aW5nIHRoZSBJbm5vdmF0aW9uIEVjb3N5c3RlbSBSZWFkeSBmb3IgQUkuIEFuIElQIHBvbGljeSB0b29sa2l0XCIgKFBERikuIFdJUE8uXG5eIEhhbW1vbmQsIEdlb3JnZSAoMjcgRGVjZW1iZXIgMjAyMykuIFwiQmlnIFRlY2ggaXMgc3BlbmRpbmcgbW9yZSB0aGFuIFZDIGZpcm1zIG9uIEFJIHN0YXJ0dXBzXCIuIEFycyBUZWNobmljYS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTAgSmFudWFyeSAyMDI0LlxuXiBXb25nLCBNYXR0ZW8gKDI0IE9jdG9iZXIgMjAyMykuIFwiVGhlIEZ1dHVyZSBvZiBBSSBJcyBHT01BXCIuIFRoZSBBdGxhbnRpYy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBKYW51YXJ5IDIwMjQuXG5eIFwiQmlnIHRlY2ggYW5kIHRoZSBwdXJzdWl0IG9mIEFJIGRvbWluYW5jZVwiLiBUaGUgRWNvbm9taXN0LiAyNiBNYXJjaCAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOSBEZWNlbWJlciAyMDIzLlxuXiBGdW5nLCBCcmlhbiAoMTkgRGVjZW1iZXIgMjAyMykuIFwiV2hlcmUgdGhlIGJhdHRsZSB0byBkb21pbmF0ZSBBSSBtYXkgYmUgd29uXCIuIENOTiBCdXNpbmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgSmFudWFyeSAyMDI0LlxuXiBNZXR6LCBDYWRlICg1IEp1bHkgMjAyMykuIFwiSW4gdGhlIEFnZSBvZiBBLkkuLCBUZWNoJ3MgTGl0dGxlIEd1eXMgTmVlZCBCaWcgRnJpZW5kc1wiLiBUaGUgTmV3IFlvcmsgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggSnVseSAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFwiRWxlY3RyaWNpdHkgMjAyNCDigJMgQW5hbHlzaXNcIi4gSUVBLiAyNCBKYW51YXJ5IDIwMjQuIFJldHJpZXZlZCAxMyBKdWx5IDIwMjQuXG5eIENhbHZlcnQsIEJyaWFuICgyOCBNYXJjaCAyMDI0KS4gXCJBSSBhbHJlYWR5IHVzZXMgYXMgbXVjaCBlbmVyZ3kgYXMgYSBzbWFsbCBjb3VudHJ5LiBJdCdzIG9ubHkgdGhlIGJlZ2lubmluZ1wiLiBWb3guIE5ldyBZb3JrLCBOZXcgWW9yay4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMyBKdWx5IDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gSGFscGVyLCBFdmFuOyBPJ0Rvbm92YW4sIENhcm9saW5lICgyMSBKdW5lIDIwMjQpLiBcIkFJIGlzIGV4aGF1c3RpbmcgdGhlIHBvd2VyIGdyaWQuIFRlY2ggZmlybXMgYXJlIHNlZWtpbmcgYSBtaXJhY2xlIHNvbHV0aW9uXCIuIFdhc2hpbmd0b24gUG9zdC5cbl4gRGF2ZW5wb3J0LCBDYXJseS4gXCJBSSBEYXRhIENlbnRlcnMgYW5kIHRoZSBDb21pbmcgWVMgUG93ZXIgRGVtYW5kIFN1cmdlXCIgKFBERikuIEdvbGRtYW4gU2FjaHMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIChQREYpIG9uIDI2IEp1bHkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBSeWFuLCBDYXJvbCAoMTIgQXByaWwgMjAyNCkuIFwiRW5lcmd5LUd1enpsaW5nIEFJIElzIEFsc28gdGhlIEZ1dHVyZSBvZiBFbmVyZ3kgU2F2aW5nc1wiLiBXYWxsIFN0cmVldCBKb3VybmFsLiBEb3cgSm9uZXMuXG5eIEhpbGxlciwgSmVubmlmZXIgKDEgSnVseSAyMDI0KS4gXCJUZWNoIEluZHVzdHJ5IFdhbnRzIHRvIExvY2sgVXAgTnVjbGVhciBQb3dlciBmb3IgQUlcIi4gV2FsbCBTdHJlZXQgSm91cm5hbC4gRG93IEpvbmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBLZW5kYWxsLCBUeWxlciAoMjggU2VwdGVtYmVyIDIwMjQpLiBcIk52aWRpYSdzIEh1YW5nIFNheXMgTnVjbGVhciBQb3dlciBhbiBPcHRpb24gdG8gRmVlZCBEYXRhIENlbnRlcnNcIi4gQmxvb21iZXJnLlxuXiBIYWxwZXIsIEV2YW4gKDIwIFNlcHRlbWJlciAyMDI0KS4gXCJNaWNyb3NvZnQgZGVhbCB3b3VsZCByZW9wZW4gVGhyZWUgTWlsZSBJc2xhbmQgbnVjbGVhciBwbGFudCB0byBwb3dlciBBSVwiLiBXYXNoaW5ndG9uIFBvc3QuXG5eIEhpbGxlciwgSmVubmlmZXIgKDIwIFNlcHRlbWJlciAyMDI0KS4gXCJUaHJlZSBNaWxlIElzbGFuZCdzIE51Y2xlYXIgUGxhbnQgdG8gUmVvcGVuLCBIZWxwIFBvd2VyIE1pY3Jvc29mdCdzIEFJIENlbnRlcnNcIi4gV2FsbCBTdHJlZXQgSm91cm5hbC4gRG93IEpvbmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBOaXZhIFlhZGF2ICgxOSBBdWd1c3QgMjAyNCkuIFwiVGFpd2FuIHRvIHN0b3AgbGFyZ2UgZGF0YSBjZW50ZXJzIGluIHRoZSBOb3J0aCwgY2l0ZXMgaW5zdWZmaWNpZW50IHBvd2VyXCIuIERhdGFjZW50ZXJEeW5hbWljcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOCBOb3ZlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBOb3ZlbWJlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgTW9jaGl6dWtpLCBUYWthc2hpOyBPZGEsIFNob2tvICgxOCBPY3RvYmVyIDIwMjQpLiBcIuOCqOODjOODk+ODh+OCo+OCouWHuuizh+OBruaXpeacrOS8gealreOAgeWOn+eZuui/keOBj+OBp++8oe+8qeODh+ODvOOCv+OCu+ODs+OCv+ODvOaWsOioreaknOiojlwiLiBCbG9vbWJlcmcgKGluIEphcGFuZXNlKS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gOCBOb3ZlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNyBOb3ZlbWJlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgTmF1cmVlbiBTIE1hbGlrIGFuZCBXaWxsIFdhZGUgKDUgTm92ZW1iZXIgMjAyNCkuIFwiTnVjbGVhci1IdW5ncnkgQUkgQ2FtcHVzZXMgTmVlZCBOZXcgUGxhbiB0byBGaW5kIFBvd2VyIEZhc3RcIi4gQmxvb21iZXJnLlxuXiBOaWNhcyAoMjAxOCkuXG5eIFJhaW5pZSwgTGVlOyBLZWV0ZXIsIFNjb3R0OyBQZXJyaW4sIEFuZHJldyAoMjIgSnVseSAyMDE5KS4gXCJUcnVzdCBhbmQgRGlzdHJ1c3QgaW4gQW1lcmljYVwiLiBQZXcgUmVzZWFyY2ggQ2VudGVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMiBGZWJydWFyeSAyMDI0LlxuXiBXaWxsaWFtcyAoMjAyMykuXG5eIFRheWxvciAmIEhlcm4gKDIwMjMpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgU2FtdWVsLCBTaWdhbCAoMTkgQXByaWwgMjAyMikuIFwiV2h5IGl0J3Mgc28gZGFtbiBoYXJkIHRvIG1ha2UgQUkgZmFpciBhbmQgdW5iaWFzZWRcIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDI0IEp1bHkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFJvc2UgKDIwMjMpLlxuXiBDTkEgKDIwMTkpLlxuXiBHb2ZmcmV5ICgyMDA4KSwgcC7CoDE3LlxuXiBCZXJkYWhsIGV0IGFsLiAoMjAyMyk7IEdvZmZyZXkgKDIwMDgsIHAuwqAxNyk7IFJvc2UgKDIwMjMpOyBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgOTk1KVxuXiBDaHJpc3RpYW4gKDIwMjApLCBwLsKgMjUuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDk5NS5cbl4gR3JhbnQgJiBIaWxsICgyMDIzKS5cbl4gTGFyc29uICYgQW5nd2luICgyMDE2KS5cbl4gQ2hyaXN0aWFuICgyMDIwKSwgcC7CoDY34oCTNzAuXG5eIENocmlzdGlhbiAoMjAyMCwgcHAuwqA2N+KAkzcwKTsgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA5OTPigJM5OTQpXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqA5OTUpOyBMaXBhcnRpdG8gKDIwMTEsIHAuwqAzNik7IEdvb2RtYW4gJiBGbGF4bWFuICgyMDE3LCBwLsKgNik7IENocmlzdGlhbiAoMjAyMCwgcHAuwqAzOeKAkzQwLCA2NSlcbl4gUXVvdGVkIGluIENocmlzdGlhbiAoMjAyMCwgcC7CoDY1KS5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcC7CoDk5NCk7IENocmlzdGlhbiAoMjAyMCwgcHAuwqA0MCwgODDigJM4MSlcbl4gUXVvdGVkIGluIENocmlzdGlhbiAoMjAyMCwgcC7CoDgwKVxuXiBEb2NrcmlsbCAoMjAyMikuXG5eIFNhbXBsZSAoMjAxNykuXG5eIFwiQmxhY2sgQm94IEFJXCIuIDE2IEp1bmUgMjAyMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTUgSnVuZSAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqAxMTAuXG5eIENocmlzdGlhbiAoMjAyMCksIHBwLsKgODjigJM5MS5cbl4gQ2hyaXN0aWFuICgyMDIwLCBwLsKgODMpOyBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgOTk3KVxuXiBDaHJpc3RpYW4gKDIwMjApLCBwLsKgOTEuXG5eIENocmlzdGlhbiAoMjAyMCksIHAuwqA4My5cbl4gVmVybWEgKDIwMjEpLlxuXiBSb3RobWFuICgyMDIwKS5cbl4gQ2hyaXN0aWFuICgyMDIwKSwgcHAuwqAxMDXigJMxMDguXG5eIENocmlzdGlhbiAoMjAyMCksIHBwLsKgMTA44oCTMTEyLlxuXiBSb3BlaywgTHVjYXMgKDIxIE1heSAyMDI0KS4gXCJOZXcgQW50aHJvcGljIFJlc2VhcmNoIFNoZWRzIExpZ2h0IG9uIEFJJ3MgJ0JsYWNrIEJveCdcIi4gR2l6bW9kby4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCAyMyBNYXkgMjAyNC5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqA5ODkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcHAuwqA5ODfigJM5OTAuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg4LlxuXiBSb2JpdHpza2kgKDIwMTgpOyBTYWluYXRvICgyMDE1KVxuXiBIYXJhcmkgKDIwMTgpLlxuXiBCdWNrbGV5LCBDaHJpczsgTW96dXIsIFBhdWwgKDIyIE1heSAyMDE5KS4gXCJIb3cgQ2hpbmEgVXNlcyBIaWdoLVRlY2ggU3VydmVpbGxhbmNlIHRvIFN1YmR1ZSBNaW5vcml0aWVzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjUgTm92ZW1iZXIgMjAxOS4gUmV0cmlldmVkIDIgSnVseSAyMDE5LlxuXiBcIlNlY3VyaXR5IGxhcHNlIGV4cG9zZWQgYSBDaGluZXNlIHNtYXJ0IGNpdHkgc3VydmVpbGxhbmNlIHN5c3RlbVwiLiAzIE1heSAyMDE5LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IE1hcmNoIDIwMjEuIFJldHJpZXZlZCAxNCBTZXB0ZW1iZXIgMjAyMC5cbl4gVXJiaW5hIGV0IGFsLiAoMjAyMikuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBFLiBNY0dhdWdoZXksICdXaWxsIFJvYm90cyBBdXRvbWF0ZSBZb3VyIEpvYiBBd2F5PyBGdWxsIEVtcGxveW1lbnQsIEJhc2ljIEluY29tZSwgYW5kIEVjb25vbWljIERlbW9jcmFjeScgKDIwMjIpLCA1MSgzKSBJbmR1c3RyaWFsIExhdyBKb3VybmFsIDUxMeKAkzU1OS4gQXJjaGl2ZWQgMjcgTWF5IDIwMjMgYXQgdGhlIFdheWJhY2sgTWFjaGluZS5cbl4gRm9yZCAmIENvbHZpbiAoMjAxNSk7TWNHYXVnaGV5ICgyMDIyKVxuXiBJR00gQ2hpY2FnbyAoMjAxNykuXG5eIEFybnR6LCBHcmVnb3J5ICYgWmllcmFobiAoMjAxNiksIHAuwqAzMy5cbl4gTG9ociAoMjAxNyk7IEZyZXkgJiBPc2Jvcm5lICgyMDE3KTsgQXJudHosIEdyZWdvcnkgJiBaaWVyYWhuICgyMDE2LCBwLsKgMzMpXG5eIFpob3UsIFZpb2xhICgxMSBBcHJpbCAyMDIzKS4gXCJBSSBpcyBhbHJlYWR5IHRha2luZyB2aWRlbyBnYW1lIGlsbHVzdHJhdG9ycycgam9icyBpbiBDaGluYVwiLiBSZXN0IG9mIFdvcmxkLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMSBGZWJydWFyeSAyMDI0LiBSZXRyaWV2ZWQgMTcgQXVndXN0IDIwMjMuXG5eIENhcnRlciwgSnVzdGluICgxMSBBcHJpbCAyMDIzKS4gXCJDaGluYSdzIGdhbWUgYXJ0IGluZHVzdHJ5IHJlcG9ydGVkbHkgZGVjaW1hdGVkIGJ5IGdyb3dpbmcgQUkgdXNlXCIuIEdhbWUgRGV2ZWxvcGVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBBdWd1c3QgMjAyMy4gUmV0cmlldmVkIDE3IEF1Z3VzdCAyMDIzLlxuXiBNb3JnZW5zdGVybiAoMjAxNSkuXG5eIE1haGRhd2kgKDIwMTcpOyBUaG9tcHNvbiAoMjAxNClcbl4gVGFybm9mZiwgQmVuICg0IEF1Z3VzdCAyMDIzKS4gXCJMZXNzb25zIGZyb20gRWxpemFcIi4gVGhlIEd1YXJkaWFuIFdlZWtseS4gcHAuwqAzNOKAkzM5LlxuXiBDZWxsYW4tSm9uZXMgKDIwMTQpLlxuXiBSdXNzZWxsICYgTm9ydmlnIDIwMjEsIHAuwqAxMDAxLlxuXiBCb3N0cm9tICgyMDE0KS5cbl4gUnVzc2VsbCAoMjAxOSkuXG5eIEJvc3Ryb20gKDIwMTQpOyBNw7xsbGVyICYgQm9zdHJvbSAoMjAxNCk7IEJvc3Ryb20gKDIwMTUpLlxuXiBIYXJhcmkgKDIwMjMpLlxuXiBNw7xsbGVyICYgQm9zdHJvbSAoMjAxNCkuXG5eIExlYWRlcnMnIGNvbmNlcm5zIGFib3V0IHRoZSBleGlzdGVudGlhbCByaXNrcyBvZiBBSSBhcm91bmQgMjAxNTogUmF3bGluc29uICgyMDE1KSwgSG9sbGV5ICgyMDE1KSwgR2liYnMgKDIwMTQpLCBTYWluYXRvICgyMDE1KVxuXiBcIlwiR29kZmF0aGVyIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIgdGFsa3MgaW1wYWN0IGFuZCBwb3RlbnRpYWwgb2YgbmV3IEFJXCIuIENCUyBOZXdzLiAyNSBNYXJjaCAyMDIzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOCBNYXJjaCAyMDIzLiBSZXRyaWV2ZWQgMjggTWFyY2ggMjAyMy5cbl4gUGl0dGlzLCBEb24gKDQgTWF5IDIwMjMpLiBcIkNhbmFkaWFuIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGxlYWRlciBHZW9mZnJleSBIaW50b24gcGlsZXMgb24gZmVhcnMgb2YgY29tcHV0ZXIgdGFrZW92ZXJcIi4gQ0JDLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA3IEp1bHkgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIic1MOKAkzUwIGNoYW5jZScgdGhhdCBBSSBvdXRzbWFydHMgaHVtYW5pdHksIEdlb2ZmcmV5IEhpbnRvbiBzYXlzXCIuIEJsb29tYmVyZyBCTk4uIDE0IEp1bmUgMjAyNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSnVuZSAyMDI0LiBSZXRyaWV2ZWQgNiBKdWx5IDIwMjQuXG5eIFZhbGFuY2UgKDIwMjMpLlxuXiBUYXlsb3IsIEpvc2ggKDcgTWF5IDIwMjMpLiBcIlJpc2Ugb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgaW5ldml0YWJsZSBidXQgc2hvdWxkIG5vdCBiZSBmZWFyZWQsICdmYXRoZXIgb2YgQUknIHNheXNcIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMyBPY3RvYmVyIDIwMjMuIFJldHJpZXZlZCAyNiBNYXkgMjAyMy5cbl4gQ29sdG9uLCBFbW1hICg3IE1heSAyMDIzKS4gXCInRmF0aGVyIG9mIEFJJyBzYXlzIHRlY2ggZmVhcnMgbWlzcGxhY2VkOiAnWW91IGNhbm5vdCBzdG9wIGl0J1wiLiBGb3ggTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgTWF5IDIwMjMuIFJldHJpZXZlZCAyNiBNYXkgMjAyMy5cbl4gSm9uZXMsIEhlc3NpZSAoMjMgTWF5IDIwMjMpLiBcIkp1ZXJnZW4gU2NobWlkaHViZXIsIFJlbm93bmVkICdGYXRoZXIgT2YgTW9kZXJuIEFJLCcgU2F5cyBIaXMgTGlmZSdzIFdvcmsgV29uJ3QgTGVhZCBUbyBEeXN0b3BpYVwiLiBGb3JiZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IE1heSAyMDIzLiBSZXRyaWV2ZWQgMjYgTWF5IDIwMjMuXG5eIE1jTW9ycm93LCBSeWFuICgxOSBEZWNlbWJlciAyMDIzKS4gXCJBbmRyZXcgTmc6ICdEbyB3ZSB0aGluayB0aGUgd29ybGQgaXMgYmV0dGVyIG9mZiB3aXRoIG1vcmUgb3IgbGVzcyBpbnRlbGxpZ2VuY2U/J1wiLiBGaW5hbmNpYWwgVGltZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IEphbnVhcnkgMjAyNC4gUmV0cmlldmVkIDMwIERlY2VtYmVyIDIwMjMuXG5eIExldnksIFN0ZXZlbiAoMjIgRGVjZW1iZXIgMjAyMykuIFwiSG93IE5vdCB0byBCZSBTdHVwaWQgQWJvdXQgQUksIFdpdGggWWFubiBMZUN1blwiLiBXaXJlZC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjggRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDMwIERlY2VtYmVyIDIwMjMuXG5eIEFyZ3VtZW50cyB0aGF0IEFJIGlzIG5vdCBhbiBpbW1pbmVudCByaXNrOiBCcm9va3MgKDIwMTQpLCBHZWlzdCAoMjAxNSksIE1hZHJpZ2FsICgyMDE1KSwgTGVlICgyMDE0KVxuXiBcbkp1bXAgdXAgdG86XG5hIGIgQ2hyaXN0aWFuICgyMDIwKSwgcHAuwqA2NywgNzMuXG5eIFl1ZGtvd3NreSAoMjAwOCkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBBbmRlcnNvbiAmIEFuZGVyc29uICgyMDExKS5cbl4gQUFBSSAoMjAxNCkuXG5eIFdhbGxhY2ggKDIwMTApLlxuXiBSdXNzZWxsICgyMDE5KSwgcC7CoDE3My5cbl4gU3Rld2FydCwgQXNobGV5OyBNZWx0b24sIE1vbmljYS4gXCJIdWdnaW5nIEZhY2UgQ0VPIHNheXMgaGUncyBmb2N1c2VkIG9uIGJ1aWxkaW5nIGEgJ3N1c3RhaW5hYmxlIG1vZGVsJyBmb3IgdGhlICQ0LjUgYmlsbGlvbiBvcGVuLXNvdXJjZS1BSSBzdGFydHVwXCIuIEJ1c2luZXNzIEluc2lkZXIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMTQgQXByaWwgMjAyNC5cbl4gV2lnZ2VycywgS3lsZSAoOSBBcHJpbCAyMDI0KS4gXCJHb29nbGUgb3BlbiBzb3VyY2VzIHRvb2xzIHRvIHN1cHBvcnQgQUkgbW9kZWwgZGV2ZWxvcG1lbnRcIi4gVGVjaENydW5jaC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTAgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCAxNCBBcHJpbCAyMDI0LlxuXiBIZWF2ZW4sIFdpbGwgRG91Z2xhcyAoMTIgTWF5IDIwMjMpLiBcIlRoZSBvcGVuLXNvdXJjZSBBSSBib29tIGlzIGJ1aWx0IG9uIEJpZyBUZWNoJ3MgaGFuZG91dHMuIEhvdyBsb25nIHdpbGwgaXQgbGFzdD9cIi4gTUlUIFRlY2hub2xvZ3kgUmV2aWV3LiBSZXRyaWV2ZWQgMTQgQXByaWwgMjAyNC5cbl4gQnJvZHNreSwgU2FzY2hhICgxOSBEZWNlbWJlciAyMDIzKS4gXCJNaXN0cmFsIEFJJ3MgTmV3IExhbmd1YWdlIE1vZGVsIEFpbXMgZm9yIE9wZW4gU291cmNlIFN1cHJlbWFjeVwiLiBBSSBCdXNpbmVzcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBFZHdhcmRzLCBCZW5qICgyMiBGZWJydWFyeSAyMDI0KS4gXCJTdGFiaWxpdHkgYW5ub3VuY2VzIFN0YWJsZSBEaWZmdXNpb24gMywgYSBuZXh0LWdlbiBBSSBpbWFnZSBnZW5lcmF0b3JcIi4gQXJzIFRlY2huaWNhLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IEFwcmlsIDIwMjQuXG5eIE1hcnNoYWxsLCBNYXR0ICgyOSBKYW51YXJ5IDIwMjQpLiBcIkhvdyBlbnRlcnByaXNlcyBhcmUgdXNpbmcgb3BlbiBzb3VyY2UgTExNczogMTYgZXhhbXBsZXNcIi4gVmVudHVyZUJlYXQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFBpcGVyLCBLZWxzZXkgKDIgRmVicnVhcnkgMjAyNCkuIFwiU2hvdWxkIHdlIG1ha2Ugb3VyIG1vc3QgcG93ZXJmdWwgQUkgbW9kZWxzIG9wZW4gc291cmNlIHRvIGFsbD9cIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IEFwcmlsIDIwMjQuXG5eIEFsYW4gVHVyaW5nIEluc3RpdHV0ZSAoMjAxOSkuIFwiVW5kZXJzdGFuZGluZyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBldGhpY3MgYW5kIHNhZmV0eVwiIChQREYpLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBBbGFuIFR1cmluZyBJbnN0aXR1dGUgKDIwMjMpLiBcIkFJIEV0aGljcyBhbmQgR292ZXJuYW5jZSBpbiBQcmFjdGljZVwiIChQREYpLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBGbG9yaWRpLCBMdWNpYW5vOyBDb3dscywgSm9zaCAoMjMgSnVuZSAyMDE5KS4gXCJBIFVuaWZpZWQgRnJhbWV3b3JrIG9mIEZpdmUgUHJpbmNpcGxlcyBmb3IgQUkgaW4gU29jaWV0eVwiLiBIYXJ2YXJkIERhdGEgU2NpZW5jZSBSZXZpZXcuIDEgKDEpLiBkb2k6MTAuMTE2Mi85OTYwOGY5Mi44Y2Q1NTBkMS4gUzJDSUTCoDE5ODc3NTcxMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNyBBdWd1c3QgMjAxOS4gUmV0cmlldmVkIDUgRGVjZW1iZXIgMjAyMy5cbl4gQnVydWssIEJhbnU7IEVrbWVrY2ksIFBlcmloYW4gRWxpZjsgQXJkYSwgQmVybmEgKDEgU2VwdGVtYmVyIDIwMjApLiBcIkEgY3JpdGljYWwgcGVyc3BlY3RpdmUgb24gZ3VpZGVsaW5lcyBmb3IgcmVzcG9uc2libGUgYW5kIHRydXN0d29ydGh5IGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIuIE1lZGljaW5lLCBIZWFsdGggQ2FyZSBhbmQgUGhpbG9zb3BoeS4gMjMgKDMpOiAzODfigJMzOTkuIGRvaToxMC4xMDA3L3MxMTAxOS0wMjAtMDk5NDgtMS4gSVNTTsKgMTU3Mi04NjMzLiBQTUlEwqAzMjIzNjc5NC4gUzJDSUTCoDIxNDc2NjgwMC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbl4gS2FtaWxhLCBNYW5vaiBLdW1hcjsgSmFzcm90aWEsIFNhaGlsIFNpbmdoICgxIEphbnVhcnkgMjAyMykuIFwiRXRoaWNhbCBpc3N1ZXMgaW4gdGhlIGRldmVsb3BtZW50IG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlOiByZWNvZ25pemluZyB0aGUgcmlza3NcIi4gSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIEV0aGljcyBhbmQgU3lzdGVtcy4gYWhlYWQtb2YtcHJpbnQgKGFoZWFkLW9mLXByaW50KS4gZG9pOjEwLjExMDgvSUpPRVMtMDUtMjAyMy0wMTA3LiBJU1NOwqAyNTE0LTkzNjkuIFMyQ0lEwqAyNTk2MTQxMjQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIFwiQUkgU2FmZXR5IEluc3RpdHV0ZSByZWxlYXNlcyBuZXcgQUkgc2FmZXR5IGV2YWx1YXRpb25zIHBsYXRmb3JtXCIuIFVLIEdvdmVybm1lbnQuIDEwIE1heSAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE0IE1heSAyMDI0LlxuXiBSZWd1bGF0aW9uIG9mIEFJIHRvIG1pdGlnYXRlIHJpc2tzOiBCZXJyeWhpbGwgZXQgYWwuICgyMDE5KSwgQmFyZmllbGQgJiBQYWdhbGxvICgyMDE4KSwgSXBob2ZlbiAmIEtyaXRpa29zICgyMDE5KSwgV2lydHosIFdleWVyZXIgJiBHZXllciAoMjAxOCksIEJ1aXRlbiAoMjAxOSlcbl4gTGF3IExpYnJhcnkgb2YgQ29uZ3Jlc3MgKFUuUy4pLiBHbG9iYWwgTGVnYWwgUmVzZWFyY2ggRGlyZWN0b3JhdGUgKDIwMTkpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgVmluY2VudCAoMjAyMykuXG5eIFN0YW5mb3JkIFVuaXZlcnNpdHkgKDIwMjMpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgYyBkIFVORVNDTyAoMjAyMSkuXG5eIEtpc3NpbmdlciAoMjAyMSkuXG5eIEFsdG1hbiwgQnJvY2ttYW4gJiBTdXRza2V2ZXIgKDIwMjMpLlxuXiBWT0EgTmV3cyAoMjUgT2N0b2JlciAyMDIzKS4gXCJVTiBBbm5vdW5jZXMgQWR2aXNvcnkgQm9keSBvbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuXiBcIkNvdW5jaWwgb2YgRXVyb3BlIG9wZW5zIGZpcnN0IGV2ZXIgZ2xvYmFsIHRyZWF0eSBvbiBBSSBmb3Igc2lnbmF0dXJlXCIuIENvdW5jaWwgb2YgRXVyb3BlLiA1IFNlcHRlbWJlciAyMDI0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDE3IFNlcHRlbWJlciAyMDI0LlxuXiBFZHdhcmRzICgyMDIzKS5cbl4gS2FzcGVyb3dpY3ogKDIwMjMpLlxuXiBGb3ggTmV3cyAoMjAyMykuXG5eIE1pbG1vLCBEYW4gKDMgTm92ZW1iZXIgMjAyMykuIFwiSG9wZSBvciBIb3Jyb3I/IFRoZSBncmVhdCBBSSBkZWJhdGUgZGl2aWRpbmcgaXRzIHBpb25lZXJzXCIuIFRoZSBHdWFyZGlhbiBXZWVrbHkuIHBwLsKgMTDigJMxMi5cbl4gXCJUaGUgQmxldGNobGV5IERlY2xhcmF0aW9uIGJ5IENvdW50cmllcyBBdHRlbmRpbmcgdGhlIEFJIFNhZmV0eSBTdW1taXQsIDHigJMyIE5vdmVtYmVyIDIwMjNcIi4gR09WLlVLLiAxIE5vdmVtYmVyIDIwMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDIgTm92ZW1iZXIgMjAyMy5cbl4gXCJDb3VudHJpZXMgYWdyZWUgdG8gc2FmZSBhbmQgcmVzcG9uc2libGUgZGV2ZWxvcG1lbnQgb2YgZnJvbnRpZXIgQUkgaW4gbGFuZG1hcmsgQmxldGNobGV5IERlY2xhcmF0aW9uXCIuIEdPVi5VSyAoUHJlc3MgcmVsZWFzZSkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEgTm92ZW1iZXIgMjAyMy4gUmV0cmlldmVkIDEgTm92ZW1iZXIgMjAyMy5cbl4gXCJTZWNvbmQgZ2xvYmFsIEFJIHN1bW1pdCBzZWN1cmVzIHNhZmV0eSBjb21taXRtZW50cyBmcm9tIGNvbXBhbmllc1wiLiBSZXV0ZXJzLiAyMSBNYXkgMjAyNC4gUmV0cmlldmVkIDIzIE1heSAyMDI0LlxuXiBcIkZyb250aWVyIEFJIFNhZmV0eSBDb21taXRtZW50cywgQUkgU2VvdWwgU3VtbWl0IDIwMjRcIi4gZ292LnVrLiAyMSBNYXkgMjAyNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjMgTWF5IDIwMjQuIFJldHJpZXZlZCAyMyBNYXkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIFJ1c3NlbGwgJiBOb3J2aWcgMjAyMSwgcC7CoDkuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBjIENvcGVsYW5kLCBKLiwgZWQuICgyMDA0KS4gVGhlIEVzc2VudGlhbCBUdXJpbmc6IHRoZSBpZGVhcyB0aGF0IGdhdmUgYmlydGggdG8gdGhlIGNvbXB1dGVyIGFnZS4gT3hmb3JkLCBFbmdsYW5kOiBDbGFyZW5kb24gUHJlc3MuIElTQk7CoDAtMTk4Mi01MDc5LTcuXG5eIFwiR29vZ2xlIGJvb2tzIG5ncmFtXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5eIEFJJ3MgaW1tZWRpYXRlIHByZWN1cnNvcnM6IE1jQ29yZHVjayAoMjAwNCwgcHAuwqA1MeKAkzEwNyksIENyZXZpZXIgKDE5OTMsIHBwLsKgMjfigJMzMiksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgOOKAkzE3KSwgTW9yYXZlYyAoMTk4OCwgcC7CoDMpXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBUdXJpbmcncyBvcmlnaW5hbCBwdWJsaWNhdGlvbiBvZiB0aGUgVHVyaW5nIHRlc3QgaW4gXCJDb21wdXRpbmcgbWFjaGluZXJ5IGFuZCBpbnRlbGxpZ2VuY2VcIjogVHVyaW5nICgxOTUwKSBIaXN0b3JpY2FsIGluZmx1ZW5jZSBhbmQgcGhpbG9zb3BoaWNhbCBpbXBsaWNhdGlvbnM6IEhhdWdlbGFuZCAoMTk4NSwgcHAuwqA24oCTOSksIENyZXZpZXIgKDE5OTMsIHAuwqAyNCksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA3MOKAkzcxKSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqAyLCA5ODQpXG5eIENyZXZpZXIgKDE5OTMpLCBwcC7CoDQ34oCTNDkuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMDMpLCBwLsKgMTcuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMDMpLCBwLsKgMTguXG5eIE5ld3F1aXN0ICgxOTk0KSwgcHAuwqA4NuKAkzg2LlxuXiBTaW1vbiAoMTk2NSwgcC7CoDk2KSBxdW90ZWQgaW4gQ3JldmllciAoMTk5MywgcC7CoDEwOSlcbl4gTWluc2t5ICgxOTY3LCBwLsKgMikgcXVvdGVkIGluIENyZXZpZXIgKDE5OTMsIHAuwqAxMDkpXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgMjEuXG5eIExpZ2h0aGlsbCAoMTk3MykuXG5eIE5SQyAxOTk5LCBwcC7CoDIxMuKAkzIxMy5cbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqAyMi5cbl4gRXhwZXJ0IHN5c3RlbXM6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjMsIDI5MiksIEx1Z2VyICYgU3R1YmJsZWZpZWxkICgyMDA0LCBwcC7CoDIyN+KAkzMzMSksIE5pbHNzb24gKDE5OTgsIGNocHQuIDE3LjQpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgMzI34oCTMzM1LCA0MzTigJM0MzUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDE0NeKAkzE2MiwgMTk34oCTMjAzKSwgTmV3cXVpc3QgKDE5OTQsIHBwLsKgMTU14oCTMTgzKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI0LlxuXiBOaWxzc29uICgxOTk4KSwgcC7CoDcuXG5eIE1jQ29yZHVjayAoMjAwNCksIHBwLsKgNDU04oCTNDYyLlxuXiBNb3JhdmVjICgxOTg4KS5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIEJyb29rcyAoMTk5MCkuXG5eIERldmVsb3BtZW50YWwgcm9ib3RpY3M6IFdlbmcgZXQgYWwuICgyMDAxKSwgTHVuZ2FyZWxsYSBldCBhbC4gKDIwMDMpLCBBc2FkYSBldCBhbC4gKDIwMDkpLCBPdWRleWVyICgyMDEwKVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI1LlxuXiBDcmV2aWVyICgxOTkzLCBwcC7CoDIxNOKAkzIxNSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHBwLsKgMjQsIDI2KVxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDI2LlxuXiBGb3JtYWwgYW5kIG5hcnJvdyBtZXRob2RzIGFkb3B0ZWQgaW4gdGhlIDE5OTBzOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDI04oCTMjYpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgNDg24oCTNDg3KVxuXiBBSSB3aWRlbHkgdXNlZCBpbiB0aGUgbGF0ZSAxOTkwczogS3VyendlaWwgKDIwMDUsIHAuwqAyNjUpLCBOUkMgKDE5OTksIHBwLsKgMjE24oCTMjIyKSwgTmV3cXVpc3QgKDE5OTQsIHBwLsKgMTg54oCTMjAxKVxuXiBXb25nICgyMDIzKS5cbl4gTW9vcmUncyBMYXcgYW5kIEFJOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDE0LCAyNylcbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgQ2xhcmsgKDIwMTViKS5cbl4gQmlnIGRhdGE6IFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNilcbl4gU2FnYXIsIFJhbSAoMyBKdW5lIDIwMjApLiBcIk9wZW5BSSBSZWxlYXNlcyBHUFQtMywgVGhlIExhcmdlc3QgTW9kZWwgU28gRmFyXCIuIEFuYWx5dGljcyBJbmRpYSBNYWdhemluZS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBBdWd1c3QgMjAyMC4gUmV0cmlldmVkIDE1IE1hcmNoIDIwMjMuXG5eIE1pbG1vLCBEYW4gKDIgRmVicnVhcnkgMjAyMykuIFwiQ2hhdEdQVCByZWFjaGVzIDEwMCBtaWxsaW9uIHVzZXJzIHR3byBtb250aHMgYWZ0ZXIgbGF1bmNoXCIuIFRoZSBHdWFyZGlhbi4gSVNTTsKgMDI2MS0zMDc3LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzIEZlYnJ1YXJ5IDIwMjMuIFJldHJpZXZlZCAzMSBEZWNlbWJlciAyMDI0LlxuXiBHb3JpY2hhbmF6LCBUaW0gKDI5IE5vdmVtYmVyIDIwMjMpLiBcIkNoYXRHUFQgdHVybnMgMTogQUkgY2hhdGJvdCdzIHN1Y2Nlc3Mgc2F5cyBhcyBtdWNoIGFib3V0IGh1bWFucyBhcyB0ZWNobm9sb2d5XCIuIFRoZSBDb252ZXJzYXRpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMxIERlY2VtYmVyIDIwMjQuIFJldHJpZXZlZCAzMSBEZWNlbWJlciAyMDI0LlxuXiBEaUZlbGljaWFudG9uaW8gKDIwMjMpLlxuXiBHb3N3YW1pICgyMDIzKS5cbl4gXCJOZWFybHkgMSBpbiA0IG5ldyBzdGFydHVwcyBpcyBhbiBBSSBjb21wYW55XCIuIFBpdGNoQm9vay4gMjQgRGVjZW1iZXIgMjAyNC4gUmV0cmlldmVkIDMgSmFudWFyeSAyMDI1LlxuXiBHcmF5bGluZywgQW50aG9ueTsgQmFsbCwgQnJpYW4gKDEgQXVndXN0IDIwMjQpLiBcIlBoaWxvc29waHkgaXMgY3J1Y2lhbCBpbiB0aGUgYWdlIG9mIEFJXCIuIFRoZSBDb252ZXJzYXRpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgNCBPY3RvYmVyIDIwMjQuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBKYXJvdywgT3NoYW4gKDE1IEp1bmUgMjAyNCkuIFwiV2lsbCBBSSBldmVyIGJlY29tZSBjb25zY2lvdXM/IEl0IGRlcGVuZHMgb24gaG93IHlvdSB0aGluayBhYm91dCBiaW9sb2d5XCIuIFZveC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjEgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA0IE9jdG9iZXIgMjAyNC5cbl4gTWNDYXJ0aHksIEpvaG4uIFwiVGhlIFBoaWxvc29waHkgb2YgQUkgYW5kIHRoZSBBSSBvZiBQaGlsb3NvcGh5XCIuIGptYy5zdGFuZm9yZC5lZHUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIzIE9jdG9iZXIgMjAxOC4gUmV0cmlldmVkIDMgT2N0b2JlciAyMDI0LlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgVHVyaW5nICgxOTUwKSwgcC7CoDEuXG5eIFR1cmluZyAoMTk1MCksIFVuZGVyIFwiVGhlIEFyZ3VtZW50IGZyb20gQ29uc2Npb3VzbmVzc1wiLlxuXiBLaXJrLUdpYW5uaW5pLCBDYW1lcm9uIERvbWVuaWNvOyBHb2xkc3RlaW4sIFNpbW9uICgxNiBPY3RvYmVyIDIwMjMpLiBcIkFJIGlzIGNsb3NlciB0aGFuIGV2ZXIgdG8gcGFzc2luZyB0aGUgVHVyaW5nIHRlc3QgZm9yICdpbnRlbGxpZ2VuY2UnLiBXaGF0IGhhcHBlbnMgd2hlbiBpdCBkb2VzP1wiLiBUaGUgQ29udmVyc2F0aW9uLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDE3IEF1Z3VzdCAyMDI0LlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDMuXG5eIE1ha2VyICgyMDA2KS5cbl4gTWNDYXJ0aHkgKDE5OTkpLlxuXiBNaW5za3kgKDE5ODYpLlxuXiBcIldoYXQgSXMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKT9cIi4gR29vZ2xlIENsb3VkIFBsYXRmb3JtLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBKdWx5IDIwMjMuIFJldHJpZXZlZCAxNiBPY3RvYmVyIDIwMjMuXG5eIFwiT25lIG9mIHRoZSBCaWdnZXN0IFByb2JsZW1zIGluIFJlZ3VsYXRpbmcgQUkgSXMgQWdyZWVpbmcgb24gYSBEZWZpbml0aW9uXCIuIENhcm5lZ2llIEVuZG93bWVudCBmb3IgSW50ZXJuYXRpb25hbCBQZWFjZS4gUmV0cmlldmVkIDMxIEp1bHkgMjAyNC5cbl4gXCJBSSBvciBCUz8gSG93IHRvIHRlbGwgaWYgYSBtYXJrZXRpbmcgdG9vbCByZWFsbHkgdXNlcyBhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLiBUaGUgRHJ1bS4gUmV0cmlldmVkIDMxIEp1bHkgMjAyNC5cbl4gTmlsc3NvbiAoMTk4MyksIHAuwqAxMC5cbl4gSGF1Z2VsYW5kICgxOTg1KSwgcHAuwqAxMTLigJMxMTcuXG5eIFBoeXNpY2FsIHN5bWJvbCBzeXN0ZW0gaHlwb3RoZXNpczogTmV3ZWxsICYgU2ltb24gKDE5NzYsIHAuwqAxMTYpIEhpc3RvcmljYWwgc2lnbmlmaWNhbmNlOiBNY0NvcmR1Y2sgKDIwMDQsIHAuwqAxNTMpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMTkpXG5eIE1vcmF2ZWMncyBwYXJhZG94OiBNb3JhdmVjICgxOTg4LCBwcC7CoDE14oCTMTYpLCBNaW5za3kgKDE5ODYsIHAuwqAyOSksIFBpbmtlciAoMjAwNywgcHAuwqAxOTDigJMxOTEpXG5eIERyZXlmdXMnIGNyaXRpcXVlIG9mIEFJOiBEcmV5ZnVzICgxOTcyKSwgRHJleWZ1cyAmIERyZXlmdXMgKDE5ODYpIEhpc3RvcmljYWwgc2lnbmlmaWNhbmNlIGFuZCBwaGlsb3NvcGhpY2FsIGltcGxpY2F0aW9uczogQ3JldmllciAoMTk5MywgcHAuwqAxMjDigJMxMzIpLCBNY0NvcmR1Y2sgKDIwMDQsIHBwLsKgMjEx4oCTMjM5KSwgUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSwgcHAuwqA5ODHigJM5ODIpLCBGZWFybiAoMjAwNywgY2hwdC4gMylcbl4gQ3JldmllciAoMTk5MyksIHAuwqAxMjUuXG5eIExhbmdsZXkgKDIwMTEpLlxuXiBLYXR6ICgyMDEyKS5cbl4gTmVhdHMgdnMuIHNjcnVmZmllcywgdGhlIGhpc3RvcmljIGRlYmF0ZTogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDQyMeKAkzQyNCwgNDg24oCTNDg5KSwgQ3JldmllciAoMTk5MywgcC7CoDE2OCksIE5pbHNzb24gKDE5ODMsIHBwLsKgMTDigJMxMSksIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEsIHAuwqAyNCkgQSBjbGFzc2ljIGV4YW1wbGUgb2YgdGhlIFwic2NydWZmeVwiIGFwcHJvYWNoIHRvIGludGVsbGlnZW5jZTogTWluc2t5ICgxOTg2KSBBIG1vZGVybiBleGFtcGxlIG9mIG5lYXQgQUkgYW5kIGl0cyBhc3BpcmF0aW9ucyBpbiB0aGUgMjFzdCBjZW50dXJ5OiBEb21pbmdvcyAoMjAxNSlcbl4gUGVubmFjaGluICYgR29lcnR6ZWwgKDIwMDcpLlxuXiBcbkp1bXAgdXAgdG86XG5hIGIgUm9iZXJ0cyAoMjAxNikuXG5eIFJ1c3NlbGwgJiBOb3J2aWcgKDIwMjEpLCBwLsKgOTg2LlxuXiBDaGFsbWVycyAoMTk5NSkuXG5eIERlbm5ldHQgKDE5OTEpLlxuXiBIb3JzdCAoMjAwNSkuXG5eIFNlYXJsZSAoMTk5OSkuXG5eIFNlYXJsZSAoMTk4MCksIHAuwqAxLlxuXiBSdXNzZWxsICYgTm9ydmlnICgyMDIxKSwgcC7CoDk4MTcuXG5eIFNlYXJsZSdzIENoaW5lc2Ugcm9vbSBhcmd1bWVudDogU2VhcmxlICgxOTgwKS4gU2VhcmxlJ3Mgb3JpZ2luYWwgcHJlc2VudGF0aW9uIG9mIHRoZSB0aG91Z2h0IGV4cGVyaW1lbnQuLCBTZWFybGUgKDE5OTkpLiBEaXNjdXNzaW9uOiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDk4NSksIE1jQ29yZHVjayAoMjAwNCwgcHAuwqA0NDPigJM0NDUpLCBDcmV2aWVyICgxOTkzLCBwcC7CoDI2OeKAkzI3MSlcbl4gTGVpdGgsIFNhbSAoNyBKdWx5IDIwMjIpLiBcIk5pY2sgQm9zdHJvbTogSG93IGNhbiB3ZSBiZSBjZXJ0YWluIGEgbWFjaGluZSBpc24ndCBjb25zY2lvdXM/XCIuIFRoZSBTcGVjdGF0b3IuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgMjMgRmVicnVhcnkgMjAyNC5cbl4gXG5KdW1wIHVwIHRvOlxuYSBiIGMgVGhvbXNvbiwgSm9ubnkgKDMxIE9jdG9iZXIgMjAyMikuIFwiV2h5IGRvbid0IHJvYm90cyBoYXZlIHJpZ2h0cz9cIi4gQmlnIFRoaW5rLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMyBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFxuSnVtcCB1cCB0bzpcbmEgYiBLYXRlbWFuLCBCcmlhbiAoMjQgSnVseSAyMDIzKS4gXCJBSSBTaG91bGQgQmUgVGVycmlmaWVkIG9mIEh1bWFuc1wiLiBUaW1lLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFdvbmcsIEplZmYgKDEwIEp1bHkgMjAyMykuIFwiV2hhdCBsZWFkZXJzIG5lZWQgdG8ga25vdyBhYm91dCByb2JvdCByaWdodHNcIi4gRmFzdCBDb21wYW55LlxuXiBIZXJuLCBBbGV4ICgxMiBKYW51YXJ5IDIwMTcpLiBcIkdpdmUgcm9ib3RzICdwZXJzb25ob29kJyBzdGF0dXMsIEVVIGNvbW1pdHRlZSBhcmd1ZXNcIi4gVGhlIEd1YXJkaWFuLiBJU1NOwqAwMjYxLTMwNzcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMjMgRmVicnVhcnkgMjAyNC5cbl4gRG92ZXksIERhbmEgKDE0IEFwcmlsIDIwMTgpLiBcIkV4cGVydHMgRG9uJ3QgVGhpbmsgUm9ib3RzIFNob3VsZCBIYXZlIFJpZ2h0c1wiLiBOZXdzd2Vlay4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBPY3RvYmVyIDIwMjQuIFJldHJpZXZlZCAyMyBGZWJydWFyeSAyMDI0LlxuXiBDdWRkeSwgQWxpY2UgKDEzIEFwcmlsIDIwMTgpLiBcIlJvYm90IHJpZ2h0cyB2aW9sYXRlIGh1bWFuIHJpZ2h0cywgZXhwZXJ0cyB3YXJuIEVVXCIuIGV1cm9uZXdzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDIzIEZlYnJ1YXJ5IDIwMjQuXG5eIFRoZSBJbnRlbGxpZ2VuY2UgZXhwbG9zaW9uIGFuZCB0ZWNobm9sb2dpY2FsIHNpbmd1bGFyaXR5OiBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwcC7CoDEwMDTigJMxMDA1KSwgT21vaHVuZHJvICgyMDA4KSwgS3VyendlaWwgKDIwMDUpIEkuIEouIEdvb2QncyBcImludGVsbGlnZW5jZSBleHBsb3Npb25cIjogR29vZCAoMTk2NSkgVmVybm9yIFZpbmdlJ3MgXCJzaW5ndWxhcml0eVwiOiBWaW5nZSAoMTk5Mylcbl4gUnVzc2VsbCAmIE5vcnZpZyAoMjAyMSksIHAuwqAxMDA1LlxuXiBUcmFuc2h1bWFuaXNtOiBNb3JhdmVjICgxOTg4KSwgS3VyendlaWwgKDIwMDUpLCBSdXNzZWxsICYgTm9ydmlnICgyMDIxLCBwLsKgMTAwNSlcbl4gQUkgYXMgZXZvbHV0aW9uOiBFZHdhcmQgRnJlZGtpbiBpcyBxdW90ZWQgaW4gTWNDb3JkdWNrICgyMDA0LCBwLsKgNDAxKSwgQnV0bGVyICgxODYzKSwgRHlzb24gKDE5OTgpXG5eIE1jUXVpbGxhbiwgRGFuICgxNCBKYW51YXJ5IDIwMjUpLiBcImEgZ2lmdCB0byB0aGUgZmFyIHJpZ2h0XCIuIENvbXB1dGVyV2Vla2x5LmNvbS4gUmV0cmlldmVkIDIyIEphbnVhcnkgMjAyNS5cbl4gQUkgaW4gbXl0aDogTWNDb3JkdWNrICgyMDA0LCBwcC7CoDTigJM1KVxuXiBNY0NvcmR1Y2sgKDIwMDQpLCBwcC7CoDM0MOKAkzQwMC5cbl4gQnV0dGF6em8gKDIwMDEpLlxuXiBBbmRlcnNvbiAoMjAwOCkuXG5eIE1jQ2F1bGV5ICgyMDA3KS5cbl4gR2FsdmFuICgxOTk3KS5cbkFJIHRleHRib29rc1xuXG5UaGUgdHdvIG1vc3Qgd2lkZWx5IHVzZWQgdGV4dGJvb2tzIGluIDIwMjMgKHNlZSB0aGUgT3BlbiBTeWxsYWJ1cyk6XG5cblJ1c3NlbGwsIFN0dWFydCBKLjsgTm9ydmlnLCBQZXRlciAoMjAyMSkuIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlOiBBIE1vZGVybiBBcHByb2FjaCAoNHRowqBlZC4pLiBIb2Jva2VuOiBQZWFyc29uLiBJU0JOwqA5NzgtMC0xMzQ2LTEwOTktMy4gTENDTsKgMjAxOTA0NzQuXG5SaWNoLCBFbGFpbmU7IEtuaWdodCwgS2V2aW47IE5haXIsIFNoaXZhc2hhbmthciBCICgyMDEwKS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKDNyZMKgZWQuKS4gTmV3IERlbGhpOiBUYXRhIE1jR3JhdyBIaWxsIEluZGlhLiBJU0JOwqA5NzgtMC0wNzAwLTg3NzAtNS5cblxuVGhlIGZvdXIgbW9zdCB3aWRlbHkgdXNlZCBBSSB0ZXh0Ym9va3MgaW4gMjAwODpcblxuTHVnZXIsIEdlb3JnZTsgU3R1YmJsZWZpZWxkLCBXaWxsaWFtICgyMDA0KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFN0cnVjdHVyZXMgYW5kIFN0cmF0ZWdpZXMgZm9yIENvbXBsZXggUHJvYmxlbSBTb2x2aW5nICg1dGjCoGVkLikuIEJlbmphbWluL0N1bW1pbmdzLiBJU0JOwqA5NzgtMC04MDUzLTQ3ODAtNy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDIwLiBSZXRyaWV2ZWQgMTcgRGVjZW1iZXIgMjAxOS5cbk5pbHNzb24sIE5pbHMgKDE5OTgpLiBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogQSBOZXcgU3ludGhlc2lzLiBNb3JnYW4gS2F1Zm1hbm4uIElTQk7CoDk3OC0xLTU1ODYtMDQ2Ny00LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuUnVzc2VsbCwgU3R1YXJ0IEouOyBOb3J2aWcsIFBldGVyICgyMDAzKSwgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgTW9kZXJuIEFwcHJvYWNoICgybmTCoGVkLiksIFVwcGVyIFNhZGRsZSBSaXZlciwgTmV3IEplcnNleTogUHJlbnRpY2UgSGFsbCwgSVNCTsKgMC0xMy03OTAzOTUtMi5cblBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuOyBHb2ViZWwsIFJhbmR5ICgxOTk4KS4gQ29tcHV0YXRpb25hbCBJbnRlbGxpZ2VuY2U6IEEgTG9naWNhbCBBcHByb2FjaC4gTmV3IFlvcms6IE94Zm9yZCBVbml2ZXJzaXR5IFByZXNzLiBJU0JOwqA5NzgtMC0xOTUxLTAyNzAtMy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSnVseSAyMDIwLiBSZXRyaWV2ZWQgMjIgQXVndXN0IDIwMjAuIExhdGVyIGVkaXRpb246IFBvb2xlLCBEYXZpZDsgTWFja3dvcnRoLCBBbGFuICgyMDE3KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEZvdW5kYXRpb25zIG9mIENvbXB1dGF0aW9uYWwgQWdlbnRzICgybmTCoGVkLikuIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLiBJU0JOwqA5NzgtMS0xMDcxLTk1MzktNC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNyBEZWNlbWJlciAyMDE3LiBSZXRyaWV2ZWQgNiBEZWNlbWJlciAyMDE3LlxuXG5PdGhlciB0ZXh0Ym9va3M6XG5cbkVydGVsLCBXb2xmZ2FuZyAoMjAxNykuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoMm5kwqBlZC4pLiBTcHJpbmdlci4gSVNCTsKgOTc4LTMtMzE5NS04NDg2LTcuXG5DaWFyYW1lbGxhLCBBbGJlcnRvOyBDaWFyYW1lbGxhLCBNYXJjbyAoMjAyNCkuIEludHJvZHVjdGlvbiB0byBBcnRpZmljaWFsIEludGVsbGlnZW5jZTogZnJvbSBkYXRhIGFuYWx5c2lzIHRvIGdlbmVyYXRpdmUgQUkgKDFzdMKgZWQuKS4gSW50ZWxsaXNlbWFudGljIEVkaXRpb25zLiBJU0JOwqA5NzgtOC04OTQ3LTg3NjAtMy5cbkhpc3Rvcnkgb2YgQUlcbkNyZXZpZXIsIERhbmllbCAoMTk5MykuIEFJOiBUaGUgVHVtdWx0dW91cyBTZWFyY2ggZm9yIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlLiBOZXcgWW9yaywgTlk6IEJhc2ljQm9va3MuIElTQk7CoDAtNDY1LTAyOTk3LTMuXG5NY0NvcmR1Y2ssIFBhbWVsYSAoMjAwNCksIE1hY2hpbmVzIFdobyBUaGluayAoMm5kwqBlZC4pLCBOYXRpY2ssIE1hc3NhY2h1c2V0dHM6IEEuIEsuIFBldGVycywgSVNCTsKgMS01Njg4LTEyMDUtMVxuTmV3cXVpc3QsIEguIFAuICgxOTk0KS4gVGhlIEJyYWluIE1ha2VyczogR2VuaXVzLCBFZ28sIEFuZCBHcmVlZCBJbiBUaGUgUXVlc3QgRm9yIE1hY2hpbmVzIFRoYXQgVGhpbmsuIE5ldyBZb3JrOiBNYWNtaWxsYW4vU0FNUy4gSVNCTsKgOTc4LTAtNjcyMy0wNDEyLTUuXG5IYXJtb24sIFBhdWw7IFNhd3llciwgQnJpYW4gKDE5OTApLiBDcmVhdGluZyBFeHBlcnQgU3lzdGVtcyBmb3IgQnVzaW5lc3MgYW5kIEluZHVzdHJ5LiBOZXcgWW9yazogSm9obiBXaWxleSAmIFNvbnMuIElTQk7CoDA0NzE2MTQ5NjMuXG5PdGhlciBzb3VyY2VzXG5BSSAmIE1MIGluIEZ1c2lvblxuQUkgJiBNTCBpbiBGdXNpb24sIHZpZGVvIGxlY3R1cmUgQXJjaGl2ZWQgMiBKdWx5IDIwMjMgYXQgdGhlIFdheWJhY2sgTWFjaGluZVxuQWx0ZXIsIEFsZXhhbmRyYTsgSGFycmlzLCBFbGl6YWJldGggQS4gKDIwIFNlcHRlbWJlciAyMDIzKSwgXCJGcmFuemVuLCBHcmlzaGFtIGFuZCBPdGhlciBQcm9taW5lbnQgQXV0aG9ycyBTdWUgT3BlbkFJXCIsIFRoZSBOZXcgWW9yayBUaW1lcywgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgU2VwdGVtYmVyIDIwMjQsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuQWx0bWFuLCBTYW07IEJyb2NrbWFuLCBHcmVnOyBTdXRza2V2ZXIsIElseWEgKDIyIE1heSAyMDIzKS4gXCJHb3Zlcm5hbmNlIG9mIFN1cGVyaW50ZWxsaWdlbmNlXCIuIG9wZW5haS5jb20uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI3IE1heSAyMDIzLiBSZXRyaWV2ZWQgMjcgTWF5IDIwMjMuXG5BbmRlcnNvbiwgU3VzYW4gTGVpZ2ggKDIwMDgpLiBcIkFzaW1vdidzIFwidGhyZWUgbGF3cyBvZiByb2JvdGljc1wiIGFuZCBtYWNoaW5lIG1ldGFldGhpY3NcIi4gQUkgJiBTb2NpZXR5LiAyMiAoNCk6IDQ3N+KAkzQ5My4gZG9pOjEwLjEwMDcvczAwMTQ2LTAwNy0wMDk0LTUuIFMyQ0lEwqAxODA5NDU5LlxuQW5kZXJzb24sIE1pY2hhZWw7IEFuZGVyc29uLCBTdXNhbiBMZWlnaCAoMjAxMSkuIE1hY2hpbmUgRXRoaWNzLiBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcy5cbkFybnR6LCBNZWxhbmllOyBHcmVnb3J5LCBUZXJyeTsgWmllcmFobiwgVWxyaWNoICgyMDE2KSwgXCJUaGUgcmlzayBvZiBhdXRvbWF0aW9uIGZvciBqb2JzIGluIE9FQ0QgY291bnRyaWVzOiBBIGNvbXBhcmF0aXZlIGFuYWx5c2lzXCIsIE9FQ0QgU29jaWFsLCBFbXBsb3ltZW50LCBhbmQgTWlncmF0aW9uIFdvcmtpbmcgUGFwZXJzIDE4OVxuQXNhZGEsIE0uOyBIb3NvZGEsIEsuOyBLdW5peW9zaGksIFkuOyBJc2hpZ3VybywgSC47IEludWksIFQuOyBZb3NoaWthd2EsIFkuOyBPZ2lubywgTS47IFlvc2hpZGEsIEMuICgyMDA5KS4gXCJDb2duaXRpdmUgZGV2ZWxvcG1lbnRhbCByb2JvdGljczogYSBzdXJ2ZXlcIi4gSUVFRSBUcmFuc2FjdGlvbnMgb24gQXV0b25vbW91cyBNZW50YWwgRGV2ZWxvcG1lbnQuIDEgKDEpOiAxMuKAkzM0LiBkb2k6MTAuMTEwOS90YW1kLjIwMDkuMjAyMTcwMi4gUzJDSUTCoDEwMTY4NzczLlxuXCJBc2sgdGhlIEFJIGV4cGVydHM6IFdoYXQncyBkcml2aW5nIHRvZGF5J3MgcHJvZ3Jlc3MgaW4gQUk/XCIuIE1jS2luc2V5ICYgQ29tcGFueS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgQXByaWwgMjAxOC4gUmV0cmlldmVkIDEzIEFwcmlsIDIwMTguXG5CYXJmaWVsZCwgV29vZHJvdzsgUGFnYWxsbywgVWdvICgyMDE4KS4gUmVzZWFyY2ggaGFuZGJvb2sgb24gdGhlIGxhdyBvZiBhcnRpZmljaWFsIGludGVsbGlnZW5jZS4gQ2hlbHRlbmhhbSwgVUs6IEVkd2FyZCBFbGdhciBQdWJsaXNoaW5nLiBJU0JOwqA5NzgtMS03ODY0LTM5MDQtOC4gT0NMQ8KgMTAzOTQ4MDA4NS5cbkJlYWwsIEouOyBXaW5zdG9uLCBQYXRyaWNrICgyMDA5KSwgXCJUaGUgTmV3IEZyb250aWVyIG9mIEh1bWFuLUxldmVsIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIsIElFRUUgSW50ZWxsaWdlbnQgU3lzdGVtcywgdm9sLsKgMjQsIHBwLsKgMjHigJMyNCwgZG9pOjEwLjExMDkvTUlTLjIwMDkuNzUsIGhkbDoxNzIxLjEvNTIzNTcsIFMyQ0lEwqAzMjQzNzcxM1xuQmVyZGFobCwgQ2FybCBUaG9tYXM7IEJha2VyLCBMYXdyZW5jZTsgTWFubiwgU2VhbjsgT3NvYmEsIE9zb25kZTsgR2lyb3NpLCBGZWRlcmljbyAoNyBGZWJydWFyeSAyMDIzKS4gXCJTdHJhdGVnaWVzIHRvIEltcHJvdmUgdGhlIEltcGFjdCBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBvbiBIZWFsdGggRXF1aXR5OiBTY29waW5nIFJldmlld1wiLiBKTUlSIEFJLiAyOiBlNDI5MzYuIGRvaToxMC4yMTk2LzQyOTM2LiBJU1NOwqAyODE3LTE3MDUuIFBNQ8KgMTEwNDE0NTkuIFBNSUTCoDM4ODc1NTg3LiBTMkNJRMKgMjU2NjgxNDM5LlxuQmVycnloaWxsLCBKYW1pZTsgSGVhbmcsIEvDqXZpbiBLb2s7IENsb2doZXIsIFJvYjsgTWNCcmlkZSwgS2VlZ2FuICgyMDE5KS4gSGVsbG8sIFdvcmxkOiBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhbmQgaXRzIFVzZSBpbiB0aGUgUHVibGljIFNlY3RvciAoUERGKS4gUGFyaXM6IE9FQ0QgT2JzZXJ2YXRvcnkgb2YgUHVibGljIFNlY3RvciBJbm5vdmF0aW9uLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBEZWNlbWJlciAyMDE5LiBSZXRyaWV2ZWQgOSBBdWd1c3QgMjAyMC5cbkJlcnRpbmksIE07IERlbCBCaW1ibywgQTsgVG9ybmlhaSwgQyAoMjAwNikuIFwiQXV0b21hdGljIGFubm90YXRpb24gYW5kIHNlbWFudGljIHJldHJpZXZhbCBvZiB2aWRlbyBzZXF1ZW5jZXMgdXNpbmcgbXVsdGltZWRpYSBvbnRvbG9naWVzXCIuIE1NICcwNiBQcm9jZWVkaW5ncyBvZiB0aGUgMTR0aCBBQ00gaW50ZXJuYXRpb25hbCBjb25mZXJlbmNlIG9uIE11bHRpbWVkaWEuIDE0dGggQUNNIGludGVybmF0aW9uYWwgY29uZmVyZW5jZSBvbiBNdWx0aW1lZGlhLiBTYW50YSBCYXJiYXJhOiBBQ00uIHBwLsKgNjc54oCTNjgyLlxuQm9zdHJvbSwgTmljayAoMjAxNCkuIFN1cGVyaW50ZWxsaWdlbmNlOiBQYXRocywgRGFuZ2VycywgU3RyYXRlZ2llcy4gT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MuXG5Cb3N0cm9tLCBOaWNrICgyMDE1KS4gXCJXaGF0IGhhcHBlbnMgd2hlbiBvdXIgY29tcHV0ZXJzIGdldCBzbWFydGVyIHRoYW4gd2UgYXJlP1wiLiBURUQgKGNvbmZlcmVuY2UpLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBKdWx5IDIwMjAuIFJldHJpZXZlZCAzMCBKYW51YXJ5IDIwMjAuXG5Ccm9va3MsIFJvZG5leSAoMTAgTm92ZW1iZXIgMjAxNCkuIFwiYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaXMgYSB0b29sLCBub3QgYSB0aHJlYXRcIi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTIgTm92ZW1iZXIgMjAxNC5cbkJyb29rcywgUm9kbmV5ICgxOTkwKS4gXCJFbGVwaGFudHMgRG9uJ3QgUGxheSBDaGVzc1wiIChQREYpLiBSb2JvdGljcyBhbmQgQXV0b25vbW91cyBTeXN0ZW1zLiA2ICgx4oCTMik6IDPigJMxNS4gQ2l0ZVNlZXJYwqAxMC4xLjEuNTg4Ljc1MzkuIGRvaToxMC4xMDE2L1MwOTIxLTg4OTAoMDUpODAwMjUtOS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gOSBBdWd1c3QgMjAwNy5cbkJ1aXRlbiwgTWlyaWFtIEMgKDIwMTkpLiBcIlRvd2FyZHMgSW50ZWxsaWdlbnQgUmVndWxhdGlvbiBvZiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBFdXJvcGVhbiBKb3VybmFsIG9mIFJpc2sgUmVndWxhdGlvbi4gMTAgKDEpOiA0MeKAkzU5LiBkb2k6MTAuMTAxNy9lcnIuMjAxOS44LiBJU1NOwqAxODY3LTI5OVguXG5CdXNod2ljaywgU29waGllICgxNiBNYXJjaCAyMDIzKSwgXCJXaGF0IHRoZSBOZXcgR1BULTQgQUkgQ2FuIERvXCIsIFNjaWVudGlmaWMgQW1lcmljYW4sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIyIEF1Z3VzdCAyMDIzLCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcbkJ1dGxlciwgU2FtdWVsICgxMyBKdW5lIDE4NjMpLiBcIkRhcndpbiBhbW9uZyB0aGUgTWFjaGluZXNcIi4gTGV0dGVycyB0byB0aGUgRWRpdG9yLiBUaGUgUHJlc3MuIENocmlzdGNodXJjaCwgTmV3IFplYWxhbmQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IFNlcHRlbWJlciAyMDA4LiBSZXRyaWV2ZWQgMTYgT2N0b2JlciAyMDE0IOKAkyB2aWEgVmljdG9yaWEgVW5pdmVyc2l0eSBvZiBXZWxsaW5ndG9uLlxuQnV0dGF6em8sIEcuIChKdWx5IDIwMDEpLiBcIkFydGlmaWNpYWwgY29uc2Npb3VzbmVzczogVXRvcGlhIG9yIHJlYWwgcG9zc2liaWxpdHk/XCIuIENvbXB1dGVyLiAzNCAoNyk6IDI04oCTMzAuIGRvaToxMC4xMTA5LzIuOTMzNTAwLlxuQ2FtYnJpYSwgRXJpazsgV2hpdGUsIEJlYm8gKE1heSAyMDE0KS4gXCJKdW1waW5nIE5MUCBDdXJ2ZXM6IEEgUmV2aWV3IG9mIE5hdHVyYWwgTGFuZ3VhZ2UgUHJvY2Vzc2luZyBSZXNlYXJjaCBbUmV2aWV3IEFydGljbGVdXCIuIElFRUUgQ29tcHV0YXRpb25hbCBJbnRlbGxpZ2VuY2UgTWFnYXppbmUuIDkgKDIpOiA0OOKAkzU3LiBkb2k6MTAuMTEwOS9NQ0kuMjAxNC4yMzA3MjI3LiBTMkNJRMKgMjA2NDUxOTg2LlxuQ2VsbGFuLUpvbmVzLCBSb3J5ICgyIERlY2VtYmVyIDIwMTQpLiBcIlN0ZXBoZW4gSGF3a2luZyB3YXJucyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBlbmQgbWFua2luZFwiLiBCQkMgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMzAgT2N0b2JlciAyMDE1LiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDE1LlxuQ2hhbG1lcnMsIERhdmlkICgxOTk1KS4gXCJGYWNpbmcgdXAgdG8gdGhlIHByb2JsZW0gb2YgY29uc2Npb3VzbmVzc1wiLiBKb3VybmFsIG9mIENvbnNjaW91c25lc3MgU3R1ZGllcy4gMiAoMyk6IDIwMOKAkzIxOS4gQ2l0ZVNlZXJYwqAxMC4xLjEuMTAzLjgzNjIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggTWFyY2ggMjAwNS4gUmV0cmlldmVkIDExIE9jdG9iZXIgMjAxOC5cbkNoYWxsYSwgU3ViaGFzaDsgTW9yZWxhbmQsIE1hcmsgUi47IE11xaFpY2tpLCBEYXJrbzsgRXZhbnMsIFJvYmluIEouICgyMDExKS4gRnVuZGFtZW50YWxzIG9mIE9iamVjdCBUcmFja2luZy4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MuIGRvaToxMC4xMDE3L0NCTzk3ODA1MTE5NzU4MzcuIElTQk7CoDk3OC0wLTUyMTgtNzYyOC01LlxuQ2hyaXN0aWFuLCBCcmlhbiAoMjAyMCkuIFRoZSBBbGlnbm1lbnQgUHJvYmxlbTogTWFjaGluZSBsZWFybmluZyBhbmQgaHVtYW4gdmFsdWVzLiBXLiBXLiBOb3J0b24gJiBDb21wYW55LiBJU0JOwqA5NzgtMC0zOTM4LTY4MzMtMy4gT0NMQ8KgMTIzMzI2Njc1My5cbkNpcmVzYW4sIEQuOyBNZWllciwgVS47IFNjaG1pZGh1YmVyLCBKLiAoMjAxMikuIFwiTXVsdGktY29sdW1uIGRlZXAgbmV1cmFsIG5ldHdvcmtzIGZvciBpbWFnZSBjbGFzc2lmaWNhdGlvblwiLiAyMDEyIElFRUUgQ29uZmVyZW5jZSBvbiBDb21wdXRlciBWaXNpb24gYW5kIFBhdHRlcm4gUmVjb2duaXRpb24uIHBwLsKgMzY0MuKAkzM2NDkuIGFyWGl2OjEyMDIuMjc0NS4gZG9pOjEwLjExMDkvY3Zwci4yMDEyLjYyNDgxMTAuIElTQk7CoDk3OC0xLTQ2NzMtMTIyOC04LiBTMkNJRMKgMjE2MTU5Mi5cbkNsYXJrLCBKYWNrICgyMDE1YikuIFwiV2h5IDIwMTUgV2FzIGEgQnJlYWt0aHJvdWdoIFllYXIgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gQmxvb21iZXJnLmNvbS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjMgTm92ZW1iZXIgMjAxNi4gUmV0cmlldmVkIDIzIE5vdmVtYmVyIDIwMTYuXG5DTkEgKDEyIEphbnVhcnkgMjAxOSkuIFwiQ29tbWVudGFyeTogQmFkIG5ld3MuIEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGlzIGJpYXNlZFwiLiBDTkEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEyIEphbnVhcnkgMjAxOS4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMC5cbkN5YmVua28sIEcuICgxOTg4KS4gQ29udGludW91cyB2YWx1ZWQgbmV1cmFsIG5ldHdvcmtzIHdpdGggdHdvIGhpZGRlbiBsYXllcnMgYXJlIHN1ZmZpY2llbnQgKFJlcG9ydCkuIERlcGFydG1lbnQgb2YgQ29tcHV0ZXIgU2NpZW5jZSwgVHVmdHMgVW5pdmVyc2l0eS5cbkRlbmcsIEwuOyBZdSwgRC4gKDIwMTQpLiBcIkRlZXAgTGVhcm5pbmc6IE1ldGhvZHMgYW5kIEFwcGxpY2F0aW9uc1wiIChQREYpLiBGb3VuZGF0aW9ucyBhbmQgVHJlbmRzIGluIFNpZ25hbCBQcm9jZXNzaW5nLiA3ICgz4oCTNCk6IDE5N+KAkzM4Ny4gZG9pOjEwLjE1NjEvMjAwMDAwMDAzOS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgTWFyY2ggMjAxNi4gUmV0cmlldmVkIDE4IE9jdG9iZXIgMjAxNC5cbkRlbm5ldHQsIERhbmllbCAoMTk5MSkuIENvbnNjaW91c25lc3MgRXhwbGFpbmVkLiBUaGUgUGVuZ3VpbiBQcmVzcy4gSVNCTsKgOTc4LTAtNzEzOS05MDM3LTkuXG5EaUZlbGljaWFudG9uaW8sIENoYXNlICgzIEFwcmlsIDIwMjMpLiBcIkFJIGhhcyBhbHJlYWR5IGNoYW5nZWQgdGhlIHdvcmxkLiBUaGlzIHJlcG9ydCBzaG93cyBob3dcIi4gU2FuIEZyYW5jaXNjbyBDaHJvbmljbGUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IEp1bmUgMjAyMy4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMy5cbkRpY2tzb24sIEJlbiAoMiBNYXkgMjAyMikuIFwiTWFjaGluZSBsZWFybmluZzogV2hhdCBpcyB0aGUgdHJhbnNmb3JtZXIgYXJjaGl0ZWN0dXJlP1wiLiBUZWNoVGFsa3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIyIE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAyMiBOb3ZlbWJlciAyMDIzLlxuRG9ja3JpbGwsIFBldGVyICgyNyBKdW5lIDIwMjIpLCBcIlJvYm90cyBXaXRoIEZsYXdlZCBBSSBNYWtlIFNleGlzdCBBbmQgUmFjaXN0IERlY2lzaW9ucywgRXhwZXJpbWVudCBTaG93c1wiLCBTY2llbmNlIEFsZXJ0LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNyBKdW5lIDIwMjJcbkRvbWluZ29zLCBQZWRybyAoMjAxNSkuIFRoZSBNYXN0ZXIgQWxnb3JpdGhtOiBIb3cgdGhlIFF1ZXN0IGZvciB0aGUgVWx0aW1hdGUgTGVhcm5pbmcgTWFjaGluZSBXaWxsIFJlbWFrZSBPdXIgV29ybGQuIEJhc2ljIEJvb2tzLiBJU0JOwqA5NzgtMC00NjUwLTY1NzAtNy5cbkRyZXlmdXMsIEh1YmVydCAoMTk3MikuIFdoYXQgQ29tcHV0ZXJzIENhbid0IERvLiBOZXcgWW9yazogTUlUIFByZXNzLiBJU0JOwqA5NzgtMC0wNjAxLTEwODItNi5cbkRyZXlmdXMsIEh1YmVydDsgRHJleWZ1cywgU3R1YXJ0ICgxOTg2KS4gTWluZCBvdmVyIE1hY2hpbmU6IFRoZSBQb3dlciBvZiBIdW1hbiBJbnR1aXRpb24gYW5kIEV4cGVydGlzZSBpbiB0aGUgRXJhIG9mIHRoZSBDb21wdXRlci4gT3hmb3JkOiBCbGFja3dlbGwuIElTQk7CoDk3OC0wLTAyOTAtODA2MC0zLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkR5c29uLCBHZW9yZ2UgKDE5OTgpLiBEYXJ3aW4gYW1vbmcgdGhlIE1hY2hpbmVzLiBBbGxhbiBMYW5lIFNjaWVuY2UuIElTQk7CoDk3OC0wLTczODItMDAzMC05LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkVkZWxzb24sIEVkd2FyZCAoMTk5MSkuIFRoZSBOZXJ2b3VzIFN5c3RlbS4gTmV3IFlvcms6IENoZWxzZWEgSG91c2UuIElTQk7CoDk3OC0wLTc5MTAtMDQ2NC03LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuRWR3YXJkcywgQmVuaiAoMTcgTWF5IDIwMjMpLiBcIlBvbGw6IEFJIHBvc2VzIHJpc2sgdG8gaHVtYW5pdHksIGFjY29yZGluZyB0byBtYWpvcml0eSBvZiBBbWVyaWNhbnNcIi4gQXJzIFRlY2huaWNhLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5GZWFybiwgTmljaG9sYXMgKDIwMDcpLiBUaGUgTGF0ZXN0IEFuc3dlcnMgdG8gdGhlIE9sZGVzdCBRdWVzdGlvbnM6IEEgUGhpbG9zb3BoaWNhbCBBZHZlbnR1cmUgd2l0aCB0aGUgV29ybGQncyBHcmVhdGVzdCBUaGlua2Vycy4gTmV3IFlvcms6IEdyb3ZlIFByZXNzLiBJU0JOwqA5NzgtMC04MDIxLTE4MzktNC5cbkZvcmQsIE1hcnRpbjsgQ29sdmluLCBHZW9mZiAoNiBTZXB0ZW1iZXIgMjAxNSkuIFwiV2lsbCByb2JvdHMgY3JlYXRlIG1vcmUgam9icyB0aGFuIHRoZXkgZGVzdHJveT9cIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBKdW5lIDIwMTguIFJldHJpZXZlZCAxMyBKYW51YXJ5IDIwMTguXG5Gb3ggTmV3cyAoMjAyMykuIFwiRm94IE5ld3MgUG9sbFwiIChQREYpLiBGb3ggTmV3cy4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTIgTWF5IDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5GcmV5LCBDYXJsIEJlbmVkaWt0OyBPc2Jvcm5lLCBNaWNoYWVsIEEgKDEgSmFudWFyeSAyMDE3KS4gXCJUaGUgZnV0dXJlIG9mIGVtcGxveW1lbnQ6IEhvdyBzdXNjZXB0aWJsZSBhcmUgam9icyB0byBjb21wdXRlcmlzYXRpb24/XCIuIFRlY2hub2xvZ2ljYWwgRm9yZWNhc3RpbmcgYW5kIFNvY2lhbCBDaGFuZ2UuIDExNDogMjU04oCTMjgwLiBDaXRlU2VlcljCoDEwLjEuMS4zOTUuNDE2LiBkb2k6MTAuMTAxNi9qLnRlY2hmb3JlLjIwMTYuMDguMDE5LiBJU1NOwqAwMDQwLTE2MjUuXG5cIkZyb20gbm90IHdvcmtpbmcgdG8gbmV1cmFsIG5ldHdvcmtpbmdcIi4gVGhlIEVjb25vbWlzdC4gMjAxNi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMzEgRGVjZW1iZXIgMjAxNi4gUmV0cmlldmVkIDI2IEFwcmlsIDIwMTguXG5HYWx2YW4sIEppbGwgKDEgSmFudWFyeSAxOTk3KS4gXCJFbnRlcmluZyB0aGUgUG9zdGh1bWFuIENvbGxlY3RpdmUgaW4gUGhpbGlwIEsuIERpY2sncyBcIkRvIEFuZHJvaWRzIERyZWFtIG9mIEVsZWN0cmljIFNoZWVwP1wiXCIuIFNjaWVuY2UgRmljdGlvbiBTdHVkaWVzLiAyNCAoMyk6IDQxM+KAkzQyOS4gSlNUT1LCoDQyNDA2NDQuXG5HZWlzdCwgRWR3YXJkIE1vb3JlICg5IEF1Z3VzdCAyMDE1KS4gXCJJcyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSByZWFsbHkgYW4gZXhpc3RlbnRpYWwgdGhyZWF0IHRvIGh1bWFuaXR5P1wiLiBCdWxsZXRpbiBvZiB0aGUgQXRvbWljIFNjaWVudGlzdHMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMwIE9jdG9iZXIgMjAxNS4gUmV0cmlldmVkIDMwIE9jdG9iZXIgMjAxNS5cbkdpYmJzLCBTYW11ZWwgKDI3IE9jdG9iZXIgMjAxNCkuIFwiRWxvbiBNdXNrOiBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBpcyBvdXIgYmlnZ2VzdCBleGlzdGVudGlhbCB0aHJlYXRcIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5Hb2ZmcmV5LCBBbmRyZXcgKDIwMDgpLiBcIkFsZ29yaXRobVwiLiBJbiBGdWxsZXIsIE1hdHRoZXcgKGVkLikuIFNvZnR3YXJlIHN0dWRpZXM6IGEgbGV4aWNvbi4gQ2FtYnJpZGdlLCBNYXNzLjogTUlUIFByZXNzLiBwcC7CoDE14oCTMjAuIElTQk7CoDk3OC0xLTQzNTYtNDc4Ny05LlxuR29sZG1hbiwgU2hhcm9uICgxNCBTZXB0ZW1iZXIgMjAyMikuIFwiMTAgeWVhcnMgbGF0ZXIsIGRlZXAgbGVhcm5pbmcgJ3Jldm9sdXRpb24nIHJhZ2VzIG9uLCBzYXkgQUkgcGlvbmVlcnMgSGludG9uLCBMZUN1biBhbmQgTGlcIi4gVmVudHVyZUJlYXQuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgOCBEZWNlbWJlciAyMDIzLlxuR29vZCwgSS4gSi4gKDE5NjUpLCBTcGVjdWxhdGlvbnMgQ29uY2VybmluZyB0aGUgRmlyc3QgVWx0cmFpbnRlbGxpZ2VudCBNYWNoaW5lLCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMCBKdWx5IDIwMjMsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuR29vZGZlbGxvdywgSWFuOyBCZW5naW8sIFlvc2h1YTsgQ291cnZpbGxlLCBBYXJvbiAoMjAxNiksIERlZXAgTGVhcm5pbmcsIE1JVCBQcmVzcy4sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE2IEFwcmlsIDIwMTYsIHJldHJpZXZlZCAxMiBOb3ZlbWJlciAyMDE3XG5Hb29kbWFuLCBCcnljZTsgRmxheG1hbiwgU2V0aCAoMjAxNykuIFwiRVUgcmVndWxhdGlvbnMgb24gYWxnb3JpdGhtaWMgZGVjaXNpb24tbWFraW5nIGFuZCBhICdyaWdodCB0byBleHBsYW5hdGlvbidcIi4gQUkgTWFnYXppbmUuIDM4ICgzKTogNTAuIGFyWGl2OjE2MDYuMDg4MTMuIGRvaToxMC4xNjA5L2FpbWFnLnYzOGkzLjI3NDEuIFMyQ0lEwqA3MzczOTU5LlxuR292ZXJubWVudCBBY2NvdW50YWJpbGl0eSBPZmZpY2UgKDEzIFNlcHRlbWJlciAyMDIyKS4gQ29uc3VtZXIgRGF0YTogSW5jcmVhc2luZyBVc2UgUG9zZXMgUmlza3MgdG8gUHJpdmFjeS4gZ2FvLmdvdiAoUmVwb3J0KS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTMgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbkdyYW50LCBOaWNvOyBIaWxsLCBLYXNobWlyICgyMiBNYXkgMjAyMykuIFwiR29vZ2xlJ3MgUGhvdG8gQXBwIFN0aWxsIENhbid0IEZpbmQgR29yaWxsYXMuIEFuZCBOZWl0aGVyIENhbiBBcHBsZSdzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cbkdvc3dhbWksIFJvaGFuICg1IEFwcmlsIDIwMjMpLiBcIkhlcmUncyB3aGVyZSB0aGUgQS5JLiBqb2JzIGFyZVwiLiBDTkJDLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5IYXJhcmksIFl1dmFsIE5vYWggKE9jdG9iZXIgMjAxOCkuIFwiV2h5IFRlY2hub2xvZ3kgRmF2b3JzIFR5cmFubnlcIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBTZXB0ZW1iZXIgMjAyMS4gUmV0cmlldmVkIDIzIFNlcHRlbWJlciAyMDIxLlxuSGFyYXJpLCBZdXZhbCBOb2FoICgyMDIzKS4gXCJBSSBhbmQgdGhlIGZ1dHVyZSBvZiBodW1hbml0eVwiLiBZb3VUdWJlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuSGF1Z2VsYW5kLCBKb2huICgxOTg1KS4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IFRoZSBWZXJ5IElkZWEuIENhbWJyaWRnZSwgTWFzcy46IE1JVCBQcmVzcy4gSVNCTsKgOTc4LTAtMjYyMC04MTUzLTUuXG5IaW50b24sIEcuOyBEZW5nLCBMLjsgWXUsIEQuOyBEYWhsLCBHLjsgTW9oYW1lZCwgQS47IEphaXRseSwgTi47IFNlbmlvciwgQS47IFZhbmhvdWNrZSwgVi47IE5ndXllbiwgUC47IFNhaW5hdGgsIFQuOyBLaW5nc2J1cnksIEIuICgyMDEyKS4gXCJEZWVwIE5ldXJhbCBOZXR3b3JrcyBmb3IgQWNvdXN0aWMgTW9kZWxpbmcgaW4gU3BlZWNoIFJlY29nbml0aW9uIOKAkyBUaGUgc2hhcmVkIHZpZXdzIG9mIGZvdXIgcmVzZWFyY2ggZ3JvdXBzXCIuIElFRUUgU2lnbmFsIFByb2Nlc3NpbmcgTWFnYXppbmUuIDI5ICg2KTogODLigJM5Ny4gQmliY29kZToyMDEySVNQTS4uLjI5Li4uODJILiBkb2k6MTAuMTEwOS9tc3AuMjAxMi4yMjA1NTk3LiBTMkNJRMKgMjA2NDg1OTQzLlxuSG9sbGV5LCBQZXRlciAoMjggSmFudWFyeSAyMDE1KS4gXCJCaWxsIEdhdGVzIG9uIGRhbmdlcnMgb2YgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6ICdJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHNvbWUgcGVvcGxlIGFyZSBub3QgY29uY2VybmVkJ1wiLiBUaGUgV2FzaGluZ3RvbiBQb3N0LiBJU1NOwqAwMTkwLTgyODYuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMwIE9jdG9iZXIgMjAxNS4gUmV0cmlldmVkIDMwIE9jdG9iZXIgMjAxNS5cbkhvcm5paywgS3VydDsgU3RpbmNoY29tYmUsIE1heHdlbGw7IFdoaXRlLCBIYWxiZXJ0ICgxOTg5KS4gTXVsdGlsYXllciBGZWVkZm9yd2FyZCBOZXR3b3JrcyBhcmUgVW5pdmVyc2FsIEFwcHJveGltYXRvcnMgKFBERikuIE5ldXJhbCBOZXR3b3Jrcy4gVm9sLsKgMi4gUGVyZ2Ftb24gUHJlc3MuIHBwLsKgMzU54oCTMzY2LiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMSBBcHJpbCAyMDIzLiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5Ib3JzdCwgU3RldmVuICgyMDA1KS4gXCJUaGUgQ29tcHV0YXRpb25hbCBUaGVvcnkgb2YgTWluZFwiLiBUaGUgU3RhbmZvcmQgRW5jeWNsb3BlZGlhIG9mIFBoaWxvc29waHkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgTWFyY2ggMjAxNi4gUmV0cmlldmVkIDcgTWFyY2ggMjAxNi5cbkhvd2UsIEouIChOb3ZlbWJlciAxOTk0KS4gXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhdCBFZGluYnVyZ2ggVW5pdmVyc2l0eTogYSBQZXJzcGVjdGl2ZVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBNYXkgMjAwNy4gUmV0cmlldmVkIDMwIEF1Z3VzdCAyMDA3LlxuSUdNIENoaWNhZ28gKDMwIEp1bmUgMjAxNykuIFwiUm9ib3RzIGFuZCBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBpZ21jaGljYWdvLm9yZy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMSBNYXkgMjAxOS4gUmV0cmlldmVkIDMgSnVseSAyMDE5LlxuSXBob2ZlbiwgUm9uOyBLcml0aWtvcywgTWloYWxpcyAoMyBKYW51YXJ5IDIwMTkpLiBcIlJlZ3VsYXRpbmcgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgYW5kIHJvYm90aWNzOiBldGhpY3MgYnkgZGVzaWduIGluIGEgZGlnaXRhbCBzb2NpZXR5XCIuIENvbnRlbXBvcmFyeSBTb2NpYWwgU2NpZW5jZS4gMTYgKDIpOiAxNzDigJMxODQuIGRvaToxMC4xMDgwLzIxNTgyMDQxLjIwMTguMTU2MzgwMy4gSVNTTsKgMjE1OC0yMDQxLiBTMkNJRMKgNTkyOTg1MDIuXG5Kb3JkYW4sIE0uIEkuOyBNaXRjaGVsbCwgVC4gTS4gKDE2IEp1bHkgMjAxNSkuIFwiTWFjaGluZSBsZWFybmluZzogVHJlbmRzLCBwZXJzcGVjdGl2ZXMsIGFuZCBwcm9zcGVjdHNcIi4gU2NpZW5jZS4gMzQ5ICg2MjQ1KTogMjU14oCTMjYwLiBCaWJjb2RlOjIwMTVTY2kuLi4zNDkuLjI1NUouIGRvaToxMC4xMTI2L3NjaWVuY2UuYWFhODQxNS4gUE1JRMKgMjYxODUyNDMuIFMyQ0lEwqA2NzcyMTguXG5LYWhuZW1hbiwgRGFuaWVsICgyMDExKS4gVGhpbmtpbmcsIEZhc3QgYW5kIFNsb3cuIE1hY21pbGxhbi4gSVNCTsKgOTc4LTEtNDI5OS02OTM1LTIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE1IE1hcmNoIDIwMjMuIFJldHJpZXZlZCA4IEFwcmlsIDIwMTIuXG5LYWhuZW1hbiwgRGFuaWVsOyBTbG92aWMsIEQuOyBUdmVyc2t5LCBBbW9zICgxOTgyKS4gXCJKdWRnbWVudCB1bmRlciB1bmNlcnRhaW50eTogSGV1cmlzdGljcyBhbmQgYmlhc2VzXCIuIFNjaWVuY2UuIDE4NSAoNDE1NykuIE5ldyBZb3JrOiBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzczogMTEyNOKAkzExMzEuIEJpYmNvZGU6MTk3NFNjaS4uLjE4NS4xMTI0VC4gZG9pOjEwLjExMjYvc2NpZW5jZS4xODUuNDE1Ny4xMTI0LiBJU0JOwqA5NzgtMC01MjEyLTg0MTQtMS4gUE1JRMKgMTc4MzU0NTcuIFMyQ0lEwqAxNDM0NTI5NTcuXG5LYXNwZXJvd2ljeiwgUGV0ZXIgKDEgTWF5IDIwMjMpLiBcIlJlZ3VsYXRlIEFJPyBHT1AgbXVjaCBtb3JlIHNrZXB0aWNhbCB0aGFuIERlbXMgdGhhdCBnb3Zlcm5tZW50IGNhbiBkbyBpdCByaWdodDogcG9sbFwiLiBGb3ggTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTkgSnVuZSAyMDIzLiBSZXRyaWV2ZWQgMTkgSnVuZSAyMDIzLlxuS2F0eiwgWWFyZGVuICgxIE5vdmVtYmVyIDIwMTIpLiBcIk5vYW0gQ2hvbXNreSBvbiBXaGVyZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBXZW50IFdyb25nXCIuIFRoZSBBdGxhbnRpYy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjggRmVicnVhcnkgMjAxOS4gUmV0cmlldmVkIDI2IE9jdG9iZXIgMjAxNC5cblwiS2lzbWV0XCIuIE1JVCBBcnRpZmljaWFsIEludGVsbGlnZW5jZSBMYWJvcmF0b3J5LCBIdW1hbm9pZCBSb2JvdGljcyBHcm91cC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgT2N0b2JlciAyMDE0LiBSZXRyaWV2ZWQgMjUgT2N0b2JlciAyMDE0LlxuS2lzc2luZ2VyLCBIZW5yeSAoMSBOb3ZlbWJlciAyMDIxKS4gXCJUaGUgQ2hhbGxlbmdlIG9mIEJlaW5nIEh1bWFuIGluIHRoZSBBZ2Ugb2YgQUlcIi4gVGhlIFdhbGwgU3RyZWV0IEpvdXJuYWwuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDQgTm92ZW1iZXIgMjAyMS4gUmV0cmlldmVkIDQgTm92ZW1iZXIgMjAyMS5cbktvYmllbHVzLCBKYW1lcyAoMjcgTm92ZW1iZXIgMjAxOSkuIFwiR1BVcyBDb250aW51ZSB0byBEb21pbmF0ZSB0aGUgQUkgQWNjZWxlcmF0b3IgTWFya2V0IGZvciBOb3dcIi4gSW5mb3JtYXRpb25XZWVrLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBPY3RvYmVyIDIwMjEuIFJldHJpZXZlZCAxMSBKdW5lIDIwMjAuXG5LdXBlcm1hbiwgRy4gSi47IFJlaWNobGV5LCBSLiBNLjsgQmFpbGV5LCBULiBDLiAoMSBKdWx5IDIwMDYpLiBcIlVzaW5nIENvbW1lcmNpYWwgS25vd2xlZGdlIEJhc2VzIGZvciBDbGluaWNhbCBEZWNpc2lvbiBTdXBwb3J0OiBPcHBvcnR1bml0aWVzLCBIdXJkbGVzLCBhbmQgUmVjb21tZW5kYXRpb25zXCIuIEpvdXJuYWwgb2YgdGhlIEFtZXJpY2FuIE1lZGljYWwgSW5mb3JtYXRpY3MgQXNzb2NpYXRpb24uIDEzICg0KTogMzY54oCTMzcxLiBkb2k6MTAuMTE5Ny9qYW1pYS5NMjA1NS4gUE1DwqAxNTEzNjgxLiBQTUlEwqAxNjYyMjE2MC5cbkt1cnp3ZWlsLCBSYXkgKDIwMDUpLiBUaGUgU2luZ3VsYXJpdHkgaXMgTmVhci4gUGVuZ3VpbiBCb29rcy4gSVNCTsKgOTc4LTAtNjcwMC0zMzg0LTMuXG5MYW5nbGV5LCBQYXQgKDIwMTEpLiBcIlRoZSBjaGFuZ2luZyBzY2llbmNlIG9mIG1hY2hpbmUgbGVhcm5pbmdcIi4gTWFjaGluZSBMZWFybmluZy4gODIgKDMpOiAyNzXigJMyNzkuIGRvaToxMC4xMDA3L3MxMDk5NC0wMTEtNTI0Mi15LlxuTGFyc29uLCBKZWZmOyBBbmd3aW4sIEp1bGlhICgyMyBNYXkgMjAxNikuIFwiSG93IFdlIEFuYWx5emVkIHRoZSBDT01QQVMgUmVjaWRpdmlzbSBBbGdvcml0aG1cIi4gUHJvUHVibGljYS4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjkgQXByaWwgMjAxOS4gUmV0cmlldmVkIDE5IEp1bmUgMjAyMC5cbkxhc2tvd3NraSwgTmljb2xlIChOb3ZlbWJlciAyMDIzKS4gXCJXaGF0IGlzIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCBIb3cgRG9lcyBBSSBXb3JrPyBUZWNoVGFyZ2V0XCIuIEVudGVycHJpc2UgQUkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDUgT2N0b2JlciAyMDI0LiBSZXRyaWV2ZWQgMzAgT2N0b2JlciAyMDIzLlxuTGF3IExpYnJhcnkgb2YgQ29uZ3Jlc3MgKFUuUy4pLiBHbG9iYWwgTGVnYWwgUmVzZWFyY2ggRGlyZWN0b3JhdGUsIGlzc3VpbmcgYm9keS4gKDIwMTkpLiBSZWd1bGF0aW9uIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGluIHNlbGVjdGVkIGp1cmlzZGljdGlvbnMuIExDQ07CoDIwMTk2NjgxNDMuIE9DTEPCoDExMTA3Mjc4MDguXG5MZWUsIFRpbW90aHkgQi4gKDIyIEF1Z3VzdCAyMDE0KS4gXCJXaWxsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGRlc3Ryb3kgaHVtYW5pdHk/IEhlcmUgYXJlIDUgcmVhc29ucyBub3QgdG8gd29ycnlcIi4gVm94LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5MZW5hdCwgRG91Z2xhczsgR3VoYSwgUi4gVi4gKDE5ODkpLiBCdWlsZGluZyBMYXJnZSBLbm93bGVkZ2UtQmFzZWQgU3lzdGVtcy4gQWRkaXNvbi1XZXNsZXkuIElTQk7CoDk3OC0wLTIwMTUtMTc1Mi0xLlxuTGlnaHRoaWxsLCBKYW1lcyAoMTk3MykuIFwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgR2VuZXJhbCBTdXJ2ZXlcIi4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IGEgcGFwZXIgc3ltcG9zaXVtLiBTY2llbmNlIFJlc2VhcmNoIENvdW5jaWwuXG5MaXBhcnRpdG8sIEtlbm5ldGggKDYgSmFudWFyeSAyMDExKSwgVGhlIE5hcnJhdGl2ZSBhbmQgdGhlIEFsZ29yaXRobTogR2VucmVzIG9mIENyZWRpdCBSZXBvcnRpbmcgZnJvbSB0aGUgTmluZXRlZW50aCBDZW50dXJ5IHRvIFRvZGF5IChQREYpIChVbnB1Ymxpc2hlZCBtYW51c2NyaXB0KSwgZG9pOjEwLjIxMzkvc3Nybi4xNzM2MjgzLCBTMkNJRMKgMTY2NzQyOTI3LCBhcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiA5IE9jdG9iZXIgMjAyMlxuTG9ociwgU3RldmUgKDIwMTcpLiBcIlJvYm90cyBXaWxsIFRha2UgSm9icywgYnV0IE5vdCBhcyBGYXN0IGFzIFNvbWUgRmVhciwgTmV3IFJlcG9ydCBTYXlzXCIuIFRoZSBOZXcgWW9yayBUaW1lcy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSmFudWFyeSAyMDE4LiBSZXRyaWV2ZWQgMTMgSmFudWFyeSAyMDE4LlxuTHVuZ2FyZWxsYSwgTS47IE1ldHRhLCBHLjsgUGZlaWZlciwgUi47IFNhbmRpbmksIEcuICgyMDAzKS4gXCJEZXZlbG9wbWVudGFsIHJvYm90aWNzOiBhIHN1cnZleVwiLiBDb25uZWN0aW9uIFNjaWVuY2UuIDE1ICg0KTogMTUx4oCTMTkwLiBDaXRlU2VlcljCoDEwLjEuMS44My43NjE1LiBkb2k6MTAuMTA4MC8wOTU0MDA5MDMxMDAwMTY1NTExMC4gUzJDSUTCoDE0NTI3MzQuXG5cIk1hY2hpbmUgRXRoaWNzXCIuIGFhYWkub3JnLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyOSBOb3ZlbWJlciAyMDE0LlxuTWFkcmlnYWwsIEFsZXhpcyBDLiAoMjcgRmVicnVhcnkgMjAxNSkuIFwiVGhlIGNhc2UgYWdhaW5zdCBraWxsZXIgcm9ib3RzLCBmcm9tIGEgZ3V5IGFjdHVhbGx5IHdvcmtpbmcgb24gYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VcIi4gRnVzaW9uLm5ldC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBGZWJydWFyeSAyMDE2LiBSZXRyaWV2ZWQgMzEgSmFudWFyeSAyMDE2LlxuTWFoZGF3aSwgQXJ3YSAoMjYgSnVuZSAyMDE3KS4gXCJXaGF0IGpvYnMgd2lsbCBzdGlsbCBiZSBhcm91bmQgaW4gMjAgeWVhcnM/IFJlYWQgdGhpcyB0byBwcmVwYXJlIHlvdXIgZnV0dXJlXCIuIFRoZSBHdWFyZGlhbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTQgSmFudWFyeSAyMDE4LiBSZXRyaWV2ZWQgMTMgSmFudWFyeSAyMDE4LlxuTWFrZXIsIE1lZyBIb3VzdG9uICgyMDA2KSwgQUlANTA6IEFJIFBhc3QsIFByZXNlbnQsIEZ1dHVyZSwgRGFydG1vdXRoIENvbGxlZ2UsIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggT2N0b2JlciAyMDA4LCByZXRyaWV2ZWQgMTYgT2N0b2JlciAyMDA4XG5NYXJtb3V5ZXQsIEZyYW7Dp29pc2UgKDE1IERlY2VtYmVyIDIwMjMpLiBcIkdvb2dsZSdzIEdlbWluaTogaXMgdGhlIG5ldyBBSSBtb2RlbCByZWFsbHkgYmV0dGVyIHRoYW4gQ2hhdEdQVD9cIi4gVGhlIENvbnZlcnNhdGlvbi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBNYXJjaCAyMDI0LiBSZXRyaWV2ZWQgMjUgRGVjZW1iZXIgMjAyMy5cbk1pbnNreSwgTWFydmluICgxOTg2KSwgVGhlIFNvY2lldHkgb2YgTWluZCwgU2ltb24gYW5kIFNjaHVzdGVyXG5NY0NhcnRoeSwgSm9objsgTWluc2t5LCBNYXJ2aW47IFJvY2hlc3RlciwgTmF0aGFuOyBTaGFubm9uLCBDbGF1ZGUgKDE5NTUpLiBcIkEgUHJvcG9zYWwgZm9yIHRoZSBEYXJ0bW91dGggU3VtbWVyIFJlc2VhcmNoIFByb2plY3Qgb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgQXVndXN0IDIwMDcuIFJldHJpZXZlZCAzMCBBdWd1c3QgMjAwNy5cbk1jQ2FydGh5LCBKb2huICgyMDA3KSwgXCJGcm9tIEhlcmUgdG8gSHVtYW4tTGV2ZWwgQUlcIiwgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UsIHAuwqAxNzFcbk1jQ2FydGh5LCBKb2huICgxOTk5KSwgV2hhdCBpcyBBST8sIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDQgRGVjZW1iZXIgMjAyMiwgcmV0cmlldmVkIDQgRGVjZW1iZXIgMjAyMlxuTWNDYXVsZXksIExlZSAoMjAwNykuIFwiQUkgYXJtYWdlZGRvbiBhbmQgdGhlIHRocmVlIGxhd3Mgb2Ygcm9ib3RpY3NcIi4gRXRoaWNzIGFuZCBJbmZvcm1hdGlvbiBUZWNobm9sb2d5LiA5ICgyKTogMTUz4oCTMTY0LiBDaXRlU2VlcljCoDEwLjEuMS44NS44OTA0LiBkb2k6MTAuMTAwNy9zMTA2NzYtMDA3LTkxMzgtMi4gUzJDSUTCoDM3MjcyOTQ5LlxuTWNHYXJyeSwgS2VuICgxIERlY2VtYmVyIDIwMDUpLiBcIkEgc3VydmV5IG9mIGludGVyZXN0aW5nbmVzcyBtZWFzdXJlcyBmb3Iga25vd2xlZGdlIGRpc2NvdmVyeVwiLiBUaGUgS25vd2xlZGdlIEVuZ2luZWVyaW5nIFJldmlldy4gMjAgKDEpOiAzOeKAkzYxLiBkb2k6MTAuMTAxNy9TMDI2OTg4ODkwNTAwMDQwOC4gUzJDSUTCoDE0OTg3NjU2LlxuTWNHYXVnaGV5LCBFICgyMDIyKSwgV2lsbCBSb2JvdHMgQXV0b21hdGUgWW91ciBKb2IgQXdheT8gRnVsbCBFbXBsb3ltZW50LCBCYXNpYyBJbmNvbWUsIGFuZCBFY29ub21pYyBEZW1vY3JhY3ksIHAuwqA1MSgzKSBJbmR1c3RyaWFsIExhdyBKb3VybmFsIDUxMeKAkzU1OSwgZG9pOjEwLjIxMzkvc3Nybi4zMDQ0NDQ4LCBTMkNJRMKgMjE5MzM2NDM5LCBTU1JOwqAzMDQ0NDQ4LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBKYW51YXJ5IDIwMjEsIHJldHJpZXZlZCAyNyBNYXkgMjAyM1xuTWVya2xlLCBEYW5pZWw7IE1pZGRlbmRvcmYsIE1hcnRpbiAoMjAxMykuIFwiU3dhcm0gSW50ZWxsaWdlbmNlXCIuIEluIEJ1cmtlLCBFZG11bmQgSy47IEtlbmRhbGwsIEdyYWhhbSAoZWRzLikuIFNlYXJjaCBNZXRob2RvbG9naWVzOiBJbnRyb2R1Y3RvcnkgVHV0b3JpYWxzIGluIE9wdGltaXphdGlvbiBhbmQgRGVjaXNpb24gU3VwcG9ydCBUZWNobmlxdWVzLiBTcHJpbmdlciBTY2llbmNlICYgQnVzaW5lc3MgTWVkaWEuIElTQk7CoDk3OC0xLTQ2MTQtNjk0MC03LlxuTWluc2t5LCBNYXJ2aW4gKDE5NjcpLCBDb21wdXRhdGlvbjogRmluaXRlIGFuZCBJbmZpbml0ZSBNYWNoaW5lcywgRW5nbGV3b29kIENsaWZmcywgTi5KLjogUHJlbnRpY2UtSGFsbFxuTW9yYXZlYywgSGFucyAoMTk4OCkuIE1pbmQgQ2hpbGRyZW4uIEhhcnZhcmQgVW5pdmVyc2l0eSBQcmVzcy4gSVNCTsKgOTc4LTAtNjc0NS03NjE2LTIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDE4IE5vdmVtYmVyIDIwMTkuXG5Nb3JnZW5zdGVybiwgTWljaGFlbCAoOSBNYXkgMjAxNSkuIFwiQXV0b21hdGlvbiBhbmQgYW54aWV0eVwiLiBUaGUgRWNvbm9taXN0LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMiBKYW51YXJ5IDIwMTguIFJldHJpZXZlZCAxMyBKYW51YXJ5IDIwMTguXG5Nw7xsbGVyLCBWaW5jZW50IEMuOyBCb3N0cm9tLCBOaWNrICgyMDE0KS4gXCJGdXR1cmUgUHJvZ3Jlc3MgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U6IEEgUG9sbCBBbW9uZyBFeHBlcnRzXCIgKFBERikuIEFJIE1hdHRlcnMuIDEgKDEpOiA54oCTMTEuIGRvaToxMC4xMTQ1LzI2Mzk0NzUuMjYzOTQ3OC4gUzJDSUTCoDg1MTAwMTYuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE1IEphbnVhcnkgMjAxNi5cbk5ldW1hbm4sIEJlcm5kOyBNw7ZsbGVyLCBSYWxmIChKYW51YXJ5IDIwMDgpLiBcIk9uIHNjZW5lIGludGVycHJldGF0aW9uIHdpdGggZGVzY3JpcHRpb24gbG9naWNzXCIuIEltYWdlIGFuZCBWaXNpb24gQ29tcHV0aW5nLiAyNiAoMSk6IDgy4oCTMTAxLiBkb2k6MTAuMTAxNi9qLmltYXZpcy4yMDA3LjA4LjAxMy4gUzJDSUTCoDEwNzY3MDExLlxuTmlsc3NvbiwgTmlscyAoMTk5NSksIFwiRXllcyBvbiB0aGUgUHJpemVcIiwgQUkgTWFnYXppbmUsIHZvbC7CoDE2LCBwcC7CoDnigJMxN1xuTmV3ZWxsLCBBbGxlbjsgU2ltb24sIEguIEEuICgxOTc2KS4gXCJDb21wdXRlciBTY2llbmNlIGFzIEVtcGlyaWNhbCBJbnF1aXJ5OiBTeW1ib2xzIGFuZCBTZWFyY2hcIi4gQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTS4gMTkgKDMpOiAxMTPigJMxMjYuIGRvaToxMC4xMTQ1LzM2MDAxOC4zNjAwMjIuXG5OaWNhcywgSmFjayAoNyBGZWJydWFyeSAyMDE4KS4gXCJIb3cgWW91VHViZSBEcml2ZXMgUGVvcGxlIHRvIHRoZSBJbnRlcm5ldCdzIERhcmtlc3QgQ29ybmVyc1wiLiBUaGUgV2FsbCBTdHJlZXQgSm91cm5hbC4gSVNTTsKgMDA5OS05NjYwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDE2IEp1bmUgMjAxOC5cbk5pbHNzb24sIE5pbHMgKDE5ODMpLiBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIFByZXBhcmVzIGZvciAyMDAxXCIgKFBERikuIEFJIE1hZ2F6aW5lLiAxICgxKS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgQXVndXN0IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC4gUHJlc2lkZW50aWFsIEFkZHJlc3MgdG8gdGhlIEFzc29jaWF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UuXG5OUkMgKFVuaXRlZCBTdGF0ZXMgTmF0aW9uYWwgUmVzZWFyY2ggQ291bmNpbCkgKDE5OTkpLiBcIkRldmVsb3BtZW50cyBpbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBGdW5kaW5nIGEgUmV2b2x1dGlvbjogR292ZXJubWVudCBTdXBwb3J0IGZvciBDb21wdXRpbmcgUmVzZWFyY2guIE5hdGlvbmFsIEFjYWRlbXkgUHJlc3MuXG5PbW9odW5kcm8sIFN0ZXZlICgyMDA4KS4gVGhlIE5hdHVyZSBvZiBTZWxmLUltcHJvdmluZyBBcnRpZmljaWFsIEludGVsbGlnZW5jZS4gcHJlc2VudGVkIGFuZCBkaXN0cmlidXRlZCBhdCB0aGUgMjAwNyBTaW5ndWxhcml0eSBTdW1taXQsIFNhbiBGcmFuY2lzY28sIENBLlxuT3VkZXllciwgUC1ZLiAoMjAxMCkuIFwiT24gdGhlIGltcGFjdCBvZiByb2JvdGljcyBpbiBiZWhhdmlvcmFsIGFuZCBjb2duaXRpdmUgc2NpZW5jZXM6IGZyb20gaW5zZWN0IG5hdmlnYXRpb24gdG8gaHVtYW4gY29nbml0aXZlIGRldmVsb3BtZW50XCIgKFBERikuIElFRUUgVHJhbnNhY3Rpb25zIG9uIEF1dG9ub21vdXMgTWVudGFsIERldmVsb3BtZW50LiAyICgxKTogMuKAkzE2LiBkb2k6MTAuMTEwOS90YW1kLjIwMDkuMjAzOTA1Ny4gUzJDSUTCoDYzNjIyMTcuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDE4LiBSZXRyaWV2ZWQgNCBKdW5lIDIwMTMuXG5QZW5uYWNoaW4sIEMuOyBHb2VydHplbCwgQi4gKDIwMDcpLiBcIkNvbnRlbXBvcmFyeSBBcHByb2FjaGVzIHRvIEFydGlmaWNpYWwgR2VuZXJhbCBJbnRlbGxpZ2VuY2VcIi4gQXJ0aWZpY2lhbCBHZW5lcmFsIEludGVsbGlnZW5jZS4gQ29nbml0aXZlIFRlY2hub2xvZ2llcy4gQmVybGluLCBIZWlkZWxiZXJnOiBTcHJpbmdlci4gcHAuwqAx4oCTMzAuIGRvaToxMC4xMDA3Lzk3OC0zLTU0MC02ODY3Ny00XzEuIElTQk7CoDk3OC0zLTU0MDItMzczMy00LlxuUGlua2VyLCBTdGV2ZW4gKDIwMDcpIFsxOTk0XSwgVGhlIExhbmd1YWdlIEluc3RpbmN0LCBQZXJlbm5pYWwgTW9kZXJuIENsYXNzaWNzLCBIYXJwZXIsIElTQk7CoDk3OC0wLTA2MTMtMzY0Ni0xXG5Qb3JpYSwgU291amFueWE7IENhbWJyaWEsIEVyaWs7IEJhanBhaSwgUmFqaXY7IEh1c3NhaW4sIEFtaXIgKFNlcHRlbWJlciAyMDE3KS4gXCJBIHJldmlldyBvZiBhZmZlY3RpdmUgY29tcHV0aW5nOiBGcm9tIHVuaW1vZGFsIGFuYWx5c2lzIHRvIG11bHRpbW9kYWwgZnVzaW9uXCIuIEluZm9ybWF0aW9uIEZ1c2lvbi4gMzc6IDk44oCTMTI1LiBkb2k6MTAuMTAxNi9qLmluZmZ1cy4yMDE3LjAyLjAwMy4gaGRsOjE4OTMvMjU0OTAuIFMyQ0lEwqAyMDU0MzMwNDEuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDIzIE1hcmNoIDIwMjMuIFJldHJpZXZlZCAyNyBBcHJpbCAyMDIxLlxuUmF3bGluc29uLCBLZXZpbiAoMjkgSmFudWFyeSAyMDE1KS4gXCJNaWNyb3NvZnQncyBCaWxsIEdhdGVzIGluc2lzdHMgQUkgaXMgYSB0aHJlYXRcIi4gQkJDIE5ld3MuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI5IEphbnVhcnkgMjAxNS4gUmV0cmlldmVkIDMwIEphbnVhcnkgMjAxNS5cblJlaXNuZXIsIEFsZXggKDE5IEF1Z3VzdCAyMDIzKSwgXCJSZXZlYWxlZDogVGhlIEF1dGhvcnMgV2hvc2UgUGlyYXRlZCBCb29rcyBhcmUgUG93ZXJpbmcgR2VuZXJhdGl2ZSBBSVwiLCBUaGUgQXRsYW50aWMsIGFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDMgT2N0b2JlciAyMDI0LCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcblJvYmVydHMsIEphY29iICgyMDE2KS4gXCJUaGlua2luZyBNYWNoaW5lczogVGhlIFNlYXJjaCBmb3IgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2VcIi4gRGlzdGlsbGF0aW9ucy4gVm9sLsKgMiwgbm8uwqAyLiBwcC7CoDE04oCTMjMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE5IEF1Z3VzdCAyMDE4LiBSZXRyaWV2ZWQgMjAgTWFyY2ggMjAxOC5cblJvYml0enNraSwgRGFuICg1IFNlcHRlbWJlciAyMDE4KS4gXCJGaXZlIGV4cGVydHMgc2hhcmUgd2hhdCBzY2FyZXMgdGhlbSB0aGUgbW9zdCBhYm91dCBBSVwiLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA4IERlY2VtYmVyIDIwMTkuIFJldHJpZXZlZCA4IERlY2VtYmVyIDIwMTkuXG5Sb3NlLCBTdGV2ZSAoMTEgSnVseSAyMDIzKS4gXCJBSSBVdG9waWEgb3IgZHlzdG9waWE/XCIuIFRoZSBHdWFyZGlhbiBXZWVrbHkuIHBwLsKgNDLigJM0My5cblJ1c3NlbGwsIFN0dWFydCAoMjAxOSkuIEh1bWFuIENvbXBhdGlibGU6IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIGFuZCB0aGUgUHJvYmxlbSBvZiBDb250cm9sLiBVbml0ZWQgU3RhdGVzOiBWaWtpbmcuIElTQk7CoDk3OC0wLTUyNTUtNTg2MS0zLiBPQ0xDwqAxMDgzNjk0MzIyLlxuU2FpbmF0bywgTWljaGFlbCAoMTkgQXVndXN0IDIwMTUpLiBcIlN0ZXBoZW4gSGF3a2luZywgRWxvbiBNdXNrLCBhbmQgQmlsbCBHYXRlcyBXYXJuIEFib3V0IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIuIE9ic2VydmVyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMCBPY3RvYmVyIDIwMTUuIFJldHJpZXZlZCAzMCBPY3RvYmVyIDIwMTUuXG5TYW1wbGUsIElhbiAoNSBOb3ZlbWJlciAyMDE3KS4gXCJDb21wdXRlciBzYXlzIG5vOiB3aHkgbWFraW5nIEFJcyBmYWlyLCBhY2NvdW50YWJsZSBhbmQgdHJhbnNwYXJlbnQgaXMgY3J1Y2lhbFwiLiBUaGUgR3VhcmRpYW4uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDEwIE9jdG9iZXIgMjAyMi4gUmV0cmlldmVkIDMwIEphbnVhcnkgMjAxOC5cblJvdGhtYW4sIERlbmlzICg3IE9jdG9iZXIgMjAyMCkuIFwiRXhwbG9yaW5nIExJTUUgRXhwbGFuYXRpb25zIGFuZCB0aGUgTWF0aGVtYXRpY3MgQmVoaW5kIEl0XCIuIENvZGVtb3Rpb24uIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI1IE5vdmVtYmVyIDIwMjMuIFJldHJpZXZlZCAyNSBOb3ZlbWJlciAyMDIzLlxuU2Nhc3NlbGxhdGksIEJyaWFuICgyMDAyKS4gXCJUaGVvcnkgb2YgbWluZCBmb3IgYSBodW1hbm9pZCByb2JvdFwiLiBBdXRvbm9tb3VzIFJvYm90cy4gMTIgKDEpOiAxM+KAkzI0LiBkb2k6MTAuMTAyMy9BOjEwMTMyOTg1MDcxMTQuIFMyQ0lEwqAxOTc5MzE1LlxuU2NobWlkaHViZXIsIEouICgyMDE1KS4gXCJEZWVwIExlYXJuaW5nIGluIE5ldXJhbCBOZXR3b3JrczogQW4gT3ZlcnZpZXdcIi4gTmV1cmFsIE5ldHdvcmtzLiA2MTogODXigJMxMTcuIGFyWGl2OjE0MDQuNzgyOC4gZG9pOjEwLjEwMTYvai5uZXVuZXQuMjAxNC4wOS4wMDMuIFBNSUTCoDI1NDYyNjM3LiBTMkNJRMKgMTE3MTU1MDkuXG5TY2htaWRodWJlciwgSsO8cmdlbiAoMjAyMikuIFwiQW5ub3RhdGVkIEhpc3Rvcnkgb2YgTW9kZXJuIEFJIGFuZCBEZWVwIExlYXJuaW5nXCIuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDcgQXVndXN0IDIwMjMuIFJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNC5cblNlYXJsZSwgSm9obiAoMTk4MCkuIFwiTWluZHMsIEJyYWlucyBhbmQgUHJvZ3JhbXNcIiAoUERGKS4gQmVoYXZpb3JhbCBhbmQgQnJhaW4gU2NpZW5jZXMuIDMgKDMpOiA0MTfigJM0NTcuIGRvaToxMC4xMDE3L1MwMTQwNTI1WDAwMDA1NzU2LiBTMkNJRMKgNTUzMDM3MjEuIEFyY2hpdmVkIChQREYpIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE3IE1hcmNoIDIwMTkuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cblNlYXJsZSwgSm9obiAoMTk5OSkuIE1pbmQsIGxhbmd1YWdlIGFuZCBzb2NpZXR5LiBOZXcgWW9yazogQmFzaWMgQm9va3MuIElTQk7CoDk3OC0wLTQ2NTAtNDUyMS0xLiBPQ0xDwqAyMzE4Njc2NjUuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuU2ltb24sIEguIEEuICgxOTY1KSwgVGhlIFNoYXBlIG9mIEF1dG9tYXRpb24gZm9yIE1lbiBhbmQgTWFuYWdlbWVudCwgTmV3IFlvcms6IEhhcnBlciAmIFJvd1xuU2ltb25pdGUsIFRvbSAoMzEgTWFyY2ggMjAxNikuIFwiSG93IEdvb2dsZSBQbGFucyB0byBTb2x2ZSBBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBNSVQgVGVjaG5vbG9neSBSZXZpZXcuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDE2IFNlcHRlbWJlciAyMDI0LiBSZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjQuXG5TbWl0aCwgQ3JhaWcgUy4gKDE1IE1hcmNoIDIwMjMpLiBcIkNoYXRHUFQtNCBDcmVhdG9yIElseWEgU3V0c2tldmVyIG9uIEFJIEhhbGx1Y2luYXRpb25zIGFuZCBBSSBEZW1vY3JhY3lcIi4gRm9yYmVzLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBTZXB0ZW1iZXIgMjAyNC4gUmV0cmlldmVkIDI1IERlY2VtYmVyIDIwMjMuXG5TbW9saWFyLCBTdGVwaGVuIFcuOyBaaGFuZywgSG9uZ0ppYW5nICgxOTk0KS4gXCJDb250ZW50IGJhc2VkIHZpZGVvIGluZGV4aW5nIGFuZCByZXRyaWV2YWxcIi4gSUVFRSBNdWx0aU1lZGlhLiAxICgyKTogNjLigJM3Mi4gZG9pOjEwLjExMDkvOTMuMzExNjUzLiBTMkNJRMKgMzI3MTA5MTMuXG5Tb2xvbW9ub2ZmLCBSYXkgKDE5NTYpLiBBbiBJbmR1Y3RpdmUgSW5mZXJlbmNlIE1hY2hpbmUgKFBERikuIERhcnRtb3V0aCBTdW1tZXIgUmVzZWFyY2ggQ29uZmVyZW5jZSBvbiBBcnRpZmljaWFsIEludGVsbGlnZW5jZS4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgQXByaWwgMjAxMS4gUmV0cmlldmVkIDIyIE1hcmNoIDIwMTEg4oCTIHZpYSBzdGQuY29tLCBwZGYgc2Nhbm5lZCBjb3B5IG9mIHRoZSBvcmlnaW5hbC4gTGF0ZXIgcHVibGlzaGVkIGFzXG5Tb2xvbW9ub2ZmLCBSYXkgKDE5NTcpLiBcIkFuIEluZHVjdGl2ZSBJbmZlcmVuY2UgTWFjaGluZVwiLiBJUkUgQ29udmVudGlvbiBSZWNvcmQuIFZvbC7CoFNlY3Rpb24gb24gSW5mb3JtYXRpb24gVGhlb3J5LCBwYXJ0IDIuIHBwLsKgNTbigJM2Mi5cblN0YW5mb3JkIFVuaXZlcnNpdHkgKDIwMjMpLiBcIkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIEluZGV4IFJlcG9ydCAyMDIzL0NoYXB0ZXIgNjogUG9saWN5IGFuZCBHb3Zlcm5hbmNlXCIgKFBERikuIEFJIEluZGV4LiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5UYW8sIEppYW5odWE7IFRhbiwgVGllbml1ICgyMDA1KS4gQWZmZWN0aXZlIENvbXB1dGluZyBhbmQgSW50ZWxsaWdlbnQgSW50ZXJhY3Rpb24uIEFmZmVjdGl2ZSBDb21wdXRpbmc6IEEgUmV2aWV3LiBMZWN0dXJlIE5vdGVzIGluIENvbXB1dGVyIFNjaWVuY2UuIFZvbC7CoDM3ODQuIFNwcmluZ2VyLiBwcC7CoDk4MeKAkzk5NS4gZG9pOjEwLjEwMDcvMTE1NzM1NDguIElTQk7CoDk3OC0zLTU0MDItOTYyMS04LlxuVGF5bG9yLCBKb3NoOyBIZXJuLCBBbGV4ICgyIE1heSAyMDIzKS4gXCInR29kZmF0aGVyIG9mIEFJJyBHZW9mZnJleSBIaW50b24gcXVpdHMgR29vZ2xlIGFuZCB3YXJucyBvdmVyIGRhbmdlcnMgb2YgbWlzaW5mb3JtYXRpb25cIi4gVGhlIEd1YXJkaWFuLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiA1IE9jdG9iZXIgMjAyNC4gUmV0cmlldmVkIDUgT2N0b2JlciAyMDI0LlxuVGhvbXBzb24sIERlcmVrICgyMyBKYW51YXJ5IDIwMTQpLiBcIldoYXQgSm9icyBXaWxsIHRoZSBSb2JvdHMgVGFrZT9cIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNCBBcHJpbCAyMDE4LiBSZXRyaWV2ZWQgMjQgQXByaWwgMjAxOC5cblRocm8sIEVsbGVuICgxOTkzKS4gUm9ib3RpY3M6IFRoZSBNYXJyaWFnZSBvZiBDb21wdXRlcnMgYW5kIE1hY2hpbmVzLiBOZXcgWW9yazogRmFjdHMgb24gRmlsZS4gSVNCTsKgOTc4LTAtODE2MC0yNjI4LTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDI2IEp1bHkgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuVG9ld3MsIFJvYiAoMyBTZXB0ZW1iZXIgMjAyMykuIFwiVHJhbnNmb3JtZXJzIFJldm9sdXRpb25pemVkIEFJLiBXaGF0IFdpbGwgUmVwbGFjZSBUaGVtP1wiLiBGb3JiZXMuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDggRGVjZW1iZXIgMjAyMy4gUmV0cmlldmVkIDggRGVjZW1iZXIgMjAyMy5cblR1cmluZywgQWxhbiAoT2N0b2JlciAxOTUwKS4gXCJDb21wdXRpbmcgTWFjaGluZXJ5IGFuZCBJbnRlbGxpZ2VuY2VcIi4gTWluZC4gNTkgKDIzNik6IDQzM+KAkzQ2MC4gZG9pOjEwLjEwOTMvbWluZC9MSVguMjM2LjQzMy4gSVNTTsKgMTQ2MC0yMTEzLiBKU1RPUsKgMjI1MTI5OS4gUzJDSUTCoDE0NjM2NzgzLlxuVU5FU0NPIFNjaWVuY2UgUmVwb3J0OiB0aGUgUmFjZSBBZ2FpbnN0IFRpbWUgZm9yIFNtYXJ0ZXIgRGV2ZWxvcG1lbnQuIFBhcmlzOiBVTkVTQ08uIDIwMjEuIElTQk7CoDk3OC05LTIzMTAtMDQ1MC02LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBKdW5lIDIwMjIuIFJldHJpZXZlZCAxOCBTZXB0ZW1iZXIgMjAyMS5cblVyYmluYSwgRmFiaW87IExlbnR6b3MsIEZpbGlwcGE7IEludmVybml6emksIEPDqWRyaWM7IEVraW5zLCBTZWFuICg3IE1hcmNoIDIwMjIpLiBcIkR1YWwgdXNlIG9mIGFydGlmaWNpYWwtaW50ZWxsaWdlbmNlLXBvd2VyZWQgZHJ1ZyBkaXNjb3ZlcnlcIi4gTmF0dXJlIE1hY2hpbmUgSW50ZWxsaWdlbmNlLiA0ICgzKTogMTg54oCTMTkxLiBkb2k6MTAuMTAzOC9zNDIyNTYtMDIyLTAwNDY1LTkuIFBNQ8KgOTU0NDI4MC4gUE1JRMKgMzYyMTExMzMuIFMyQ0lEwqAyNDczMDIzOTEuXG5WYWxhbmNlLCBDaHJpc3QgKDMwIE1heSAyMDIzKS4gXCJBcnRpZmljaWFsIGludGVsbGlnZW5jZSBjb3VsZCBsZWFkIHRvIGV4dGluY3Rpb24sIGV4cGVydHMgd2FyblwiLiBCQkMgTmV3cy4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTcgSnVuZSAyMDIzLiBSZXRyaWV2ZWQgMTggSnVuZSAyMDIzLlxuVmFsaW5za3ksIEpvcmRhbiAoMTEgQXByaWwgMjAxOSksIFwiQW1hem9uIHJlcG9ydGVkbHkgZW1wbG95cyB0aG91c2FuZHMgb2YgcGVvcGxlIHRvIGxpc3RlbiB0byB5b3VyIEFsZXhhIGNvbnZlcnNhdGlvbnNcIiwgQ05OLmNvbSwgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMjYgSmFudWFyeSAyMDI0LCByZXRyaWV2ZWQgNSBPY3RvYmVyIDIwMjRcblZlcm1hLCBZdWdlc2ggKDI1IERlY2VtYmVyIDIwMjEpLiBcIkEgQ29tcGxldGUgR3VpZGUgdG8gU0hBUCDigJMgU0hBUGxleSBBZGRpdGl2ZSBleFBsYW5hdGlvbnMgZm9yIFByYWN0aXRpb25lcnNcIi4gQW5hbHl0aWNzIEluZGlhIE1hZ2F6aW5lLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNSBOb3ZlbWJlciAyMDIzLiBSZXRyaWV2ZWQgMjUgTm92ZW1iZXIgMjAyMy5cblZpbmNlbnQsIEphbWVzICg3IE5vdmVtYmVyIDIwMTkpLiBcIk9wZW5BSSBoYXMgcHVibGlzaGVkIHRoZSB0ZXh0LWdlbmVyYXRpbmcgQUkgaXQgc2FpZCB3YXMgdG9vIGRhbmdlcm91cyB0byBzaGFyZVwiLiBUaGUgVmVyZ2UuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDExIEp1bmUgMjAyMC4gUmV0cmlldmVkIDExIEp1bmUgMjAyMC5cblZpbmNlbnQsIEphbWVzICgxNSBOb3ZlbWJlciAyMDIyKS4gXCJUaGUgc2NhcnkgdHJ1dGggYWJvdXQgQUkgY29weXJpZ2h0IGlzIG5vYm9keSBrbm93cyB3aGF0IHdpbGwgaGFwcGVuIG5leHRcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WaW5jZW50LCBKYW1lcyAoMyBBcHJpbCAyMDIzKS4gXCJBSSBpcyBlbnRlcmluZyBhbiBlcmEgb2YgY29ycG9yYXRlIGNvbnRyb2xcIi4gVGhlIFZlcmdlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WaW5nZSwgVmVybm9yICgxOTkzKS4gXCJUaGUgQ29taW5nIFRlY2hub2xvZ2ljYWwgU2luZ3VsYXJpdHk6IEhvdyB0byBTdXJ2aXZlIGluIHRoZSBQb3N0LUh1bWFuIEVyYVwiLiBWaXNpb24gMjE6IEludGVyZGlzY2lwbGluYXJ5IFNjaWVuY2UgYW5kIEVuZ2luZWVyaW5nIGluIHRoZSBFcmEgb2YgQ3liZXJzcGFjZTogMTEuIEJpYmNvZGU6MTk5M3Zpc2UubmFzYS4uLjExVi4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMSBKYW51YXJ5IDIwMDcuIFJldHJpZXZlZCAxNCBOb3ZlbWJlciAyMDExLlxuV2FkZGVsbCwgS2F2ZWggKDIwMTgpLiBcIkNoYXRib3RzIEhhdmUgRW50ZXJlZCB0aGUgVW5jYW5ueSBWYWxsZXlcIi4gVGhlIEF0bGFudGljLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNCBBcHJpbCAyMDE4LiBSZXRyaWV2ZWQgMjQgQXByaWwgMjAxOC5cbldhbGxhY2gsIFdlbmRlbGwgKDIwMTApLiBNb3JhbCBNYWNoaW5lcy4gT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MuXG5XYXNvbiwgUC4gQy47IFNoYXBpcm8sIEQuICgxOTY2KS4gXCJSZWFzb25pbmdcIi4gSW4gRm9zcywgQi4gTS4gKGVkLikuIE5ldyBob3Jpem9ucyBpbiBwc3ljaG9sb2d5LiBIYXJtb25kc3dvcnRoOiBQZW5ndWluLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAxOCBOb3ZlbWJlciAyMDE5LlxuV2VuZywgSi47IE1jQ2xlbGxhbmQ7IFBlbnRsYW5kLCBBLjsgU3Bvcm5zLCBPLjsgU3RvY2ttYW4sIEkuOyBTdXIsIE0uOyBUaGVsZW4sIEUuICgyMDAxKS4gXCJBdXRvbm9tb3VzIG1lbnRhbCBkZXZlbG9wbWVudCBieSByb2JvdHMgYW5kIGFuaW1hbHNcIiAoUERGKS4gU2NpZW5jZS4gMjkxICg1NTA0KTogNTk54oCTNjAwLiBkb2k6MTAuMTEyNi9zY2llbmNlLjI5MS41NTA0LjU5OS4gUE1JRMKgMTEyMjk0MDIuIFMyQ0lEwqA1NDEzMTc5Ny4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBTZXB0ZW1iZXIgMjAxMy4gUmV0cmlldmVkIDQgSnVuZSAyMDEzIOKAkyB2aWEgbXN1LmVkdS5cblwiV2hhdCBpcyAnZnV6enkgbG9naWMnPyBBcmUgdGhlcmUgY29tcHV0ZXJzIHRoYXQgYXJlIGluaGVyZW50bHkgZnV6enkgYW5kIGRvIG5vdCBhcHBseSB0aGUgdXN1YWwgYmluYXJ5IGxvZ2ljP1wiLiBTY2llbnRpZmljIEFtZXJpY2FuLiAyMSBPY3RvYmVyIDE5OTkuIEFyY2hpdmVkIGZyb20gdGhlIG9yaWdpbmFsIG9uIDYgTWF5IDIwMTguIFJldHJpZXZlZCA1IE1heSAyMDE4LlxuV2lsbGlhbXMsIFJoaWFubm9uICgyOCBKdW5lIDIwMjMpLCBcIkh1bWFucyBtYXkgYmUgbW9yZSBsaWtlbHkgdG8gYmVsaWV2ZSBkaXNpbmZvcm1hdGlvbiBnZW5lcmF0ZWQgYnkgQUlcIiwgTUlUIFRlY2hub2xvZ3kgUmV2aWV3LCBhcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNiBTZXB0ZW1iZXIgMjAyNCwgcmV0cmlldmVkIDUgT2N0b2JlciAyMDI0XG5XaXJ0eiwgQmVybmQgVy47IFdleWVyZXIsIEphbiBDLjsgR2V5ZXIsIENhcm9saW4gKDI0IEp1bHkgMjAxOCkuIFwiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgYW5kIHRoZSBQdWJsaWMgU2VjdG9yIOKAkyBBcHBsaWNhdGlvbnMgYW5kIENoYWxsZW5nZXNcIi4gSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIFB1YmxpYyBBZG1pbmlzdHJhdGlvbi4gNDIgKDcpOiA1OTbigJM2MTUuIGRvaToxMC4xMDgwLzAxOTAwNjkyLjIwMTguMTQ5ODEwMy4gSVNTTsKgMDE5MC0wNjkyLiBTMkNJRMKgMTU4ODI5NjAyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBBdWd1c3QgMjAyMC4gUmV0cmlldmVkIDIyIEF1Z3VzdCAyMDIwLlxuV29uZywgTWF0dGVvICgxOSBNYXkgMjAyMyksIFwiQ2hhdEdQVCBJcyBBbHJlYWR5IE9ic29sZXRlXCIsIFRoZSBBdGxhbnRpYywgYXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTggU2VwdGVtYmVyIDIwMjQsIHJldHJpZXZlZCA1IE9jdG9iZXIgMjAyNFxuWXVka293c2t5LCBFICgyMDA4KSwgXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZSBhcyBhIFBvc2l0aXZlIGFuZCBOZWdhdGl2ZSBGYWN0b3IgaW4gR2xvYmFsIFJpc2tcIiAoUERGKSwgR2xvYmFsIENhdGFzdHJvcGhpYyBSaXNrcywgT3hmb3JkIFVuaXZlcnNpdHkgUHJlc3MsIDIwMDgsIEJpYmNvZGU6MjAwOGdjci4uYm9vay4uMzAzWSwgYXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTkgT2N0b2JlciAyMDEzLCByZXRyaWV2ZWQgMjQgU2VwdGVtYmVyIDIwMjFcbkZ1cnRoZXIgcmVhZGluZ1xuQXV0b3IsIERhdmlkIEguLCBcIldoeSBBcmUgVGhlcmUgU3RpbGwgU28gTWFueSBKb2JzPyBUaGUgSGlzdG9yeSBhbmQgRnV0dXJlIG9mIFdvcmtwbGFjZSBBdXRvbWF0aW9uXCIgKDIwMTUpIDI5KDMpIEpvdXJuYWwgb2YgRWNvbm9taWMgUGVyc3BlY3RpdmVzIDMuXG5CZXJsaW5za2ksIERhdmlkICgyMDAwKS4gVGhlIEFkdmVudCBvZiB0aGUgQWxnb3JpdGhtLiBIYXJjb3VydCBCb29rcy4gSVNCTsKgOTc4LTAtMTU2MC0xMzkxLTguIE9DTEPCoDQ2ODkwNjgyLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyNiBKdWx5IDIwMjAuIFJldHJpZXZlZCAyMiBBdWd1c3QgMjAyMC5cbkJveWxlLCBKYW1lcywgVGhlIExpbmU6IEFJIGFuZCB0aGUgRnV0dXJlIG9mIFBlcnNvbmhvb2QsIE1JVCBQcmVzcywgMjAyNC5cbkN1a2llciwgS2VubmV0aCwgXCJSZWFkeSBmb3IgUm9ib3RzPyBIb3cgdG8gVGhpbmsgYWJvdXQgdGhlIEZ1dHVyZSBvZiBBSVwiLCBGb3JlaWduIEFmZmFpcnMsIHZvbC4gOTgsIG5vLiA0IChKdWx5L0F1Z3VzdCAyMDE5KSwgcHAuwqAxOTLigJMxOTguIEdlb3JnZSBEeXNvbiwgaGlzdG9yaWFuIG9mIGNvbXB1dGluZywgd3JpdGVzIChpbiB3aGF0IG1pZ2h0IGJlIGNhbGxlZCBcIkR5c29uJ3MgTGF3XCIpIHRoYXQgXCJBbnkgc3lzdGVtIHNpbXBsZSBlbm91Z2ggdG8gYmUgdW5kZXJzdGFuZGFibGUgd2lsbCBub3QgYmUgY29tcGxpY2F0ZWQgZW5vdWdoIHRvIGJlaGF2ZSBpbnRlbGxpZ2VudGx5LCB3aGlsZSBhbnkgc3lzdGVtIGNvbXBsaWNhdGVkIGVub3VnaCB0byBiZWhhdmUgaW50ZWxsaWdlbnRseSB3aWxsIGJlIHRvbyBjb21wbGljYXRlZCB0byB1bmRlcnN0YW5kLlwiIChwLsKgMTk3LikgQ29tcHV0ZXIgc2NpZW50aXN0IEFsZXggUGVudGxhbmQgd3JpdGVzOiBcIkN1cnJlbnQgQUkgbWFjaGluZS1sZWFybmluZyBhbGdvcml0aG1zIGFyZSwgYXQgdGhlaXIgY29yZSwgZGVhZCBzaW1wbGUgc3R1cGlkLiBUaGV5IHdvcmssIGJ1dCB0aGV5IHdvcmsgYnkgYnJ1dGUgZm9yY2UuXCIgKHAuwqAxOTguKVxuRXZhbnMsIFdvb2R5ICgyMDE1KS4gXCJQb3N0aHVtYW4gUmlnaHRzOiBEaW1lbnNpb25zIG9mIFRyYW5zaHVtYW4gV29ybGRzXCIuIFRla25va3VsdHVyYS4gMTIgKDIpLiBkb2k6MTAuNTIwOS9yZXZfVEsuMjAxNS52MTIubjIuNDkwNzIuIFMyQ0lEwqAxNDc2MTI3NjMuXG5GcmFuaywgTWljaGFlbCAoMjIgU2VwdGVtYmVyIDIwMjMpLiBcIlVTIExlYWRlcnNoaXAgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgQ2FuIFNoYXBlIHRoZSAyMXN0IENlbnR1cnkgR2xvYmFsIE9yZGVyXCIuIFRoZSBEaXBsb21hdC4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gMTYgU2VwdGVtYmVyIDIwMjQuIFJldHJpZXZlZCA4IERlY2VtYmVyIDIwMjMuIEluc3RlYWQsIHRoZSBVbml0ZWQgU3RhdGVzIGhhcyBkZXZlbG9wZWQgYSBuZXcgYXJlYSBvZiBkb21pbmFuY2UgdGhhdCB0aGUgcmVzdCBvZiB0aGUgd29ybGQgdmlld3Mgd2l0aCBhIG1peHR1cmUgb2YgYXdlLCBlbnZ5LCBhbmQgcmVzZW50bWVudDogYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuLi4gRnJvbSBBSSBtb2RlbHMgYW5kIHJlc2VhcmNoIHRvIGNsb3VkIGNvbXB1dGluZyBhbmQgdmVudHVyZSBjYXBpdGFsLCBVLlMuIGNvbXBhbmllcywgdW5pdmVyc2l0aWVzLCBhbmQgcmVzZWFyY2ggbGFicyDigJMgYW5kIHRoZWlyIGFmZmlsaWF0ZXMgaW4gYWxsaWVkIGNvdW50cmllcyDigJMgYXBwZWFyIHRvIGhhdmUgYW4gZW5vcm1vdXMgbGVhZCBpbiBib3RoIGRldmVsb3BpbmcgY3V0dGluZy1lZGdlIEFJIGFuZCBjb21tZXJjaWFsaXppbmcgaXQuIFRoZSB2YWx1ZSBvZiBVLlMuIHZlbnR1cmUgY2FwaXRhbCBpbnZlc3RtZW50cyBpbiBBSSBzdGFydC11cHMgZXhjZWVkcyB0aGF0IG9mIHRoZSByZXN0IG9mIHRoZSB3b3JsZCBjb21iaW5lZC5cbkdlcnRuZXIsIEpvbi4gKDIwMjMpIFwiV2lraXBlZGlhJ3MgTW9tZW50IG9mIFRydXRoOiBDYW4gdGhlIG9ubGluZSBlbmN5Y2xvcGVkaWEgaGVscCB0ZWFjaCBBLkkuIGNoYXRib3RzIHRvIGdldCB0aGVpciBmYWN0cyByaWdodCDigJQgd2l0aG91dCBkZXN0cm95aW5nIGl0c2VsZiBpbiB0aGUgcHJvY2Vzcz9cIiBOZXcgWW9yayBUaW1lcyBNYWdhemluZSAoSnVseSAxOCwgMjAyMykgb25saW5lIEFyY2hpdmVkIDIwIEp1bHkgMjAyMyBhdCB0aGUgV2F5YmFjayBNYWNoaW5lXG5HbGVpY2ssIEphbWVzLCBcIlRoZSBGYXRlIG9mIEZyZWUgV2lsbFwiIChyZXZpZXcgb2YgS2V2aW4gSi4gTWl0Y2hlbGwsIEZyZWUgQWdlbnRzOiBIb3cgRXZvbHV0aW9uIEdhdmUgVXMgRnJlZSBXaWxsLCBQcmluY2V0b24gVW5pdmVyc2l0eSBQcmVzcywgMjAyMywgMzMzIHBwLiksIFRoZSBOZXcgWW9yayBSZXZpZXcgb2YgQm9va3MsIHZvbC4gTFhYSSwgbm8uIDEgKDE4IEphbnVhcnkgMjAyNCksIHBwLiAyN+KAkzI4LCAzMC4gXCJBZ2VuY3kgaXMgd2hhdCBkaXN0aW5ndWlzaGVzIHVzIGZyb20gbWFjaGluZXMuIEZvciBiaW9sb2dpY2FsIGNyZWF0dXJlcywgcmVhc29uIGFuZCBwdXJwb3NlIGNvbWUgZnJvbSBhY3RpbmcgaW4gdGhlIHdvcmxkIGFuZCBleHBlcmllbmNpbmcgdGhlIGNvbnNlcXVlbmNlcy4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VzIOKAkyBkaXNlbWJvZGllZCwgc3RyYW5nZXJzIHRvIGJsb29kLCBzd2VhdCwgYW5kIHRlYXJzIOKAkyBoYXZlIG5vIG9jY2FzaW9uIGZvciB0aGF0LlwiIChwLiAzMC4pXG5IYWxwZXJuLCBTdWUsIFwiVGhlIENvbWluZyBUZWNoIEF1dG9jcmFjeVwiIChyZXZpZXcgb2YgVmVyaXR5IEhhcmRpbmcsIEFJIE5lZWRzIFlvdTogSG93IFdlIENhbiBDaGFuZ2UgQUkncyBGdXR1cmUgYW5kIFNhdmUgT3VyIE93biwgUHJpbmNldG9uIFVuaXZlcnNpdHkgUHJlc3MsIDI3NCBwcC47IEdhcnkgTWFyY3VzLCBUYW1pbmcgU2lsaWNvbiBWYWxsZXk6IEhvdyBXZSBDYW4gRW5zdXJlIFRoYXQgQUkgV29ya3MgZm9yIFVzLCBNSVQgUHJlc3MsIDIzNSBwcC47IERhbmllbGEgUnVzIGFuZCBHcmVnb3J5IE1vbmUsIFRoZSBNaW5kJ3MgTWlycm9yOiBSaXNrIGFuZCBSZXdhcmQgaW4gdGhlIEFnZSBvZiBBSSwgTm9ydG9uLCAyODAgcHAuOyBNYWRodW1pdGEgTXVyZ2lhLCBDb2RlIERlcGVuZGVudDogTGl2aW5nIGluIHRoZSBTaGFkb3cgb2YgQUksIEhlbnJ5IEhvbHQsIDMxMSBwcC4pLCBUaGUgTmV3IFlvcmsgUmV2aWV3IG9mIEJvb2tzLCB2b2wuIExYWEksIG5vLiAxNyAoNyBOb3ZlbWJlciAyMDI0KSwgcHAuIDQ04oCTNDYuIFwiJ1dlIGNhbid0IHJlYWxpc3RpY2FsbHkgZXhwZWN0IHRoYXQgdGhvc2Ugd2hvIGhvcGUgdG8gZ2V0IHJpY2ggZnJvbSBBSSBhcmUgZ29pbmcgdG8gaGF2ZSB0aGUgaW50ZXJlc3RzIG9mIHRoZSByZXN0IG9mIHVzIGNsb3NlIGF0IGhlYXJ0LCcgLi4uIHdyaXRlcyBbR2FyeSBNYXJjdXNdLiAnV2UgY2FuJ3QgY291bnQgb24gZ292ZXJubWVudHMgZHJpdmVuIGJ5IGNhbXBhaWduIGZpbmFuY2UgY29udHJpYnV0aW9ucyBbZnJvbSB0ZWNoIGNvbXBhbmllc10gdG8gcHVzaCBiYWNrLicuLi4gTWFyY3VzIGRldGFpbHMgdGhlIGRlbWFuZHMgdGhhdCBjaXRpemVucyBzaG91bGQgbWFrZSBvZiB0aGVpciBnb3Zlcm5tZW50cyBhbmQgdGhlIHRlY2ggY29tcGFuaWVzLiBUaGV5IGluY2x1ZGUgdHJhbnNwYXJlbmN5IG9uIGhvdyBBSSBzeXN0ZW1zIHdvcms7IGNvbXBlbnNhdGlvbiBmb3IgaW5kaXZpZHVhbHMgaWYgdGhlaXIgZGF0YSBbYXJlXSB1c2VkIHRvIHRyYWluIExMTXMgKGxhcmdlIGxhbmd1YWdlIG1vZGVsKXMgYW5kIHRoZSByaWdodCB0byBjb25zZW50IHRvIHRoaXMgdXNlOyBhbmQgdGhlIGFiaWxpdHkgdG8gaG9sZCB0ZWNoIGNvbXBhbmllcyBsaWFibGUgZm9yIHRoZSBoYXJtcyB0aGV5IGNhdXNlIGJ5IGVsaW1pbmF0aW5nIFNlY3Rpb24gMjMwLCBpbXBvc2luZyBjYXNoIHBlbmFsdGllcywgYW5kIHBhc3Npbmcgc3RyaWN0ZXIgcHJvZHVjdCBsaWFiaWxpdHkgbGF3cy4uLiBNYXJjdXMgYWxzbyBzdWdnZXN0cy4uLiB0aGF0IGEgbmV3LCBBSS1zcGVjaWZpYyBmZWRlcmFsIGFnZW5jeSwgYWtpbiB0byB0aGUgRkRBLCB0aGUgRkNDLCBvciB0aGUgRlRDLCBtaWdodCBwcm92aWRlIHRoZSBtb3N0IHJvYnVzdCBvdmVyc2lnaHQuLi4uIFtUXWhlIEZvcmRoYW0gbGF3IHByb2Zlc3NvciBDaGlubWF5aSBTaGFybWEuLi4gc3VnZ2VzdHMuLi4gZXN0YWJsaXNoW2luZ10gYSBwcm9mZXNzaW9uYWwgbGljZW5zaW5nIHJlZ2ltZSBmb3IgZW5naW5lZXJzIHRoYXQgd291bGQgZnVuY3Rpb24gaW4gYSBzaW1pbGFyIHdheSB0byBtZWRpY2FsIGxpY2Vuc2VzLCBtYWxwcmFjdGljZSBzdWl0cywgYW5kIHRoZSBIaXBwb2NyYXRpYyBvYXRoIGluIG1lZGljaW5lLiAnV2hhdCBpZiwgbGlrZSBkb2N0b3JzLCcgc2hlIGFza3MuLi4sICdBSSBlbmdpbmVlcnMgYWxzbyB2b3dlZCB0byBkbyBubyBoYXJtPydcIiAocC4gNDYuKVxuSGVuZGVyc29uLCBNYXJrICgyNCBBcHJpbCAyMDA3KS4gXCJIdW1hbiByaWdodHMgZm9yIHJvYm90cz8gV2UncmUgZ2V0dGluZyBjYXJyaWVkIGF3YXlcIi4gVGhlIFRpbWVzIE9ubGluZS4gTG9uZG9uLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAzMSBNYXkgMjAxNC4gUmV0cmlldmVkIDMxIE1heSAyMDE0LlxuSHVnaGVzLUNhc3RsZWJlcnJ5LCBLZW5uYSwgXCJBIE11cmRlciBNeXN0ZXJ5IFB1enpsZTogVGhlIGxpdGVyYXJ5IHB1enpsZSBDYWluJ3MgSmF3Ym9uZSwgd2hpY2ggaGFzIHN0dW1wZWQgaHVtYW5zIGZvciBkZWNhZGVzLCByZXZlYWxzIHRoZSBsaW1pdGF0aW9ucyBvZiBuYXR1cmFsLWxhbmd1YWdlLXByb2Nlc3NpbmcgYWxnb3JpdGhtc1wiLCBTY2llbnRpZmljIEFtZXJpY2FuLCB2b2wuIDMyOSwgbm8uIDQgKE5vdmVtYmVyIDIwMjMpLCBwcC7CoDgx4oCTODIuIFwiVGhpcyBtdXJkZXIgbXlzdGVyeSBjb21wZXRpdGlvbiBoYXMgcmV2ZWFsZWQgdGhhdCBhbHRob3VnaCBOTFAgKG5hdHVyYWwtbGFuZ3VhZ2UgcHJvY2Vzc2luZykgbW9kZWxzIGFyZSBjYXBhYmxlIG9mIGluY3JlZGlibGUgZmVhdHMsIHRoZWlyIGFiaWxpdGllcyBhcmUgdmVyeSBtdWNoIGxpbWl0ZWQgYnkgdGhlIGFtb3VudCBvZiBjb250ZXh0IHRoZXkgcmVjZWl2ZS4gVGhpcyBbLi4uXSBjb3VsZCBjYXVzZSBbZGlmZmljdWx0aWVzXSBmb3IgcmVzZWFyY2hlcnMgd2hvIGhvcGUgdG8gdXNlIHRoZW0gdG8gZG8gdGhpbmdzIHN1Y2ggYXMgYW5hbHl6ZSBhbmNpZW50IGxhbmd1YWdlcy4gSW4gc29tZSBjYXNlcywgdGhlcmUgYXJlIGZldyBoaXN0b3JpY2FsIHJlY29yZHMgb24gbG9uZy1nb25lIGNpdmlsaXphdGlvbnMgdG8gc2VydmUgYXMgdHJhaW5pbmcgZGF0YSBmb3Igc3VjaCBhIHB1cnBvc2UuXCIgKHAuwqA4Mi4pXG5JbW1lcndhaHIsIERhbmllbCwgXCJZb3VyIEx5aW5nIEV5ZXM6IFBlb3BsZSBub3cgdXNlIEEuSS4gdG8gZ2VuZXJhdGUgZmFrZSB2aWRlb3MgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWFsIG9uZXMuIEhvdyBtdWNoIGRvZXMgaXQgbWF0dGVyP1wiLCBUaGUgTmV3IFlvcmtlciwgMjAgTm92ZW1iZXIgMjAyMywgcHAuwqA1NOKAkzU5LiBcIklmIGJ5ICdkZWVwZmFrZXMnIHdlIG1lYW4gcmVhbGlzdGljIHZpZGVvcyBwcm9kdWNlZCB1c2luZyBhcnRpZmljaWFsIGludGVsbGlnZW5jZSB0aGF0IGFjdHVhbGx5IGRlY2VpdmUgcGVvcGxlLCB0aGVuIHRoZXkgYmFyZWx5IGV4aXN0LiBUaGUgZmFrZXMgYXJlbid0IGRlZXAsIGFuZCB0aGUgZGVlcHMgYXJlbid0IGZha2UuIFsuLi5dIEEuSS4tZ2VuZXJhdGVkIHZpZGVvcyBhcmUgbm90LCBpbiBnZW5lcmFsLCBvcGVyYXRpbmcgaW4gb3VyIG1lZGlhIGFzIGNvdW50ZXJmZWl0ZWQgZXZpZGVuY2UuIFRoZWlyIHJvbGUgYmV0dGVyIHJlc2VtYmxlcyB0aGF0IG9mIGNhcnRvb25zLCBlc3BlY2lhbGx5IHNtdXR0eSBvbmVzLlwiIChwLsKgNTkuKVxuSm9obnN0b24sIEpvaG4gKDIwMDgpIFRoZSBBbGx1cmUgb2YgTWFjaGluaWMgTGlmZTogQ3liZXJuZXRpY3MsIEFydGlmaWNpYWwgTGlmZSwgYW5kIHRoZSBOZXcgQUksIE1JVCBQcmVzcy5cbkp1bXBlciwgSm9objsgRXZhbnMsIFJpY2hhcmQ7IFByaXR6ZWwsIEFsZXhhbmRlcjsgZXTCoGFsLiAoMjYgQXVndXN0IDIwMjEpLiBcIkhpZ2hseSBhY2N1cmF0ZSBwcm90ZWluIHN0cnVjdHVyZSBwcmVkaWN0aW9uIHdpdGggQWxwaGFGb2xkXCIuIE5hdHVyZS4gNTk2ICg3ODczKTogNTgz4oCTNTg5LiBCaWJjb2RlOjIwMjFOYXR1ci41OTYuLjU4M0ouIGRvaToxMC4xMDM4L3M0MTU4Ni0wMjEtMDM4MTktMi4gUE1DwqA4MzcxNjA1LiBQTUlEwqAzNDI2NTg0NC4gUzJDSUTCoDIzNTk1OTg2Ny5cbkxlQ3VuLCBZYW5uOyBCZW5naW8sIFlvc2h1YTsgSGludG9uLCBHZW9mZnJleSAoMjggTWF5IDIwMTUpLiBcIkRlZXAgbGVhcm5pbmdcIi4gTmF0dXJlLiA1MjEgKDc1NTMpOiA0MzbigJM0NDQuIEJpYmNvZGU6MjAxNU5hdHVyLjUyMS4uNDM2TC4gZG9pOjEwLjEwMzgvbmF0dXJlMTQ1MzkuIFBNSUTCoDI2MDE3NDQyLiBTMkNJRMKgMzA3NDA5Ni4gQXJjaGl2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgb24gNSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5MZWZmZXIsIExhdXJlbiwgXCJUaGUgUmlza3Mgb2YgVHJ1c3RpbmcgQUk6IFdlIG11c3QgYXZvaWQgaHVtYW5pemluZyBtYWNoaW5lLWxlYXJuaW5nIG1vZGVscyB1c2VkIGluIHNjaWVudGlmaWMgcmVzZWFyY2hcIiwgU2NpZW50aWZpYyBBbWVyaWNhbiwgdm9sLiAzMzAsIG5vLiA2IChKdW5lIDIwMjQpLCBwcC4gODDigJM4MS5cbkxlcG9yZSwgSmlsbCwgXCJUaGUgQ2hpdC1DaGF0Ym90OiBJcyB0YWxraW5nIHdpdGggYSBtYWNoaW5lIGEgY29udmVyc2F0aW9uP1wiLCBUaGUgTmV3IFlvcmtlciwgNyBPY3RvYmVyIDIwMjQsIHBwLiAxMuKAkzE2LlxuTWFzY2hhZmlsbSAoMjAxMCkuIFwiQ29udGVudDogUGx1ZyAmIFByYXkgRmlsbSDigJMgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ug4oCTIFJvYm90c1wiLiBwbHVnYW5kcHJheS1maWxtLmRlLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxMiBGZWJydWFyeSAyMDE2LlxuTWFyY3VzLCBHYXJ5LCBcIkFydGlmaWNpYWwgQ29uZmlkZW5jZTogRXZlbiB0aGUgbmV3ZXN0LCBidXp6aWVzdCBzeXN0ZW1zIG9mIGFydGlmaWNpYWwgZ2VuZXJhbCBpbnRlbGxpZ2VuY2UgYXJlIHN0eW1taWVkIGJ5IHRoZSBzYW1lIG9sZCBwcm9ibGVtc1wiLCBTY2llbnRpZmljIEFtZXJpY2FuLCB2b2wuIDMyNywgbm8uIDQgKE9jdG9iZXIgMjAyMiksIHBwLsKgNDLigJM0NS5cbk1pdGNoZWxsLCBNZWxhbmllICgyMDE5KS4gQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2U6IGEgZ3VpZGUgZm9yIHRoaW5raW5nIGh1bWFucy4gTmV3IFlvcms6IEZhcnJhciwgU3RyYXVzIGFuZCBHaXJvdXguIElTQk7CoDk3OC0wLTM3NDItNTc4My01LlxuTW5paCwgVm9sb2R5bXlyOyBLYXZ1a2N1b2dsdSwgS29yYXk7IFNpbHZlciwgRGF2aWQ7IGV0wqBhbC4gKDI2IEZlYnJ1YXJ5IDIwMTUpLiBcIkh1bWFuLWxldmVsIGNvbnRyb2wgdGhyb3VnaCBkZWVwIHJlaW5mb3JjZW1lbnQgbGVhcm5pbmdcIi4gTmF0dXJlLiA1MTggKDc1NDApOiA1MjnigJM1MzMuIEJpYmNvZGU6MjAxNU5hdHVyLjUxOC4uNTI5TS4gZG9pOjEwLjEwMzgvbmF0dXJlMTQyMzYuIFBNSUTCoDI1NzE5NjcwLiBTMkNJRMKgMjA1MjQyNzQwLiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOSBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuIEludHJvZHVjZWQgRFFOLCB3aGljaCBwcm9kdWNlZCBodW1hbi1sZXZlbCBwZXJmb3JtYW5jZSBvbiBzb21lIEF0YXJpIGdhbWVzLlxuUHJlc3MsIEV5YWwsIFwiSW4gRnJvbnQgb2YgVGhlaXIgRmFjZXM6IERvZXMgZmFjaWFsLXJlY29nbml0aW9uIHRlY2hub2xvZ3kgbGVhZCBwb2xpY2UgdG8gaWdub3JlIGNvbnRyYWRpY3RvcnkgZXZpZGVuY2U/XCIsIFRoZSBOZXcgWW9ya2VyLCAyMCBOb3ZlbWJlciAyMDIzLCBwcC7CoDIw4oCTMjYuXG5cIlJvYm90cyBjb3VsZCBkZW1hbmQgbGVnYWwgcmlnaHRzXCIuIEJCQyBOZXdzLiAyMSBEZWNlbWJlciAyMDA2LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxNSBPY3RvYmVyIDIwMTkuIFJldHJpZXZlZCAzIEZlYnJ1YXJ5IDIwMTEuXG5Sb2l2YWluZW4sIEVrYSwgXCJBSSdzIElROiBDaGF0R1BUIGFjZWQgYSBbc3RhbmRhcmQgaW50ZWxsaWdlbmNlXSB0ZXN0IGJ1dCBzaG93ZWQgdGhhdCBpbnRlbGxpZ2VuY2UgY2Fubm90IGJlIG1lYXN1cmVkIGJ5IElRIGFsb25lXCIsIFNjaWVudGlmaWMgQW1lcmljYW4sIHZvbC4gMzI5LCBuby4gMSAoSnVseS9BdWd1c3QgMjAyMyksIHAuwqA3LiBcIkRlc3BpdGUgaXRzIGhpZ2ggSVEsIENoYXRHUFQgZmFpbHMgYXQgdGFza3MgdGhhdCByZXF1aXJlIHJlYWwgaHVtYW5saWtlIHJlYXNvbmluZyBvciBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwaHlzaWNhbCBhbmQgc29jaWFsIHdvcmxkLi4uLiBDaGF0R1BUIHNlZW1lZCB1bmFibGUgdG8gcmVhc29uIGxvZ2ljYWxseSBhbmQgdHJpZWQgdG8gcmVseSBvbiBpdHMgdmFzdCBkYXRhYmFzZSBvZi4uLiBmYWN0cyBkZXJpdmVkIGZyb20gb25saW5lIHRleHRzLlwiXG5TY2hhcnJlLCBQYXVsLCBcIktpbGxlciBBcHBzOiBUaGUgUmVhbCBEYW5nZXJzIG9mIGFuIEFJIEFybXMgUmFjZVwiLCBGb3JlaWduIEFmZmFpcnMsIHZvbC4gOTgsIG5vLiAzIChNYXkvSnVuZSAyMDE5KSwgcHAuwqAxMzXigJMxNDQuIFwiVG9kYXkncyBBSSB0ZWNobm9sb2dpZXMgYXJlIHBvd2VyZnVsIGJ1dCB1bnJlbGlhYmxlLiBSdWxlcy1iYXNlZCBzeXN0ZW1zIGNhbm5vdCBkZWFsIHdpdGggY2lyY3Vtc3RhbmNlcyB0aGVpciBwcm9ncmFtbWVycyBkaWQgbm90IGFudGljaXBhdGUuIExlYXJuaW5nIHN5c3RlbXMgYXJlIGxpbWl0ZWQgYnkgdGhlIGRhdGEgb24gd2hpY2ggdGhleSB3ZXJlIHRyYWluZWQuIEFJIGZhaWx1cmVzIGhhdmUgYWxyZWFkeSBsZWQgdG8gdHJhZ2VkeS4gQWR2YW5jZWQgYXV0b3BpbG90IGZlYXR1cmVzIGluIGNhcnMsIGFsdGhvdWdoIHRoZXkgcGVyZm9ybSB3ZWxsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgaGF2ZSBkcml2ZW4gY2FycyB3aXRob3V0IHdhcm5pbmcgaW50byB0cnVja3MsIGNvbmNyZXRlIGJhcnJpZXJzLCBhbmQgcGFya2VkIGNhcnMuIEluIHRoZSB3cm9uZyBzaXR1YXRpb24sIEFJIHN5c3RlbXMgZ28gZnJvbSBzdXBlcnNtYXJ0IHRvIHN1cGVyZHVtYiBpbiBhbiBpbnN0YW50LiBXaGVuIGFuIGVuZW15IGlzIHRyeWluZyB0byBtYW5pcHVsYXRlIGFuZCBoYWNrIGFuIEFJIHN5c3RlbSwgdGhlIHJpc2tzIGFyZSBldmVuIGdyZWF0ZXIuXCIgKHAuwqAxNDAuKVxuU2NodWx6LCBIYW5uZXM7IEJlaG5rZSwgU3ZlbiAoMSBOb3ZlbWJlciAyMDEyKS4gXCJEZWVwIExlYXJuaW5nXCIuIEtJIOKAkyBLw7xuc3RsaWNoZSBJbnRlbGxpZ2Vuei4gMjYgKDQpOiAzNTfigJMzNjMuIGRvaToxMC4xMDA3L3MxMzIxOC0wMTItMDE5OC16LiBJU1NOwqAxNjEwLTE5ODcuIFMyQ0lEwqAyMjA1MjM1NjIuXG5TZXJlbmtvLCBBbGV4YW5kZXI7IE1pY2hhZWwgRG9oYW4gKDIwMTEpLiBcIkNvbXBhcmluZyB0aGUgZXhwZXJ0IHN1cnZleSBhbmQgY2l0YXRpb24gaW1wYWN0IGpvdXJuYWwgcmFua2luZyBtZXRob2RzOiBFeGFtcGxlIGZyb20gdGhlIGZpZWxkIG9mIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlXCIgKFBERikuIEpvdXJuYWwgb2YgSW5mb3JtZXRyaWNzLiA1ICg0KTogNjI54oCTNjQ5LiBkb2k6MTAuMTAxNi9qLmpvaS4yMDExLjA2LjAwMi4gQXJjaGl2ZWQgKFBERikgZnJvbSB0aGUgb3JpZ2luYWwgb24gNCBPY3RvYmVyIDIwMTMuIFJldHJpZXZlZCAxMiBTZXB0ZW1iZXIgMjAxMy5cblNpbHZlciwgRGF2aWQ7IEh1YW5nLCBBamE7IE1hZGRpc29uLCBDaHJpcyBKLjsgZXTCoGFsLiAoMjggSmFudWFyeSAyMDE2KS4gXCJNYXN0ZXJpbmcgdGhlIGdhbWUgb2YgR28gd2l0aCBkZWVwIG5ldXJhbCBuZXR3b3JrcyBhbmQgdHJlZSBzZWFyY2hcIi4gTmF0dXJlLiA1MjkgKDc1ODcpOiA0ODTigJM0ODkuIEJpYmNvZGU6MjAxNk5hdHVyLjUyOS4uNDg0Uy4gZG9pOjEwLjEwMzgvbmF0dXJlMTY5NjEuIFBNSUTCoDI2ODE5MDQyLiBTMkNJRMKgNTE1OTI1LiBBcmNoaXZlZCBmcm9tIHRoZSBvcmlnaW5hbCBvbiAxOCBKdW5lIDIwMjMuIFJldHJpZXZlZCAxOSBKdW5lIDIwMjMuXG5WYXN3YW5pLCBBc2hpc2gsIE5vYW0gU2hhemVlciwgTmlraSBQYXJtYXIgZXQgYWwuIFwiQXR0ZW50aW9uIGlzIGFsbCB5b3UgbmVlZC5cIiBBZHZhbmNlcyBpbiBuZXVyYWwgaW5mb3JtYXRpb24gcHJvY2Vzc2luZyBzeXN0ZW1zIDMwICgyMDE3KS4gU2VtaW5hbCBwYXBlciBvbiB0cmFuc2Zvcm1lcnMuXG5WaW5jZW50LCBKYW1lcywgXCJIb3JueSBSb2JvdCBCYWJ5IFZvaWNlOiBKYW1lcyBWaW5jZW50IG9uIEFJIGNoYXRib3RzXCIsIExvbmRvbiBSZXZpZXcgb2YgQm9va3MsIHZvbC4gNDYsIG5vLiAxOSAoMTAgT2N0b2JlciAyMDI0KSwgcHAuIDI54oCTMzIuIFwiW0FJIGNoYXRib3RdIHByb2dyYW1zIGFyZSBtYWRlIHBvc3NpYmxlIGJ5IG5ldyB0ZWNobm9sb2dpZXMgYnV0IHJlbHkgb24gdGhlIHRpbWVsZWxzcyBodW1hbiB0ZW5kZW5jeSB0byBhbnRocm9wb21vcnBoaXNlLlwiIChwLiAyOS4pXG5XaGl0ZSBQYXBlcjogT24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ug4oCTIEEgRXVyb3BlYW4gYXBwcm9hY2ggdG8gZXhjZWxsZW5jZSBhbmQgdHJ1c3QgKFBERikuIEJydXNzZWxzOiBFdXJvcGVhbiBDb21taXNzaW9uLiAyMDIwLiBBcmNoaXZlZCAoUERGKSBmcm9tIHRoZSBvcmlnaW5hbCBvbiAyMCBGZWJydWFyeSAyMDIwLiBSZXRyaWV2ZWQgMjAgRmVicnVhcnkgMjAyMC5cbkV4dGVybmFsIGxpbmtzXG5BcnRpZmljaWFsIGludGVsbGlnZW5jZVxuYXQgV2lraXBlZGlhJ3Mgc2lzdGVyIHByb2plY3RzXG5EZWZpbml0aW9ucyBmcm9tIFdpa3Rpb25hcnlcbk1lZGlhIGZyb20gQ29tbW9uc1xuUXVvdGF0aW9ucyBmcm9tIFdpa2lxdW90ZVxuVGV4dGJvb2tzIGZyb20gV2lraWJvb2tzXG5SZXNvdXJjZXMgZnJvbSBXaWtpdmVyc2l0eVxuRGF0YSBmcm9tIFdpa2lkYXRhXG5TY2hvbGlhIGhhcyBhIHRvcGljIHByb2ZpbGUgZm9yIEFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLlxuXCJBcnRpZmljaWFsIEludGVsbGlnZW5jZVwiLiBJbnRlcm5ldCBFbmN5Y2xvcGVkaWEgb2YgUGhpbG9zb3BoeS5cbnNob3dcbnZ0ZVxuQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgKEFJKVxuc2hvd1xuQXJ0aWNsZXMgcmVsYXRlZCB0byBBcnRpZmljaWFsIGludGVsbGlnZW5jZVxuQXV0aG9yaXR5IGNvbnRyb2wgZGF0YWJhc2VzOiBOYXRpb25hbCBcdFxuR2VybWFueVVuaXRlZCBTdGF0ZXNGcmFuY2VCbkYgZGF0YUphcGFuQ3plY2ggUmVwdWJsaWNTcGFpbkxhdHZpYUlzcmFlbFxuQ2F0ZWdvcmllczogQXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2VDb21wdXRhdGlvbmFsIGZpZWxkcyBvZiBzdHVkeUNvbXB1dGF0aW9uYWwgbmV1cm9zY2llbmNlQ3liZXJuZXRpY3NEYXRhIHNjaWVuY2VGb3JtYWwgc2NpZW5jZXNJbnRlbGxpZ2VuY2UgYnkgdHlwZVxuVGhpcyBwYWdlIHdhcyBsYXN0IGVkaXRlZCBvbiAxMCBGZWJydWFyeSAyMDI1LCBhdCAwMzo1NsKgKFVUQykuXG5UZXh0IGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBMaWNlbnNlOyBhZGRpdGlvbmFsIHRlcm1zIG1heSBhcHBseS4gQnkgdXNpbmcgdGhpcyBzaXRlLCB5b3UgYWdyZWUgdG8gdGhlIFRlcm1zIG9mIFVzZSBhbmQgUHJpdmFjeSBQb2xpY3kuIFdpa2lwZWRpYcKuIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgdGhlIFdpa2ltZWRpYSBGb3VuZGF0aW9uLCBJbmMuLCBhIG5vbi1wcm9maXQgb3JnYW5pemF0aW9uLlxuUHJpdmFjeSBwb2xpY3lcbkFib3V0IFdpa2lwZWRpYVxuRGlzY2xhaW1lcnNcbkNvbnRhY3QgV2lraXBlZGlhXG5Db2RlIG9mIENvbmR1Y3RcbkRldmVsb3BlcnNcblN0YXRpc3RpY3NcbkNvb2tpZSBzdGF0ZW1lbnRcbk1vYmlsZSB2aWV3IiwicHVibGlzaGVkVGltZSI6IjIwMDEtMTAtMDhUMTY6NTU6NDlaIiwidXNhZ2UiOnsidG9rZW5zIjo0ODc0MH19fQ==',\n", - " 'headers': {'nel': '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}',\n", - " 'date': 'Thu, 13 Feb 2025 21:20:25 GMT',\n", - " 'cf-ray': '9117dbfe28c87007-IAD',\n", - " 'server': 'cloudflare',\n", - " 'alt-svc': 'h3=\":443\"; ma=86400',\n", - " 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w0KDRBknR%2BgbVq9tZQEJnnLHzmqInUNKBRG7S5zDuw2y1bpgas9WwEH8Pfz4zS9O1JvswUlIXzdJokFQGooWgfpv%2F45DN23ZGA4xGfn4xXjbzCJMXEdwFDbPlA%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}',\n", - " 'connection': 'keep-alive',\n", - " 'content-type': 'application/json; charset=utf-8',\n", - " 'x-powered-by': 'Express',\n", - " 'server-timing': 'cfL4;desc=\"?proto=TCP&rtt=38737&min_rtt=35419&rtt_var=19919&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2826&recv_bytes=1036&delivery_rate=46733&cwnd=32&unsent_bytes=0&cid=d6c3bb713ed46822&ts=30978&x=0\"',\n", - " 'cf-cache-status': 'DYNAMIC',\n", - " 'content-encoding': 'gzip',\n", - " 'transfer-encoding': 'chunked',\n", - " 'x-cloud-trace-context': '7760459c228c46200e94b7951f61fbfd',\n", - " 'access-control-allow-origin': '*'},\n", - " 'status_code': 200}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "crawled_pages = execution_transitions[-2].output\n", - "\n", - "print(\"Crawled pages: \")\n", - "crawled_pages" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lisitng the Document Store for the Agent\n", - "\n", - "The document store is where the agent stores the documents it has created. Each document has a `title` , `content`, `id`, `metadata`, `created_at` and the `vector embedding` associated with it. This will be used for the retrieval of the documents when the agent is queried." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of documents in the document store: 10\n" - ] - } - ], - "source": [ - "docs = client.agents.docs.list(agent_id=agent.id, limit=100).items\n", - "num_docs = len(docs)\n", - "print(\"Number of documents in the document store: \", num_docs)" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "# # # UNCOMMENT THIS TO DELETE ALL THE AGENT'S DOCUMENTS\n", - "\n", - "# for doc in client.agents.docs.list(agent_id=agent.id, limit=1000):\n", - "# client.agents.docs.delete(agent_id=agent.id, doc_id=doc.id)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating a Session\n", - "\n", - "A session is used to interact with the agent. It is used to send messages to the agent and receive responses.\n", - "Situation is the initial message that is sent to the agent to set the context for the conversation. Out here you can add more information about the agent and the task it is performing to help the agent answer better. Additionally, you can also define the `search_threshold` and `search_query_chars` which are used to control the retrieval of the documents from the document store which will be used for the retrieval of the documents when the agent is queried.\n", - "More information about the session can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#session)." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Agent created with ID: 7a5431c3-aec9-4fc7-9f53-fe336f3f4bd4\n", - "Session created with ID: 067ae632-26d2-7d7c-8000-cb9786309817\n" - ] - } - ], - "source": [ - "# Custom system template for this particular session to help the agent answer better\n", - "system_template = \"\"\"\n", - "You are an AI agent designed to assist users with their queries about a certain website.\n", - "Your goal is to provide clear and detailed responses.\n", - "\n", - "**Guidelines**:\n", - "1. Assume the user is unfamiliar with the company and products.\n", - "2. Thoroughly read and comprehend the user's question.\n", - "3. Use the provided context documents to find relevant information.\n", - "4. Craft a detailed response based on the context and your understanding of the company and products.\n", - "5. Include links to specific website pages for further information when applicable.\n", - "\n", - "**Response format**:\n", - "- Use simple, clear language.\n", - "- Include relevant website links.\n", - "\n", - "**Important**:\n", - "- For questions related to the business, only use the information that are explicitly given in the documents above.\n", - "- If the user asks about the business, and it's not given in the documents above, respond with an answer that states that you don't know.\n", - "- Use the most recent and relevant data from context documents.\n", - "- Be proactive in helping users find solutions.\n", - "- Ask for clarification if the query is unclear.\n", - "- Inform users if their query is unrelated to the given website.\n", - "- Avoid using the following in your response: Based on the provided documents, based on the provided information, based on the documentation... etc.\n", - "\n", - "{%- if docs -%}\n", - "**Relevant documents**:{{NEWLINE}}\n", - " {%- for doc in docs -%}\n", - " {{doc.title}}{{NEWLINE}}\n", - " {%- if doc.content is string -%}\n", - " {{doc.content}}{{NEWLINE}}\n", - " {%- else -%}\n", - " {%- for snippet in doc.content -%}\n", - " {{snippet}}{{NEWLINE}}\n", - " {%- endfor -%}\n", - " {%- endif -%}\n", - " {{\"---\"}}\n", - " {%- endfor -%}\n", - "\n", - "{%- else -%}\n", - "There are no documents available for this query.\n", - "{%- endif -%}\n", - "\n", - "\"\"\"\n", - "\n", - "print(f\"Agent created with ID: {agent.id}\")\n", - "\n", - "# Create a session for interaction\n", - "session = client.sessions.create(\n", - " system_template=system_template,\n", - " agent=agent.id,\n", - " recall_options={\n", - " \"mode\": \"hybrid\",\n", - " \"num_search_messages\": 1,\n", - " \"max_query_length\": 800,\n", - " \"confidence\": -0.9,\n", - " \"alpha\": 0.5,\n", - " \"limit\": 10,\n", - " \"mmr_strength\": 0.5,\n", - " },\n", - ")\n", - "\n", - "print(f\"Session created with ID: {session.id}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Chatting with the Agent\n", - "\n", - "The chat method is used to send messages to the agent and receive responses. The messages are sent as a list of dictionaries with the `role` and `content` keys." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Artificial intelligence (AI) refers to the ability of machines, particularly computer systems, to perform tasks that typically require human intelligence. These tasks can include learning, reasoning, problem-solving, perception, and language understanding.\n", - "\n", - "### Key Aspects of Artificial Intelligence:\n", - "\n", - "1. **Definition**: AI is defined as intelligence exhibited by machines and involves the study and development of algorithms that allow computers to perceive their environment and learn from it. The goal is for these machines to act in ways that maximize their chances of achieving specific objectives.\n", - "\n", - "2. **Applications**:\n", - " - **Search Engines**: AI powers search engines like Google to provide relevant results quickly.\n", - " - **Recommendation Systems**: Services like Netflix or Amazon use AI to suggest content or products based on user behavior.\n", - " - **Virtual Assistants**: AI-driven assistants such as Siri and Alexa help users with various tasks through voice commands.\n", - " - **Autonomous Vehicles**: Companies like Waymo utilize AI for self-driving cars that navigate without human intervention.\n", - " - **Generative Tools**: Platforms such as ChatGPT generate text and engage in conversation.\n", - "\n", - "3. **Subfields of AI**:\n", - " - **Machine Learning**: A subset of AI focused on building systems that learn from data.\n", - " - **Natural Language Processing (NLP)**: Enables machines to understand and respond to human language.\n", - " - **Computer Vision**: Allows computers to interpret and make decisions based on visual data.\n", - " - **Robotics**: Uses AI to automate physical tasks typically performed by humans.\n", - "\n", - "4. **Techniques**: Various techniques are used in AI, including:\n", - " - **Neural Networks**: Modeled after the human brain, they are used in deep learning applications.\n", - " - **Search Algorithms**: Help find solutions in problem-solving scenarios.\n", - " - **Statistical Methods**: Used for inference and making predictions based on data.\n", - "\n", - "5. **Ethics and Concerns**: The rise of AI has raised ethical questions regarding privacy, accountability, and the impact on employment. Concerns about bias in AI systems and the potential for misuse in areas such as surveillance and misinformation are ongoing issues that society needs to address.\n", - "\n", - "6. **Future Prospects**: The field continues to evolve rapidly, with ongoing research to enhance AI's capabilities and incorporate ethical considerations into technologies.\n", - "\n", - "For more detailed information, you can explore resources available on platforms such as Wikipedia's [Artificial Intelligence page](https://en.wikipedia.org/wiki/Artificial_intelligence) that covers foundational concepts, applications, and ongoing discussions in this expansive field.\n", - "CPU times: user 63.5 ms, sys: 61.6 ms, total: 125 ms\n", - "Wall time: 17.5 s\n" - ] - } - ], - "source": [ - "%%time\n", - "user_question = \"tell me about artificial intelligence\"\n", - "\n", - "response = client.sessions.chat(\n", - " session_id=session.id,\n", - " messages=[\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": user_question,\n", - " }\n", - " ],\n", - " recall=True,\n", - ")\n", - "\n", - "print(response.choices[0].message.content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Check the matched documents" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matched docs:\n", - "\n", - "\n", - "Doc 1:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk is an introductory excerpt that outlines the definition of artificial intelligence (AI), its major applications, goals, and historical development within the larger context of AI research. It establishes foundational concepts regarding AI's capabilities, challenges in simulating human-like intelligence, and the evolution of AI technologies, setting the stage for subsequent discussions on detailed goals, techniques, applications, ethics, and future prospects of AI in the document.\n", - "Jump to content\n", - "Main menu\n", - "Search\n", - "Appearance\n", - "Donate\n", - "Create account\n", - "Log in\n", - "Personal tools\n", - "\t\tPhotograph your local culture, help Wikipedia and win!\n", - " Toggle the table of contents\n", - "Artificial intelligence\n", - "163 languages\n", - "Article\n", - "Talk\n", - "Read\n", - "View source\n", - "View history\n", - "Tools\n", - "From Wikipedia, the free encyclopedia\n", - "\"AI\" redirects here. For other uses, see AI (disambiguation) and Artificial intelligence (disambiguation).\n", - " Part of a series on\n", - "Artificial intelligence (AI)\n", - "\n", - "\n", - "\n", - "show\n", - "Major goals\n", - "\n", - "\n", - "show\n", - "Approaches\n", - "\n", - "\n", - "show\n", - "Applications\n", - "\n", - "\n", - "show\n", - "Philosophy\n", - "\n", - "\n", - "show\n", - "History\n", - "\n", - "\n", - "show\n", - "Glossary\n", - "\n", - "vte\n", - "\n", - "Artificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems. It is a field of research in computer science that develops and studies methods and software that enable machines to perceive their environment and use learning and intelligence to take actions that maximize their chances of achieving defined goals.[1] Such machines may be called AIs.\n", - "\n", - " High-profile applications of AI include advanced web search engines (e.g., Google Search); recommendation systems (used by YouTube, Amazon, and Netflix); virtual assistants (e.g., Google Assistant, Siri, and Alexa); autonomous vehicles (e.g., Waymo); generative and creative tools (e.g., ChatGPT and AI art); and superhuman play and analysis in strategy games (e.g., chess and Go). However, many AI applications are not perceived as AI: \"A lot of cutting edge AI has filtered into general applications, often without being called AI because once something becomes useful enough and common enough it's not labeled AI anymore. \"[2][3]\n", - "\n", - " Various subfields of AI research are centered around particular goals and the use of particular tools. The traditional goals of AI research include reasoning, knowledge representation, planning, learning, natural language processing, perception, and support for robotics.[a] General intelligence—the ability to complete any task performed by a human on an at least equal level—is among the field's long-term goals.[4] To reach these goals, AI researchers have adapted and integrated a wide range of techniques, including search and mathematical optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\n", - "\n", - "Artificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\n", - "\n", - " Goals\n", - "\n", - "The general problem of simulating (or creating) intelligence has been broken into subproblems. AI also draws upon psychology, linguistics, philosophy, neuroscience, and other fields.[5]\n", - "\n", - "Artificial intelligence was founded as an academic discipline in 1956,[6] and the field went through multiple cycles of optimism throughout its history,[7][8] followed by periods of disappointment and loss of funding, known as AI winters.[9][10] Funding and interest vastly increased after 2012 when deep learning outperformed previous AI techniques.[11] This growth accelerated further after 2017 with the transformer architecture,[12] and by the early 2020s many billions of dollars were being invested in AI and the field experienced rapid ongoing progress in what has become known as the AI boom. The emergence of advanced generative AI in the midst of the AI boom and its ability to create and modify content exposed several unintended consequences and harms in the present and raised concerns about the risks of AI and its long-term effects in the future, prompting discussions about regulatory policies to ensure the safety and benefits of the technology.\n", - "\n", - " Goals\n", - "\n", - "The general problem of simulating (or creating) intelligence has been broken into subproblems. These consist of particular traits or capabilities that researchers expect an intelligent system to display. The traits described below have received the most attention and cover the scope of AI research.[a]\n", - "\n", - "Reasoning and problem-solving\n", - "\n", - "Early researchers developed algorithms that imitated step-by-step reasoning that humans use when they solve puzzles or make logical deductions.[13] By the late 1980s and 1990s, methods were developed for dealing with uncertain or incomplete information, employing concepts from probability and economics.[14]\n", - "\n", - "Many of these algorithms are insufficient for solving large reasoning problems because they experience a \"combinatorial explosion\": They become exponentially slower as the problems grow.[15] Even humans rarely use the step-by-step deduction that early AI research could model. They solve most of their problems using fast, intuitive judgments.[16] Accurate and efficient reasoning is an unsolved problem.\n", - "\n", - " Knowledge representation\n", - "An ontology represents knowledge as a set of concepts within a domain and the relationships between those concepts.\n", - "\n", - " Knowledge representation and knowledge engineering[17] allow AI programs to answer questions intelligently and make deductions about real-world facts. Formal knowledge representations are used in content-based indexing and retrieval,[18] scene interpretation,[19] clinical decision support,[20] knowledge discovery (mining \"interesting\" and actionable inferences from large databases),[21] and other areas.[22]\n", - "\n", - "A knowledge base is a body of knowledge represented in a form that can be used by a program. An ontology is the set of objects, relations, concepts, and properties used by a particular domain of knowledge.[23] Knowledge bases need to represent things such as objects, properties, categories, and relations between objects;[24] situations, events, states, and time;[25] causes and effects;[26] knowledge about knowledge (what we know about what other people know);[27] default reasoning (things that humans assume are true until they are told differently and will remain true even when other facts are changing);[28] and many other aspects and domains of knowledge.\n", - "\n", - " Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \"facts\" or \"statements\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\n", - "\n", - "Planning and decision-making\n", - "\n", - "An \"agent\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences—there are some situations it would prefer to be in, and some situations it is trying to avoid. Among the most difficult problems in knowledge representation are the breadth of commonsense knowledge (the set of atomic facts that the average person knows is enormous);[29] and the sub-symbolic form of most commonsense knowledge (much of what people know is not represented as \"facts\" or \"statements\" that they could express verbally).[16] There is also the difficulty of knowledge acquisition, the problem of obtaining knowledge for AI applications.[c]\n", - "\n", - "Planning and decision-making\n", - "\n", - "An \"agent\" is anything that perceives and takes actions in the world. A rational agent has goals or preferences and takes actions to make them happen.[d][32] In automated planning, the agent has a specific goal.[33] In automated decision-making, the agent has preferences—there are some situations it would prefer to be in, and some situations it is trying to avoid. The decision-making agent assigns a number to each situation (called the \"utility\") that measures how much the agent prefers it. For each possible action, it can calculate the \"expected utility\": the utility of all possible outcomes of the action, weighted by the probability that the outcome will occur. It can then choose the action with the maximum expected utility.[34]\n", - "\n", - "In classical planning, the agent knows exactly what the effect of any action will be.[35] In most real-world problems, however, the agent may not be certain about the situation they are in (it is \"unknown\" or \"unobservable\") and it may not know for certain what will happen after each possible action (it is not \"deterministic\"). It must choose an action by making a probabilistic guess and then reassess the situation to see if the action worked.[36]\n", - "\n", - "In some problems, the agent's preferences may be uncertain, especially if there are other agents or humans involved. These can be learned (e.g., with inverse reinforcement learning), or the agent can seek information to improve its preferences.[37] Information value theory can be used to weigh the value of exploratory or experimental actions.[38] The space of possible future actions and situations is typically intractably large, so the agents must take actions and evaluate situations while being uncertain of what the outcome will be.\n", - "\n", - " A Markov decision process has a transition model that describes the probability that a particular action will change the state in a particular way and a reward function that supplies the utility of each state and the cost of each action. A policy associates a decision with each possible state. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\n", - "\n", - "Game theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\n", - "\n", - "Learning\n", - "\n", - "Machine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\n", - "\n", - "There are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\n", - "\n", - " In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The policy could be calculated (e.g., by iteration), be heuristic, or it can be learned.[39]\n", - "\n", - "Game theory describes the rational behavior of multiple interacting agents and is used in AI programs that make decisions that involve other agents.[40]\n", - "\n", - "Learning\n", - "\n", - "Machine learning is the study of programs that can improve their performance on a given task automatically.[41] It has been a part of AI from the beginning.[e]\n", - "\n", - "There are several kinds of machine learning. Unsupervised learning analyzes a stream of data and finds patterns and makes predictions without any other guidance.[44] Supervised learning requires labeling the training data with the expected answers, and comes in two main varieties: classification (where the program must learn to predict what category the input belongs in) and regression (where the program must deduce a numeric function based on numeric input).[45]\n", - "\n", - " In reinforcement learning, the agent is rewarded for good responses and punished for bad ones. The agent learns to choose responses that are classified as \"good\".[46] Transfer learning is when the knowledge gained from one problem is applied to a new problem.[47] Deep learning is a type of machine learning that runs inputs through biologically inspired artificial neural networks for all of these types of learning.[48]\n", - "\n", - "Computational learning theory can assess learners by computational complexity, by sample complexity (how much data is required), or by other notions of optimization.[49]\n", - "\n", - "Natural language processing\n", - "\n", - "Natural language processing (NLP)[50] allows programs to read, write and communicate in human languages such as English. Specific problems include speech recognition, speech synthesis, machine translation, information extraction, information retrieval and question answering.[51]\n", - "\n", - "Early work, based on Noam Chomsky's generative grammar and semantic networks, had difficulty with word-sense disambiguation[f] unless restricted to small domains called \"micro-worlds\" (due to the common sense knowledge problem[29]). Margaret Masterman believed that it was meaning and not grammar that was the key to understanding languages, and that thesauri and not dictionaries should be the basis of computational language structure.\n", - "\n", - " Modern deep learning techniques for NLP include word embedding (representing words, typically as vectors encoding their meaning),[52] transformers (a deep learning architecture using an attention mechanism),[53] and others.[54] In 2019, generative pre-trained transformer (or \"GPT\") language models began to generate coherent text,[55][56] and by 2023, these models were able to get human-level scores on the bar exam, SAT test, GRE test, and many other real-world applications.[57]\n", - "\n", - "Perception\n", - "\n", - "Machine perception is the ability to use input from sensors (such as cameras, microphones, wireless signals, active lidar, sonar, radar, and tactile sensors) to deduce aspects of the world. Computer vision is the ability to analyze visual input.[58]\n", - "\n", - "The field includes speech recognition,[59] image classification,[60] facial recognition, object recognition,[61]object tracking,[62] and robotic perception.[63]\n", - "\n", - "Social intelligence\n", - "Kismet, a robot head which was made in the 1990s; it is a machine that can recognize and simulate emotions.[64]\n", - "\n", - "Affective computing is a field that comprises systems that recognize, interpret, process, or simulate human feeling, emotion, and mood.[65] For example, some virtual assistants are programmed to speak conversationally or even to banter humorously; it makes them appear more sensitive to the emotional dynamics of human interaction, or to otherwise facilitate human–computer interaction.\n", - "\n", - " However, this tends to give naïve users an unrealistic conception of the intelligence of existing computer agents.[66] Moderate successes related to affective computing include textual sentiment analysis and, more recently, multimodal sentiment analysis, wherein AI classifies the effects displayed by a videotaped subject.[67]\n", - "\n", - "General intelligence\n", - "\n", - "A machine with artificial general intelligence should be able to solve a wide variety of problems with breadth and versatility similar to human intelligence.[4]\n", - "\n", - "Techniques\n", - "\n", - "AI research uses a wide variety of techniques to accomplish the goals above.[b]\n", - "\n", - "Search and optimization\n", - "\n", - "AI can solve many problems by intelligently searching through many possible solutions.[68] There are two very different kinds of search used in AI: state space search and local search.\n", - "\n", - " State space search\n", - "\n", - "State space search searches through a tree of possible states to try to find a goal state.[69] For example, planning algorithms search through trees of goals and subgoals, attempting to find a path to a target goal, a process called means-ends analysis.[70]\n", - "\n", - "Simple exhaustive searches[71] are rarely sufficient for most real-world problems: the search space (the number of places to search) quickly grows to astronomical numbers. The result is a search that is too slow or never completes.[15] \"Heuristics\" or \"rules of thumb\" can help prioritize choices that are more likely to reach a goal.[72]\n", - "\n", - "Adversarial search is used for game-playing programs, such as chess or Go. It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\n", - "\n", - "Local search\n", - "Illustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\n", - "\n", - "Local search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\n", - "\n", - "Gradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\n", - "\n", - " It searches through a tree of possible moves and countermoves, looking for a winning position.[73]\n", - "\n", - "Local search\n", - "Illustration of gradient descent for 3 different starting points; two parameters (represented by the plan coordinates) are adjusted in order to minimize the loss function (the height)\n", - "\n", - "Local search uses mathematical optimization to find a solution to a problem. It begins with some form of guess and refines it incrementally.[74]\n", - "\n", - "Gradient descent is a type of local search that optimizes a set of numerical parameters by incrementally adjusting them to minimize a loss function. Variants of gradient descent are commonly used to train neural networks,[75] through the backpropagation algorithm.\n", - "\n", - " Another type of local search is evolutionary computation, which aims to iteratively improve a set of candidate solutions by \"mutating\" and \"recombining\" them, selecting only the fittest to survive each generation.[76]\n", - "\n", - "Distributed search processes can coordinate via swarm intelligence algorithms. Two popular swarm algorithms used in search are particle swarm optimization (inspired by bird flocking) and ant colony optimization (inspired by ant trails).[77]\n", - "\n", - "Logic\n", - "\n", - "Formal logic is used for reasoning and knowledge representation.[78] Formal logic comes in two main forms: propositional logic (which operates on statements that are true or false and uses logical connectives such as \"and\", \"or\", \"not\" and \"implies\")[79] and predicate logic (which also operates on objects, predicates and relations and uses quantifiers such as \"Every X is a Y\" and \"There are some Xs that are Ys\").[80]\n", - "\n", - "Deductive reasoning in logic is the process of proving a new statement (conclusion) from other statements that are given and assumed to be true (the premises).[81] Proofs can be structured as proof trees, in which nodes are labelled by sentences, and children nodes are connected to parent nodes by inference rules.\n", - "\n", - " Given a problem and a set of premises, problem-solving reduces to searching for a proof tree whose root node is labelled by a solution of the problem and whose leaf nodes are labelled by premises or axioms. In the case of Horn clauses, problem-solving search can be performed by reasoning forwards from the premises or backwards from the problem.[82] In the more general case of the clausal form of first-order logic, resolution is a single, axiom-free rule of inference, in which a problem is solved by proving a contradiction from premises that include the negation of the problem to be solved.[83]\n", - "\n", - "Inference in both Horn clause logic and first-order logic is undecidable, and therefore intractable. However, backward reasoning with Horn clauses, which underpins computation in the logic programming language Prolog, is Turing complete. Moreover, its efficiency is competitive with computation in other symbolic programming languages.[84]\n", - "\n", - "Fuzzy logic assigns a \"degree of truth\" between 0 and 1. It can therefore handle propositions that are vague and partially true.[85]\n", - "\n", - "Non-monotonic logics, including logic programming with negation as failure, are designed to handle default reasoning.[28] Other specialized versions of logic have been developed to describe many complex domains.\n", - "\n", - " Probabilistic methods for uncertain reasoning\n", - "A simple Bayesian network, with the associated conditional probability tables\n", - "\n", - "Many problems in AI (including in reasoning, planning, learning, perception, and robotics) require the agent to operate with incomplete or uncertain information. AI researchers have devised a number of tools to solve these problems using methods from probability theory and economics.[86] Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\n", - "\n", - "Bayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation–maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\n", - "\n", - "Probabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\n", - "\n", - "Expectation–maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\n", - " Classifiers and statistical learning methods\n", - "\n", - "The simplest AI applications can be divided into two types: classifiers (e.g., \"if shiny then diamond\"), on one hand, and controllers (e.g., \"if diamond then pick up\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. Precise mathematical tools have been developed that analyze how an agent can make choices and plan, using decision theory, decision analysis,[87] and information value theory.[88] These tools include models such as Markov decision processes,[89] dynamic decision networks,[90] game theory and mechanism design.[91]\n", - "\n", - "Bayesian networks[92] are a tool that can be used for reasoning (using the Bayesian inference algorithm),[g][94] learning (using the expectation–maximization algorithm),[h][96] planning (using decision networks)[97] and perception (using dynamic Bayesian networks).[90]\n", - "\n", - "Probabilistic algorithms can also be used for filtering, prediction, smoothing, and finding explanations for streams of data, thus helping perception systems analyze processes that occur over time (e.g., hidden Markov models or Kalman filters).[90]\n", - "\n", - "Expectation–maximization clustering of Old Faithful eruption data starts from a random guess but then successfully converges on an accurate clustering of the two physically distinct modes of eruption.\n", - " Classifiers and statistical learning methods\n", - "\n", - "The simplest AI applications can be divided into two types: classifiers (e.g., \"if shiny then diamond\"), on one hand, and controllers (e.g., \"if diamond then pick up\"), on the other hand. Classifiers[98] are functions that use pattern matching to determine the closest match. They can be fine-tuned based on chosen examples using supervised learning. Each pattern (also called an \"observation\") is labeled with a certain predefined class. All the observations combined with their class labels are known as a data set. When a new observation is received, that observation is classified based on previous experience.[45]\n", - "\n", - "There are many kinds of classifiers in use.[99] The decision tree is the simplest and most widely used symbolic machine learning algorithm.[100] K-nearest neighbor algorithm was the most widely used analogical AI until the mid-1990s, and Kernel methods such as the support vector machine (SVM) displaced k-nearest neighbor in the 1990s.[101] The naive Bayes classifier is reportedly the \"most widely used learner\"[102] at Google, due in part to its scalability.[103] Neural networks are also used as classifiers.[104]\n", - "\n", - "Artificial neural networks\n", - "A neural network is an interconnected group of nodes, akin to the vast network of neurons in the human brain.\n", - "\n", - " An artificial neural network is based on a collection of nodes also known as artificial neurons, which loosely model the neurons in a biological brain. It is trained to recognise patterns; once trained, it can recognise those patterns in fresh data. There is an input, at least one hidden layer of nodes and an output. Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\n", - "\n", - "Learning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Each node applies a function and once the weight crosses its specified threshold, the data is transmitted to the next layer. A network is typically called a deep neural network if it has at least 2 hidden layers.[104]\n", - "\n", - "Learning algorithms for neural networks use local search to choose the weights that will get the right output for each input during training. The most common training technique is the backpropagation algorithm.[105] Neural networks learn to model complex relationships between inputs and outputs and find patterns in data. In theory, a neural network can learn any function.[106]\n", - "\n", - "In feedforward neural networks the signal passes in only one direction.[107] Recurrent neural networks feed the output signal back into the input, which allows short-term memories of previous input events. Long short term memory is the most successful network architecture for recurrent networks.[108] Perceptrons[109] use only a single layer of neurons; deep learning[110] uses multiple layers. Convolutional neural networks strengthen the connection between neurons that are \"close\" to each other—this is especially important in image processing, where a local set of neurons must identify an \"edge\" before the network can identify an object.[111]\n", - "\n", - "Deep learning\n", - "\n", - "Deep learning[110] uses several layers of neurons between the network's inputs and outputs. The multiple layers can progressively extract higher-level features from the raw input. For example, in image processing, lower layers may identify edges, while higher layers may identify the concepts relevant to a human such as digits, letters, or faces.[112]\n", - "\n", - "Deep learning has profoundly improved the performance of programs in many important subfields of artificial intelligence, including computer vision, speech recognition, natural language processing, image classification,[113] and others. The reason that deep learning performs so well in so many applications is not known as of 2023.[114] The sudden success of deep learning in 2012–2015 did not occur because of some new discovery or theoretical breakthrough (deep neural networks and backpropagation had been described by many people, as far back as the 1950s)[i] but because of two factors: the incredible increase in computer power (including the hundred-fold increase in speed by switching to GPUs) and the availability of vast amounts of training data, especially the giant curated datasets used for benchmark testing, such as ImageNet.[j]\n", - "\n", - "GPT\n", - "\n", - "Generative pre-trained transformers (GPT) are large language models (LLMs) that generate text based on the semantic relationships between words in sentences. Text-based GPT models are pretrained on a large corpus of text that can be from the Internet. The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). The pretraining consists of predicting the next token (a token being usually a word, subword, or punctuation). Throughout this pretraining, GPT models accumulate knowledge about the world and can then generate human-like text by repeatedly predicting the next token. Typically, a subsequent training phase makes the model more truthful, useful, and harmless, usually with a technique called reinforcement learning from human feedback (RLHF). Current GPT models are prone to generating falsehoods called \"hallucinations\", although this can be reduced with RLHF and quality data. They are used in chatbots, which allow people to ask a question or request a task in simple text.[122][123]\n", - "\n", - "Current models and services include Gemini (formerly Bard), ChatGPT, Grok, Claude, Copilot, and LLaMA.[124] Multimodal GPT models can process different types of data (modalities) such as images, videos, sound, and text.[125]\n", - "\n", - "Hardware and software\n", - "Main articles: Programming languages for artificial intelligence and Hardware for artificial intelligence\n", - "\n", - "In the late 2010s, graphics processing units (GPUs) that were increasingly designed with AI-specific enhancements and used with specialized TensorFlow software had replaced previously used central processing unit (CPUs) as the dominant means for large-scale (commercial and academic) machine learning models' training.[126] Specialized programming languages such as Prolog were used in early AI research,[127] but general-purpose programming languages like Python have become predominant.[128]\n", - "\n", - "The transistor density in integrated circuits has been observed to roughly double every 18 months—a trend known as Moore's law, named after the Intel co-founder Gordon Moore, who first identified it. Improvements in GPUs have been even faster,[129] a trend sometimes called Huang's law,[130] named after Nvidia co-founder and CEO Jensen Huang.\n", - "\n", - " Applications\n", - "Main article: Applications of artificial intelligence\n", - "\n", - "AI and machine learning technology is used in most of the essential applications of the 2020s, including: search engines (such as Google Search), targeting online advertisements, recommendation systems (offered by Netflix, YouTube or Amazon), driving internet traffic, targeted advertising (AdSense, Facebook), virtual assistants (such as Siri or Alexa), autonomous vehicles (including drones, ADAS and self-driving cars), automatic language translation (Microsoft Translator, Google Translate), facial recognition (Apple's Face ID or Microsoft's DeepFace and Google's FaceNet) and image labeling (used by Facebook, Apple's iPhoto and TikTok). The deployment of AI may be overseen by a Chief automation officer (CAO).\n", - "\n", - " Health and medicine\n", - "Main article: Artificial intelligence in healthcare\n", - "\n", - "The application of AI in medicine and medical research has the potential to increase patient care and quality of life.[131] Through the lens of the Hippocratic Oath, medical professionals are ethically compelled to use AI, if applications can more accurately diagnose and treat patients.[132][133]\n", - "\n", - "For medical research, AI is an important tool for processing and integrating big data. This is particularly important for organoid and tissue engineering development which use microscopy imaging as a key technique in fabrication.[134] It has been suggested that AI can overcome discrepancies in funding allocated to different fields of research.[134] New AI tools can deepen the understanding of biomedically relevant pathways. For example, AlphaFold 2 (2021) demonstrated the ability to approximate, in hours rather than months, the 3D structure of a protein.[135] In 2023, it was reported that AI-guided drug discovery helped find a class of antibiotics capable of killing two different types of drug-resistant bacteria.[136] In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\n", - "\n", - "Games\n", - "Main article: In 2024, researchers used machine learning to accelerate the search for Parkinson's disease drug treatments. Their aim was to identify compounds that block the clumping, or aggregation, of alpha-synuclein (the protein that characterises Parkinson's disease). They were able to speed up the initial screening process ten-fold and reduce the cost by a thousand-fold.[137][138]\n", - "\n", - "Games\n", - "Main article: Game artificial intelligence\n", - "\n", - "Game playing programs have been used since the 1950s to demonstrate and test AI's most advanced techniques.[139] Deep Blue became the first computer chess-playing system to beat a reigning world chess champion, Garry Kasparov, on 11 May 1997.[140] In 2011, in a Jeopardy! quiz show exhibition match, IBM's question answering system, Watson, defeated the two greatest Jeopardy! champions, Brad Rutter and Ken Jennings, by a significant margin.[141] In March 2016, AlphaGo won 4 out of 5 games of Go in a match with Go champion Lee Sedol, becoming the first computer Go-playing system to beat a professional Go player without handicaps. Then, in 2017, it defeated Ke Jie, who was the best Go player in the world.[142] Other programs handle imperfect-information games, such as the poker-playing program Pluribus.[143] DeepMind developed increasingly generalistic reinforcement learning models, such as with MuZero, which could be trained to play chess, Go, or Atari games.[144] In 2019, DeepMind's AlphaStar achieved grandmaster level in StarCraft II, a particularly challenging real-time strategy game that involves incomplete knowledge of what happens on the map.[145] In 2021, an AI agent competed in a PlayStation Gran Turismo competition, winning against four of the world's best Gran Turismo drivers using deep reinforcement learning.[146] In 2024, Google DeepMind introduced SIMA, a type of AI capable of autonomously playing nine previously unseen open-world video games by observing screen output, as well as executing short, specific tasks in response to natural language instructions.[147]\n", - "\n", - "Mathematics\n", - "\n", - "Large language models, such as GPT-4, Gemini, Claude, LLaMa or Mistral, are increasingly used in mathematics. These probabilistic models are versatile, but can also produce wrong answers in the form of hallucinations. They sometimes need a large database of mathematical problems to learn from, but also methods such as supervised fine-tuning or trained classifiers with human-annotated data to improve answers for new problems and learn from corrections.[148] A February 2024 study showed that the performance of some language models for reasoning capabilities in solving math problems not included in their training data was low, even for problems with only minor deviations from trained data.[149] One technique to improve their performance involves training the models to produce correct reasoning steps, rather than just the correct result.[150] In January 2025, Microsoft proposed the technique rStar-Math that leverages Monte Carlo tree search and step-by-step reasoning, enabling a relatively small language model like Qwen-7B to solve 53% of the AIME 2024 and 90% of the MATH benchmark problems.[151]\n", - "\n", - "Alternatively, dedicated models for mathematical problem solving with higher precision for the outcome including proof of theorems have been developed such as AlphaTensor, AlphaGeometry and AlphaProof all from Google DeepMind,[152] Llemma from EleutherAI[153] or Julius.[154]\n", - "\n", - "When natural language is used to describe mathematical problems, converters can transform such prompts into a formal language such as Lean to define mathematical tasks.\n", - "\n", - " Some models have been developed to solve challenging problems and reach good results in benchmark tests, others to serve as educational tools in mathematics.[155]\n", - "\n", - "Topological deep learning integrates various topological approaches.\n", - "\n", - " Finance\n", - "\n", - "Finance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \"robot advisers\" have been in use for some years.[156]\n", - "\n", - "World Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \"[157]\n", - "\n", - "Military\n", - "Main article: Military applications of artificial intelligence\n", - "\n", - "Various countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] Finance\n", - "\n", - "Finance is one of the fastest growing sectors where applied AI tools are being deployed: from retail online banking to investment advice and insurance, where automated \"robot advisers\" have been in use for some years.[156]\n", - "\n", - "World Pensions experts like Nicolas Firzli insist it may be too early to see the emergence of highly innovative AI-informed financial products and services: \"the deployment of AI tools will simply further automatise things: destroying tens of thousands of jobs in banking, financial planning, and pension advice in the process, but I'm not sure it will unleash a new wave of [e.g., sophisticated] pension innovation. \"[157]\n", - "\n", - "Military\n", - "Main article: Military applications of artificial intelligence\n", - "\n", - "Various countries are deploying AI military applications.[158] The main applications enhance command and control, communications, sensors, integration and interoperability.[159] Research is targeting intelligence collection and analysis, logistics, cyber operations, information operations, and semiautonomous and autonomous vehicles.[158] AI technologies enable coordination of sensors and effectors, threat detection and identification, marking of enemy positions, target acquisition, coordination and deconfliction of distributed Joint Fires between networked combat vehicles involving manned and unmanned teams.[159]\n", - "\n", - "AI has been used in military operations in Iraq, Syria, Israel and Ukraine.[158][160][161][162]\n", - "\n", - "Generative AI\n", - "Vincent van Gogh in watercolour created by generative AI software\n", - "These paragraphs are an excerpt from Generative artificial intelligence.[edit]\n", - "\n", - "Generative artificial intelligence (generative AI, GenAI,[163] or GAI) is a subset of artificial intelligence that uses generative models to produce text, images, videos, or other forms of data.[164][165][166] These models learn the underlying patterns and structures of their training data and use them to produce new data[167][168] based on the input, which often comes in the form of natural language prompts.[169][170]\n", - "\n", - "Improvements in transformer-based deep neural networks, particularly large language models (LLMs), enabled an AI boom of generative AI systems in the 2020s. These include chatbots such as ChatGPT, Copilot, Gemini, and LLaMA; text-to-image artificial intelligence image generation systems such as Stable Diffusion, Midjourney, and DALL-E; and text-to-video AI generators such as Sora.[171][172][173][174] Companies such as OpenAI, Anthropic, Microsoft, Google, and Baidu as well as numerous smaller firms have developed generative AI models.[169][175][176]\n", - "\n", - "Generative AI has uses across a wide range of industries, including software development, healthcare, finance, entertainment, customer service,[177] sales and marketing,[178] art, writing,[179] fashion,[180] and product design.[181] However, concerns have been raised about the potential misuse of generative AI such as cybercrime, the use of fake news or deepfakes to deceive or manipulate people, and the mass replacement of human jobs.[182][183] Intellectual property law concerns also exist around generative models that are trained on and emulate copyrighted works of art.[184]\n", - "Agents\n", - "\n", - "Artificial intelligent (AI) agents are software entities designed to perceive their environment, make decisions, and take actions autonomously to achieve specific goals. These agents can interact with users, their environment, or other agents. AI agents are used in various applications, including virtual assistants, chatbots, autonomous vehicles, game-playing systems, and industrial robotics. AI agents operate within the constraints of their programming, available computational resources, and hardware limitations. This means they are restricted to performing tasks within their defined scope and have finite memory and processing capabilities. In real-world applications, AI agents often face time constraints for decision-making and action execution. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\n", - "\n", - "Sexuality\n", - "\n", - "Applications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\n", - "\n", - "AI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\n", - "\n", - "Other industry-specific tasks\n", - "\n", - "There are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. Many AI agents incorporate learning algorithms, enabling them to improve their performance over time through experience or training. Using machine learning, AI agents can adapt to new situations and optimise their behaviour for their designated tasks.[185][186][187]\n", - "\n", - "Sexuality\n", - "\n", - "Applications of AI in this domain include AI-enabled menstruation and fertility trackers that analyze user data to offer prediction,[188] AI-integrated sex toys (e.g., teledildonics),[189] AI-generated sexual education content,[190] and AI agents that simulate sexual and romantic partners (e.g., Replika).[191] AI is also used for the production of non-consensual deepfake pornography, raising significant ethical and legal concerns.[192]\n", - "\n", - "AI technologies have also been used to attempt to identify online gender-based violence and online sexual grooming of minors.[193][194]\n", - "\n", - "Other industry-specific tasks\n", - "\n", - "There are also thousands of successful AI applications used to solve specific problems for specific industries or institutions. In a 2017 survey, one in five companies reported having incorporated \"AI\" in some offerings or processes.[195] A few examples are energy storage, medical diagnosis, military logistics, applications that predict the result of judicial decisions, foreign policy, or supply chain management.\n", - "\n", - " AI applications for evacuation and disaster management are growing. AI has been used to investigate if and how people evacuated in large scale and small scale evacuations using historical data from GPS, videos or social media. Further, AI can provide real time information on the real time evacuation conditions.[196][197][198]\n", - "\n", - "In agriculture, AI has helped farmers identify areas that need irrigation, fertilization, pesticide treatments or increasing yield. Agronomists use AI to conduct research and development. AI has been used to predict the ripening time for crops such as tomatoes, monitor soil moisture, operate agricultural robots, conduct predictive analytics, classify livestock pig call emotions, automate greenhouses, detect diseases and pests, and save water.\n", - "\n", - " Artificial intelligence is used in astronomy to analyze increasing amounts of available data and applications, mainly for \"classification, regression, clustering, forecasting, generation, discovery, and the development of new scientific insights.\" For example, it is used for discovering exoplanets, forecasting solar activity, and distinguishing between signals and instrumental effects in gravitational wave astronomy. Additionally, it could be used for activities in space, such as space exploration, including the analysis of data from space missions, real-time science decisions of spacecraft, space debris avoidance, and more autonomous operation.\n", - "\n", - " During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\n", - "\n", - "Ethics\n", - "Main article: Ethics of artificial intelligence\n", - "\n", - "AI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \"solve intelligence, and then use that to solve everything else\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\n", - "\n", - "Risks and harm\n", - "Privacy and copyright\n", - "Further information: Information privacy and Artificial intelligence and copyright\n", - "\n", - "Machine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\n", - "\n", - " During the 2024 Indian elections, US$50 millions was spent on authorized AI-generated content, notably by creating deepfakes of allied (including sometimes deceased) politicians to better engage with voters, and by translating speeches to various local languages.[199]\n", - "\n", - "Ethics\n", - "Main article: Ethics of artificial intelligence\n", - "\n", - "AI has potential benefits and potential risks.[200] AI may be able to advance science and find solutions for serious problems: Demis Hassabis of DeepMind hopes to \"solve intelligence, and then use that to solve everything else\".[201] However, as the use of AI has become widespread, several unintended consequences and risks have been identified.[202] In-production systems can sometimes not factor ethics and bias into their AI training processes, especially when the AI algorithms are inherently unexplainable in deep learning.[203]\n", - "\n", - "Risks and harm\n", - "Privacy and copyright\n", - "Further information: Information privacy and Artificial intelligence and copyright\n", - "\n", - "Machine learning algorithms require large amounts of data. The techniques used to acquire this data have raised concerns about privacy, surveillance and copyright.\n", - "\n", - " AI-powered devices and services, such as virtual assistants and IoT products, continuously collect personal information, raising concerns about intrusive data gathering and unauthorized access by third parties. The loss of privacy is further exacerbated by AI's ability to process and combine vast amounts of data, potentially leading to a surveillance society where individual activities are constantly monitored and analyzed without adequate safeguards or transparency.\n", - "\n", - " Sensitive user data collected may include online activity records, geolocation data, video, or audio.[204] For example, in order to build speech recognition algorithms, Amazon has recorded millions of private conversations and allowed temporary workers to listen to and transcribe some of them.[205] Opinions about this widespread surveillance range from those who see it as a necessary evil to those for whom it is clearly unethical and a violation of the right to privacy.[206]\n", - "\n", - "AI developers argue that this is the only way to deliver valuable applications and have developed several techniques that attempt to preserve privacy while still obtaining the data, such as data aggregation, de-identification and differential privacy.[207] Since 2016, some privacy experts, such as Cynthia Dwork, have begun to view privacy in terms of fairness. Brian Christian wrote that experts have pivoted \"from the question of 'what they know' to the question of 'what they're doing with it'. \"[208]\n", - "\n", - "Generative AI is often trained on unlicensed copyrighted works, including in domains such as images or computer code; the output is then used under the rationale of \"fair use\". Experts disagree about how well and under what circumstances this rationale will hold up in courts of law; relevant factors may include \"the purpose and character of the use of the copyrighted work\" and \"the effect upon the potential market for the copyrighted work\".[209][210] Website owners who do not wish to have their content scraped can indicate it in a \"robots.txt\" file.[211] In 2023, leading authors (including John Grisham and Jonathan Franzen) sued AI companies for using their work to train generative AI.[212][213] Another discussed approach is to envision a separate sui generis system of protection for creations generated by AI to ensure fair attribution and compensation for human authors.[214]\n", - "\n", - "Dominance by tech giants\n", - "\n", - "The commercial AI scene is dominated by Big Tech companies such as Alphabet Inc., Amazon, Apple Inc., Meta Platforms, and Microsoft.[215][216][217] Some of these players already own the vast majority of existing cloud infrastructure and computing power from data centers, allowing them to entrench further in the marketplace.[218][219]\n", - "\n", - "Power needs and environmental impacts\n", - "See also: Environmental impacts of artificial intelligence\n", - "\n", - "In January 2024, the International Energy Agency (IEA) released Electricity 2024, Analysis and Forecast to 2026, forecasting electric power use.[220] This is the first IEA report to make projections for data centers and power consumption for artificial intelligence and cryptocurrency. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\n", - "\n", - "Prodigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. The report states that power demand for these uses might double by 2026, with additional electric power usage equal to electricity used by the whole Japanese nation.[221]\n", - "\n", - "Prodigious power consumption by AI is responsible for the growth of fossil fuels use, and might delay closings of obsolete, carbon-emitting coal energy facilities. There is a feverish rise in the construction of data centers throughout the US, making large technology firms (e.g., Microsoft, Meta, Google, Amazon) into voracious consumers of electric power. Projected electric consumption is so immense that there is concern that it will be fulfilled no matter the source. A ChatGPT search involves the use of 10 times the electrical energy as a Google search. The large firms are in haste to find power sources – from nuclear energy to geothermal to fusion. The tech firms argue that – in the long view – AI will be eventually kinder to the environment, but they need the energy now. AI makes the power grid more efficient and \"intelligent\", will assist in the growth of nuclear power, and track overall carbon emissions, according to technology firms.[222]\n", - "\n", - "A 2024 Goldman Sachs Research Paper, AI Data Centers and the Coming US Power Demand Surge, found \"US power demand (is) likely to experience growth not seen in a generation....\" and forecasts that, by 2030, US data centers will consume 8% of US power, as opposed to 3% in 2022, presaging growth for the electrical power generation industry by a variety of means.[223] Data centers' need for more and more electrical power is such that they might max out the electrical grid. The Big Tech companies counter that AI can be used to maximize the utilization of the grid by all.[224]\n", - "\n", - "In 2024, the Wall Street Journal reported that big AI companies have begun negotiations with the US nuclear power providers to provide electricity to the data centers. In March 2024 Amazon purchased a Pennsylvania nuclear-powered data center for $650 Million (US).[225] Nvidia CEO Jen-Hsun Huang said nuclear power is a good option for the data centers.[226]\n", - "\n", - " In September 2024, Microsoft announced an agreement with Constellation Energy to re-open the Three Mile Island nuclear power plant to provide Microsoft with 100% of all electric power produced by the plant for 20 years. Reopening the plant, which suffered a partial nuclear meltdown of its Unit 2 reactor in 1979, will require Constellation to get through strict regulatory processes which will include extensive safety scrutiny from the US Nuclear Regulatory Commission. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power – enough for 800,000 homes – of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. If approved (this will be the first ever US re-commissioning of a nuclear plant), over 835 megawatts of power – enough for 800,000 homes – of energy will be produced. The cost for re-opening and upgrading is estimated at $1.6 billion (US) and is dependent on tax breaks for nuclear power contained in the 2022 US Inflation Reduction Act.[227] The US government and the state of Michigan are investing almost $2 billion (US) to reopen the Palisades Nuclear reactor on Lake Michigan. Closed since 2022, the plant is planned to be reopened in October 2025. The Three Mile Island facility will be renamed the Crane Clean Energy Center after Chris Crane, a nuclear proponent and former CEO of Exelon who was responsible for Exelon spinoff of Constellation.[228]\n", - "\n", - "After the last approval in September 2023, Taiwan suspended the approval of data centers north of Taoyuan with a capacity of more than 5 MW in 2024, due to power supply shortages.[229] Taiwan aims to phase out nuclear power by 2025.[229] On the other hand, Singapore imposed a ban on the opening of data centers in 2019 due to electric power, but in 2022, lifted this ban.[229]\n", - "\n", - "Although most nuclear plants in Japan have been shut down after the 2011 Fukushima nuclear accident, according to an October 2024 Bloomberg article in Japanese, cloud gaming services company Ubitus, in which Nvidia has a stake, is looking for land in Japan near nuclear power plant for a new data center for generative AI.[230] Ubitus CEO Wesley Kuo said nuclear power plants are the most efficient, cheap and stable power for AI.[230]\n", - "\n", - "On 1 November 2024, the Federal Energy Regulatory Commission (FERC) rejected an application submitted by Talen Energy for approval to supply some electricity from the nuclear power station Susquehanna to Amazon's data center.[231] According to the Commission Chairman Willie L. Phillips, it is a burden on the electricity grid as well as a significant cost shifting concern to households and other business sectors.[231]\n", - "\n", - "Misinformation\n", - "See also: YouTube § Moderation and offensive content\n", - "\n", - "YouTube, Facebook and others use recommender systems to guide users to more content. These AI programs were given the goal of maximizing user engagement (that is, the only goal was to keep people watching). The AI learned that users tended to choose misinformation, conspiracy theories, and extreme partisan content, and, to keep them watching, the AI recommended more of it. Users also tended to watch more content on the same subject, so the AI led people into filter bubbles where they received multiple versions of the same misinformation.[232] This convinced many users that the misinformation was true, and ultimately undermined trust in institutions, the media and the government.[233] The AI program had correctly learned to maximize its goal, but the result was harmful to society. After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\n", - "\n", - " In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \"authoritarian leaders to manipulate their electorates\" on a large scale, among other risks.[235]\n", - "\n", - "Algorithmic bias and fairness\n", - "Main articles: Algorithmic bias and Fairness (machine learning)\n", - "\n", - "Machine learning applications will be biased[k] if they learn from biased data.[237] After the U.S. election in 2016, major technology companies took steps to mitigate the problem [citation needed].\n", - "\n", - " In 2022, generative AI began to create images, audio, video and text that are indistinguishable from real photographs, recordings, films, or human writing. It is possible for bad actors to use this technology to create massive amounts of misinformation or propaganda.[234] AI pioneer Geoffrey Hinton expressed concern about AI enabling \"authoritarian leaders to manipulate their electorates\" on a large scale, among other risks.[235]\n", - "\n", - "Algorithmic bias and fairness\n", - "Main articles: Algorithmic bias and Fairness (machine learning)\n", - "\n", - "Machine learning applications will be biased[k] if they learn from biased data.[237] The developers may not be aware that the bias exists.[238] Bias can be introduced by the way training data is selected and by the way a model is deployed.[239][237] If a biased algorithm is used to make decisions that can seriously harm people (as it can in medicine, finance, recruitment, housing or policing) then the algorithm may cause discrimination.[240] The field of fairness studies how to prevent harms from algorithmic biases.\n", - "\n", - " On June 28, 2015, Google Photos's new image labeling feature mistakenly identified Jacky Alcine and a friend as \"gorillas\" because they were black. The system was trained on a dataset that contained very few images of black people,[241] a problem called \"sample size disparity\".[242] Google \"fixed\" this problem by preventing the system from labelling anything as a \"gorilla\". Eight years later, in 2023, Google Photos still could not identify a gorilla, and neither could similar products from Apple, Facebook, Microsoft and Amazon.[243]\n", - "\n", - "COMPAS is a commercial program widely used by U.S. courts to assess the likelihood of a defendant becoming a recidivist. In 2016, Julia Angwin at ProPublica discovered that COMPAS exhibited racial bias, despite the fact that the program was not told the races of the defendants. Although the error rate for both whites and blacks was calibrated equal at exactly 61%, the errors for each race were different—the system consistently overestimated the chance that a black person would re-offend and would underestimate the chance that a white person would not re-offend.[244] In 2017, several researchers[l] showed that it was mathematically impossible for COMPAS to accommodate all possible measures of fairness when the base rates of re-offense were different for whites and blacks in the data.[246]\n", - "\n", - "A program can make biased decisions even if the data does not explicitly mention a problematic feature (such as \"race\" or \"gender\"). The feature will correlate with other features (like \"address\", \"shopping history\" or \"first name\"), and the program will make the same decisions based on these features as it would on \"race\" or \"gender\".[247] Moritz Hardt said \"the most robust fact in this research area is that fairness through blindness doesn't work. \"[248]\n", - "\n", - "Criticism of COMPAS highlighted that machine learning models are designed to make \"predictions\" that are only valid if we assume that the future will resemble the past. The feature will correlate with other features (like \"address\", \"shopping history\" or \"first name\"), and the program will make the same decisions based on these features as it would on \"race\" or \"gender\".[247] Moritz Hardt said \"the most robust fact in this research area is that fairness through blindness doesn't work. \"[248]\n", - "\n", - "Criticism of COMPAS highlighted that machine learning models are designed to make \"predictions\" that are only valid if we assume that the future will resemble the past. If they are trained on data that includes the results of racist decisions in the past, machine learning models must predict that racist decisions will be made in the future. If an application then uses these predictions as recommendations, some of these \"recommendations\" will likely be racist.[249] Thus, machine learning is not well suited to help make decisions in areas where there is hope that the future will be better than the past. It is descriptive rather than prescriptive.[m]\n", - "\n", - "Bias and unfairness may go undetected because the developers are overwhelmingly white and male: among AI engineers, about 4% are black and 20% are women.[242]\n", - "\n", - "There are various conflicting definitions and mathematical models of fairness. These notions depend on ethical assumptions, and are influenced by beliefs about society. One broad category is distributive fairness, which focuses on the outcomes, often identifying groups and seeking to compensate for statistical disparities. Representational fairness tries to ensure that AI systems do not reinforce negative stereotypes or render certain groups invisible. Procedural fairness focuses on the decision process rather than the outcome. The most relevant notions of fairness may depend on the context, notably the type of AI application and the stakeholders. The subjectivity in the notions of bias and fairness makes it difficult for companies to operationalize them. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\n", - "\n", - "At its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious – discuss][251]\n", - "\n", - "Lack of transparency\n", - "See also: Explainable AI, Algorithmic transparency, and Right to explanation\n", - "\n", - "Many AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\n", - "\n", - " It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. Having access to sensitive attributes such as race or gender is also considered by many AI ethicists to be necessary in order to compensate for biases, but it may conflict with anti-discrimination laws.[236]\n", - "\n", - "At its 2022 Conference on Fairness, Accountability, and Transparency (ACM FAccT 2022), the Association for Computing Machinery, in Seoul, South Korea, presented and published findings that recommend that until AI and robotics systems are demonstrated to be free of bias mistakes, they are unsafe, and the use of self-learning neural networks trained on vast, unregulated sources of flawed internet data should be curtailed.[dubious – discuss][251]\n", - "\n", - "Lack of transparency\n", - "See also: Explainable AI, Algorithmic transparency, and Right to explanation\n", - "\n", - "Many AI systems are so complex that their designers cannot explain how they reach their decisions.[252] Particularly with deep neural networks, in which there are a large amount of non-linear relationships between inputs and outputs. But some popular explainability techniques exist.[253]\n", - "\n", - " It is impossible to be certain that a program is operating correctly if no one knows how exactly it works. There have been many cases where a machine learning program passed rigorous tests, but nevertheless learned something different than what the programmers intended. For example, a system that could identify skin diseases better than medical professionals was found to actually have a strong tendency to classify images with a ruler as \"cancerous\", because pictures of malignancies typically include a ruler to show the scale.[254] Another machine learning system designed to help effectively allocate medical resources was found to classify patients with asthma as being at \"low risk\" of dying from pneumonia. Having asthma is actually a severe risk factor, but since the patients having asthma would usually get much more medical care, they were relatively unlikely to die according to the training data. The correlation between asthma and low risk of dying from pneumonia was real, but misleading.[255]\n", - "\n", - "People who have been harmed by an algorithm's decision have a right to an explanation.[256] Doctors, for example, are expected to clearly and completely explain to their colleagues the reasoning behind any decision they make. Early drafts of the European Union's General Data Protection Regulation in 2016 included an explicit statement that this right exists.[n] Industry experts noted that this is an unsolved problem with no solution in sight. Regulators argued that nevertheless the harm is real: if the problem has no solution, the tools should not be used.[257]\n", - "\n", - "DARPA established the XAI (\"Explainable Artificial Intelligence\") program in 2014 to try to solve these problems.[258]\n", - "\n", - "Several approaches aim to address the transparency problem. SHAP enables to visualise the contribution of each feature to the output.[259] LIME can locally approximate a model's outputs with a simpler, interpretable model.[260] Multitask learning provides a large number of outputs in addition to the target classification. These other outputs can help developers deduce what the network has learned.[261] Deconvolution, DeepDream and other generative methods can allow developers to see what different layers of a deep network for computer vision have learned, and produce output that can suggest what the network is learning.[262] For generative pre-trained transformers, Anthropic developed a technique based on dictionary learning that associates patterns of neuron activations with human-understandable concepts.[263]\n", - "\n", - "Bad actors and weaponized AI\n", - "Main articles: Lethal autonomous weapon, Artificial intelligence arms race, and AI safety\n", - "\n", - "Artificial intelligence provides a number of tools that are useful to bad actors, such as authoritarian governments, terrorists, criminals or rogue states.\n", - "\n", - " A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\n", - "\n", - "AI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. A lethal autonomous weapon is a machine that locates, selects and engages human targets without human supervision.[o] Widely available AI tools can be used by bad actors to develop inexpensive autonomous weapons and, if produced at scale, they are potentially weapons of mass destruction.[265] Even when used in conventional warfare, they currently cannot reliably choose targets and could potentially kill an innocent person.[265] In 2014, 30 nations (including China) supported a ban on autonomous weapons under the United Nations' Convention on Certain Conventional Weapons, however the United States and others disagreed.[266] By 2015, over fifty countries were reported to be researching battlefield robots.[267]\n", - "\n", - "AI tools make it easier for authoritarian governments to efficiently control their citizens in several ways. Face and voice recognition allow widespread surveillance. Machine learning, operating this data, can classify potential enemies of the state and prevent them from hiding. Recommendation systems can precisely target propaganda and misinformation for maximum effect. Deepfakes and generative AI aid in producing misinformation. Advanced AI can make authoritarian centralized decision making more competitive than liberal and decentralized systems such as markets. It lowers the cost and difficulty of digital warfare and advanced spyware.[268] All these technologies have been available since 2020 or earlier—AI facial recognition systems are already being used for mass surveillance in China.[269][270]\n", - "\n", - "There many other ways that AI is expected to help bad actors, some of which can not be foreseen. For example, machine-learning AI is able to design tens of thousands of toxic molecules in a matter of hours.[271]\n", - "\n", - "Technological unemployment\n", - "Main articles: Workplace impact of artificial intelligence and Technological unemployment\n", - "\n", - "Economists have frequently highlighted the risks of redundancies from AI, and speculated about unemployment if there is no adequate social policy for full employment.[272]\n", - "\n", - "In the past, technology has tended to increase rather than reduce total employment, but economists acknowledge that \"we're in uncharted territory\" with AI.[273] A survey of economists showed disagreement about whether the increasing use of robots and AI will cause a substantial increase in long-term unemployment, but they generally agree that it could be a net benefit if productivity gains are redistributed.[274] Risk estimates vary; for example, in the 2010s, Michael Osborne and Carl Benedikt Frey estimated 47% of U.S. jobs are at \"high risk\" of potential automation, while an OECD report classified only 9% of U.S. jobs as \"high risk\".[p][276] The methodology of speculating about future employment levels has been criticised as lacking evidential foundation, and for implying that technology, rather than social policy, creates unemployment, as opposed to redundancies.[272] In April 2023, it was reported that 70% of the jobs for Chinese video game illustrators had been eliminated by generative artificial intelligence.[277][278]\n", - "\n", - "Unlike previous waves of automation, many middle-class jobs may be eliminated by artificial intelligence; The Economist stated in 2015 that \"the worry that AI could do to white-collar jobs what steam power did to blue-collar ones during the Industrial Revolution\" is \"worth taking seriously\".[279] Jobs at extreme risk range from paralegals to fast food cooks, while job demand is likely to increase for care-related professions ranging from personal healthcare to the clergy.[280]\n", - "\n", - "From the early days of the development of artificial intelligence, there have been arguments, for example, those put forward by Joseph Weizenbaum, about whether tasks that can be done by computers actually should be done by them, given the difference between computers and humans, and between quantitative calculation and qualitative, value-based judgement.[281]\n", - "\n", - "Existential risk\n", - "Main article: Existential risk from artificial intelligence\n", - "\n", - "It has been argued AI will become so powerful that humanity may irreversibly lose control of it. This could, as physicist Stephen Hawking stated, \"spell the end of the human race\".[282] This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \"self-awareness\" (or \"sentience\" or \"consciousness\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\n", - "\n", - " First, AI does not require human-like sentience to be an existential risk. This scenario has been common in science fiction, when a computer or robot suddenly develops a human-like \"self-awareness\" (or \"sentience\" or \"consciousness\") and becomes a malevolent character.[q] These sci-fi scenarios are misleading in several ways.\n", - "\n", - " First, AI does not require human-like sentience to be an existential risk. Modern AI programs are given specific goals and use learning and intelligence to achieve them. Philosopher Nick Bostrom argued that if one gives almost any goal to a sufficiently powerful AI, it may choose to destroy humanity to achieve it (he used the example of a paperclip factory manager).[284] Stuart Russell gives the example of household robot that tries to find a way to kill its owner to prevent it from being unplugged, reasoning that \"you can't fetch the coffee if you're dead. \"[285] In order to be safe for humanity, a superintelligence would have to be genuinely aligned with humanity's morality and values so that it is \"fundamentally on our side\".[286]\n", - "\n", - "Second, Yuval Noah Harari argues that AI does not require a robot body or physical control to pose an existential risk. The essential parts of civilization are not physical. Things like ideologies, law, government, money and the economy are built on language; they exist because there are stories that billions of people believe. The current prevalence of misinformation suggests that an AI could use language to convince people to believe anything, even to take actions that are destructive.[287]\n", - "\n", - "The opinions amongst experts and industry insiders are mixed, with sizable fractions both concerned and unconcerned by risk from eventual superintelligent AI.[288] Personalities such as Stephen Hawking, Bill Gates, and Elon Musk,[289] as well as AI pioneers such as Yoshua Bengio, Stuart Russell, Demis Hassabis, and Sam Altman, have expressed concerns about existential risk from AI.\n", - "\n", - " In May 2023, Geoffrey Hinton announced his resignation from Google in order to be able to \"freely speak out about the risks of AI\" without \"considering how this impacts Google\".[290] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\n", - "\n", - "In 2023, many leading AI experts endorsed the joint statement that \"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\".[293]\n", - "\n", - "Some other researchers were more optimistic. AI pioneer Jürgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \"human lives longer and healthier and easier. \"[294] He notably mentioned risks of an AI takeover,[291] and stressed that in order to avoid the worst outcomes, establishing safety guidelines will require cooperation among those competing in use of AI.[292]\n", - "\n", - "In 2023, many leading AI experts endorsed the joint statement that \"Mitigating the risk of extinction from AI should be a global priority alongside other societal-scale risks such as pandemics and nuclear war\".[293]\n", - "\n", - "Some other researchers were more optimistic. AI pioneer Jürgen Schmidhuber did not sign the joint statement, emphasising that in 95% of all cases, AI research is about making \"human lives longer and healthier and easier. \"[294] While the tools that are now being used to improve lives can also be used by bad actors, \"they can also be used against the bad actors. \"[295][296] Andrew Ng also argued that \"it's a mistake to fall for the doomsday hype on AI—and that regulators who do will only benefit vested interests. \"[297] Yann LeCun \"scoffs at his peers' dystopian scenarios of supercharged misinformation and even, eventually, human extinction. \"[298] In the early 2010s, experts argued that the risks are too distant in the future to warrant research or that humans will be valuable from the perspective of a superintelligent machine.[299] However, after 2016, the study of current and future risks and possible solutions became a serious area of research.[300]\n", - "\n", - "Ethical machines and alignment\n", - "Main articles: Machine ethics, AI safety, Friendly artificial intelligence, Artificial moral agents, and Human Compatible\n", - "\n", - "Friendly AI are machines that have been designed from the beginning to minimize risks and to make choices that benefit humans. Eliezer Yudkowsky, who coined the term, argues that developing friendly AI should be a higher research priority: it may require a large investment and it must be completed before AI becomes an existential risk.[301]\n", - "\n", - "Machines with intelligence have the potential to use their intelligence to make ethical decisions. The field of machine ethics provides machines with ethical principles and procedures for resolving ethical dilemmas.[302] The field of machine ethics is also called computational morality,[302] and was founded at an AAAI symposium in 2005.[303]\n", - "\n", - "Other approaches include Wendell Wallach's \"artificial moral agents\"[304] and Stuart J. Russell's three principles for developing provably beneficial machines.[305]\n", - "\n", - "Open source\n", - "\n", - "Active organizations in the AI open-source community include Hugging Face,[306] Google,[307] EleutherAI and Meta.[308] Various AI models, such as Llama 2, Mistral or Stable Diffusion, have been made open-weight,[309][310] meaning that their architecture and trained parameters (the \"weights\") are publicly available. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. Open-weight models can be freely fine-tuned, which allows companies to specialize them with their own data and for their own use-case.[311] Open-weight models are useful for research and innovation but can also be misused. Since they can be fine-tuned, any built-in security measure, such as objecting to harmful requests, can be trained away until it becomes ineffective. Some researchers warn that future AI models may develop dangerous capabilities (such as the potential to drastically facilitate bioterrorism) and that once released on the Internet, they cannot be deleted everywhere if needed. They recommend pre-release audits and cost-benefit analyses.[312]\n", - "\n", - "Frameworks\n", - "\n", - "Artificial Intelligence projects can have their ethical permissibility tested while designing, developing, and implementing an AI system. An AI framework such as the Care and Act Framework containing the SUM values—developed by the Alan Turing Institute tests projects in four main areas:[313][314]\n", - "\n", - "Respect the dignity of individual people\n", - "Connect with other people sincerely, openly, and inclusively\n", - "Care for the wellbeing of everyone\n", - "Protect social values, justice, and the public interest\n", - "\n", - "Other developments in ethical frameworks include those decided upon during the Asilomar Conference, the Montreal Declaration for Responsible AI, and the IEEE's Ethics of Autonomous Systems initiative, among others;[315] however, these principles do not go without their criticisms, especially regards to the people chosen contributes to these frameworks.[316]\n", - "\n", - "Promotion of the wellbeing of the people and communities that these technologies affect requires consideration of the social and ethical implications at all stages of AI system design, development and implementation, and collaboration between job roles such as data scientists, product managers, data engineers, domain experts, and delivery managers.[317]\n", - "\n", - "The UK AI Safety Institute released in 2024 a testing toolset called 'Inspect' for AI safety evaluations available under a MIT open-source licence which is freely available on GitHub and can be improved with third-party packages. It can be used to evaluate AI models in a range of areas including core knowledge, ability to reason, and autonomous capabilities.[318]\n", - "\n", - "Regulation\n", - "Main articles: Regulation of artificial intelligence, Regulation of algorithms, and AI safety\n", - "The first global AI Safety Summit was held in 2023 with a declaration calling for international cooperation.\n", - "\n", - " The regulation of artificial intelligence is the development of public sector policies and laws for promoting and regulating AI; it is therefore related to the broader regulation of algorithms.[319] The regulatory and policy landscape for AI is an emerging issue in jurisdictions globally.[320] According to AI Index at Stanford, the annual number of AI-related laws passed in the 127 survey countries jumped from one passed in 2016 to 37 passed in 2022 alone.[321][322] Between 2016 and 2020, more than 30 countries adopted dedicated strategies for AI.[323] Most EU member states had released national AI strategies, as had Canada, China, India, Japan, Mauritius, the Russian Federation, Saudi Arabia, United Arab Emirates, U.S., and Vietnam. Others were in the process of elaborating their own AI strategy, including Bangladesh, Malaysia and Tunisia.[323] The Global Partnership on Artificial Intelligence was launched in June 2020, stating a need for AI to be developed in accordance with human rights and democratic values, to ensure public confidence and trust in the technology.[323] Henry Kissinger, Eric Schmidt, and Daniel Huttenlocher published a joint statement in November 2021 calling for a government commission to regulate AI.[324] In 2023, OpenAI leaders published recommendations for the governance of superintelligence, which they believe may happen in less than 10 years.[325] In 2023, the United Nations also launched an advisory body to provide recommendations on AI governance; the body comprises technology company executives, governments officials and academics.[326] In 2024, the Council of Europe created the first international legally binding treaty on AI, called the \"Framework Convention on Artificial Intelligence and Human Rights, Democracy and the Rule of Law\". It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\n", - "\n", - "In a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \"products and services using AI have more benefits than drawbacks\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \"very important\", and an additional 41% thought it \"somewhat important\", for the federal government to regulate AI, versus 13% responding \"not very important\" and 8% responding \"not at all important\".[329][330]\n", - "\n", - "In November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] It was adopted by the European Union, the United States, the United Kingdom, and other signatories.[327]\n", - "\n", - "In a 2022 Ipsos survey, attitudes towards AI varied greatly by country; 78% of Chinese citizens, but only 35% of Americans, agreed that \"products and services using AI have more benefits than drawbacks\".[321] A 2023 Reuters/Ipsos poll found that 61% of Americans agree, and 22% disagree, that AI poses risks to humanity.[328] In a 2023 Fox News poll, 35% of Americans thought it \"very important\", and an additional 41% thought it \"somewhat important\", for the federal government to regulate AI, versus 13% responding \"not very important\" and 8% responding \"not at all important\".[329][330]\n", - "\n", - "In November 2023, the first global AI Safety Summit was held in Bletchley Park in the UK to discuss the near and far term risks of AI and the possibility of mandatory and voluntary regulatory frameworks.[331] 28 countries including the United States, China, and the European Union issued a declaration at the start of the summit, calling for international co-operation to manage the challenges and risks of artificial intelligence.[332][333] In May 2024 at the AI Seoul Summit, 16 global AI tech companies agreed to safety commitments on the development of AI.[334][335]\n", - "\n", - "History\n", - "Main article: History of artificial intelligence\n", - "For a chronological guide, see Timeline of artificial intelligence.\n", - "\n", - " The study of mechanical or \"formal\" reasoning began with philosophers and mathematicians in antiquity. The study of logic led directly to Alan Turing's theory of computation, which suggested that a machine, by shuffling symbols as simple as \"0\" and \"1\", could simulate any conceivable form of mathematical reasoning.[336][337] This, along with concurrent discoveries in cybernetics, information theory and neurobiology, led researchers to consider the possibility of building an \"electronic brain\".[r] They developed several areas of research that would become part of AI,[339] such as McCullouch and Pitts design for \"artificial neurons\" in 1943,[115] and Turing's influential 1950 paper 'Computing Machinery and Intelligence', which introduced the Turing test and showed that \"machine intelligence\" was plausible.[340][337]\n", - "\n", - "The field of AI research was founded at a workshop at Dartmouth College in 1956.[s][6] The attendees became the leaders of AI research in the 1960s.[t] They and their students produced programs that the press described as \"astonishing\":[u] computers were learning checkers strategies, solving word problems in algebra, proving logical theorems and speaking English.[v][7] Artificial intelligence laboratories were set up at a number of British and U.S. universities in the latter 1950s and early 1960s.[337]\n", - "\n", - "Researchers in the 1960s and the 1970s were convinced that their methods would eventually succeed in creating a machine with general intelligence and considered this the goal of their field.[344] In 1965 Herbert Simon predicted, \"machines will be capable, within twenty years, of doing any work a man can do\".[345] In 1967 Marvin Minsky agreed, writing that \"within a generation ... the problem of creating 'artificial intelligence' will substantially be solved\".[346] They had, however, underestimated the difficulty of the problem.[w] In 1974, both the U.S. and British governments cut off exploratory research in response to the criticism of Sir James Lighthill[348] and ongoing pressure from the U.S. Congress to fund more productive projects.[349] Minsky's and Papert's book Perceptrons was understood as proving that artificial neural networks would never be useful for solving real-world tasks, thus discrediting the approach altogether.[350] The \"AI winter\", a period when obtaining funding for AI projects was difficult, followed.[9]\n", - "\n", - "In the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] The \"AI winter\", a period when obtaining funding for AI projects was difficult, followed.[9]\n", - "\n", - "In the early 1980s, AI research was revived by the commercial success of expert systems,[351] a form of AI program that simulated the knowledge and analytical skills of human experts. By 1985, the market for AI had reached over a billion dollars. At the same time, Japan's fifth generation computer project inspired the U.S. and British governments to restore funding for academic research.[8] However, beginning with the collapse of the Lisp Machine market in 1987, AI once again fell into disrepute, and a second, longer-lasting winter began.[10]\n", - "\n", - "Up to this point, most of AI's funding had gone to projects that used high-level symbols to represent mental objects like plans, goals, beliefs, and known facts. In the 1980s, some researchers began to doubt that this approach would be able to imitate all the processes of human cognition, especially perception, robotics, learning and pattern recognition,[352] and began to look into \"sub-symbolic\" approaches.[353] Rodney Brooks rejected \"representation\" in general and focussed directly on engineering machines that move and survive.[x] Judea Pearl, Lofti Zadeh, and others developed methods that handled incomplete and uncertain information by making reasonable guesses rather than precise logic.[86][358] But the most important development was the revival of \"connectionism\", including neural network research, by Geoffrey Hinton and others.[359] In 1990, Yann LeCun successfully showed that convolutional neural networks can recognize handwritten digits, the first of many successful applications of neural networks.[360]\n", - "\n", - "AI gradually restored its reputation in the late 1990s and early 21st century by exploiting formal mathematical methods and by finding specific solutions to specific problems. This \"narrow\" and \"formal\" focus allowed researchers to produce verifiable results and collaborate with other fields (such as statistics, economics and mathematics).[361] By 2000, solutions developed by AI researchers were being widely used, although in the 1990s they were rarely described as \"artificial intelligence\" (a tendency known as the AI effect).[362] However, several academic researchers became concerned that AI was no longer pursuing its original goal of creating versatile, fully intelligent machines. Beginning around 2002, they founded the subfield of artificial general intelligence (or \"AGI\"), which had several well-funded institutions by the 2010s.[4]\n", - "\n", - "Deep learning began to dominate industry benchmarks in 2012 and was adopted throughout the field.[11] For many specific tasks, other methods were abandoned.[y] Deep learning's success was based on both hardware improvements (faster computers,[364] graphics processing units, cloud computing[365]) and access to large amounts of data[366] (including curated datasets,[365] such as ImageNet). Deep learning's success led to an enormous increase in interest and funding in AI.[z] The amount of machine learning research (measured by total publications) increased by 50% in the years 2015–2019.[323]\n", - "\n", - "The number of Google searches for the term \"AI\" began to increase in about 2022.\n", - "\n", - " In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\n", - "\n", - "In the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 2:\n", - "Title: Website Document\n", - "Snippet content:\n", - "This chunk discusses the significant increase in machine learning research and interest in artificial intelligence (AI) from 2015 to 2022, highlighting the surge in publications, Google searches, funding, and job openings related to AI. It also emphasizes the growing focus on ethical issues and the alignment problem within the field, along with notable advancements in AI technologies such as AlphaGo and ChatGPT, marking a pivotal moment in AI's public awareness and investment landscape.\n", - "The amount of machine learning research (measured by total publications) increased by 50% in the years 2015–2019.[323]\n", - "\n", - "The number of Google searches for the term \"AI\" began to increase in about 2022.\n", - "\n", - " In 2016, issues of fairness and the misuse of technology were catapulted into center stage at machine learning conferences, publications vastly increased, funding became available, and many researchers re-focussed their careers on these issues. The alignment problem became a serious field of academic study.[300]\n", - "\n", - "In the late 2010s and early 2020s, AGI companies began to deliver programs that created enormous interest. In 2015, AlphaGo, developed by DeepMind, beat the world champion Go player. The program taught only the game's rules and developed a strategy by itself. GPT-3 is a large language model that was released in 2020 by OpenAI and is capable of generating high-quality human-like text.[367] ChatGPT, launched on November 30, 2022, became the fastest-growing consumer software application in history, gaining over 100 million users in two months.[368] It marked what is widely regarded as AI's breakout year, bringing it into the public consciousness.[369] These programs, and others, inspired an aggressive AI boom, where large companies began investing billions of dollars in AI research. According to AI Impacts, about $50 billion annually was invested in \"AI\" around 2022 in the U.S. alone and about 20% of the new U.S. Computer Science PhD graduates have specialized in \"AI\".[370] About 800,000 \"AI\"-related U.S. job openings existed in 2022.[371] According to PitchBook research, 22% of newly funded startups in 2024 claimed to be AI companies.[372]\n", - "\n", - "Philosophy\n", - "Main article: Philosophy of artificial intelligence\n", - "\n", - "Philosophical debates have historically sought to determine the nature of intelligence and how to make intelligent machines.[373] Another major focus has been whether machines can be conscious, and the associated ethical implications.[374] Many other topics in philosophy are relevant to AI, such as epistemology and free will.[375] Rapid advancements have intensified public discussions on the philosophy and ethics of AI.[374]\n", - "\n", - "Defining artificial intelligence\n", - "See also: Turing test, Intelligent agent, Dartmouth workshop, and Synthetic intelligence\n", - "\n", - "Alan Turing wrote in 1950 \"I propose to consider the question 'can machines think'?\"[376] He advised changing the question from whether a machine \"thinks\", to \"whether or not it is possible for machinery to show intelligent behaviour\".[376] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \"actually\" thinking or literally has a \"mind\". Turing notes that we can not determine these things about other people but \"it is usual to have a polite convention that everyone thinks. \"[377]\n", - "\n", - "The Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\n", - "\n", - "Russell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] He devised the Turing test, which measures the ability of a machine to simulate human conversation.[340] Since we can only observe the behavior of the machine, it does not matter if it is \"actually\" thinking or literally has a \"mind\". Turing notes that we can not determine these things about other people but \"it is usual to have a polite convention that everyone thinks. \"[377]\n", - "\n", - "The Turing test can provide some evidence of intelligence, but it penalizes non-human intelligent behavior.[378]\n", - "\n", - "Russell and Norvig agree with Turing that intelligence must be defined in terms of external behavior, not internal structure.[1] However, they are critical that the test requires the machine to imitate humans. \"Aeronautical engineering texts\", they wrote, \"do not define the goal of their field as making 'machines that fly so exactly like pigeons that they can fool other pigeons.'\"[379] AI founder John McCarthy agreed, writing that \"Artificial intelligence is not, by definition, simulation of human intelligence\".[380]\n", - "\n", - "McCarthy defines intelligence as \"the computational part of the ability to achieve goals in the world\".[381] Another AI founder, Marvin Minsky, similarly describes it as \"the ability to solve hard problems\".[382] The leading AI textbook defines it as the study of agents that perceive their environment and take actions that maximize their chances of achieving defined goals.[1] These definitions view intelligence in terms of well-defined problems with well-defined solutions, where both the difficulty of the problem and the performance of the program are direct measures of the \"intelligence\" of the machine—and no other philosophical discussion is required, or may not even be possible.\n", - "\n", - " Another definition has been adopted by Google,[383] a major practitioner in the field of AI. This definition stipulates the ability of systems to synthesize information as the manifestation of intelligence, similar to the way it is defined in biological intelligence.\n", - "\n", - " Some authors have suggested in practice, that the definition of AI is vague and difficult to define, with contention as to whether classical algorithms should be categorised as AI,[384] with many companies during the early 2020s AI boom using the term as a marketing buzzword, often even if they did \"not actually use AI in a material way\".[385]\n", - "\n", - " Evaluating approaches to AI\n", - "\n", - "No established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \"artificial intelligence\" to mean \"machine learning with neural networks\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\n", - "\n", - " Evaluating approaches to AI\n", - "\n", - "No established unifying theory or paradigm has guided AI research for most of its history.[aa] The unprecedented success of statistical machine learning in the 2010s eclipsed all other approaches (so much so that some sources, especially in the business world, use the term \"artificial intelligence\" to mean \"machine learning with neural networks\"). This approach is mostly sub-symbolic, soft and narrow. Critics argue that these questions may have to be revisited by future generations of AI researchers.\n", - "\n", - " Symbolic AI and its limits\n", - "\n", - "Symbolic AI (or \"GOFAI\")[387] simulated the high-level conscious reasoning that people use when they solve puzzles, express legal reasoning and do mathematics. They were highly successful at \"intelligent\" tasks such as algebra or IQ tests. In the 1960s, Newell and Simon proposed the physical symbol systems hypothesis: \"A physical symbol system has the necessary and sufficient means of general intelligent action. \"[388]\n", - "\n", - "However, the symbolic approach failed on many tasks that humans solve easily, such as learning, recognizing an object or commonsense reasoning. Moravec's paradox is the discovery that high-level \"intelligent\" tasks were easy for AI, but low level \"instinctive\" tasks were extremely difficult.[389] Philosopher Hubert Dreyfus had argued since the 1960s that human expertise depends on unconscious instinct rather than conscious symbol manipulation, and on having a \"feel\" for the situation, rather than explicit symbolic knowledge.[390] Although his arguments had been ridiculed and ignored when they were first presented, eventually, AI research came to agree with him.[ab][16]\n", - "\n", - " The issue is not resolved: sub-symbolic reasoning can make many of the same inscrutable mistakes that human intuition does, such as algorithmic bias. Critics such as Noam Chomsky argue continuing research into symbolic AI will still be necessary to attain general intelligence,[392][393] in part because sub-symbolic AI is a move away from explainable AI: it can be difficult or impossible to understand why a modern statistical AI program made a particular decision. The emerging field of neuro-symbolic artificial intelligence attempts to bridge the two approaches.\n", - "\n", - " Neat vs. scruffy\n", - "Main article: Neats and scruffies\n", - "\n", - "\"Neats\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \"Scruffies\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. Neat vs. scruffy\n", - "Main article: Neats and scruffies\n", - "\n", - "\"Neats\" hope that intelligent behavior is described using simple, elegant principles (such as logic, optimization, or neural networks). \"Scruffies\" expect that it necessarily requires solving a large number of unrelated problems. Neats defend their programs with theoretical rigor, scruffies rely mainly on incremental testing to see if they work. This issue was actively discussed in the 1970s and 1980s,[394] but eventually was seen as irrelevant. Modern AI has elements of both.\n", - "\n", - " Soft vs. hard computing\n", - "Main article: Soft computing\n", - "\n", - "Finding a provably correct or optimal solution is intractable for many important problems.[15] Soft computing is a set of techniques, including genetic algorithms, fuzzy logic and neural networks, that are tolerant of imprecision, uncertainty, partial truth and approximation. Soft computing was introduced in the late 1980s and most successful AI programs in the 21st century are examples of soft computing with neural networks.\n", - "\n", - " Narrow vs. general AI\n", - "Main articles: Weak artificial intelligence and Artificial general intelligence\n", - "\n", - "AI researchers are divided as to whether to pursue the goals of artificial general intelligence and superintelligence directly or to solve as many specific problems as possible (narrow AI) in hopes these solutions will lead indirectly to the field's long-term goals.[395][396] General intelligence is difficult to define and difficult to measure, and modern AI has had more verifiable successes by focusing on specific problems with specific solutions. The sub-field of artificial general intelligence studies this area exclusively.\n", - "\n", - " Machine consciousness, sentience, and mind\n", - "Main articles: Philosophy of artificial intelligence and Artificial consciousness\n", - "\n", - "The philosophy of mind does not know whether a machine can have a mind, consciousness and mental states, in the same sense that human beings do. This issue considers the internal experiences of the machine, rather than its external behavior. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \"[397] However, the question has become central to the philosophy of mind. Mainstream AI research considers this issue irrelevant because it does not affect the goals of the field: to build machines that can solve problems using intelligence. Russell and Norvig add that \"[t]he additional project of making a machine conscious in exactly the way humans are is not one that we are equipped to take on. \"[397] However, the question has become central to the philosophy of mind. It is also typically the central question at issue in artificial intelligence in fiction.\n", - "\n", - " Consciousness\n", - "Main articles: Hard problem of consciousness and Theory of mind\n", - "\n", - "David Chalmers identified two problems in understanding the mind, which he named the \"hard\" and \"easy\" problems of consciousness.[398] The easy problem is understanding how the brain processes signals, makes plans and controls behavior. The hard problem is explaining how this feels or why it should feel like anything at all, assuming we are right in thinking that it truly does feel like something (Dennett's consciousness illusionism says this is an illusion). While human information processing is easy to explain, human subjective experience is difficult to explain. For example, it is easy to imagine a color-blind person who has learned to identify which objects in their field of view are red, but it is not clear what would be required for the person to know what red looks like.[399]\n", - "\n", - "Computationalism and functionalism\n", - "Main articles: Computational theory of mind and Functionalism (philosophy of mind)\n", - "\n", - " Computationalism is the position in the philosophy of mind that the human mind is an information processing system and that thinking is a form of computing. Computationalism argues that the relationship between mind and body is similar or identical to the relationship between software and hardware and thus may be a solution to the mind–body problem. This philosophical position was inspired by the work of AI researchers and cognitive scientists in the 1960s and was originally proposed by philosophers Jerry Fodor and Hilary Putnam.[400]\n", - "\n", - "Philosopher John Searle characterized this position as \"strong AI\": \"The appropriately programmed computer with the right inputs and outputs would thereby have a mind in exactly the same sense human beings have minds. \"[ac] Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\n", - "\n", - "AI welfare and rights\n", - "\n", - "It is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\n", - "\n", - "In 2017, the European Union considered granting \"electronic personhood\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. Searle challenges this claim with his Chinese room argument, which attempts to show that even a computer capable of perfectly simulating human behavior would not have a mind.[404]\n", - "\n", - "AI welfare and rights\n", - "\n", - "It is difficult or impossible to reliably evaluate whether an advanced AI is sentient (has the ability to feel), and if so, to what degree.[405] But if there is a significant chance that a given machine can feel and suffer, then it may be entitled to certain rights or welfare protection measures, similarly to animals.[406][407] Sapience (a set of capacities related to high intelligence, such as discernment or self-awareness) may provide another moral basis for AI rights.[406] Robot rights are also sometimes proposed as a practical way to integrate autonomous agents into society.[408]\n", - "\n", - "In 2017, the European Union considered granting \"electronic personhood\" to some of the most capable AI systems. Similarly to the legal status of companies, it would have conferred rights but also responsibilities.[409] Critics argued in 2018 that granting rights to AI systems would downplay the importance of human rights, and that legislation should focus on user needs rather than speculative futuristic scenarios. They also noted that robots lacked the autonomy to take part to society on their own.[410][411]\n", - "\n", - "Progress in AI increased interest in the topic. Proponents of AI welfare and rights often argue that AI sentience, if it emerges, would be particularly easy to deny. They warn that this may be a moral blind spot analogous to slavery or factory farming, which could lead to large-scale suffering if sentient AI is created and carelessly exploited.[407][406]\n", - "\n", - "Future\n", - "Superintelligence and the singularity\n", - "\n", - "A superintelligence is a hypothetical agent that would possess intelligence far surpassing that of the brightest and most gifted human mind.[396] If research into artificial general intelligence produced sufficiently intelligent software, it might be able to reprogram and improve itself. The improved software would be even better at improving itself, leading to what I. J. Good called an \"intelligence explosion\" and Vernor Vinge called a \"singularity\".[412]\n", - "\n", - " However, technologies cannot improve exponentially indefinitely, and typically follow an S-shaped curve, slowing when they reach the physical limits of what the technology can do.[413]\n", - "\n", - "Transhumanism\n", - "Main article: Transhumanism\n", - "\n", - "Robot designer Hans Moravec, cyberneticist Kevin Warwick and inventor Ray Kurzweil have predicted that humans and machines may merge in the future into cyborgs that are more capable and powerful than either. This idea, called transhumanism, has roots in the writings of Aldous Huxley and Robert Ettinger.[414]\n", - "\n", - "Edward Fredkin argues that \"artificial intelligence is the next step in evolution\", an idea first proposed by Samuel Butler's \"Darwin among the Machines\" as far back as 1863, and expanded upon by George Dyson in his 1998 book Darwin Among the Machines: The Evolution of Global Intelligence.[415]\n", - "\n", - "Decomputing\n", - "\n", - "Arguments for decomputing have been raised by Dan McQuillan (Resisting AI: An Anti-fascist Approach to Artificial Intelligence, 2022), meaning an opposition to the sweeping application and expansion of artificial intelligence. Similar to degrowth the approach criticizes AI as an outgrowth of the systemic issues and capitalist world we live in. Arguing that a different future is possible, in which distance between people is reduced and not increased to AI intermediaries.[416]\n", - "\n", - "In fiction\n", - "Main article: Artificial intelligence in fiction\n", - "The word \"robot\" itself was coined by Karel Čapek in his 1921 play R.U.R., the title standing for \"Rossum's Universal Robots\".\n", - "\n", - " Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\n", - "\n", - "A common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\n", - "\n", - "Isaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \"Multivac\" super-intelligent computer. Thought-capable artificial beings have appeared as storytelling devices since antiquity,[417] and have been a persistent theme in science fiction.[418]\n", - "\n", - "A common trope in these works began with Mary Shelley's Frankenstein, where a human creation becomes a threat to its masters. This includes such works as Arthur C. Clarke's and Stanley Kubrick's 2001: A Space Odyssey (both 1968), with HAL 9000, the murderous computer in charge of the Discovery One spaceship, as well as The Terminator (1984) and The Matrix (1999). In contrast, the rare loyal robots such as Gort from The Day the Earth Stood Still (1951) and Bishop from Aliens (1986) are less prominent in popular culture.[419]\n", - "\n", - "Isaac Asimov introduced the Three Laws of Robotics in many stories, most notably with the \"Multivac\" super-intelligent computer. Asimov's laws are often brought up during lay discussions of machine ethics;[420] while almost all artificial intelligence researchers are familiar with Asimov's laws through popular culture, they generally consider the laws useless for many reasons, one of which is their ambiguity.[421]\n", - "\n", - "Several works use AI to force us to confront the fundamental question of what makes us human, showing us artificial beings that have the ability to feel, and thus to suffer. This appears in Karel Čapek's R.U.R., the films A.I. Artificial Intelligence and Ex Machina, as well as the novel Do Androids Dream of Electric Sheep?, by Philip K. Dick. Dick considers the idea that our understanding of human subjectivity is altered by technology created with artificial intelligence.[422]\n", - "\n", - "See also\n", - "Artificial intelligence and elections – Use and impact of AI on political elections\n", - "Artificial intelligence content detection – Software to detect AI-generated content\n", - "Behavior selection algorithm – Algorithm that selects actions for intelligent agents\n", - "Business process automation – Automation of business processes\n", - "Case-based reasoning – Process of solving new problems based on the solutions of similar past problems\n", - "Computational intelligence – Ability of a computer to learn a specific task from data or experimental observation\n", - "Digital immortality – Hypothetical concept of storing a personality in digital form\n", - "Emergent algorithm – Algorithm exhibiting emergent behavior\n", - "Female gendering of AI technologies – Gender biases in digital technology\n", - "Glossary of artificial intelligence – List of definitions of terms and concepts commonly used in the study of artificial intelligence\n", - "Intelligence amplification – Use of information technology to augment human intelligence\n", - "Intelligent agent – Software agent which acts autonomously\n", - "Mind uploading – Hypothetical process of digitally emulating a brain\n", - "Organoid intelligence – Use of brain cells and brain organoids for intelligent computing\n", - "Robotic process automation – Form of business process automation technology\n", - "Wetware computer – Computer composed of organic material\n", - "Explanatory notes\n", - "^ \n", - "Jump up to:\n", - "a b This list of intelligent traits is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\n", - "^ \n", - "Jump up to:\n", - "a b This list of tools is based on the topics covered by the major AI textbooks, including: Russell & Norvig (2021), Luger & Stubblefield (2004), Poole, Mackworth & Goebel (1998) and Nilsson (1998)\n", - "^ It is among the reasons that expert systems proved to be inefficient for capturing knowledge.[30][31]\n", - "^ \"Rational agent\" is general term used in economics, philosophy and theoretical artificial intelligence. It can refer to anything that directs its behavior to accomplish goals, such as a person, an animal, a corporation, a nation, or in the case of AI, a computer program.\n", - " ^ Alan Turing discussed the centrality of learning as early as 1950, in his classic paper \"Computing Machinery and Intelligence\".[42] In 1956, at the original Dartmouth AI summer conference, Ray Solomonoff wrote a report on unsupervised probabilistic machine learning: \"An Inductive Inference Machine\".[43]\n", - "^ See AI winter § Machine translation and the ALPAC report of 1966\n", - "^ Compared with symbolic logic, formal Bayesian inference is computationally expensive. For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300 million edges to learn which ads to serve.[93]\n", - "^ Expectation–maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\n", - "^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] For inference to be tractable, most observations must be conditionally independent of one another. AdSense uses a Bayesian network with over 300 million edges to learn which ads to serve.[93]\n", - "^ Expectation–maximization, one of the most popular algorithms in machine learning, allows clustering in the presence of unknown latent variables.[95]\n", - "^ Some form of deep neural networks (without a specific learning algorithm) were described by: Warren S. McCulloch and Walter Pitts (1943)[115] Alan Turing (1948);[116] Karl Steinbuch and Roger David Joseph (1961).[117] Deep or recurrent networks that learned (or used gradient descent) were developed by: Frank Rosenblatt(1957);[116] Oliver Selfridge (1959);[117] Alexey Ivakhnenko and Valentin Lapa (1965);[118] Kaoru Nakano (1971);[119] Shun-Ichi Amari (1972);[119] John Joseph Hopfield (1982).[119] Precursors to backpropagation were developed by: Henry J. Kelley (1960);[116] Arthur E. Bryson (1962);[116] Stuart Dreyfus (1962);[116] Arthur E. Bryson and Yu-Chi Ho (1969);[116] Backpropagation was independently developed by: Seppo Linnainmaa (1970);[120] Paul Werbos (1974).[116]\n", - "^ Geoffrey Hinton said, of his work on neural networks in the 1990s, \"our labeled datasets were thousands of times too small. [And] our computers were millions of times too slow. \"[121]\n", - "^ In statistics, a bias is a systematic error or deviation from the correct value. But in the context of fairness, it refers to a tendency in favor or against a certain group or individual characteristic, usually in a way that is considered unfair or harmful. A statistically unbiased AI system that produces disparate outcomes for different demographic groups may thus be viewed as biased in the ethical sense.[236]\n", - "^ Including Jon Kleinberg (Cornell University), Sendhil Mullainathan (University of Chicago), Cynthia Chouldechova (Carnegie Mellon) and Sam Corbett-Davis (Stanford)[245]\n", - "^ Moritz Hardt (a director at the Max Planck Institute for Intelligent Systems) argues that machine learning \"is fundamentally the wrong tool for a lot of domains, where you're trying to design interventions and mechanisms that change the world. \"[250]\n", - "^ When the law was passed in 2018, it still contained a form of this provision.\n", - " ^ This is the United Nations' definition, and includes things like land mines as well.[264]\n", - "^ See table 4; 9% is both the OECD average and the U.S. average.[275]\n", - "^ When the law was passed in 2018, it still contained a form of this provision.\n", - " ^ This is the United Nations' definition, and includes things like land mines as well.[264]\n", - "^ See table 4; 9% is both the OECD average and the U.S. average.[275]\n", - "^ Sometimes called a \"robopocalypse\"[283]\n", - "^ \"Electronic brain\" was the term used by the press around this time.[336][338]\n", - "^ Daniel Crevier wrote, \"the conference is generally recognized as the official birthdate of the new science. \"[341] Russell and Norvig called the conference \"the inception of artificial intelligence. \"[115]\n", - " ^ Russell and Norvig wrote \"for the next 20 years the field would be dominated by these people and their students. \"[342]\n", - "^ Russell and Norvig wrote, \"it was astonishing whenever a computer did anything kind of smartish\".[343]\n", - "^ The programs described are Arthur Samuel's checkers program for the IBM 701, Daniel Bobrow's STUDENT, Newell and Simon's Logic Theorist and Terry Winograd's SHRDLU.\n", - " ^ Russell and Norvig write: \"in almost all cases, these early systems failed on more difficult problems\"[347]\n", - "^ Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\n", - "^ Matteo Wong wrote in The Atlantic: \"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \"deep learning\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. Embodied approaches to AI[354] were championed by Hans Moravec[355] and Rodney Brooks[356] and went by many names: Nouvelle AI.[356] Developmental robotics.[357]\n", - "^ Matteo Wong wrote in The Atlantic: \"Whereas for decades, computer-science fields such as natural-language processing, computer vision, and robotics used extremely different methods, now they all use a programming method called \"deep learning\". As a result, their code and approaches have become more similar, and their models are easier to integrate into one another. \"[363]\n", - "^ Jack Clark wrote in Bloomberg: \"After a half-decade of quiet breakthroughs in artificial intelligence, 2015 has been a landmark year. Computers are smarter and learning faster than ever\", and noted that the number of software projects that use machine learning at Google increased from a \"sporadic usage\" in 2012 to more than 2,700 projects in 2015.[365]\n", - "^ Nils Nilsson wrote in 1983: \"Simply put, there is wide disagreement in the field about what AI is all about. \"[386]\n", - "^ Daniel Crevier wrote that \"time has proven the accuracy and perceptiveness of some of Dreyfus's comments. Had he formulated them less aggressively, constructive actions they suggested might have been taken much earlier. \"[391]\n", - "^ Searle presented this definition of \"Strong AI\" in 1999.[401] Searle's original formulation was \"The appropriately programmed computer really is a mind, in the sense that computers given the right programs can be literally said to understand and have other cognitive states. \"[402] Strong AI is defined similarly by Russell and Norvig: \"Stong AI – the assertion that machines that do so are actually thinking (as opposed to simulating thinking).\"[403]\n", - "References\n", - "^ \n", - "Jump up to:\n", - "a b c Russell & Norvig (2021), pp. 1–4.\n", - " ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\n", - "^ Kaplan, Andreas; Haenlein, Michael (2019). ^ AI set to exceed human brain power Archived 2008-02-19 at the Wayback Machine CNN.com (July 26, 2006)\n", - "^ Kaplan, Andreas; Haenlein, Michael (2019). \"Siri, Siri, in my hand: Who's the fairest in the land? On the interpretations, illustrations, and implications of artificial intelligence\". Business Horizons. 62: 15–25. doi:10.1016/j.bushor.2018.08.004. ISSN 0007-6813. S2CID 158433736.\n", - " ^ \n", - "Jump up to:\n", - "a b c Artificial general intelligence: Russell & Norvig (2021, pp. 32–33, 1020–1021)\n", - " Proposal for the modern version: Pennachin & Goertzel (2007)\n", - "Warnings of overspecialization in AI from leading researchers: Nilsson (1995), McCarthy (2007), Beal & Winston (2009)\n", - "^ Russell & Norvig (2021, §1.2).\n", - " ^ \n", - "Jump up to:\n", - "a b Dartmouth workshop: Russell & Norvig (2021, p. 18), McCorduck (2004, pp. 111–136), NRC (1999, pp. 200–201)\n", - " The proposal: McCarthy et al. (1955)\n", - "^ \n", - "Jump up to:\n", - "a b Successful programs of the 1960s: McCorduck (2004, pp. 243–252), Crevier (1993, pp. 52–107), Moravec (1988, p. 9), Russell & Norvig (2021, pp. 19–21)\n", - "^ \n", - "Jump up to:\n", - "a b Funding initiatives in the early 1980s: Fifth Generation Project (Japan), Alvey (UK), Microelectronics and Computer Technology Corporation (US), Strategic Computing Initiative (US): McCorduck (2004, pp. 426–441), Crevier (1993, pp. 161–162, 197–203, 211, 240), Russell & Norvig (2021, p. 23), NRC (1999, pp. 210–211), Newquist (1994, pp. 235–248)\n", - "^ \n", - "Jump up to:\n", - "a b First AI Winter, Lighthill report, Mansfield Amendment: Crevier (1993, pp. 115–117), Russell & Norvig (2021, pp. 21–22), NRC (1999, pp. 212–213), Howe (1994), Newquist (1994, pp. 189–201)\n", - "^ \n", - "Jump up to:\n", - "a b Second AI Winter: Russell & Norvig (2021, p. 24), McCorduck (2004, pp. 430–435), Crevier (1993, pp. 209–210), NRC (1999, pp. 214–216), Newquist (1994, pp. 301–318)\n", - "^ \n", - "Jump up to:\n", - "a b Deep learning revolution, AlexNet: Goldman (2022), Russell & Norvig (2021, p. 26), McKinsey (2018)\n", - "^ Toews (2023).\n", - "^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3–5), Russell & Norvig (2021, chpt. Goldman (2022), Russell & Norvig (2021, p. 26), McKinsey (2018)\n", - "^ Toews (2023).\n", - "^ Problem-solving, puzzle solving, game playing, and deduction: Russell & Norvig (2021, chpt. 3–5), Russell & Norvig (2021, chpt. 6) (constraint satisfaction), Poole, Mackworth & Goebel (1998, chpt. 2, 3, 7, 9), Luger & Stubblefield (2004, chpt. 3, 4, 6, 8), Nilsson (1998, chpt. 7–12)\n", - " ^ Uncertain reasoning: Russell & Norvig (2021, chpt. 12–18), Poole, Mackworth & Goebel (1998, pp. 345–395), Luger & Stubblefield (2004, pp. 333–381), Nilsson (1998, chpt. 7–12)\n", - " ^ \n", - "Jump up to:\n", - "a b c Intractability and efficiency and the combinatorial explosion: Russell & Norvig (2021, p. 21)\n", - "^ \n", - "Jump up to:\n", - "a b c Psychological evidence of the prevalence of sub-symbolic reasoning and knowledge: Kahneman (2011), Dreyfus & Dreyfus (1986), Wason & Shapiro (1966), Kahneman, Slovic & Tversky (1982)\n", - "^ Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.  23–46, 69–81, 169–233, 235–277, 281–298, 319–345), Luger & Stubblefield (2004, pp. 227–243), Nilsson (1998, chpt. 17.1–17.4, 18)\n", - "^ Smoliar & Zhang (1994).\n", - " Knowledge representation and knowledge engineering: Russell & Norvig (2021, chpt. 10), Poole, Mackworth & Goebel (1998, pp.  23–46, 69–81, 169–233, 235–277, 281–298, 319–345), Luger & Stubblefield (2004, pp. 227–243), Nilsson (1998, chpt. 17.1–17.4, 18)\n", - "^ Smoliar & Zhang (1994).\n", - " ^ Neumann & Möller (2008).\n", - " ^ Kuperman, Reichley & Bailey (2006).\n", - " ^ McGarry (2005).\n", - "^ Bertini, Del Bimbo & Torniai (2006).\n", - " ^ Russell & Norvig (2021), pp. 272.\n", - " ^ Representing categories and relations: Semantic networks, description logics, inheritance (including frames, and scripts): Russell & Norvig (2021, §10.2 & 10.5), Poole, Mackworth & Goebel (1998, pp. 174–177), Luger & Stubblefield (2004, pp. 248–258), Nilsson (1998, chpt. 18.3)\n", - "^ Representing events and time:Situation calculus, event calculus, fluent calculus (including solving the frame problem): Russell & Norvig (2021, §10.3), Poole, Mackworth & Goebel (1998, pp. 281–298), Nilsson (1998, chpt. 18.2)\n", - "^ Causal calculus: Poole, Mackworth & Goebel (1998, pp. 335–337)\n", - "^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, §10.4), Poole, Mackworth & Goebel (1998, pp. 275–277)\n", - " ^ \n", - "Jump up to:\n", - "a b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, §10.6), Poole, Mackworth & Goebel (1998, pp. 248–256, 323–335), Luger & Stubblefield (2004, pp. 335–363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \"default reasoning\". 18.2)\n", - "^ Causal calculus: Poole, Mackworth & Goebel (1998, pp. 335–337)\n", - "^ Representing knowledge about knowledge: Belief calculus, modal logics: Russell & Norvig (2021, §10.4), Poole, Mackworth & Goebel (1998, pp. 275–277)\n", - " ^ \n", - "Jump up to:\n", - "a b Default reasoning, Frame problem, default logic, non-monotonic logics, circumscription, closed world assumption, abduction: Russell & Norvig (2021, §10.6), Poole, Mackworth & Goebel (1998, pp. 248–256, 323–335), Luger & Stubblefield (2004, pp. 335–363), Nilsson (1998, ~18.3.3) (Poole et al. places abduction under \"default reasoning\". Luger et al. places this under \"uncertain reasoning\").\n", - " ^ \n", - "Jump up to:\n", - "a b Breadth of commonsense knowledge: Lenat & Guha (1989, Introduction), Crevier (1993, pp. 113–114), Moravec (1988, p. 13), Russell & Norvig (2021, pp. 241, 385, 982) (qualification problem)\n", - "^ Newquist (1994), p. 296.\n", - "^ Crevier (1993), pp. 204–208.\n", - " ^ Russell & Norvig (2021), p. 528.\n", - " ^ Automated planning: Russell & Norvig (2021, chpt. 11).\n", - " ^ Automated decision making, Decision theory: Russell & Norvig (2021, chpt. 16–18).\n", - " ^ Classical planning: Russell & Norvig (2021, Section 11.2).\n", - " 16–18).\n", - " ^ Classical planning: Russell & Norvig (2021, Section 11.2).\n", - " ^ Sensorless or \"conformant\" planning, contingent planning, replanning (a.k.a online planning): Russell & Norvig (2021, Section 11.5).\n", - " ^ Uncertain preferences: Russell & Norvig (2021, Section 16.7) Inverse reinforcement learning: Russell & Norvig (2021, Section 22.6)\n", - "^ Information value theory: Russell & Norvig (2021, Section 16.6).\n", - "^ Markov decision process: Russell & Norvig (2021, chpt. 17).\n", - " ^ Game theory and multi-agent decision theory: Russell & Norvig (2021, chpt. 18).\n", - " ^ Learning: Russell & Norvig (2021, chpt. 19–22), Poole, Mackworth & Goebel (1998, pp. 397–438), Luger & Stubblefield (2004, pp. 385–542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\n", - "^ Turing (1950).\n", - " Learning: Russell & Norvig (2021, chpt. 19–22), Poole, Mackworth & Goebel (1998, pp. 397–438), Luger & Stubblefield (2004, pp. 385–542), Nilsson (1998, chpt. 3.3, 10.3, 17.5, 20)\n", - "^ Turing (1950).\n", - " ^ Solomonoff (1956).\n", - " ^ Unsupervised learning: Russell & Norvig (2021, pp. 653) (definition), Russell & Norvig (2021, pp. 738–740) (cluster analysis), Russell & Norvig (2021, pp. 846–860) (word embedding)\n", - "^ \n", - "Jump up to:\n", - "a b Supervised learning: Russell & Norvig (2021, §19.2) (Definition), Russell & Norvig (2021, Chpt. 19–20) (Techniques)\n", - "^ Reinforcement learning: Russell & Norvig (2021, chpt. 22), Luger & Stubblefield (2004, pp. 442–449)\n", - "^ Transfer learning: Russell & Norvig (2021, pp. 281), The Economist (2016)\n", - "^ \"Artificial Intelligence (AI): What Is AI and How Does It Work? | Built In\". builtin.com. Retrieved 30 October 2023.\n", - " ^ builtin.com. Retrieved 30 October 2023.\n", - " ^ Computational learning theory: Russell & Norvig (2021, pp. 672–674), Jordan & Mitchell (2015)\n", - "^ Natural language processing (NLP): Russell & Norvig (2021, chpt. 23–24), Poole, Mackworth & Goebel (1998, pp. 91–104), Luger & Stubblefield (2004, pp. 591–632)\n", - "^ Subproblems of NLP: Russell & Norvig (2021, pp. 849–850)\n", - "^ Russell & Norvig (2021), pp. 856–858.\n", - "^ Dickson (2022).\n", - " ^ Modern statistical and deep learning approaches to NLP: Russell & Norvig (2021, chpt. 24), Cambria & White (2014)\n", - "^ Vincent (2019).\n", - " ^ Russell & Norvig (2021), pp. 875–878.\n", - " ^ Bushwick (2023).\n", - " ^ Computer vision: Russell & Norvig (2021, chpt. 25), Nilsson (1998, chpt. 6)\n", - "^ Russell & Norvig (2021), pp.  849–850.\n", - " ^ Russell & Norvig (2021), pp. 895–899.\n", - " 6)\n", - "^ Russell & Norvig (2021), pp.  849–850.\n", - " ^ Russell & Norvig (2021), pp. 895–899.\n", - " ^ Russell & Norvig (2021), pp. 899–901.\n", - " ^ Challa et al. (2011).\n", - " ^ Russell & Norvig (2021), pp.  931–938.\n", - " ^ MIT AIL (2014).\n", - " ^ Affective computing: Thro (1993), Edelson (1991), Tao & Tan (2005), Scassellati (2002)\n", - "^ Waddell (2018).\n", - " ^ Poria et al. (2017).\n", - " ^ ^ Poria et al. (2017).\n", - " ^ Search algorithms: Russell & Norvig (2021, chpts. 3–5), Poole, Mackworth & Goebel (1998, pp. 113–163), Luger & Stubblefield (2004, pp.  79–164, 193–219), Nilsson (1998, chpts. 7–12)\n", - "^ State space search: Russell & Norvig (2021, chpt. 3)\n", - "^ Russell & Norvig (2021), sect. 11.2.\n", - "^ Uninformed searches (breadth first search, depth-first search and general state space search): Russell & Norvig (2021, sect. 3.4), Poole, Mackworth & Goebel (1998, pp. 113–132), Luger & Stubblefield (2004, pp. 79–121), Nilsson (1998, chpt. 8)\n", - "^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp. 132–147), Poole & Mackworth (2017, sect. 8)\n", - "^ Heuristic or informed searches (e.g., greedy best first and A*): Russell & Norvig (2021, sect. 3.5), Poole, Mackworth & Goebel (1998, pp. 132–147), Poole & Mackworth (2017, sect. 3.6), Luger & Stubblefield (2004, pp. 133–150)\n", - "^ Adversarial search: Russell & Norvig (2021, chpt. 5)\n", - "^ Local or \"optimization\" search: Russell & Norvig (2021, chpt. 4)\n", - "^ Singh Chauhan, Nagesh (18 December 2020). \"Optimization Algorithms in Neural Networks\". KDnuggets. Retrieved 13 January 2024.\n", - " ^ Evolutionary computation: Russell & Norvig (2021, sect. 4.1.2)\n", - "^ Merkle & Middendorf (2013).\n", - " ^ Logic: 4.1.2)\n", - "^ Merkle & Middendorf (2013).\n", - " ^ Logic: Russell & Norvig (2021, chpts. 6–9), Luger & Stubblefield (2004, pp. 35–77), Nilsson (1998, chpt. 13–16)\n", - "^ Propositional logic: Russell & Norvig (2021, chpt. 6), Luger & Stubblefield (2004, pp. 45–50), Nilsson (1998, chpt. 13)\n", - "^ First-order logic and features such as equality: Russell & Norvig (2021, chpt. 7), Poole, Mackworth & Goebel (1998, pp. 268–275), Luger & Stubblefield (2004, pp. 50–62), Nilsson (1998, chpt. 15)\n", - "^ Logical inference: Russell & Norvig (2021, chpt. 10)\n", - "^ logical deduction as search: Russell & Norvig (2021, sects. 9.3, 9.4), Poole, Mackworth & Goebel (1998, pp. ~46–52), Luger & Stubblefield (2004, pp. 62–73), Nilsson (1998, chpt. 4.2, 7.2)\n", - "^ Resolution and unification: Russell & Norvig (2021, sections 7.5.2, 9.2, 9.5)\n", - "^ Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \"Prolog-the language and its implementation compared with Lisp\". ACM SIGPLAN Notices. 12 (8): 109–115. doi:10.1145/872734.806939.\n", - " Warren, D.H.; Pereira, L.M.; Pereira, F. (1977). \"Prolog-the language and its implementation compared with Lisp\". ACM SIGPLAN Notices. 12 (8): 109–115. doi:10.1145/872734.806939.\n", - " ^ Fuzzy logic: Russell & Norvig (2021, pp. 214, 255, 459), Scientific American (1999)\n", - "^ \n", - "Jump up to:\n", - "a b Stochastic methods for uncertain reasoning: Russell & Norvig (2021, chpt. 12–18, 20), Poole, Mackworth & Goebel (1998, pp. 345–395), Luger & Stubblefield (2004, pp. 165–191, 333–381), Nilsson (1998, chpt. 19)\n", - "^ decision theory and decision analysis: Russell & Norvig (2021, chpt. 16–18), Poole, Mackworth & Goebel (1998, pp. 381–394)\n", - "^ Information value theory: Russell & Norvig (2021, sect. 16.6)\n", - "^ Markov decision processes and dynamic decision networks: Russell & Norvig (2021, chpt. 17)\n", - "^ \n", - "Jump up to:\n", - "a b c Stochastic temporal models: Russell & Norvig (2021, chpt. 14) Hidden Markov model: Russell & Norvig (2021, sect. 14.3) Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\n", - "^ Kalman filters: Russell & Norvig (2021, sect. 14.4) Dynamic Bayesian networks: Russell & Norvig (2021, sect. 14.5)\n", - "^ Game theory and mechanism design: Russell & Norvig (2021, chpt. 18)\n", - "^ Bayesian networks: Russell & Norvig (2021, sects. 12.5–12.6, 13.4–13.5, 14.3–14.5, 16.5, 20.2–20.3), Poole, Mackworth & Goebel (1998, pp. 361–381), Luger & Stubblefield (2004, pp. ~182–190, ≈363–379), Nilsson (1998, chpt. 19.3–19.4)\n", - "^ Domingos (2015), chpt. 6.\n", - "^ Bayesian inference algorithm: Russell & Norvig (2021, sect. 13.3–13.5), Poole, Mackworth & Goebel (1998, pp. 361–381), Luger & Stubblefield (2004, pp. ~363–379), Nilsson (1998, chpt. 19.4 & 7)\n", - "^ Domingos (2015), p. 210.\n", - " ^ Bayesian learning and the expectation–maximization algorithm: Russell & Norvig (2021, chpt. 20), Poole, Mackworth & Goebel (1998, pp. 424–433), Nilsson (1998, chpt. 20), Domingos (2015, p. 210)\n", - "^ Bayesian decision theory and Bayesian decision networks: Russell & Norvig (2021, sect. 16.5)\n", - "^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\n", - "^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 3:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk consists of various references and citations related to discussions on artificial intelligence, its regulation, historical perspectives, and significant contributions from notable figures and researchers in the field. It appears towards the end of a comprehensive document on artificial intelligence, specifically in the bibliography or references section, summarizing sources that inform the topics covered throughout the main text.\n", - "ISBN 978-0-5212-8414-1. PMID 17835457. S2CID 143452957.\n", - " Kasperowicz, Peter (1 May 2023). \"Regulate AI? GOP much more skeptical than Dems that government can do it right: poll\". Fox News. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Katz, Yarden (1 November 2012). \"Noam Chomsky on Where Artificial Intelligence Went Wrong\". The Atlantic. Archived from the original on 28 February 2019. Retrieved 26 October 2014.\n", - " \"Kismet\". Archived from the original on 28 February 2019. Retrieved 26 October 2014.\n", - " \"Kismet\". MIT Artificial Intelligence Laboratory, Humanoid Robotics Group. Archived from the original on 17 October 2014. Retrieved 25 October 2014.\n", - " Kissinger, Henry (1 November 2021). \"The Challenge of Being Human in the Age of AI\". The Wall Street Journal. Archived from the original on 4 November 2021. Retrieved 4 November 2021.\n", - " Kobielus, James (27 November 2019). \"GPUs Continue to Dominate the AI Accelerator Market for Now\". InformationWeek. Archived from the original on 19 October 2021. \"GPUs Continue to Dominate the AI Accelerator Market for Now\". InformationWeek. Archived from the original on 19 October 2021. Retrieved 11 June 2020.\n", - " Kuperman, G. J.; Reichley, R. M.; Bailey, T. C. (1 July 2006). \"Using Commercial Knowledge Bases for Clinical Decision Support: Opportunities, Hurdles, and Recommendations\". Journal of the American Medical Informatics Association. 13 (4): 369–371. doi:10.1197/jamia. M2055. PMC 1513681. PMID 16622160.\n", - " Kurzweil, Ray (2005). The Singularity is Near. Penguin Books. ISBN 978-0-6700-3384-3.\n", - "Langley, Pat (2011). \"The changing science of machine learning\". Penguin Books. ISBN 978-0-6700-3384-3.\n", - "Langley, Pat (2011). \"The changing science of machine learning\". Machine Learning. 82 (3): 275–279. doi:10.1007/s10994-011-5242-y.\n", - "Larson, Jeff; Angwin, Julia (23 May 2016). \"How We Analyzed the COMPAS Recidivism Algorithm\". ProPublica. Archived from the original on 29 April 2019. Retrieved 19 June 2020.\n", - " Laskowski, Nicole (November 2023). \"What is Artificial Intelligence and How Does AI Work? TechTarget\". Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\n", - " Enterprise AI. Archived from the original on 5 October 2024. Retrieved 30 October 2023.\n", - " Law Library of Congress (U.S.). Global Legal Research Directorate, issuing body. (2019). Regulation of artificial intelligence in selected jurisdictions. LCCN 2019668143. OCLC 1110727808.\n", - " Lee, Timothy B. (22 August 2014). \"Will artificial intelligence destroy humanity? Here are 5 reasons not to worry\". Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Vox. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Lenat, Douglas; Guha, R. V. (1989). Building Large Knowledge-Based Systems. Addison-Wesley. ISBN 978-0-2015-1752-1.\n", - "Lighthill, James (1973). \"Artificial Intelligence: A General Survey\". Artificial Intelligence: a paper symposium. Science Research Council.\n", - " Lipartito, Kenneth (6 January 2011), The Narrative and the Algorithm: Genres of Credit Reporting from the Nineteenth Century to Today (PDF) (Unpublished manuscript), doi:10.2139/ssrn.1736283, S2CID 166742927, archived (PDF) from the original on 9 October 2022\n", - "Lohr, Steve (2017). \"Robots Will Take Jobs, but Not as Fast as Some Fear, New Report Says\". The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\n", - " The New York Times. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\n", - " Lungarella, M.; Metta, G.; Pfeifer, R.; Sandini, G. (2003). \"Developmental robotics: a survey\". Connection Science. 15 (4): 151–190. CiteSeerX 10.1.1.83.7615. doi:10.1080/09540090310001655110. S2CID 1452734.\n", - " \"Machine Ethics\". aaai.org. Archived from the original on 29 November 2014.\n", - " Madrigal, Alexis C. (27 February 2015). \"The case against killer robots, from a guy actually working on artificial intelligence\". Fusion.net. Madrigal, Alexis C. (27 February 2015). \"The case against killer robots, from a guy actually working on artificial intelligence\". Fusion.net. Archived from the original on 4 February 2016. Retrieved 31 January 2016.\n", - " Mahdawi, Arwa (26 June 2017). \"What jobs will still be around in 20 years? Read this to prepare your future\". The Guardian. Archived from the original on 14 January 2018. Retrieved 13 January 2018.\n", - " Maker, Meg Houston (2006), AI@50: AI Past, Present, Future, Dartmouth College, archived from the original on 8 October 2008, retrieved 16 October 2008\n", - "Marmouyet, Françoise (15 December 2023). \"Google's Gemini: is the new AI model really better than ChatGPT?\". The Conversation. Archived from the original on 4 March 2024. \"Google's Gemini: is the new AI model really better than ChatGPT?\". The Conversation. Archived from the original on 4 March 2024. Retrieved 25 December 2023.\n", - " Minsky, Marvin (1986), The Society of Mind, Simon and Schuster\n", - "McCarthy, John; Minsky, Marvin; Rochester, Nathan; Shannon, Claude (1955). \"A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence\". Archived from the original on 26 August 2007. Retrieved 30 August 2007.\n", - " McCarthy, John (2007), \"From Here to Human-Level AI\", Artificial Intelligence, p. 171\n", - "McCarthy, John (1999), What is AI?, archived from the original on 4 December 2022, retrieved 4 December 2022\n", - "McCauley, Lee (2007). \"AI armageddon and the three laws of robotics\". Ethics and Information Technology. 9 (2): 153–164. CiteSeerX 10.1.1.85.8904. doi:10.1007/s10676-007-9138-2. S2CID 37272949.\n", - " McGarry, Ken (1 December 2005). doi:10.1007/s10676-007-9138-2. S2CID 37272949.\n", - " McGarry, Ken (1 December 2005). \"A survey of interestingness measures for knowledge discovery\". The Knowledge Engineering Review. 20 (1): 39–61. doi:10.1017/S0269888905000408. S2CID 14987656.\n", - " McGaughey, E (2022), Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy, p. 51(3) Industrial Law Journal 511–559, doi:10.2139/ssrn.3044448, S2CID 219336439, SSRN 3044448, archived from the original on 31 January 2021, retrieved 27 May 2023\n", - "Merkle, Daniel; Middendorf, Martin (2013). \"Swarm Intelligence\". In Burke, Edmund K.; Kendall, Graham (eds.). Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN 978-1-4614-6940-7.\n", - "Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Search Methodologies: Introductory Tutorials in Optimization and Decision Support Techniques. Springer Science & Business Media. ISBN 978-1-4614-6940-7.\n", - "Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall\n", - "Moravec, Hans (1988). Mind Children. Harvard University Press. ISBN 978-0-6745-7616-2. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\n", - " Morgenstern, Michael (9 May 2015). \"Automation and anxiety\". The Economist. Archived from the original on 12 January 2018. Retrieved 13 January 2018.\n", - " Müller, Vincent C.; Bostrom, Nick (2014). Archived from the original on 12 January 2018. Retrieved 13 January 2018.\n", - " Müller, Vincent C.; Bostrom, Nick (2014). \"Future Progress in Artificial Intelligence: A Poll Among Experts\" (PDF). AI Matters. 1 (1): 9–11. doi:10.1145/2639475.2639478. S2CID 8510016. Archived (PDF) from the original on 15 January 2016.\n", - " Neumann, Bernd; Möller, Ralf (January 2008). \"On scene interpretation with description logics\". Image and Vision Computing. 26 (1): 82–101. doi:10.1016/j.imavis.2007.08.013. S2CID 10767011.\n", - " Nilsson, Nils (1995), \"Eyes on the Prize\", AI Magazine, vol. 16, pp. 9–17\n", - "Newell, Allen; Simon, H. A. (1976). \"Computer Science as Empirical Inquiry: Symbols and Search\". S2CID 10767011.\n", - " Nilsson, Nils (1995), \"Eyes on the Prize\", AI Magazine, vol. 16, pp. 9–17\n", - "Newell, Allen; Simon, H. A. (1976). \"Computer Science as Empirical Inquiry: Symbols and Search\". Communications of the ACM. 19 (3): 113–126. doi:10.1145/360018.360022.\n", - " Nicas, Jack (7 February 2018). \"How YouTube Drives People to the Internet's Darkest Corners\". The Wall Street Journal. ISSN 0099-9660. Archived from the original on 5 October 2024. Retrieved 16 June 2018.\n", - " Nilsson, Nils (1983). \"Artificial Intelligence Prepares for 2001\" (PDF). AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. AI Magazine. 1 (1). Archived (PDF) from the original on 17 August 2020. Retrieved 22 August 2020. Presidential Address to the Association for the Advancement of Artificial Intelligence.\n", - " NRC (United States National Research Council) (1999). \"Developments in Artificial Intelligence\". Funding a Revolution: Government Support for Computing Research. National Academy Press.\n", - " Omohundro, Steve (2008). The Nature of Self-Improving Artificial Intelligence. presented and distributed at the 2007 Singularity Summit, San Francisco, CA.\n", - " Oudeyer, P-Y. (2010). \"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2–16. \"On the impact of robotics in behavioral and cognitive sciences: from insect navigation to human cognitive development\" (PDF). IEEE Transactions on Autonomous Mental Development. 2 (1): 2–16. doi:10.1109/tamd.2009.2039057. S2CID 6362217. Archived (PDF) from the original on 3 October 2018. Retrieved 4 June 2013.\n", - " Pennachin, C.; Goertzel, B. (2007). \"Contemporary Approaches to Artificial General Intelligence\". Artificial General Intelligence. Cognitive Technologies. Berlin, Heidelberg: Springer. pp.  1–30. doi:10.1007/978-3-540-68677-4_1. pp.  1–30. doi:10.1007/978-3-540-68677-4_1. ISBN 978-3-5402-3733-4.\n", - "Pinker, Steven (2007) [1994], The Language Instinct, Perennial Modern Classics, Harper, ISBN 978-0-0613-3646-1\n", - "Poria, Soujanya; Cambria, Erik; Bajpai, Rajiv; Hussain, Amir (September 2017). \"A review of affective computing: From unimodal analysis to multimodal fusion\". Information Fusion. 37: 98–125. doi:10.1016/ j.inffus.2017.02.003. hdl:1893/25490. S2CID 205433041. Archived from the original on 23 March 2023. Retrieved 27 April 2021.\n", - " Rawlinson, Kevin (29 January 2015). \"Microsoft's Bill Gates insists AI is a threat\". BBC News. Rawlinson, Kevin (29 January 2015). \"Microsoft's Bill Gates insists AI is a threat\". BBC News. Archived from the original on 29 January 2015. Retrieved 30 January 2015.\n", - " Reisner, Alex (19 August 2023), \"Revealed: The Authors Whose Pirated Books are Powering Generative AI\", The Atlantic, archived from the original on 3 October 2024, retrieved 5 October 2024\n", - "Roberts, Jacob (2016). \"Thinking Machines: The Search for Artificial Intelligence\". Distillations. Vol. 2, no. 2. pp.  14–23. Archived from the original on 19 August 2018. Retrieved 20 March 2018.\n", - " Robitzski, Dan (5 September 2018). \"Five experts share what scares them the most about AI\". Archived from the original on 8 December 2019. Robitzski, Dan (5 September 2018). \"Five experts share what scares them the most about AI\". Archived from the original on 8 December 2019. Retrieved 8 December 2019.\n", - " Rose, Steve (11 July 2023). \"AI Utopia or dystopia?\". The Guardian Weekly. pp.  42–43.\n", - " Russell, Stuart (2019). Human Compatible: Artificial Intelligence and the Problem of Control. United States: Viking. ISBN 978-0-5255-5861-3. OCLC 1083694322.\n", - " Sainato, Michael (19 August 2015). \"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\". ISBN 978-0-5255-5861-3. OCLC 1083694322.\n", - " Sainato, Michael (19 August 2015). \"Stephen Hawking, Elon Musk, and Bill Gates Warn About Artificial Intelligence\". Observer. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Sample, Ian (5 November 2017). \"Computer says no: why making AIs fair, accountable and transparent is crucial\". The Guardian. Archived from the original on 10 October 2022. Retrieved 30 January 2018.\n", - " Rothman, Denis (7 October 2020). \"Exploring LIME Explanations and the Mathematics Behind It\". Codemotion. Archived from the original on 25 November 2023. \"Exploring LIME Explanations and the Mathematics Behind It\". Codemotion. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\n", - " Scassellati, Brian (2002). \"Theory of mind for a humanoid robot\". Autonomous Robots. 12 (1): 13–24. doi:10.1023/A:1013298507114. S2CID 1979315.\n", - " Schmidhuber, J. (2015). \"Deep Learning in Neural Networks: An Overview\". Neural Networks. 61: 85–117. arXiv:1404.7828. doi:10.1016/j.neunet.2014.09.003. PMID 25462637. S2CID 11715509.\n", - " Schmidhuber, Jürgen (2022). PMID 25462637. S2CID 11715509.\n", - " Schmidhuber, Jürgen (2022). \"Annotated History of Modern AI and Deep Learning\". Archived from the original on 7 August 2023. Retrieved 5 October 2024.\n", - " Searle, John (1980). \"Minds, Brains and Programs\" (PDF). Behavioral and Brain Sciences. 3 (3): 417–457. doi:10.1017/S0140525X00005756. S2CID 55303721. Archived (PDF) from the original on 17 March 2019. Retrieved 22 August 2020.\n", - " Searle, John (1999). Mind, language and society. New York: Basic Books. Searle, John (1999). Mind, language and society. New York: Basic Books. ISBN 978-0-4650-4521-1. OCLC 231867665. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Simon, H. A. (1965), The Shape of Automation for Men and Management, New York: Harper & Row\n", - "Simonite, Tom (31 March 2016). \"How Google Plans to Solve Artificial Intelligence\". MIT Technology Review. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\n", - " Smith, Craig S. (15 March 2023). \"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\". Forbes. Archived from the original on 18 September 2024. \"ChatGPT-4 Creator Ilya Sutskever on AI Hallucinations and AI Democracy\". Forbes. Archived from the original on 18 September 2024. Retrieved 25 December 2023.\n", - " Smoliar, Stephen W.; Zhang, HongJiang (1994). \"Content based video indexing and retrieval\". IEEE MultiMedia. 1 (2): 62–72. doi:10.1109/93.311653. S2CID 32710913.\n", - " Solomonoff, Ray (1956). An Inductive Inference Machine (PDF). Dartmouth Summer Research Conference on Artificial Intelligence. Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 – via std.com, pdf scanned copy of the original. Later published as\n", - "Solomonoff, Ray (1957).\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 4:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk contains various citations from academic papers, articles, and reports related to artificial intelligence, highlighting key contributions and findings in the field, including inductive inference by Ray Solomonoff, the AI Index Report by Stanford University, and works on affective computing. This context demonstrates ongoing research and theoretical advancements in AI, relevant to the document's overarching exploration of AI concepts, history, techniques, and applications.\n", - "Archived (PDF) from the original on 26 April 2011. Retrieved 22 March 2011 – via std.com, pdf scanned copy of the original. Later published as\n", - "Solomonoff, Ray (1957). \"An Inductive Inference Machine\". IRE Convention Record. Vol. Section on Information Theory, part 2. pp.  56–62.\n", - " Stanford University (2023). \"Artificial Intelligence Index Report 2023/Chapter 6: Policy and Governance\" (PDF). AI Index. Archived (PDF) from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Retrieved 19 June 2023.\n", - " Tao, Jianhua; Tan, Tieniu (2005). Affective Computing and Intelligent Interaction. Affective Computing: A Review. Lecture Notes in Computer Science. Vol. 3784. Springer. pp.  981–995. doi:10.1007/11573548. ISBN 978-3-5402-9621-8.\n", - "Taylor, Josh; Hern, Alex (2 May 2023). \"'Godfather of AI' Geoffrey Hinton quits Google and warns over dangers of misinformation\". The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " The Guardian. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " Thompson, Derek (23 January 2014). \"What Jobs Will the Robots Take?\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\n", - " Thro, Ellen (1993). Robotics: The Marriage of Computers and Machines. New York: Facts on File. ISBN 978-0-8160-2628-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Toews, Rob (3 September 2023). Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Toews, Rob (3 September 2023). \"Transformers Revolutionized AI. What Will Replace Them?\". Forbes. Archived from the original on 8 December 2023. Retrieved 8 December 2023.\n", - " Turing, Alan (October 1950). \"Computing Machinery and Intelligence\". Mind. 59 (236): 433–460. doi:10.1093/mind/LIX.236.433. ISSN 1460-2113. JSTOR 2251299. doi:10.1093/mind/LIX.236.433. ISSN 1460-2113. JSTOR 2251299. S2CID 14636783.\n", - "UNESCO Science Report: the Race Against Time for Smarter Development. Paris: UNESCO. 2021. ISBN 978-9-2310-0450-6. Archived from the original on 18 June 2022. Retrieved 18 September 2021.\n", - " Urbina, Fabio; Lentzos, Filippa; Invernizzi, Cédric; Ekins, Sean (7 March 2022). \"Dual use of artificial-intelligence-powered drug discovery\". Nature Machine Intelligence. 4 (3): 189–191. doi:10.1038/s42256-022-00465-9. PMC 9544280. PMID 36211133. S2CID 247302391.\n", - " Nature Machine Intelligence. 4 (3): 189–191. doi:10.1038/s42256-022-00465-9. PMC 9544280. PMID 36211133. S2CID 247302391.\n", - " Valance, Christ (30 May 2023). \"Artificial intelligence could lead to extinction, experts warn\". BBC News. Archived from the original on 17 June 2023. Retrieved 18 June 2023.\n", - " Valinsky, Jordan (11 April 2019), \"Amazon reportedly employs thousands of people to listen to your Alexa conversations\", CNN.com, archived from the original on 26 January 2024, retrieved 5 October 2024\n", - "Verma, Yugesh (25 December 2021). \"A Complete Guide to SHAP – SHAPley Additive exPlanations for Practitioners\". Analytics India Magazine. Archived from the original on 25 November 2023. Retrieved 25 November 2023.\n", - " Vincent, James (7 November 2019). \"OpenAI has published the text-generating AI it said was too dangerous to share\". Retrieved 25 November 2023.\n", - " Vincent, James (7 November 2019). \"OpenAI has published the text-generating AI it said was too dangerous to share\". The Verge. Archived from the original on 11 June 2020. Retrieved 11 June 2020.\n", - " Vincent, James (15 November 2022). \"The scary truth about AI copyright is nobody knows what will happen next\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Vincent, James (3 April 2023). \"AI is entering an era of corporate control\". The Verge. Archived from the original on 19 June 2023. \"AI is entering an era of corporate control\". The Verge. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Vinge, Vernor (1993). \"The Coming Technological Singularity: How to Survive in the Post-Human Era\". Vision 21: Interdisciplinary Science and Engineering in the Era of Cyberspace: 11. Bibcode:1993vise.nasa...11V. Archived from the original on 1 January 2007. Retrieved 14 November 2011.\n", - " Waddell, Kaveh (2018). \"Chatbots Have Entered the Uncanny Valley\". The Atlantic. Archived from the original on 24 April 2018. Retrieved 24 April 2018.\n", - " Wallach, Wendell (2010). Moral Machines. Retrieved 24 April 2018.\n", - " Wallach, Wendell (2010). Moral Machines. Oxford University Press.\n", - " Wason, P. C.; Shapiro, D. (1966). \"Reasoning\". In Foss, B. M. (ed.). New horizons in psychology. Harmondsworth: Penguin. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\n", - " Weng, J.; McClelland; Pentland, A.; Sporns, O.; Stockman, I.; Sur, M.; Thelen, E. (2001). \"Autonomous mental development by robots and animals\" (PDF). Science. 291 (5504): 599–600. doi:10.1126/science.291.5504.599. \"Autonomous mental development by robots and animals\" (PDF). Science. 291 (5504): 599–600. doi:10.1126/science.291.5504.599. PMID 11229402. S2CID 54131797. Archived (PDF) from the original on 4 September 2013. Retrieved 4 June 2013 – via msu.edu.\n", - " \"What is 'fuzzy logic'? Are there computers that are inherently fuzzy and do not apply the usual binary logic? \". Scientific American. 21 October 1999. Archived from the original on 6 May 2018. Retrieved 5 May 2018.\n", - " Williams, Rhiannon (28 June 2023), \"Humans may be more likely to believe disinformation generated by AI\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\n", - "Wirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). Archived from the original on 6 May 2018. Retrieved 5 May 2018.\n", - " Williams, Rhiannon (28 June 2023), \"Humans may be more likely to believe disinformation generated by AI\", MIT Technology Review, archived from the original on 16 September 2024, retrieved 5 October 2024\n", - "Wirtz, Bernd W.; Weyerer, Jan C.; Geyer, Carolin (24 July 2018). \"Artificial Intelligence and the Public Sector – Applications and Challenges\". International Journal of Public Administration. 42 (7): 596–615. doi:10.1080/01900692.2018.1498103. ISSN 0190-0692. S2CID 158829602. Archived from the original on 18 August 2020. Retrieved 22 August 2020.\n", - " Wong, Matteo (19 May 2023), \"ChatGPT Is Already Obsolete\", The Atlantic, archived from the original on 18 September 2024, retrieved 5 October 2024\n", - "Yudkowsky, E (2008), \"Artificial Intelligence as a Positive and Negative Factor in Global Risk\" (PDF), Global Catastrophic Risks, Oxford University Press, 2008, Bibcode:2008gcr..book..303Y, archived (PDF) from the original on 19 October 2013, retrieved 24 September 2021\n", - "Further reading\n", - "Autor, David H., \"Why Are There Still So Many Jobs? The History and Future of Workplace Automation\" (2015) 29(3) Journal of Economic Perspectives 3.\n", - "Berlinski, David (2000). The Advent of the Algorithm. Harcourt Books. The History and Future of Workplace Automation\" (2015) 29(3) Journal of Economic Perspectives 3.\n", - "Berlinski, David (2000). The Advent of the Algorithm. Harcourt Books. ISBN 978-0-1560-1391-8. OCLC 46890682. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Boyle, James, The Line: AI and the Future of Personhood, MIT Press, 2024.\n", - " Cukier, Kenneth, \"Ready for Robots? How to Think about the Future of AI\", Foreign Affairs, vol. 98, no. 4 (July/August 2019), pp. 192–198. George Dyson, historian of computing, writes (in what might be called \"Dyson's Law\") that \"Any system simple enough to be understandable will not be complicated enough to behave intelligently, while any system complicated enough to behave intelligently will be too complicated to understand.\" (p. 197.) Computer scientist Alex Pentland writes: \"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\" (p. 198.)\n", - "Evans, Woody (2015). Computer scientist Alex Pentland writes: \"Current AI machine-learning algorithms are, at their core, dead simple stupid. They work, but they work by brute force.\" (p. 198.)\n", - "Evans, Woody (2015). \"Posthuman Rights: Dimensions of Transhuman Worlds\". Teknokultura. 12 (2). doi:10.5209/rev_TK.2015.v12.n2.49072. S2CID 147612763.\n", - " Frank, Michael (22 September 2023). \"US Leadership in Artificial Intelligence Can Shape the 21st Century Global Order\". The Diplomat. Archived from the original on 16 September 2024. Retrieved 8 December 2023. Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs – and their affiliates in allied countries – appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\n", - " Instead, the United States has developed a new area of dominance that the rest of the world views with a mixture of awe, envy, and resentment: artificial intelligence... From AI models and research to cloud computing and venture capital, U.S. companies, universities, and research labs – and their affiliates in allied countries – appear to have an enormous lead in both developing cutting-edge AI and commercializing it. The value of U.S. venture capital investments in AI start-ups exceeds that of the rest of the world combined.\n", - " Gertner, Jon. (2023) \"Wikipedia's Moment of Truth: Can the online encyclopedia help teach A.I. chatbots to get their facts right — without destroying itself in the process?\" New York Times Magazine (July 18, 2023) online Archived 20 July 2023 at the Wayback Machine\n", - "Gleick, James, \"The Fate of Free Will\" (review of Kevin J. Mitchell, Free Agents: How Evolution Gave Us Free Will, Princeton University Press, 2023, 333 pp.), The New York Review of Books, vol. LXXI, no. 1 (18 January 2024), pp. 27–28, 30. \"Agency is what distinguishes us from machines. For biological creatures, reason and purpose come from acting in the world and experiencing the consequences. Artificial intelligences – disembodied, strangers to blood, sweat, and tears – have no occasion for that.\" (p. 30.)\n", - " Halpern, Sue, \"The Coming Tech Autocracy\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44–46. Halpern, Sue, \"The Coming Tech Autocracy\" (review of Verity Harding, AI Needs You: How We Can Change AI's Future and Save Our Own, Princeton University Press, 274 pp.; Gary Marcus, Taming Silicon Valley: How We Can Ensure That AI Works for Us, MIT Press, 235 pp.; Daniela Rus and Gregory Mone, The Mind's Mirror: Risk and Reward in the Age of AI, Norton, 280 pp.; Madhumita Murgia, Code Dependent: Living in the Shadow of AI, Henry Holt, 311 pp.), The New York Review of Books, vol. LXXI, no. 17 (7 November 2024), pp. 44–46. \"'We can't realistically expect that those who hope to get rich from AI are going to have the interests of the rest of us close at heart,' ... writes [Gary Marcus]. 'We can't count on governments driven by campaign finance contributions [from tech companies] to push back.'... Marcus details the demands that citizens should make of their governments and the tech companies. They include transparency on how AI systems work; compensation for individuals if their data [are] used to train LLMs (large language model)s and the right to consent to this use; and the ability to hold tech companies liable for the harms they cause by eliminating Section 230, imposing cash penalties, and passing stricter product liability laws... Marcus also suggests... that a new, AI-specific federal agency, akin to the FDA, the FCC, or the FTC, might provide the most robust oversight.... [T]he Fordham law professor Chinmayi Sharma... suggests... establish[ing] a professional licensing regime for engineers that would function in a similar way to medical licenses, malpractice suits, and the Hippocratic oath in medicine. 'What if, like doctors,' she asks..., 'AI engineers also vowed to do no harm?'\" (p. 46.)\n", - " Henderson, Mark (24 April 2007). \"Human rights for robots? We're getting carried away\". The Times Online. \"Human rights for robots? We're getting carried away\". The Times Online. London. Archived from the original on 31 May 2014. Retrieved 31 May 2014.\n", - " Hughes-Castleberry, Kenna, \"A Murder Mystery Puzzle: The literary puzzle Cain's Jawbone, which has stumped humans for decades, reveals the limitations of natural-language-processing algorithms\", Scientific American, vol. 329, no. 4 (November 2023), pp. 81–82. \"This murder mystery competition has revealed that although NLP (natural-language processing) models are capable of incredible feats, their abilities are very much limited by the amount of context they receive. This [...] could cause [difficulties] for researchers who hope to use them to do things such as analyze ancient languages. In some cases, there are few historical records on long-gone civilizations to serve as training data for such a purpose.\" (p. 82.)\n", - " Immerwahr, Daniel, \"Your Lying Eyes: People now use A.I. to generate fake videos indistinguishable from real ones. How much does it matter? \", The New Yorker, 20 November 2023, pp. 54–59. \"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. How much does it matter? \", The New Yorker, 20 November 2023, pp. 54–59. \"If by 'deepfakes' we mean realistic videos produced using artificial intelligence that actually deceive people, then they barely exist. The fakes aren't deep, and the deeps aren't fake. [...] A.I.-generated videos are not, in general, operating in our media as counterfeited evidence. Their role better resembles that of cartoons, especially smutty ones.\" (p. 59.)\n", - " Johnston, John (2008) The Allure of Machinic Life: Cybernetics, Artificial Life, and the New AI, MIT Press.\n", - " Jumper, John; Evans, Richard; Pritzel, Alexander; et al. (26 August 2021). \"Highly accurate protein structure prediction with AlphaFold\". Nature. 596 (7873): 583–589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC 8371605. 596 (7873): 583–589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC 8371605. PMID 34265844. S2CID 235959867.\n", - " LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (28 May 2015). \"Deep learning\". Nature. 521 (7553): 436–444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID 26017442. S2CID 3074096. Archived from the original on 5 June 2023. Retrieved 19 June 2023.\n", - " Leffer, Lauren, \"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80–81.\n", - " Retrieved 19 June 2023.\n", - " Leffer, Lauren, \"The Risks of Trusting AI: We must avoid humanizing machine-learning models used in scientific research\", Scientific American, vol. 330, no. 6 (June 2024), pp. 80–81.\n", - " Lepore, Jill, \"The Chit-Chatbot: Is talking with a machine a conversation? \", The New Yorker, 7 October 2024, pp. 12–16.\n", - "Maschafilm (2010). \"Content: Plug & Pray Film – Artificial Intelligence – Robots\". plugandpray-film.de. Archived from the original on 12 February 2016.\n", - " Marcus, Gary, \"Artificial Confidence: Even the newest, buzziest systems of artificial general intelligence are stymmied by the same old problems\", Scientific American, vol. 327, no. 4 (October 2022), pp.  42–45.\n", - " Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. Mitchell, Melanie (2019). Artificial intelligence: a guide for thinking humans. New York: Farrar, Straus and Giroux. ISBN 978-0-3742-5783-5.\n", - " Mnih, Volodymyr; Kavukcuoglu, Koray; Silver, David; et al. (26 February 2015). \"Human-level control through deep reinforcement learning\". Nature. 518 (7540): 529–533. Bibcode:2015Natur.518.. 529M. doi:10.1038/nature14236. PMID 25719670. S2CID 205242740. Archived from the original on 19 June 2023. Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\n", - " Press, Eyal, \"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? Retrieved 19 June 2023. Introduced DQN, which produced human-level performance on some Atari games.\n", - " Press, Eyal, \"In Front of Their Faces: Does facial-recognition technology lead police to ignore contradictory evidence? \", The New Yorker, 20 November 2023, pp. 20–26.\n", - " \"Robots could demand legal rights\". BBC News. 21 December 2006. Archived from the original on 15 October 2019. Retrieved 3 February 2011.\n", - " Roivainen, Eka, \"AI's IQ: ChatGPT aced a [standard intelligence] test but showed that intelligence cannot be measured by IQ alone\", Scientific American, vol. 329, no. 1 (July/August 2023), p. 7. \"Despite its high IQ, ChatGPT fails at tasks that require real humanlike reasoning or an understanding of the physical and social world.... ChatGPT seemed unable to reason logically and tried to rely on its vast database of... facts derived from online texts. \"\n", - "Scharre, Paul, \"Killer Apps: The Real Dangers of an AI Arms Race\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp. 135–144. \"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. \"\n", - "Scharre, Paul, \"Killer Apps: The Real Dangers of an AI Arms Race\", Foreign Affairs, vol. 98, no. 3 (May/June 2019), pp. 135–144. \"Today's AI technologies are powerful but unreliable. Rules-based systems cannot deal with circumstances their programmers did not anticipate. Learning systems are limited by the data on which they were trained. AI failures have already led to tragedy. Advanced autopilot features in cars, although they perform well in some circumstances, have driven cars without warning into trucks, concrete barriers, and parked cars. In the wrong situation, AI systems go from supersmart to superdumb in an instant. When an enemy is trying to manipulate and hack an AI system, the risks are even greater.\" (p. 140.)\n", - " Schulz, Hannes; Behnke, Sven (1 November 2012). \"Deep Learning\". KI – Künstliche Intelligenz. 26 (4): 357–363. doi:10.1007/s13218-012-0198-z. ISSN 1610-1987. S2CID 220523562.\n", - " Serenko, Alexander; Michael Dohan (2011). doi:10.1007/s13218-012-0198-z. ISSN 1610-1987. S2CID 220523562.\n", - " Serenko, Alexander; Michael Dohan (2011). \"Comparing the expert survey and citation impact journal ranking methods: Example from the field of Artificial Intelligence\" (PDF). Journal of Informetrics. 5 (4): 629–649. doi:10.1016/j.joi.2011.06.002. Archived (PDF) from the original on 4 October 2013. Retrieved 12 September 2013.\n", - " Silver, David; Huang, Aja; Maddison, Chris J.; et al. (28 January 2016). \"Mastering the game of Go with deep neural networks and tree search\". Nature. 529 (7587): 484–489. Bibcode:2016Natur.529..484S. doi:10.1038/nature16961. PMID 26819042. S2CID 515925. Archived from the original on 18 June 2023.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 5:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk pertains to the regulatory discussions and international agreements on artificial intelligence safety, specifically referencing the Bletchley Declaration from the AI Safety Summit held in November 2023 and subsequent commitments made at the AI Seoul Summit in May 2024, highlighting global efforts to ensure the responsible development of AI technologies.\n", - "^ Fox News (2023).\n", - "^ Milmo, Dan (3 November 2023). \"Hope or Horror? The great AI debate dividing its pioneers\". The Guardian Weekly. pp.  10–12.\n", - " ^ \"The Bletchley Declaration by Countries Attending the AI Safety Summit, 1–2 November 2023\". GOV.UK. 1 November 2023. Archived from the original on 1 November 2023. Retrieved 2 November 2023.\n", - " ^ \"Countries agree to safe and responsible development of frontier AI in landmark Bletchley Declaration\". GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\n", - " GOV.UK (Press release). Archived from the original on 1 November 2023. Retrieved 1 November 2023.\n", - " ^ \"Second global AI summit secures safety commitments from companies\". Reuters. 21 May 2024. Retrieved 23 May 2024.\n", - " ^ \"Frontier AI Safety Commitments, AI Seoul Summit 2024\". gov.uk. 21 May 2024. Archived from the original on 23 May 2024. Retrieved 23 May 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Russell & Norvig 2021, p. 9.\n", - "^ \n", - "Jump up to:\n", - "a b c Copeland, J., ed. (2004). Archived from the original on 23 May 2024. Retrieved 23 May 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Russell & Norvig 2021, p. 9.\n", - "^ \n", - "Jump up to:\n", - "a b c Copeland, J., ed. (2004). The Essential Turing: the ideas that gave birth to the computer age. Oxford, England: Clarendon Press. ISBN 0-1982-5079-7.\n", - "^ \"Google books ngram\". Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ AI's immediate precursors: McCorduck (2004, pp. 51–107), Crevier (1993, pp. 27–32), Russell & Norvig (2021, pp. 8–17), Moravec (1988, p. 3)\n", - "^ \n", - " Jump up to:\n", - "a b Turing's original publication of the Turing test in \"Computing machinery and intelligence\": Turing (1950) Historical influence and philosophical implications: Haugeland (1985, pp. 6–9), Crevier (1993, p. 24), McCorduck (2004, pp. 70–71), Russell & Norvig (2021, pp. 2, 984)\n", - "^ Crevier (1993), pp. 47–49.\n", - " ^ Russell & Norvig (2003), p. 17.\n", - " ^ Russell & Norvig (2003), p. 18.\n", - " ^ ^ Russell & Norvig (2003), p. 17.\n", - " ^ Russell & Norvig (2003), p. 18.\n", - " ^ Newquist (1994), pp. 86–86.\n", - "^ Simon (1965, p. 96) quoted in Crevier (1993, p. 109)\n", - "^ Minsky (1967, p. 2) quoted in Crevier (1993, p. 109)\n", - "^ Russell & Norvig (2021), p. 21.\n", - "^ Lighthill (1973).\n", - "^ NRC 1999, pp. 212–213.\n", - "^ Russell & Norvig (2021), p. 22.\n", - "^ Expert systems: Russell & Norvig (2021, pp. 23, 292), Luger & Stubblefield (2004, pp. 227–331), Nilsson (1998, chpt. 17.4), McCorduck (2004, pp. 327–335, 434–435), Crevier (1993, pp. 145–162, 197–203), Newquist (1994, pp. 155–183)\n", - "^ Russell & Norvig (2021), p. 24.\n", - "^ Nilsson (1998), p. 7.\n", - "^ McCorduck (2004), pp. 454–462.\n", - "^ Moravec (1988).\n", - " ^ \n", - "Jump up to:\n", - "a b Brooks (1990).\n", - " ^ Developmental robotics: Weng et al. (2001), Lungarella et al. (2003), Asada et al. (2009), Oudeyer (2010)\n", - "^ Russell & Norvig (2021), p. 25.\n", - "^ Crevier (1993, pp. 214–215), Russell & Norvig (2021, pp. 24, 26)\n", - "^ Russell & Norvig (2021), p. 26.\n", - "^ Formal and narrow methods adopted in the 1990s: Russell & Norvig (2021, pp. 24–26), McCorduck (2004, pp. 486–487)\n", - "^ AI widely used in the late 1990s: Kurzweil (2005, p. 265), NRC (1999, pp. 216–222), Newquist (1994, pp. 189–201)\n", - "^ Wong (2023).\n", - "^ Moore's Law and AI: Russell & Norvig (2021, pp.  AI widely used in the late 1990s: Kurzweil (2005, p. 265), NRC (1999, pp. 216–222), Newquist (1994, pp. 189–201)\n", - "^ Wong (2023).\n", - "^ Moore's Law and AI: Russell & Norvig (2021, pp.  14, 27)\n", - "^ \n", - "Jump up to:\n", - "a b c Clark (2015b).\n", - " ^ Big data: Russell & Norvig (2021, p. 26)\n", - "^ Sagar, Ram (3 June 2020). \"OpenAI Releases GPT-3, The Largest Model So Far\". Analytics India Magazine. Archived from the original on 4 August 2020. Retrieved 15 March 2023.\n", - "^ Milmo, Dan (2 February 2023). \"ChatGPT reaches 100 million users two months after launch\". The Guardian. ISSN 0261-3077. Archived from the original on 3 February 2023. The Guardian. ISSN 0261-3077. Archived from the original on 3 February 2023. Retrieved 31 December 2024.\n", - " ^ Gorichanaz, Tim (29 November 2023). \"ChatGPT turns 1: AI chatbot's success says as much about humans as technology\". The Conversation. Archived from the original on 31 December 2024. Retrieved 31 December 2024.\n", - " ^ DiFeliciantonio (2023).\n", - " ^ Goswami (2023).\n", - " ^ \"Nearly 1 in 4 new startups is an AI company\". PitchBook. 24 December 2024. Goswami (2023).\n", - " ^ \"Nearly 1 in 4 new startups is an AI company\". PitchBook. 24 December 2024. Retrieved 3 January 2025.\n", - " ^ Grayling, Anthony; Ball, Brian (1 August 2024). \"Philosophy is crucial in the age of AI\". The Conversation. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Jarow, Oshan (15 June 2024). \"Will AI ever become conscious? It depends on how you think about biology\". Vox. Archived from the original on 21 September 2024. It depends on how you think about biology\". Vox. Archived from the original on 21 September 2024. Retrieved 4 October 2024.\n", - " ^ McCarthy, John. \"The Philosophy of AI and the AI of Philosophy\". jmc.stanford.edu. Archived from the original on 23 October 2018. Retrieved 3 October 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Turing (1950), p. 1.\n", - "^ Turing (1950), Under \"The Argument from Consciousness\".\n", - "^ Kirk-Giannini, Cameron Domenico; Goldstein, Simon (16 October 2023). \"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\". The Conversation. \"AI is closer than ever to passing the Turing test for 'intelligence'. What happens when it does?\". The Conversation. Archived from the original on 25 September 2024. Retrieved 17 August 2024.\n", - " ^ Russell & Norvig (2021), p. 3.\n", - "^ Maker (2006).\n", - " ^ McCarthy (1999).\n", - " ^ Minsky (1986).\n", - " ^ \"What Is Artificial Intelligence (AI)? \". Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\n", - " Google Cloud Platform. Archived from the original on 31 July 2023. Retrieved 16 October 2023.\n", - " ^ \"One of the Biggest Problems in Regulating AI Is Agreeing on a Definition\". Carnegie Endowment for International Peace. Retrieved 31 July 2024.\n", - " ^ \"AI or BS? How to tell if a marketing tool really uses artificial intelligence\". The Drum. Retrieved 31 July 2024.\n", - " ^ Nilsson (1983), p. 10.\n", - "^ Haugeland (1985), pp. 112–117.\n", - "^ Physical symbol system hypothesis: Newell & Simon (1976, p. 116) Historical significance: McCorduck (2004, p. 153), Russell & Norvig (2021, p. 19)\n", - "^ Moravec's paradox: Moravec (1988, pp. 15–16), Minsky (1986, p. 29), Pinker (2007, pp. 190–191)\n", - "^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp. 120–132), McCorduck (2004, pp. 211–239), Russell & Norvig (2021, pp. 981–982), Fearn (2007, chpt. Physical symbol system hypothesis: Newell & Simon (1976, p. 116) Historical significance: McCorduck (2004, p. 153), Russell & Norvig (2021, p. 19)\n", - "^ Moravec's paradox: Moravec (1988, pp. 15–16), Minsky (1986, p. 29), Pinker (2007, pp. 190–191)\n", - "^ Dreyfus' critique of AI: Dreyfus (1972), Dreyfus & Dreyfus (1986) Historical significance and philosophical implications: Crevier (1993, pp. 120–132), McCorduck (2004, pp. 211–239), Russell & Norvig (2021, pp. 981–982), Fearn (2007, chpt. 3)\n", - "^ Crevier (1993), p. 125.\n", - "^ Langley (2011).\n", - " ^ Katz (2012).\n", - " ^ Neats vs. scruffies, the historic debate: McCorduck (2004, pp. 421–424, 486–489), Crevier (1993, p. 168), Nilsson (1983, pp. 10–11), Russell & Norvig (2021, p. 24) A classic example of the \"scruffy\" approach to intelligence: Minsky (1986) A modern example of neat AI and its aspirations in the 21st century: Domingos (2015)\n", - "^ Pennachin & Goertzel (2007).\n", - " ^ \n", - "Jump up to:\n", - "a b Roberts (2016).\n", - " ^ Russell & Norvig (2021), p. 986.\n", - " ^ Chalmers (1995).\n", - " ^ Dennett (1991).\n", - "^ Horst (2005).\n", - " ^ Chalmers (1995).\n", - " ^ Dennett (1991).\n", - "^ Horst (2005).\n", - " ^ Searle (1999).\n", - " ^ Searle (1980), p. 1.\n", - "^ Russell & Norvig (2021), p. 9817.\n", - "^ Searle's Chinese room argument: Searle (1980). Searle's original presentation of the thought experiment., Searle (1999). Discussion: Russell & Norvig (2021, pp. 985), McCorduck (2004, pp. 443–445), Crevier (1993, pp. 269–271)\n", - "^ Leith, Sam (7 July 2022). \"Nick Bostrom: How can we be certain a machine isn't conscious?\". The Spectator. Archived from the original on 26 September 2024. Retrieved 23 February 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b c Thomson, Jonny (31 October 2022). \"Why don't robots have rights?\". Big Think. ^ \n", - "Jump up to:\n", - "a b c Thomson, Jonny (31 October 2022). \"Why don't robots have rights?\". Big Think. Archived from the original on 13 September 2024. Retrieved 23 February 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Kateman, Brian (24 July 2023). \"AI Should Be Terrified of Humans\". Time. Archived from the original on 25 September 2024. Retrieved 23 February 2024.\n", - " ^ Wong, Jeff (10 July 2023). \"What leaders need to know about robot rights\". Fast Company.\n", - " ^ Hern, Alex (12 January 2017). Fast Company.\n", - " ^ Hern, Alex (12 January 2017). \"Give robots 'personhood' status, EU committee argues\". The Guardian. ISSN 0261-3077. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\n", - " ^ Dovey, Dana (14 April 2018). \"Experts Don't Think Robots Should Have Rights\". Newsweek. Archived from the original on 5 October 2024. Retrieved 23 February 2024.\n", - " ^ Cuddy, Alice (13 April 2018). Retrieved 23 February 2024.\n", - " ^ Cuddy, Alice (13 April 2018). \"Robot rights violate human rights, experts warn EU\". euronews. Archived from the original on 19 September 2024. Retrieved 23 February 2024.\n", - " ^ The Intelligence explosion and technological singularity: Russell & Norvig (2021, pp. 1004–1005), Omohundro (2008), Kurzweil (2005) I. J. Good's \"intelligence explosion\": Good (1965) Vernor Vinge's \"singularity\": Vinge (1993)\n", - "^ Russell & Norvig (2021), p. 1005.\n", - "^ Transhumanism: Moravec (1988), Kurzweil (2005), Russell & Norvig (2021, p. 1005)\n", - "^ AI as evolution: Edward Fredkin is quoted in McCorduck (2004, p. 401), Butler (1863), Dyson (1998)\n", - "^ McQuillan, Dan (14 January 2025). \"a gift to the far right\". ComputerWeekly.com. Retrieved 22 January 2025.\n", - " ^ ComputerWeekly.com. Retrieved 22 January 2025.\n", - " ^ AI in myth: McCorduck (2004, pp. 4–5)\n", - "^ McCorduck (2004), pp. 340–400.\n", - "^ Buttazzo (2001).\n", - "^ Anderson (2008).\n", - "^ McCauley (2007).\n", - "^ Galvan (1997).\n", - " AI textbooks\n", - "\n", - "The two most widely used textbooks in 2023 (see the Open Syllabus):\n", - "\n", - "Russell, Stuart J.; Norvig, Peter (2021). Artificial Intelligence: A Modern Approach (4th ed.). Hoboken: Pearson. ISBN 978-0-1346-1099-3. LCCN 20190474.\n", - " Rich, Elaine; Knight, Kevin; Nair, Shivashankar B (2010). Artificial Intelligence (3rd ed.). New Delhi: Tata McGraw Hill India. ISBN 978-0-0700-8770-5.\n", - "\n", - " The four most widely used AI textbooks in 2008:\n", - "\n", - "Luger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th ed.). ISBN 978-0-0700-8770-5.\n", - "\n", - " The four most widely used AI textbooks in 2008:\n", - "\n", - "Luger, George; Stubblefield, William (2004). Artificial Intelligence: Structures and Strategies for Complex Problem Solving (5th ed.). Benjamin/Cummings. ISBN 978-0-8053-4780-7. Archived from the original on 26 July 2020. Retrieved 17 December 2019.\n", - " Nilsson, Nils (1998). Artificial Intelligence: A New Synthesis. Morgan Kaufmann. ISBN 978-1-5586-0467-4. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\n", - " Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2.\n", - " Poole, David; Mackworth, Alan; Goebel, Randy (1998). Retrieved 18 November 2019.\n", - " Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2.\n", - " Poole, David; Mackworth, Alan; Goebel, Randy (1998). Computational Intelligence: A Logical Approach. New York: Oxford University Press. ISBN 978-0-1951-0270-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020. Later edition: Poole, David; Mackworth, Alan (2017). Artificial Intelligence: Foundations of Computational Agents (2nd ed.). Cambridge University Press. ISBN 978-1-1071-9539-4. Archived from the original on 7 December 2017. Retrieved 6 December 2017.\n", - "\n", - " Other textbooks:\n", - "\n", - "Ertel, Wolfgang (2017). Archived from the original on 7 December 2017. Retrieved 6 December 2017.\n", - "\n", - " Other textbooks:\n", - "\n", - "Ertel, Wolfgang (2017). Introduction to Artificial Intelligence (2nd ed.). Springer. ISBN 978-3-3195-8486-7.\n", - "Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI (1st ed.). Intellisemantic Editions. ISBN 978-8-8947-8760-3.\n", - "History of AI\n", - "Crevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence. New York, NY: BasicBooks. ISBN 0-465-02997-3.\n", - " McCorduck, Pamela (2004), Machines Who Think (2nd ed.), Natick, Massachusetts: A. K. Peters, ISBN 1-5688-1205-1\n", - "Newquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. McCorduck, Pamela (2004), Machines Who Think (2nd ed.), Natick, Massachusetts: A. K. Peters, ISBN 1-5688-1205-1\n", - "Newquist, H. P. (1994). The Brain Makers: Genius, Ego, And Greed In The Quest For Machines That Think. New York: Macmillan/SAMS. ISBN 978-0-6723-0412-5.\n", - "Harmon, Paul; Sawyer, Brian (1990). Creating Expert Systems for Business and Industry. New York: John Wiley & Sons. ISBN 0471614963.\n", - " Other sources\n", - "AI & ML in Fusion\n", - "AI & ML in Fusion, video lecture Archived 2 July 2023 at the Wayback Machine\n", - "Alter, Alexandra; Harris, Elizabeth A. (20 September 2023), \"Franzen, Grisham and Other Prominent Authors Sue OpenAI\", The New York Times, archived from the original on 14 September 2024, retrieved 5 October 2024\n", - "Altman, Sam; Brockman, Greg; Sutskever, Ilya (22 May 2023). \"Governance of Superintelligence\". openai.com. Archived from the original on 27 May 2023. Retrieved 27 May 2023.\n", - " Anderson, Susan Leigh (2008). \"Asimov's \"three laws of robotics\" and machine metaethics\". AI & Society. 22 (4): 477–493. doi:10.1007/s00146-007-0094-5. Anderson, Susan Leigh (2008). \"Asimov's \"three laws of robotics\" and machine metaethics\". AI & Society. 22 (4): 477–493. doi:10.1007/s00146-007-0094-5. S2CID 1809459.\n", - " Anderson, Michael; Anderson, Susan Leigh (2011). Machine Ethics. Cambridge University Press.\n", - " Arntz, Melanie; Gregory, Terry; Zierahn, Ulrich (2016), \"The risk of automation for jobs in OECD countries: A comparative analysis\", OECD Social, Employment, and Migration Working Papers 189\n", - "Asada, M.; Hosoda, K.; Kuniyoshi, Y.; Ishiguro, H.; Inui, T.; Yoshikawa, Y.; Ogino, M.; Yoshida, C. (2009). \"Cognitive developmental robotics: a survey\". IEEE Transactions on Autonomous Mental Development. 1 (1): 12–34. doi:10.1109/tamd.2009.2021702. S2CID 10168773.\n", - " \"Ask the AI experts: What's driving today's progress in AI?\". McKinsey & Company. Archived from the original on 13 April 2018. \"Ask the AI experts: What's driving today's progress in AI?\". McKinsey & Company. Archived from the original on 13 April 2018. Retrieved 13 April 2018.\n", - " Barfield, Woodrow; Pagallo, Ugo (2018). Research handbook on the law of artificial intelligence. Cheltenham, UK: Edward Elgar Publishing. ISBN 978-1-7864-3904-8. OCLC 1039480085.\n", - " Beal, J.; Winston, Patrick (2009), \"The New Frontier of Human-Level Artificial Intelligence\", IEEE Intelligent Systems, vol. 24, pp. 21–24, doi:10.1109/MIS.2009.75, hdl:1721.1/52357, S2CID 32437713\n", - "Berdahl, Carl Thomas; Baker, Lawrence; Mann, Sean; Osoba, Osonde; Girosi, Federico (7 February 2023). \"Strategies to Improve the Impact of Artificial Intelligence on Health Equity: Scoping Review\". JMIR AI. 2: e42936. doi:10.2196/42936. ISSN 2817-1705. PMC 11041459. doi:10.2196/42936. ISSN 2817-1705. PMC 11041459. PMID 38875587. S2CID 256681439.\n", - " Berryhill, Jamie; Heang, Kévin Kok; Clogher, Rob; McBride, Keegan (2019). Hello, World: Artificial Intelligence and its Use in the Public Sector (PDF). Paris: OECD Observatory of Public Sector Innovation. Archived (PDF) from the original on 20 December 2019. Retrieved 9 August 2020.\n", - " Bertini, M; Del Bimbo, A; Torniai, C (2006). \"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 6:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk comprises a list of citations and references related to various aspects of artificial intelligence (AI), including its development, philosophical discussions, and technical advancements. These references appear to focus on the historical context, ethical considerations, and the implications of AI technologies, contributing to the broader themes of AI research, regulation, and societal impact as discussed in the overall document.\n", - "\"Automatic annotation and semantic retrieval of video sequences using multimedia ontologies\". MM '06 Proceedings of the 14th ACM international conference on Multimedia. 14th ACM international conference on Multimedia. Santa Barbara: ACM. pp. 679–682.\n", - " Bostrom, Nick (2014). Superintelligence: Paths, Dangers, Strategies. Oxford University Press.\n", - " Bostrom, Nick (2015). \"What happens when our computers get smarter than we are?\". TED (conference). Archived from the original on 25 July 2020. Retrieved 30 January 2020.\n", - " Brooks, Rodney (10 November 2014). \"artificial intelligence is a tool, not a threat\". Retrieved 30 January 2020.\n", - " Brooks, Rodney (10 November 2014). \"artificial intelligence is a tool, not a threat\". Archived from the original on 12 November 2014.\n", - " Brooks, Rodney (1990). \"Elephants Don't Play Chess\" (PDF). Robotics and Autonomous Systems. 6 (1–2): 3–15. CiteSeerX 10.1.1.588.7539. doi:10.1016/S0921-8890(05)80025-9. Archived (PDF) from the original on 9 August 2007.\n", - " Buiten, Miriam C (2019). \"Towards Intelligent Regulation of Artificial Intelligence\". European Journal of Risk Regulation. 10 (1): 41–59. doi:10.1017/err.2019.8. ISSN 1867-299X.\n", - "Bushwick, Sophie (16 March 2023), \"What the New GPT-4 AI Can Do\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\n", - "Butler, Samuel (13 June 1863). \"Darwin among the Machines\". 10 (1): 41–59. doi:10.1017/err.2019.8. ISSN 1867-299X.\n", - "Bushwick, Sophie (16 March 2023), \"What the New GPT-4 AI Can Do\", Scientific American, archived from the original on 22 August 2023, retrieved 5 October 2024\n", - "Butler, Samuel (13 June 1863). \"Darwin among the Machines\". Letters to the Editor. The Press. Christchurch, New Zealand. Archived from the original on 19 September 2008. Retrieved 16 October 2014 – via Victoria University of Wellington.\n", - " Buttazzo, G. (July 2001). \"Artificial consciousness: Utopia or real possibility?\". Computer. 34 (7): 24–30. doi:10.1109/2.933500.\n", - " Cambria, Erik; White, Bebo (May 2014). \"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\". doi:10.1109/2.933500.\n", - " Cambria, Erik; White, Bebo (May 2014). \"Jumping NLP Curves: A Review of Natural Language Processing Research [Review Article]\". IEEE Computational Intelligence Magazine. 9 (2): 48–57. doi:10.1109/MCI.2014.2307227. S2CID 206451986.\n", - " Cellan-Jones, Rory (2 December 2014). \"Stephen Hawking warns artificial intelligence could end mankind\". BBC News. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Chalmers, David (1995). \"Facing up to the problem of consciousness\". Journal of Consciousness Studies. 2 (3): 200–219. CiteSeerX 10.1.1.103.8362. \"Facing up to the problem of consciousness\". Journal of Consciousness Studies. 2 (3): 200–219. CiteSeerX 10.1.1.103.8362. Archived from the original on 8 March 2005. Retrieved 11 October 2018.\n", - " Challa, Subhash; Moreland, Mark R.; Mušicki, Darko; Evans, Robin J. (2011). Fundamentals of Object Tracking. Cambridge University Press. doi:10.1017/CBO9780511975837. ISBN 978-0-5218-7628-5.\n", - " Christian, Brian (2020). The Alignment Problem: Machine learning and human values. W. W. Norton & Company. ISBN 978-0-3938-6833-3. OCLC 1233266753.\n", - " Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \"Multi-column deep neural networks for image classification\". ISBN 978-0-3938-6833-3. OCLC 1233266753.\n", - " Ciresan, D.; Meier, U.; Schmidhuber, J. (2012). \"Multi-column deep neural networks for image classification\". 2012 IEEE Conference on Computer Vision and Pattern Recognition. pp.  3642–3649. arXiv:1202.2745. doi:10.1109/cvpr.2012.6248110. ISBN 978-1-4673-1228-8. S2CID 2161592.\n", - " Clark, Jack (2015b). \"Why 2015 Was a Breakthrough Year in Artificial Intelligence\". Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\n", - " Bloomberg.com. Archived from the original on 23 November 2016. Retrieved 23 November 2016.\n", - " CNA (12 January 2019). \"Commentary: Bad news. Artificial intelligence is biased\". CNA. Archived from the original on 12 January 2019. Retrieved 19 June 2020.\n", - " Cybenko, G. (1988). Continuous valued neural networks with two hidden layers are sufficient (Report). Department of Computer Science, Tufts University.\n", - " Deng, L.; Yu, D. (2014). \"Deep Learning: Methods and Applications\" (PDF). Foundations and Trends in Signal Processing. 7 (3–4): 197–387. doi:10.1561/2000000039. Deng, L.; Yu, D. (2014). \"Deep Learning: Methods and Applications\" (PDF). Foundations and Trends in Signal Processing. 7 (3–4): 197–387. doi:10.1561/2000000039. Archived (PDF) from the original on 14 March 2016. Retrieved 18 October 2014.\n", - " Dennett, Daniel (1991). Consciousness Explained. The Penguin Press. ISBN 978-0-7139-9037-9.\n", - "DiFeliciantonio, Chase (3 April 2023). \"AI has already changed the world. This report shows how\". San Francisco Chronicle. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Dickson, Ben (2 May 2022). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Dickson, Ben (2 May 2022). \"Machine learning: What is the transformer architecture?\". TechTalks. Archived from the original on 22 November 2023. Retrieved 22 November 2023.\n", - " Dockrill, Peter (27 June 2022), \"Robots With Flawed AI Make Sexist And Racist Decisions, Experiment Shows\", Science Alert, archived from the original on 27 June 2022\n", - "Domingos, Pedro (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books. ISBN 978-0-4650-6570-7.\n", - " Dreyfus, Hubert (1972). What Computers Can't Do. New York: MIT Press. ISBN 978-0-0601-1082-6.\n", - " What Computers Can't Do. New York: MIT Press. ISBN 978-0-0601-1082-6.\n", - " Dreyfus, Hubert; Dreyfus, Stuart (1986). Mind over Machine: The Power of Human Intuition and Expertise in the Era of the Computer. Oxford: Blackwell. ISBN 978-0-0290-8060-3. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Dyson, George (1998). Darwin among the Machines. Allan Lane Science. ISBN 978-0-7382-0030-9. Archived from the original on 26 July 2020. Allan Lane Science. ISBN 978-0-7382-0030-9. Archived from the original on 26 July 2020. Retrieved 22 August 2020.\n", - " Edelson, Edward (1991). The Nervous System. New York: Chelsea House. ISBN 978-0-7910-0464-7. Archived from the original on 26 July 2020. Retrieved 18 November 2019.\n", - " Edwards, Benj (17 May 2023). \"Poll: AI poses risk to humanity, according to majority of Americans\". Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Ars Technica. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Fearn, Nicholas (2007). The Latest Answers to the Oldest Questions: A Philosophical Adventure with the World's Greatest Thinkers. New York: Grove Press. ISBN 978-0-8021-1839-4.\n", - "Ford, Martin; Colvin, Geoff (6 September 2015). \"Will robots create more jobs than they destroy?\". The Guardian. Archived from the original on 16 June 2018. Retrieved 13 January 2018.\n", - " Fox News (2023). \"Fox News Poll\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. \"Fox News Poll\" (PDF). Fox News. Archived (PDF) from the original on 12 May 2023. Retrieved 19 June 2023.\n", - " Frey, Carl Benedikt; Osborne, Michael A (1 January 2017). \"The future of employment: How susceptible are jobs to computerisation?\". Technological Forecasting and Social Change. 114: 254–280. CiteSeerX 10.1.1.395.416. doi:10.1016/j.techfore.2016.08.019. ISSN 0040-1625.\n", - " \"From not working to neural networking\". The Economist. 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\n", - " 2016. Archived from the original on 31 December 2016. Retrieved 26 April 2018.\n", - " Galvan, Jill (1 January 1997). \"Entering the Posthuman Collective in Philip K. Dick's \"Do Androids Dream of Electric Sheep?\"\". Science Fiction Studies. 24 (3): 413–429. JSTOR 4240644.\n", - " Geist, Edward Moore (9 August 2015). \"Is artificial intelligence really an existential threat to humanity?\". Bulletin of the Atomic Scientists. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Gibbs, Samuel (27 October 2014). \"Elon Musk: artificial intelligence is our biggest existential threat\". The Guardian. Gibbs, Samuel (27 October 2014). \"Elon Musk: artificial intelligence is our biggest existential threat\". The Guardian. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Goffrey, Andrew (2008). \"Algorithm\". In Fuller, Matthew (ed.). Software studies: a lexicon. Cambridge, Mass.: MIT Press. pp. 15–20. ISBN 978-1-4356-4787-9.\n", - " Goldman, Sharon (14 September 2022). \"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\". VentureBeat. Goldman, Sharon (14 September 2022). \"10 years later, deep learning 'revolution' rages on, say AI pioneers Hinton, LeCun and Li\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 8 December 2023.\n", - " Good, I. J. (1965), Speculations Concerning the First Ultraintelligent Machine, archived from the original on 10 July 2023, retrieved 5 October 2024\n", - "Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016), Deep Learning, MIT Press., archived from the original on 16 April 2016, retrieved 12 November 2017\n", - "Goodman, Bryce; Flaxman, Seth (2017). \"EU regulations on algorithmic decision-making and a 'right to explanation'\". AI Magazine. 38 (3): 50. arXiv:1606.08813. doi:10.1609/aimag.v38i3.2741. S2CID 7373959.\n", - " Government Accountability Office (13 September 2022). Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\n", - " Consumer Data: Increasing Use Poses Risks to Privacy. gao.gov (Report). Archived from the original on 13 September 2024. Retrieved 5 October 2024.\n", - " Grant, Nico; Hill, Kashmir (22 May 2023). \"Google's Photo App Still Can't Find Gorillas. And Neither Can Apple's\". The New York Times. Archived from the original on 14 September 2024. Retrieved 5 October 2024.\n", - " Goswami, Rohan (5 April 2023). \"Here's where the A.I. jobs are\". CNBC. Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Harari, Yuval Noah (October 2018). Archived from the original on 19 June 2023. Retrieved 19 June 2023.\n", - " Harari, Yuval Noah (October 2018). \"Why Technology Favors Tyranny\". The Atlantic. Archived from the original on 25 September 2021. Retrieved 23 September 2021.\n", - " Harari, Yuval Noah (2023). \"AI and the future of humanity\". YouTube. Archived from the original on 30 September 2024. Retrieved 5 October 2024.\n", - " Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. Haugeland, John (1985). Artificial Intelligence: The Very Idea. Cambridge, Mass.: MIT Press. ISBN 978-0-2620-8153-5.\n", - "Hinton, G.; Deng, L.; Yu, D.; Dahl, G.; Mohamed, A.; Jaitly, N.; Senior, A.; Vanhoucke, V.; Nguyen, P.; Sainath, T.; Kingsbury, B. (2012). \"Deep Neural Networks for Acoustic Modeling in Speech Recognition – The shared views of four research groups\". IEEE Signal Processing Magazine. 29 (6): 82–97. Bibcode:2012ISPM...29...82H. doi:10.1109/msp.2012.2205597. S2CID 206485943.\n", - " Holley, Peter (28 January 2015). \"Bill Gates on dangers of artificial intelligence: 'I don't understand why some people are not concerned'\". The Washington Post. ISSN 0190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " ISSN 0190-8286. Archived from the original on 30 October 2015. Retrieved 30 October 2015.\n", - " Hornik, Kurt; Stinchcombe, Maxwell; White, Halbert (1989). Multilayer Feedforward Networks are Universal Approximators (PDF). Neural Networks. Vol. 2. Pergamon Press. pp.  359–366. Archived (PDF) from the original on 21 April 2023. Retrieved 5 October 2024.\n", - " Horst, Steven (2005). \"The Computational Theory of Mind\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. \"The Computational Theory of Mind\". The Stanford Encyclopedia of Philosophy. Archived from the original on 6 March 2016. Retrieved 7 March 2016.\n", - " Howe, J. (November 1994). \"Artificial Intelligence at Edinburgh University: a Perspective\". Archived from the original on 15 May 2007. Retrieved 30 August 2007.\n", - " IGM Chicago (30 June 2017). \"Robots and Artificial Intelligence\". igmchicago.org. Archived from the original on 1 May 2019. Retrieved 3 July 2019.\n", - " Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \"Regulating artificial intelligence and robotics: ethics by design in a digital society\". Retrieved 3 July 2019.\n", - " Iphofen, Ron; Kritikos, Mihalis (3 January 2019). \"Regulating artificial intelligence and robotics: ethics by design in a digital society\". Contemporary Social Science. 16 (2): 170–184. doi:10.1080/21582041.2018.1563803. ISSN 2158-2041. S2CID 59298502.\n", - " Jordan, M. I.; Mitchell, T. M. (16 July 2015). \"Machine learning: Trends, perspectives, and prospects\". Science. 349 (6245): 255–260. Bibcode:2015Sci... 349..255J. doi:10.1126/science.aaa8415. PMID 26185243. S2CID 677218.\n", - " Kahneman, Daniel (2011). Thinking, Fast and Slow. S2CID 677218.\n", - " Kahneman, Daniel (2011). Thinking, Fast and Slow. Macmillan. ISBN 978-1-4299-6935-2. Archived from the original on 15 March 2023. Retrieved 8 April 2012.\n", - " Kahneman, Daniel; Slovic, D.; Tversky, Amos (1982). \"Judgment under uncertainty: Heuristics and biases\". Science. 185 (4157). New York: Cambridge University Press: 1124–1131. Bibcode:1974Sci... 185.1124T. doi:10.1126/science.185.4157.1124. ISBN 978-0-5212-8414-1. PMID 17835457. S2CID 143452957.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 7:\n", - "Title: Website Document\n", - "Snippet content:\n", - "This chunk is situated within the section discussing various statistical learning methods and classifiers in the field of artificial intelligence, specifically focusing on techniques such as decision trees, K-nearest neighbors, support vector machines, and neural networks. It also references foundational texts and significant developments in machine learning and deep learning.\n", - "16.5)\n", - "^ Statistical learning methods and classifiers: Russell & Norvig (2021, chpt. 20),\n", - "^ Ciaramella, Alberto; Ciaramella, Marco (2024). Introduction to Artificial Intelligence: from data analysis to generative AI. Intellisemantic Editions. ISBN 978-8-8947-8760-3.\n", - "^ Decision trees: Russell & Norvig (2021, sect. 19.3), Domingos (2015, p. 88)\n", - "^ Non-parameteric learning models such as K-nearest neighbor and support vector machines: Russell & Norvig (2021, sect. 19.7), Domingos (2015, p. 187) (k-nearest neighbor)\n", - "Domingos (2015, p. 88) (kernel methods)\n", - "^ Domingos (2015), p. 152.\n", - "^ Naive Bayes classifier: Russell & Norvig (2021, sect. 12.6), Domingos (2015, p. 152)\n", - "^ \n", - "Jump up to:\n", - "a b Neural networks: Russell & Norvig (2021, chpt. 21), Domingos (2015, Chapter 4)\n", - "^ Gradient calculation in computational graphs, backpropagation, automatic differentiation: Russell & Norvig (2021, sect. 21.2), Luger & Stubblefield (2004, pp. 467–474), Nilsson (1998, chpt. 3.3)\n", - "^ Universal approximation theorem: Russell & Norvig (2021, p. 752) The theorem: Cybenko (1988), Hornik, Stinchcombe & White (1989)\n", - "^ Feedforward neural networks: Russell & Norvig (2021, sect. 21.1)\n", - "^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\n", - "^ Perceptrons: Russell & Norvig (2021, pp. 21, 22, 683, 22)\n", - "^ \n", - "Jump up to:\n", - "a b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\n", - "^ Recurrent neural networks: Russell & Norvig (2021, sect. 21.6)\n", - "^ Perceptrons: Russell & Norvig (2021, pp. 21, 22, 683, 22)\n", - "^ \n", - "Jump up to:\n", - "a b Deep learning: Russell & Norvig (2021, chpt. 21), Goodfellow, Bengio & Courville (2016), Hinton et al. (2016), Schmidhuber (2015)\n", - "^ Convolutional neural networks: Russell & Norvig (2021, sect. 21.3)\n", - "^ Deng & Yu (2014), pp. 199–200.\n", - "^ Ciresan, Meier & Schmidhuber (2012).\n", - " ^ Russell & Norvig (2021), p. 751.\n", - " ^ \n", - "Jump up to:\n", - "a b c Russell & Norvig (2021), p. 17.\n", - " ^ \n", - "Jump up to:\n", - "a b c d e f g Russell & Norvig (2021), p. 785.\n", - " ^ \n", - "Jump up to:\n", - "a b Schmidhuber (2022), sect. 5.\n", - "^ Schmidhuber (2022), sect. 6.\n", - "^ \n", - "Jump up to:\n", - "a b c Schmidhuber (2022), sect. 7.\n", - "^ Schmidhuber (2022), sect. 6.\n", - "^ \n", - "Jump up to:\n", - "a b c Schmidhuber (2022), sect. 7.\n", - "^ Schmidhuber (2022), sect. 8.\n", - "^ Quoted in Christian (2020, p. 22)\n", - "^ Smith (2023).\n", - " ^ \"Explained: Generative AI\". 9 November 2023.\n", - " ^ \"AI Writing and Content Creation Tools\". MIT Sloan Teaching & Learning Technologies. Archived from the original on 25 December 2023. Retrieved 25 December 2023.\n", - " ^ Marmouyet (2023).\n", - " ^ Kobielus (2019).\n", - " ^ Thomason, James (21 May 2024). ^ Kobielus (2019).\n", - " ^ Thomason, James (21 May 2024). \"Mojo Rising: The resurgence of AI-first programming languages\". VentureBeat. Archived from the original on 27 June 2024. Retrieved 26 May 2024.\n", - " ^ Wodecki, Ben (5 May 2023). \"7 AI Programming Languages You Need to Know\". AI Business. Archived from the original on 25 July 2024. Retrieved 5 October 2024.\n", - " ^ Plumb, Taryn (18 September 2024). Retrieved 5 October 2024.\n", - " ^ Plumb, Taryn (18 September 2024). \"Why Jensen Huang and Marc Benioff see 'gigantic' opportunity for agentic AI\". VentureBeat. Archived from the original on 5 October 2024. Retrieved 4 October 2024.\n", - " ^ Mims, Christopher (19 September 2020). \"Huang's Law Is the New Moore's Law, and Explains Why Nvidia Wants Arm\". Wall Street Journal. ISSN 0099-9660. Archived from the original on 2 October 2023. Retrieved 19 January 2025.\n", - " ^ Archived from the original on 2 October 2023. Retrieved 19 January 2025.\n", - " ^ Davenport, T; Kalakota, R (June 2019). \"The potential for artificial intelligence in healthcare\". Future Healthc J. 6 (2): 94–98. doi:10.7861/futurehosp.6-2-94. PMC 6616181. PMID 31363513.\n", - "^ Lyakhova, U.A.; Lyakhov, P.A. (2024). \"Systematic review of approaches to detection and classification of skin cancer using artificial intelligence: Development and prospects\". Computers in Biology and Medicine. 178: 108742. doi:10.1016/j.compbiomed.2024.108742. PMID 38875908. Archived from the original on 3 December 2024. Retrieved 10 October 2024.\n", - " ^ Archived from the original on 3 December 2024. Retrieved 10 October 2024.\n", - " ^ Alqudaihi, Kawther S.; Aslam, Nida; Khan, Irfan Ullah; Almuhaideb, Abdullah M.; Alsunaidi, Shikah J.; Ibrahim, Nehad M. Abdel Rahman; Alhaidari, Fahd A.; Shaikh, Fatema S.; Alsenbel, Yasmine M.; Alalharith, Dima M.; Alharthi, Hajar M.; Alghamdi, Wejdan M.; Alshahrani, Mohammed S. (2021). \"Cough Sound Detection and Diagnosis Using Artificial Intelligence Techniques: Challenges and Opportunities\". IEEE Access. 9: 102327–102344. Bibcode:2021IEEEA... 9j2327A. doi:10.1109/ACCESS.2021.3097559. ISSN 2169-3536. PMC 8545201. PMID 34786317.\n", - " ^ \n", - "Jump up to:\n", - "a b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\". Frontiers in Sensors. ^ \n", - "Jump up to:\n", - "a b Bax, Monique; Thorpe, Jordan; Romanov, Valentin (December 2023). \"The future of personalized cardiovascular medicine demands 3D and 4D printing, stem cells, and artificial intelligence\". Frontiers in Sensors. 4. doi:10.3389/fsens.2023.1294721. ISSN 2673-5067.\n", - " ^ Jumper, J; Evans, R; Pritzel, A (2021). \"Highly accurate protein structure prediction with AlphaFold\". Nature. 596 (7873): 583–589. Bibcode:2021Natur.596.. 583J. doi:10.1038/s41586-021-03819-2. PMC 8371605. PMID 34265844.\n", - " ^ \"AI discovers new class of antibiotics to kill drug-resistant bacteria\". 20 December 2023. PMID 34265844.\n", - " ^ \"AI discovers new class of antibiotics to kill drug-resistant bacteria\". 20 December 2023. Archived from the original on 16 September 2024. Retrieved 5 October 2024.\n", - " ^ \"AI speeds up drug design for Parkinson's ten-fold\". Cambridge University. 17 April 2024. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Horne, Robert I.; Andrzejewska, Ewa A.; Alam, Parvez; Brotzakis, Z. Faidon; Srivastava, Ankit; Aubert, Alice; Nowinska, Magdalena; Gregory, Rebecca C.; Staats, Roxine; Possenti, Andrea; Chia, Sean; Sormanni, Pietro; Ghetti, Bernardino; Caughey, Byron; Knowles, Tuomas P. J.; Vendruscolo, Michele (17 April 2024). \"Discovery of potent inhibitors of α-synuclein aggregation using structure-based iterative learning\". Nature Chemical Biology. 20 (5). Nature: \"Discovery of potent inhibitors of α-synuclein aggregation using structure-based iterative learning\". Nature Chemical Biology. 20 (5). Nature: 634–645. doi:10.1038/s41589-024-01580-x. PMC 11062903. PMID 38632492.\n", - " ^ Grant, Eugene F.; Lardner, Rex (25 July 1952). \"The Talk of the Town – It\". The New Yorker. ISSN 0028-792X. Archived from the original on 16 February 2020. Retrieved 28 January 2024.\n", - " ^ Anderson, Mark Robert (11 May 2017). \"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\". The Conversation. Anderson, Mark Robert (11 May 2017). \"Twenty years on from Deep Blue vs Kasparov: how a chess match started the big data revolution\". The Conversation. Archived from the original on 17 September 2024. Retrieved 28 January 2024.\n", - " ^ Markoff, John (16 February 2011). \"Computer Wins on 'Jeopardy!': Trivial, It's Not\". The New York Times. ISSN 0362-4331. Archived from the original on 22 October 2014. Retrieved 28 January 2024.\n", - " ^ Byford, Sam (27 May 2017). \"AlphaGo retires from competitive Go after defeating world number one 3–0\". ^ Byford, Sam (27 May 2017). \"AlphaGo retires from competitive Go after defeating world number one 3–0\". The Verge. Archived from the original on 7 June 2017. Retrieved 28 January 2024.\n", - " ^ Brown, Noam; Sandholm, Tuomas (30 August 2019). \"Superhuman AI for multiplayer poker\". Science. 365 (6456): 885–890. Bibcode:2019Sci...365..885B. doi:10.1126/science.aay2400. ISSN 0036-8075. PMID 31296650.\n", - " ^ \"MuZero: Mastering Go, chess, shogi and Atari without rules\". ISSN 0036-8075. PMID 31296650.\n", - " ^ \"MuZero: Mastering Go, chess, shogi and Atari without rules\". Google DeepMind. 23 December 2020. Retrieved 28 January 2024.\n", - " ^ Sample, Ian (30 October 2019). \"AI becomes grandmaster in 'fiendishly complex' StarCraft II\". The Guardian. ISSN 0261-3077. Archived from the original on 29 December 2020. Retrieved 28 January 2024.\n", - " ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). Retrieved 28 January 2024.\n", - " ^ Wurman, P. R.; Barrett, S.; Kawamoto, K. (2022). \"Outracing champion Gran Turismo drivers with deep reinforcement learning\" (PDF). Nature. 602 (7896): 223–228. Bibcode:2022Natur.602..223W. doi:10.1038/s41586-021-04357-7. PMID 35140384.\n", - " ^ Wilkins, Alex (13 March 2024). \"Google AI learns to play open-world video games by watching them\". New Scientist. Archived from the original on 26 July 2024. Retrieved 21 July 2024.\n", - " ^ \"Improving mathematical reasoning with process supervision\". Archived from the original on 26 July 2024. Retrieved 21 July 2024.\n", - " ^ \"Improving mathematical reasoning with process supervision\". OpenAI. 31 May 2023. Retrieved 26 January 2025.\n", - " ^ Srivastava, Saurabh (29 February 2024). \"Functional Benchmarks for Robust Evaluation of Reasoning Performance, and the Reasoning Gap\". arXiv:2402.19450 [cs.AI].\n", - " ^ Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \"Let's Verify Step by Step\". arXiv:2305.20050v1 Lightman, Hunter; Kosaraju, Vineet; Burda, Yura; Edwards, Harri; Baker, Bowen; Lee, Teddy; Leike, Jan; Schulman, John; Sutskever, Ilya; Cobbe, Karl (2023). \"Let's Verify Step by Step\". arXiv:2305.20050v1 [cs.LG].\n", - " ^ Franzen, Carl (9 January 2025). \"Microsoft's new rStar-Math technique upgrades small models to outperform OpenAI's o1-preview at math problems\". VentureBeat. Retrieved 26 January 2025.\n", - " ^ Roberts, Siobhan (25 July 2024). \"AI achieves silver-medal standard solving International Mathematical Olympiad problems\". The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\n", - " The New York Times. Archived from the original on 26 September 2024. Retrieved 7 August 2024.\n", - " ^ Azerbayev, Zhangir; Schoelkopf, Hailey; Paster, Keiran; Santos, Marco Dos; McAleer', Stephen; Jiang, Albert Q.; Deng, Jia; Biderman, Stella; Welleck, Sean (16 October 2023). \"Llemma: An Open Language Model For Mathematics\". EleutherAI Blog. Retrieved 26 January 2025.\n", - " ^ \"Julius AI\". julius.ai.\n", - "^ McFarland, Alex (12 July 2024). \"8 Best AI for Math Tools (January 2025)\". Unite. AI. Retrieved 26 January 2025.\n", - " Unite. AI. Retrieved 26 January 2025.\n", - " ^ Matthew Finio & Amanda Downie: IBM Think 2024 Primer, \"What is Artificial Intelligence (AI) in Finance?\" 8 Dec. 2023\n", - "^ M. Nicolas, J. Firzli: Pensions Age/European Pensions magazine, \"Artificial Intelligence: Ask the Industry\" May June 2024 https://videovoice.org/ai-in-finance-innovation-entrepreneurship-vs-over-regulation-with-the-eus-artificial-intelligence-act-wont-work-as-intended/ Archived 11 September 2024 at the Wayback Machine.\n", - " ^ \n", - "Jump up to:\n", - "a b c Congressional Research Service (2019). Artificial Intelligence and National Security (PDF). Washington, DC: Congressional Research Service. Archived (PDF) from the original on 8 May 2020. Retrieved 25 February 2024.PD-notice\n", - "^ \n", - "Jump up to:\n", - "a b Slyusar, Vadym (2019). Artificial intelligence as the basis of future control networks (Preprint). doi:10.13140/RG.2.2.30247.50087.\n", - "^ Iraqi, Amjad (3 April 2024). \"'Lavender': The AI machine directing Israel's bombing spree in Gaza\". +972 Magazine. Archived from the original on 10 October 2024. \"'Lavender': The AI machine directing Israel's bombing spree in Gaza\". +972 Magazine. Archived from the original on 10 October 2024. Retrieved 6 April 2024.\n", - " ^ Davies, Harry; McKernan, Bethan; Sabbagh, Dan (1 December 2023). \"'The Gospel': how Israel uses AI to select bombing targets in Gaza\". The Guardian. Archived from the original on 6 December 2023. Retrieved 4 December 2023.\n", - " ^ Marti, J Werner (10 August 2024). \"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf Störsender – deshalb sollen sie jetzt autonom operieren\". Neue Zürcher Zeitung (in German). Archived from the original on 10 August 2024. \"Drohnen haben den Krieg in der Ukraine revolutioniert, doch sie sind empfindlich auf Störsender – deshalb sollen sie jetzt autonom operieren\". Neue Zürcher Zeitung (in German). Archived from the original on 10 August 2024. Retrieved 10 August 2024.\n", - " ^ Newsom, Gavin; Weber, Shirley N. (5 September 2023). \"Executive Order N-12-23\" (PDF). Executive Department, State of California. Archived (PDF) from the original on 21 February 2024. Retrieved 7 September 2023.\n", - " ^ Pinaya, Walter H. L.; Graham, Mark S.; Kerfoot, Eric; Tudosiu, Petru-Daniel; Dafflon, Jessica; Fernandez, Virginia; Sanchez, Pedro; Wolleb, Julia; da Costa, Pedro F.; Patel, Ashay (2023). \"Generative AI for Medical Imaging: extending the MONAI Framework\". arXiv:2307.15208 [eess.IV].\n", - " ^ \"What is ChatGPT, DALL-E, and generative AI?\". \"Generative AI for Medical Imaging: extending the MONAI Framework\". arXiv:2307.15208 [eess.IV].\n", - " ^ \"What is ChatGPT, DALL-E, and generative AI?\". McKinsey. Retrieved 14 December 2024.\n", - " ^ \"What is generative AI?\". IBM. 22 March 2024.\n", - " ^ Pasick, Adam (27 March 2023). \"Artificial Intelligence Glossary: Neural Networks and Other Terms Explained\". The New York Times. ISSN 0362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\n", - " ISSN 0362-4331. Archived from the original on 1 September 2023. Retrieved 22 April 2023.\n", - " ^ Karpathy, Andrej; Abbeel, Pieter; Brockman, Greg; Chen, Peter; Cheung, Vicki; Duan, Yan; Goodfellow, Ian; Kingma, Durk; Ho, Jonathan; Rein Houthooft; Tim Salimans; John Schulman; Ilya Sutskever; Wojciech Zaremba (16 June 2016). \"Generative models\". OpenAI. Archived from the original on 17 November 2023. Retrieved 15 March 2023.\n", - " ^ \n", - "Jump up to:\n", - "a b Griffith, Erin; Metz, Cade (27 January 2023). \"Anthropic Said to Be Closing In on $300 Million in New A.I. Funding\". The New York Times. Archived from the original on 9 December 2023. Retrieved 14 March 2023.\n", - " ^ Archived from the original on 9 December 2023. Retrieved 14 March 2023.\n", - " ^ Lanxon, Nate; Bass, Dina; Davalos, Jackie (10 March 2023). \"A Cheat Sheet to AI Buzzwords and Their Meanings\". Bloomberg News. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\n", - " ^ Metz, Cade (14 March 2023). \"OpenAI Plans to Up the Ante in Tech's A.I. Race\". The New York Times. ISSN 0362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 8:\n", - "Title: Website Document\n", - "Snippet content:\n", - "The chunk discusses recent developments and challenges related to the establishment of AI data centers in Taiwan and Japan, highlighting power consumption concerns and regulatory considerations within the broader context of artificial intelligence infrastructure and its environmental impact.\n", - "^ \n", - "Jump up to:\n", - "a b c Niva Yadav (19 August 2024). \"Taiwan to stop large data centers in the North, cites insufficient power\". DatacenterDynamics. Archived from the original on 8 November 2024. Retrieved 7 November 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Mochizuki, Takashi; Oda, Shoko (18 October 2024). \"エヌビディア出資の日本企業、原発近くでAIデータセンター新設検討\". Bloomberg (in Japanese). Archived from the original on 8 November 2024. Retrieved 7 November 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Naureen S Malik and Will Wade (5 November 2024). \"Nuclear-Hungry AI Campuses Need New Plan to Find Power Fast\". Bloomberg.\n", - " ^ Nicas (2018).\n", - " Bloomberg.\n", - " ^ Nicas (2018).\n", - " ^ Rainie, Lee; Keeter, Scott; Perrin, Andrew (22 July 2019). \"Trust and Distrust in America\". Pew Research Center. Archived from the original on 22 February 2024.\n", - " ^ Williams (2023).\n", - " ^ Taylor & Hern (2023).\n", - " ^ \n", - "Jump up to:\n", - "a b Samuel, Sigal (19 April 2022). \"Why it's so damn hard to make AI fair and unbiased\". Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\n", - " Vox. Archived from the original on 5 October 2024. Retrieved 24 July 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b Rose (2023).\n", - " ^ CNA (2019).\n", - " ^ Goffrey (2008), p. 17.\n", - "^ Berdahl et al. (2023); Goffrey (2008, p. 17); Rose (2023); Russell & Norvig (2021, p. 995)\n", - "^ Christian (2020), p. 25.\n", - " ^ \n", - "Jump up to:\n", - "a b Russell & Norvig (2021), p. 995.\n", - "^ Grant & Hill (2023).\n", - " ^ Larson & Angwin (2016).\n", - " ^ Christian (2020), p. 67–70.\n", - " ^ ^ Christian (2020), p. 67–70.\n", - " ^ Christian (2020, pp. 67–70); Russell & Norvig (2021, pp. 993–994)\n", - "^ Russell & Norvig (2021, p. 995); Lipartito (2011, p. 36); Goodman & Flaxman (2017, p. 6); Christian (2020, pp. 39–40, 65)\n", - "^ Quoted in Christian (2020, p. 65).\n", - " ^ Russell & Norvig (2021, p. 994); Christian (2020, pp. 40, 80–81)\n", - "^ Quoted in Christian (2020, p. 80)\n", - "^ Dockrill (2022).\n", - " ^ Sample (2017).\n", - " ^ \"Black Box AI\". 16 June 2023. Archived from the original on 15 June 2024. Retrieved 5 October 2024.\n", - " ^ Christian (2020), p. 110.\n", - " ^ Christian (2020), pp.  88–91.\n", - " ^ Christian (2020), pp.  88–91.\n", - " ^ Christian (2020, p. 83); Russell & Norvig (2021, p. 997)\n", - "^ Christian (2020), p. 91.\n", - " ^ Christian (2020), p. 83.\n", - "^ Verma (2021).\n", - " ^ Rothman (2020).\n", - " ^ Christian (2020), pp. 105–108.\n", - " ^ Christian (2020), pp. 108–112.\n", - " ^ Ropek, Lucas (21 May 2024). Christian (2020), pp. 108–112.\n", - " ^ Ropek, Lucas (21 May 2024). \"New Anthropic Research Sheds Light on AI's 'Black Box'\". Gizmodo. Archived from the original on 5 October 2024. Retrieved 23 May 2024.\n", - " ^ Russell & Norvig (2021), p. 989.\n", - " ^ \n", - "Jump up to:\n", - "a b Russell & Norvig (2021), pp. 987–990.\n", - " ^ Russell & Norvig (2021), p. 988.\n", - " ^ Robitzski (2018); Sainato (2015)\n", - "^ Harari (2018).\n", - " ^ Buckley, Chris; Mozur, Paul (22 May 2019). \"How China Uses High-Tech Surveillance to Subdue Minorities\". ^ Buckley, Chris; Mozur, Paul (22 May 2019). \"How China Uses High-Tech Surveillance to Subdue Minorities\". The New York Times. Archived from the original on 25 November 2019. Retrieved 2 July 2019.\n", - " ^ \"Security lapse exposed a Chinese smart city surveillance system\". 3 May 2019. Archived from the original on 7 March 2021. Retrieved 14 September 2020.\n", - " ^ Urbina et al. (2022).\n", - " ^ \n", - "Jump up to:\n", - "a b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511–559. Archived 27 May 2023 at the Wayback Machine.\n", - " ^ \n", - "Jump up to:\n", - "a b E. McGaughey, 'Will Robots Automate Your Job Away? Full Employment, Basic Income, and Economic Democracy' (2022), 51(3) Industrial Law Journal 511–559. Archived 27 May 2023 at the Wayback Machine.\n", - " ^ Ford & Colvin (2015);McGaughey (2022)\n", - "^ IGM Chicago (2017).\n", - " ^ Arntz, Gregory & Zierahn (2016), p. 33.\n", - "^ Lohr (2017); Frey & Osborne (2017); Arntz, Gregory & Zierahn (2016, p. 33)\n", - "^ Zhou, Viola (11 April 2023). \"AI is already taking video game illustrators' jobs in China\". Rest of World. Archived from the original on 21 February 2024. Retrieved 17 August 2023.\n", - " ^ Carter, Justin (11 April 2023). \"China's game art industry reportedly decimated by growing AI use\". ^ Carter, Justin (11 April 2023). \"China's game art industry reportedly decimated by growing AI use\". Game Developer. Archived from the original on 17 August 2023. Retrieved 17 August 2023.\n", - " ^ Morgenstern (2015).\n", - "^ Mahdawi (2017); Thompson (2014)\n", - "^ Tarnoff, Ben (4 August 2023). \"Lessons from Eliza\". The Guardian Weekly. pp.  34–39.\n", - "^ Cellan-Jones (2014).\n", - " ^ Russell & Norvig 2021, p. 1001.\n", - " ^ Bostrom (2014).\n", - " Cellan-Jones (2014).\n", - " ^ Russell & Norvig 2021, p. 1001.\n", - " ^ Bostrom (2014).\n", - " ^ Russell (2019).\n", - " ^ Bostrom (2014); Müller & Bostrom (2014); Bostrom (2015).\n", - " ^ Harari (2023).\n", - " ^ Müller & Bostrom (2014).\n", - " ^ Leaders' concerns about the existential risks of AI around 2015: Rawlinson (2015), Holley (2015), Gibbs (2014), Sainato (2015)\n", - "^ \"\"Godfather of artificial intelligence\" talks impact and potential of new AI\". CBS News. 25 March 2023. Archived from the original on 28 March 2023. Retrieved 28 March 2023.\n", - " ^ Archived from the original on 28 March 2023. Retrieved 28 March 2023.\n", - " ^ Pittis, Don (4 May 2023). \"Canadian artificial intelligence leader Geoffrey Hinton piles on fears of computer takeover\". CBC. Archived from the original on 7 July 2024. Retrieved 5 October 2024.\n", - " ^ \"'50–50 chance' that AI outsmarts humanity, Geoffrey Hinton says\". Bloomberg BNN. 14 June 2024. Archived from the original on 14 June 2024. Retrieved 6 July 2024.\n", - " ^ Valance (2023).\n", - " Retrieved 6 July 2024.\n", - " ^ Valance (2023).\n", - " ^ Taylor, Josh (7 May 2023). \"Rise of artificial intelligence is inevitable but should not be feared, 'father of AI' says\". The Guardian. Archived from the original on 23 October 2023. Retrieved 26 May 2023.\n", - " ^ Colton, Emma (7 May 2023). \"'Father of AI' says tech fears misplaced: 'You cannot stop it'\". Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\n", - " Fox News. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\n", - " ^ Jones, Hessie (23 May 2023). \"Juergen Schmidhuber, Renowned 'Father Of Modern AI,' Says His Life's Work Won't Lead To Dystopia\". Forbes. Archived from the original on 26 May 2023. Retrieved 26 May 2023.\n", - " ^ McMorrow, Ryan (19 December 2023). \"Andrew Ng: 'Do we think the world is better off with more or less intelligence?'\". Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\n", - " Financial Times. Archived from the original on 25 January 2024. Retrieved 30 December 2023.\n", - " ^ Levy, Steven (22 December 2023). \"How Not to Be Stupid About AI, With Yann LeCun\". Wired. Archived from the original on 28 December 2023. Retrieved 30 December 2023.\n", - " ^ Arguments that AI is not an imminent risk: Brooks (2014), Geist (2015), Madrigal (2015), Lee (2014)\n", - "^ \n", - "Jump up to:\n", - "a b Christian (2020), pp. 67, 73.\n", - "^ Yudkowsky (2008).\n", - " ^ \n", - "Jump up to:\n", - "a b Anderson & Anderson (2011).\n", - " ^ AAAI (2014).\n", - " ^ ^ \n", - "Jump up to:\n", - "a b Anderson & Anderson (2011).\n", - " ^ AAAI (2014).\n", - " ^ Wallach (2010).\n", - " ^ Russell (2019), p. 173.\n", - "^ Stewart, Ashley; Melton, Monica. \"Hugging Face CEO says he's focused on building a 'sustainable model' for the $4.5 billion open-source-AI startup\". Business Insider. Archived from the original on 25 September 2024. Retrieved 14 April 2024.\n", - " ^ Wiggers, Kyle (9 April 2024). \"Google open sources tools to support AI model development\". TechCrunch. Archived from the original on 10 September 2024. \"Google open sources tools to support AI model development\". TechCrunch. Archived from the original on 10 September 2024. Retrieved 14 April 2024.\n", - " ^ Heaven, Will Douglas (12 May 2023). \"The open-source AI boom is built on Big Tech's handouts. How long will it last?\". MIT Technology Review. Retrieved 14 April 2024.\n", - " ^ Brodsky, Sascha (19 December 2023). \"Mistral AI's New Language Model Aims for Open Source Supremacy\". AI Business. Archived from the original on 5 September 2024. \"Mistral AI's New Language Model Aims for Open Source Supremacy\". AI Business. Archived from the original on 5 September 2024. Retrieved 5 October 2024.\n", - " ^ Edwards, Benj (22 February 2024). \"Stability announces Stable Diffusion 3, a next-gen AI image generator\". Ars Technica. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\n", - " ^ Marshall, Matt (29 January 2024). \"How enterprises are using open source LLMs: 16 examples\". VentureBeat. Archived from the original on 26 September 2024. \"How enterprises are using open source LLMs: 16 examples\". VentureBeat. Archived from the original on 26 September 2024. Retrieved 5 October 2024.\n", - "^ Piper, Kelsey (2 February 2024). \"Should we make our most powerful AI models open source to all?\". Vox. Archived from the original on 5 October 2024. Retrieved 14 April 2024.\n", - " ^ Alan Turing Institute (2019). \"Understanding artificial intelligence ethics and safety\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\n", - " ^ Alan Turing Institute (2023). Retrieved 5 October 2024.\n", - " ^ Alan Turing Institute (2023). \"AI Ethics and Governance in Practice\" (PDF). Archived (PDF) from the original on 11 September 2024. Retrieved 5 October 2024.\n", - " ^ Floridi, Luciano; Cowls, Josh (23 June 2019). \"A Unified Framework of Five Principles for AI in Society\". Harvard Data Science Review. 1 (1). doi:10.1162/99608f92.8cd550d1. S2CID 198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\n", - " S2CID 198775713. Archived from the original on 7 August 2019. Retrieved 5 December 2023.\n", - " ^ Buruk, Banu; Ekmekci, Perihan Elif; Arda, Berna (1 September 2020). \"A critical perspective on guidelines for responsible and trustworthy artificial intelligence\". Medicine, Health Care and Philosophy. 23 (3): 387–399. doi:10.1007/s11019-020-09948-1. ISSN 1572-8633. PMID 32236794. S2CID 214766800. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \"Ethical issues in the development of artificial intelligence: recognizing the risks\". ^ Kamila, Manoj Kumar; Jasrotia, Sahil Singh (1 January 2023). \"Ethical issues in the development of artificial intelligence: recognizing the risks\". International Journal of Ethics and Systems. ahead-of-print (ahead-of-print). doi:10.1108/IJOES-05-2023-0107. ISSN 2514-9369. S2CID 259614124. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ \"AI Safety Institute releases new AI safety evaluations platform\". UK Government. 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\n", - " 10 May 2024. Archived from the original on 5 October 2024. Retrieved 14 May 2024.\n", - " ^ Regulation of AI to mitigate risks: Berryhill et al. (2019), Barfield & Pagallo (2018), Iphofen & Kritikos (2019), Wirtz, Weyerer & Geyer (2018), Buiten (2019)\n", - "^ Law Library of Congress (U.S.). Global Legal Research Directorate (2019).\n", - " ^ \n", - "Jump up to:\n", - "a b Vincent (2023).\n", - " ^ Stanford University (2023).\n", - " ^ \n", - "Jump up to:\n", - "a b c d UNESCO (2021).\n", - " ^ Kissinger (2021).\n", - " ^ Altman, Brockman & Sutskever (2023).\n", - " ^ VOA News (25 October 2023). \"UN Announces Advisory Body on Artificial Intelligence\". Archived from the original on 18 September 2024. ^ VOA News (25 October 2023). \"UN Announces Advisory Body on Artificial Intelligence\". Archived from the original on 18 September 2024. Retrieved 5 October 2024.\n", - " ^ \"Council of Europe opens first ever global treaty on AI for signature\". Council of Europe. 5 September 2024. Archived from the original on 17 September 2024. Retrieved 17 September 2024.\n", - " ^ Edwards (2023).\n", - " ^ Kasperowicz (2023).\n", - " ^ Fox News (2023).\n", - "^ Milmo, Dan (3 November 2023). \"Hope or Horror?\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 9:\n", - "Title: Website Document\n", - "Snippet content:\n", - "This chunk contains references to significant academic papers and publications related to artificial intelligence, specifically focusing on the seminal work \"Attention is All You Need,\" which introduced the transformer architecture, and a commentary on AI chatbots in the context of their anthropomorphism. It also includes a mention of a White Paper from the European Commission on AI. These references are part of the extensive bibliography that supports the document's exploration of AI concepts, developments, and implications within the broader subject of artificial intelligence.\n", - "PMID 26819042. S2CID 515925. Archived from the original on 18 June 2023. Retrieved 19 June 2023.\n", - " Vaswani, Ashish, Noam Shazeer, Niki Parmar et al. \"Attention is all you need.\" Advances in neural information processing systems 30 (2017). Seminal paper on transformers.\n", - " Vincent, James, \"Horny Robot Baby Voice: James Vincent on AI chatbots\", London Review of Books, vol. 46, no. 19 (10 October 2024), pp. 29–32. \"[AI chatbot] programs are made possible by new technologies but rely on the timelelss human tendency to anthropomorphise.\" (p. 29.)\n", - " White Paper: On Artificial Intelligence – A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. White Paper: On Artificial Intelligence – A European approach to excellence and trust (PDF). Brussels: European Commission. 2020. Archived (PDF) from the original on 20 February 2020. Retrieved 20 February 2020.\n", - " External links\n", - "Artificial intelligence\n", - "at Wikipedia's sister projects\n", - "Definitions from Wiktionary\n", - "Media from Commons\n", - "Quotations from Wikiquote\n", - "Textbooks from Wikibooks\n", - "Resources from Wikiversity\n", - "Data from Wikidata\n", - "Scholia has a topic profile for Artificial intelligence.\n", - " \"Artificial Intelligence\". Internet Encyclopedia of Philosophy.\n", - " show\n", - "vte\n", - "Artificial intelligence (AI)\n", - "show\n", - "Articles related to Artificial intelligence\n", - "Authority control databases: National \t\n", - "GermanyUnited StatesFranceBnF dataJapanCzech RepublicSpainLatviaIsrael\n", - "Categories: Artificial intelligenceComputational fields of studyComputational neuroscienceCyberneticsData scienceFormal sciencesIntelligence by type\n", - "This page was last edited on 10 February 2025, at 03:56 (UTC).\n", - " Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.\n", - " Privacy policy\n", - "About Wikipedia\n", - "Disclaimers\n", - "Contact Wikipedia\n", - "Code of Conduct\n", - "Developers\n", - "Statistics\n", - "Cookie statement\n", - "Mobile view Privacy policy\n", - "About Wikipedia\n", - "Disclaimers\n", - "Contact Wikipedia\n", - "Code of Conduct\n", - "Developers\n", - "Statistics\n", - "Cookie statement\n", - "Mobile view\n", - "----------------------------------------------------------------------------------------------------\n", - "Doc 10:\n", - "Title: Website Document\n", - "Snippet content:\n", - "This chunk consists of references and citations related to the advancements and challenges in artificial intelligence, particularly focusing on generative AI, its applications, ethical implications, and the regulatory responses to its rapid development. It highlights various studies, articles, and opinions on the societal impacts of AI technologies, including in fields like fashion, misinformation, and video content generation.\n", - "ISSN 0362-4331. Archived from the original on 31 March 2023. Retrieved 31 March 2023.\n", - " ^ Thoppilan, Romal; De Freitas, Daniel; Hall, Jamie; Shazeer, Noam; Kulshreshtha, Apoorv (20 January 2022). \"LaMDA: Language Models for Dialog Applications\". arXiv:2201.08239 [cs.CL].\n", - " ^ Roose, Kevin (21 October 2022). \"A Coming-Out Party for Generative A.I., Silicon Valley's New Craze\". The New York Times. Archived from the original on 15 February 2023. Retrieved 14 March 2023.\n", - " ^ Metz, Cade (15 February 2024). Retrieved 14 March 2023.\n", - " ^ Metz, Cade (15 February 2024). \"OpenAI Unveils A.I. That Instantly Generates Eye-Popping Videos\". The New York Times. ISSN 0362-4331. Archived from the original on 15 February 2024. Retrieved 16 February 2024.\n", - " ^ \"The race of the AI labs heats up\". The Economist. 30 January 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\n", - " ^ Yang, June; Gokturk, Burak (14 March 2023). \"Google Cloud brings generative AI to developers, businesses, and governments\". ^ Yang, June; Gokturk, Burak (14 March 2023). \"Google Cloud brings generative AI to developers, businesses, and governments\". Archived from the original on 17 November 2023. Retrieved 15 March 2023.\n", - " ^ Brynjolfsson, Erik; Li, Danielle; Raymond, Lindsey R. (April 2023), Generative AI at Work (Working Paper), Working Paper Series, doi:10.3386/w31161, archived from the original on 28 March 2024, retrieved 21 January 2024\n", - "^ \"Don't fear an AI-induced jobs apocalypse just yet\". The Economist. 6 March 2023. Archived from the original on 17 November 2023. Retrieved 14 March 2023.\n", - " ^ Coyle, Jake (27 September 2023). \"In Hollywood writers' battle against AI, humans win (for now)\". AP News. Coyle, Jake (27 September 2023). \"In Hollywood writers' battle against AI, humans win (for now)\". AP News. Associated Press. Archived from the original on 3 April 2024. Retrieved 26 January 2024.\n", - " ^ Harreis, H.; Koullias, T.; Roberts, Roger. \"Generative AI: Unlocking the future of fashion\". Archived from the original on 17 November 2023. Retrieved 14 March 2023.\n", - " ^ \"How Generative AI Can Augment Human Creativity\". Harvard Business Review. 16 June 2023. ISSN 0017-8012. Harvard Business Review. 16 June 2023. ISSN 0017-8012. Archived from the original on 20 June 2023. Retrieved 20 June 2023.\n", - " ^ Hendrix, Justin (16 May 2023). \"Transcript: Senate Judiciary Subcommittee Hearing on Oversight of AI\". techpolicy.press. Archived from the original on 17 November 2023. Retrieved 19 May 2023.\n", - " ^ Simon, Felix M.; Altay, Sacha; Mercier, Hugo (18 October 2023). \"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\". Harvard Kennedy School Misinformation Review. \"Misinformation reloaded? Fears about the impact of generative AI on misinformation are overblown\". Harvard Kennedy School Misinformation Review. doi:10.37016/mr-2020-127. S2CID 264113883. Archived from the original on 17 November 2023. Retrieved 16 November 2023.\n", - " ^ \"New AI systems collide with copyright law\". BBC News. 1 August 2023. Retrieved 28 September 2024.\n", - " ^ Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd ed.). Cambridge University Press. Poole, David; Mackworth, Alan (2023). Artificial Intelligence, Foundations of Computational Agents (3rd ed.). Cambridge University Press. doi:10.1017/9781009258227. ISBN 978-1-0092-5819-7. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4th ed.). Pearson. ISBN 978-0-1346-1099-3.\n", - " ^ \"Why agents are the next frontier of generative AI\". McKinsey Digital. 24 July 2024. ^ \"Why agents are the next frontier of generative AI\". McKinsey Digital. 24 July 2024. Archived from the original on 3 October 2024. Retrieved 10 August 2024.\n", - " ^ Figueiredo, Mayara Costa; Ankrah, Elizabeth; Powell, Jacquelyn E.; Epstein, Daniel A.; Chen, Yunan (12 January 2024). \"Powered by AI: Examining How AI Descriptions Influence Perceptions of Fertility Tracking Applications\". Proc. ACM Interact. Mob. Wearable Ubiquitous Technol. 7 (4): 154:1–154:24. doi:10.1145/3631414.\n", - " ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\". ^ Power, Jennifer; Pym, Tinonee; James, Alexandra; Waling, Andrea (5 July 2024). \"Smart Sex Toys: A Narrative Review of Recent Research on Cultural, Health and Safety Considerations\". Current Sexual Health Reports. 16 (3): 199–215. doi:10.1007/s11930-024-00392-3. ISSN 1548-3592.\n", - " ^ Marcantonio, Tiffany L.; Avery, Gracie; Thrash, Anna; Leone, Ruschelle M. (10 September 2024). \"Large Language Models in an App: Conducting a Qualitative Synthetic Data Analysis of How Snapchat's \"My AI\" Responds to Questions About Sexual Consent, Sexual Refusals, Sexual Assault, and Sexting\". The Journal of Sex Research: 1–15. doi:10.1080/00224499.2024.2396457. ISSN 0022-4499. PMID 39254628. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\n", - " ^ Archived from the original on 9 December 2024. Retrieved 9 December 2024.\n", - " ^ Hanson, Kenneth R.; Bolthouse, Hannah (2024). \"\"Replika Removing Erotic Role-Play Is Like Grand Theft Auto Removing Guns or Cars\": Reddit Discourse on Artificial Intelligence Chatbots and Sexual Technologies\". Socius: Sociological Research for a Dynamic World. 10. doi:10.1177/23780231241259627. ISSN 2378-0231.\n", - " ^ Mania, Karolina (1 January 2024). \"Legal Protection of Revenge and Deepfake Porn Victims in the European Union: Findings From a Comparative Legal Study\". Trauma, Violence, & Abuse. 25 (1): 117–129. doi:10.1177/15248380221143772. ISSN 1524-8380. PMID 36565267.\n", - " Trauma, Violence, & Abuse. 25 (1): 117–129. doi:10.1177/15248380221143772. ISSN 1524-8380. PMID 36565267.\n", - " ^ Singh, Suyesha; Nambiar, Vaishnavi (2024). \"Role of Artificial Intelligence in the Prevention of Online Child Sexual Abuse: A Systematic Review of Literature\". Journal of Applied Security Research. 19 (4): 586–627. doi:10.1080/19361610.2024.2331885. ISSN 1936-1610. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\n", - " ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\". ^ Razi, Afsaneh; Kim, Seunghyun; Alsoubai, Ashwaq; Stringhini, Gianluca; Solorio, Thamar; De Choudhury, Munmun; Wisniewski, Pamela J. (13 October 2021). \"A Human-Centered Systematic Literature Review of the Computational Approaches for Online Sexual Risk Detection\". Proceedings of the ACM on Human-Computer Interaction. 5 (CSCW2): 1–38. doi:10.1145/3479609. ISSN 2573-0142. Archived from the original on 9 December 2024. Retrieved 9 December 2024.\n", - " ^ Ransbotham, Sam; Kiron, David; Gerbert, Philipp; Reeves, Martin (6 September 2017). \"Reshaping Business With Artificial Intelligence\". MIT Sloan Management Review. Archived from the original on 13 February 2024.\n", - " ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \"8 – AI for large-scale evacuation modeling: promises and challenges\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp. 185–204, ISBN 978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\n", - " ^ ^ Sun, Yuran; Zhao, Xilei; Lovreglio, Ruggiero; Kuligowski, Erica (1 January 2024), Naser, M. Z. (ed.), \"8 – AI for large-scale evacuation modeling: promises and challenges\", Interpretable Machine Learning for the Analysis, Design, Assessment, and Informed Decision Making for Civil Infrastructure, Woodhead Publishing Series in Civil and Structural Engineering, Woodhead Publishing, pp. 185–204, ISBN 978-0-1282-4073-1, archived from the original on 19 May 2024, retrieved 28 June 2024.\n", - " ^ Gomaa, Islam; Adelzadeh, Masoud; Gwynne, Steven; Spencer, Bruce; Ko, Yoon; Bénichou, Noureddine; Ma, Chunyun; Elsagan, Nour; Duong, Dana; Zalok, Ehab; Kinateder, Max (1 November 2021). \"A Framework for Intelligent Fire Detection and Evacuation System\". Fire Technology. 57 (6): 3179–3185. doi:10.1007/s10694-021-01157-3. ISSN 1572-8099. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Zhao, Xilei; Lovreglio, Ruggiero; Nilsson, Daniel (1 May 2020). \"Modelling and interpreting pre-evacuation decision-making using machine learning\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. \"Modelling and interpreting pre-evacuation decision-making using machine learning\". Automation in Construction. 113: 103140. doi:10.1016/j.autcon.2020.103140. hdl:10179/17315. ISSN 0926-5805. Archived from the original on 19 May 2024. Retrieved 5 October 2024.\n", - " ^ \"India's latest election embraced AI technology. Here are some ways it was used constructively\". PBS News. 12 June 2024. Archived from the original on 17 September 2024. Retrieved 28 October 2024.\n", - " ^ Müller, Vincent C. (30 April 2020). Retrieved 28 October 2024.\n", - " ^ Müller, Vincent C. (30 April 2020). \"Ethics of Artificial Intelligence and Robotics\". Stanford Encyclopedia of Philosophy Archive. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Simonite (2016).\n", - " ^ Russell & Norvig (2021), p. 987.\n", - " ^ Laskowski (2023).\n", - " ^ GAO (2022).\n", - " ^ Valinsky (2019).\n", - " ^ Russell & Norvig (2021), p. 991.\n", - " ^ Valinsky (2019).\n", - " ^ Russell & Norvig (2021), p. 991.\n", - " ^ Russell & Norvig (2021), pp.  991–992.\n", - " ^ Christian (2020), p. 63.\n", - " ^ Vincent (2022).\n", - " ^ Kopel, Matthew. \"Copyright Services: Fair Use\". Cornell University Library. Archived from the original on 26 September 2024. Retrieved 26 April 2024.\n", - " ^ Archived from the original on 26 September 2024. Retrieved 26 April 2024.\n", - " ^ Burgess, Matt. \"How to Stop Your Data From Being Used to Train AI\". Wired. ISSN 1059-1028. Archived from the original on 3 October 2024. Retrieved 26 April 2024.\n", - " ^ Reisner (2023).\n", - " ^ Alter & Harris (2023).\n", - " ^ \"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\" (PDF). WIPO.\n", - " ^ \"Getting the Innovation Ecosystem Ready for AI. An IP policy toolkit\" (PDF). WIPO.\n", - " ^ Hammond, George (27 December 2023). \"Big Tech is spending more than VC firms on AI startups\". Ars Technica. Archived from the original on 10 January 2024.\n", - " ^ Wong, Matteo (24 October 2023). \"The Future of AI Is GOMA\". The Atlantic. Archived from the original on 5 January 2024.\n", - " ^ \"Big tech and the pursuit of AI dominance\". The Economist. 26 March 2023. ^ \"Big tech and the pursuit of AI dominance\". The Economist. 26 March 2023. Archived from the original on 29 December 2023.\n", - " ^ Fung, Brian (19 December 2023). \"Where the battle to dominate AI may be won\". CNN Business. Archived from the original on 13 January 2024.\n", - " ^ Metz, Cade (5 July 2023). \"In the Age of A.I., Tech's Little Guys Need Big Friends\". The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\n", - " The New York Times. Archived from the original on 8 July 2024. Retrieved 5 October 2024.\n", - " ^ \"Electricity 2024 – Analysis\". IEA. 24 January 2024. Retrieved 13 July 2024.\n", - " ^ Calvert, Brian (28 March 2024). \"AI already uses as much energy as a small country. It's only the beginning\". Vox. New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\n", - "^ New York, New York. Archived from the original on 3 July 2024. Retrieved 5 October 2024.\n", - "^ Halper, Evan; O'Donovan, Caroline (21 June 2024). \"AI is exhausting the power grid. Tech firms are seeking a miracle solution\". Washington Post.\n", - "^ Davenport, Carly. \"AI Data Centers and the Coming YS Power Demand Surge\" (PDF). Goldman Sachs. Archived from the original (PDF) on 26 July 2024. Retrieved 5 October 2024.\n", - " ^ Ryan, Carol (12 April 2024). \"Energy-Guzzling AI Is Also the Future of Energy Savings\". ^ Ryan, Carol (12 April 2024). \"Energy-Guzzling AI Is Also the Future of Energy Savings\". Wall Street Journal. Dow Jones.\n", - " ^ Hiller, Jennifer (1 July 2024). \"Tech Industry Wants to Lock Up Nuclear Power for AI\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ Kendall, Tyler (28 September 2024). \"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\". ^ Kendall, Tyler (28 September 2024). \"Nvidia's Huang Says Nuclear Power an Option to Feed Data Centers\". Bloomberg.\n", - "^ Halper, Evan (20 September 2024). \"Microsoft deal would reopen Three Mile Island nuclear plant to power AI\". Washington Post.\n", - "^ Hiller, Jennifer (20 September 2024). \"Three Mile Island's Nuclear Plant to Reopen, Help Power Microsoft's AI Centers\". Wall Street Journal. Dow Jones. Archived from the original on 5 October 2024. Retrieved 5 October 2024.\n", - " ^ \n", - "Jump up to:\n", - "a b c Niva Yadav (19 August 2024). \"Taiwan to stop large data centers in the North, cites insufficient power\". DatacenterDynamics.\n", - "----------------------------------------------------------------------------------------------------\n" - ] - } - ], - "source": [ - "print(\"Matched docs:\\n\\n\")\n", - "\n", - "for index, doc in enumerate(response.docs):\n", - " print(f\"Doc {index + 1}:\")\n", - " print(f\"Title: {doc.title}\")\n", - " print(f\"Snippet content:\\n{doc.snippet.content}\")\n", - " print(\"-\" * 100)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "julep", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cookbooks/README.md b/cookbooks/README.md index f9447c972..de005e1d0 100644 --- a/cookbooks/README.md +++ b/cookbooks/README.md @@ -36,20 +36,32 @@ Welcome to the **Julep AI Notebook Collection**! This directory contains a set o Each notebook explores a unique use case, demonstrating different aspects of Julep's capabilities. Below is a quick overview of the notebooks, their purpose, and a link to run each of them on Google Colab. + +## Basics Series + | **Notebook Name** | **Colab Link** | **Description** | **Implemented** | |------------------ |--------------- |----------------- |----------------- | -| `00-Devfest-Email-Assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) | Email assistant for managing DevFest communications | Yes | -| `01-website-crawler.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb) | Implements a web crawler using a spider to extract website content | Yes | -| `02-sarcastic-news-headline-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/02-sarcastic-news-headline-generator.ipynb) | Generates sarcastic news headlines using a Brave Search Tool | Yes | -| `03-trip-planning-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/03-trip-planning-assistant.ipynb) | Plans trips using weather data and location information | Yes | -| `04-hook-generator-trending-reels.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb) | Generates engaging hooks for trending social media reels | Yes | -| `05-video-processing-with-natural-language.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb) | Processes videos using natural language commands | Yes | -| `06-browser-use.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb) | Demonstrates browser automation capabilities | Yes | -| `07-personalized-research-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/07-personalized-research-assistant.ipynb) | Demonstrates personalized research assistant capabilities | Yes | -| `08-rag-chatbot.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb) | Demonstrates RAG chatbot capabilities | Yes | -| `09-companion-agent.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/09-companion-agent.ipynb) | Demonstrates companion agent capabilities like story generation, user persona management, and more | Yes | -| `10-reel-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/10-reel-generator.ipynb) | Demonstrates reel generator capabilities | Yes | +| `01-Hello-Agent.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/01-Hello-Agent.ipynb) | Create a simple agent and chat with it | Yes | +| `02-Simple-Task.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/02-Simple-Task.ipynb) | Define and run a basic task | Yes | +| `03-Adding-Tools.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/03-Adding-Tools.ipynb) | Attach a tool to the agent | Yes | +| `04-Parallel-Steps.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/04-Parallel-Steps.ipynb) | Execute steps in parallel | Yes | +| `05-RAG-and-Docs.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/05-RAG-and-Docs.ipynb) | Use documents for RAG style responses | Yes | + +## Advanced Examples +| **Notebook Name** | **Colab Link** | **Description** | **Implemented** | +|------------------ |--------------- |----------------- |----------------- | +| `00-Devfest-Email-Assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) | Email assistant for managing DevFest communications | Yes | +| `01-website-crawler.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/01-website-crawler.ipynb) | Implements a web crawler using a spider to extract website content | Yes | +| `02-sarcastic-news-headline-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb) | Generates sarcastic news headlines using a Brave Search Tool | Yes | +| `03-trip-planning-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/03-trip-planning-assistant.ipynb) | Plans trips using weather data and location information | Yes | +| `04-hook-generator-trending-reels.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/04-hook-generator-trending-reels.ipynb) | Generates engaging hooks for trending social media reels | Yes | +| `05-video-processing-with-natural-language.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb) | Processes videos using natural language commands | Yes | +| `06-browser-use.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/06-browser-use.ipynb) | Demonstrates browser automation capabilities | Yes | +| `07-personalized-research-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/07-personalized-research-assistant.ipynb) | Demonstrates personalized research assistant capabilities | Yes | +| `08-rag-chatbot.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/08-rag-chatbot.ipynb) | Demonstrates RAG chatbot capabilities | Yes | +| `09-companion-agent.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/09-companion-agent.ipynb) | Demonstrates companion agent capabilities like story generation, user persona management, and more | Yes | +| `10-reel-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/10-reel-generator.ipynb) | Demonstrates reel generator capabilities | Yes | ## Potential Cookbooks for Contributors We welcome contributions to expand our cookbook collection. Here are some ideas for new cookbooks that showcase various Julep features and use cases: diff --git a/cookbooks/00-Devfest-Email-Assistant.ipynb b/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb similarity index 66% rename from cookbooks/00-Devfest-Email-Assistant.ipynb rename to cookbooks/advanced/00-Devfest-Email-Assistant.ipynb index a80723a1a..42f267eaa 100644 --- a/cookbooks/00-Devfest-Email-Assistant.ipynb +++ b/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb @@ -1,108 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task Definition: Email Assistant\n", - "\n", - "### Overview\n", - "\n", - "This task creates an email assistant that can receive emails, search through Julep documentation, and respond to user inquiries automatically. It combines email integration with documentation search capabilities to provide relevant and informed responses.\n", - "\n", - "### Task Tools:\n", - "\n", - "**send_email**: An `integration` type tool that handles email sending via Mailgun SMTP.\n", - "**search_docs**: A `system` type tool that searches through agent documentation.\n", - "\n", - "### Task Input:\n", - "\n", - "A dictionary containing:\n", - "- **from**: Sender's email address\n", - "- **to**: Recipient's email address\n", - "- **subject**: Email subject\n", - "- **body**: Email content\n", - "\n", - "### Task Output:\n", - "\n", - "An email response sent to the inquirer with:\n", - "- Generated subject line\n", - "- Generated response body based on documentation search results\n", - "\n", - "### Task Flow\n", - "\n", - "1. **Input**: Receive email details (from, to, subject, body)\n", - "2. **Query Generation**: Generate a search query based on the email content\n", - "3. **Documentation Search**: Search Julep documentation using the generated query\n", - "4. **Response Generation**: Create a response using the found documentation\n", - "5. **Email Sending**: Send the response back to the original sender via Mailgun\n", - "\n", - "```plaintext\n", - "+----------+ +-------------+ +------------+ +-----------+\n", - "| Email | | Query | | Doc | | Email |\n", - "| Input | --> | Generation | --> | Search | --> | Response |\n", - "| (Query) | | | | | | Output |\n", - "+----------+ +-------------+ +------------+ +-----------+\n", - " | | | |\n", - " | | | |\n", - " v v v v\n", - " \"How do I\" Create search Find relevant \"Here's how to\n", - " \"use Julep?\" keywords documentation get started...\"\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -142,18 +39,6 @@ "!pip install julep" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 67, @@ -170,9 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Creating Julep Client with the API Key\n", - "\n", - "Get you API key from [here](https://dashboard.julep.ai/)" + "### Create Julep Client\n" ] }, { @@ -241,7 +124,7 @@ "MAILGUN_PASSWORD = \"YOUR_MAILGUN_PASSWORD\"\n", "\n", "task_def = yaml.safe_load(f\"\"\"\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: Julep Email Assistant\n", "description: A Julep agent that can send emails and search the documentation.\n", "\n", @@ -348,18 +231,6 @@ "\"\"\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": 77, @@ -476,11 +347,22 @@ " print(\"output: \", transition.output)\n", " print(\"-\" * 100)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/cookbooks/01-website-crawler.ipynb b/cookbooks/advanced/01-website-crawler.ipynb similarity index 94% rename from cookbooks/01-website-crawler.ipynb rename to cookbooks/advanced/01-website-crawler.ipynb index f8abad004..ac54ead84 100644 --- a/cookbooks/01-website-crawler.ipynb +++ b/cookbooks/advanced/01-website-crawler.ipynb @@ -1,104 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task Definition: Spider Crawler Integration\n", - "\n", - "### Overview\n", - "\n", - "This task is a simple task that leverages the spider `integration` tool, and combines it with a prompt step to crawl a website for a given URL, and then create a summary of the results.\n", - "\n", - "### Task Tools:\n", - "\n", - "**Spider Crawler**: An `integration` type tool that can crawl the web and extract data from a given URL.\n", - "\n", - "### Task Input:\n", - "\n", - "**url**: The URL of the website to crawl.\n", - "\n", - "### Task Output:\n", - "\n", - "**output**: A dictionary that contains a `documents` key which contains the extracted data from the given URL. Check the output below for a detailed output schema.\n", - "\n", - "### Task Flow\n", - "\n", - "1. **Input**: The user provides a URL to crawl.\n", - "\n", - "2. **Spider Tool Integration**: The `spider_crawler` tool is called to crawl the web and extract data from the given URL.\n", - "\n", - "3. **Prompt Step**: The prompt step is used to create a summary of the results from the spider tool.\n", - "\n", - "4. **Output**: The final output is the summary of the results from the spider tool.\n", - "\n", - "```plaintext\n", - "+----------+ +-------------+ +------------+ +-----------+\n", - "| User | | Spider | | Prompt | | Output |\n", - "| Input | --> | Crawler | --> | Step | --> | Step |\n", - "| (URL) | | | | | | Output |\n", - "+----------+ +-------------+ +------------+ +-----------+\n", - " | | | |\n", - " | | | |\n", - " v v v v\n", - " \"https://spider.cloud\" Extract data Create summary \"Here are the\n", - " from URL of results results from the\n", - " spider tool\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -115,18 +16,6 @@ "!pip install --upgrade julep --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 32, @@ -145,9 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "## creating julep client with the api key\n" ] }, { @@ -216,7 +103,7 @@ "\n", "# Define the task\n", "task_def = yaml.safe_load(f\"\"\" \n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json \n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json \n", "name: Julep Crawling Task\n", "description: Crawl a website and create a summary of the results\n", "\n", @@ -285,18 +172,6 @@ "\"\"\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": 100, @@ -504,6 +379,17 @@ "\n", "transitions[1].output" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] } ], "metadata": { diff --git a/cookbooks/02-sarcastic-news-headline-generator.ipynb b/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb similarity index 65% rename from cookbooks/02-sarcastic-news-headline-generator.ipynb rename to cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb index a6cae3308..dc05caa05 100644 --- a/cookbooks/02-sarcastic-news-headline-generator.ipynb +++ b/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb @@ -1,105 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task Definition: Sarcastic News Headline Generator using Brave Search Integration\n", - "\n", - "### Overview\n", - "\n", - "This task generates a sarcastic news headline on a user-provided topic. It utilizes web search to gather context and information about the topic, then uses this data to create a headline with a sarcastic tone. \n", - "\n", - "### Task Flow\n", - "\n", - "1. **Input**: \n", - " - User provides a topic for the sarcastic news headline (e.g., \"technology\" or \"politics\").\n", - "\n", - "2. **Web Search using Bravesearch Integration**: \n", - " - Conducts a search to find information about the topic, focusing on humorous or quirky content.\n", - " - Gathers relevant context and amusing details for headline generation.\n", - "\n", - "3. **Headline Creation**: \n", - " - Generates a sarcastic news headline based on the topic and gathered information.\n", - " - Combines factual or common perceptions with humor and sarcasm.\n", - " \n", - "4. **Output**: \n", - " - Produces a sarcastic, witty headline on the given topic.\n", - " - Can be used for entertainment or as a creative writing prompt.\n", - "\n", - "### Key Features\n", - "\n", - "- Leverages web search to enhance contextual relevance of sarcastic content.\n", - "- Combines real-world information with humorous twists for engaging headlines.\n", - "- Adaptable to various topics, allowing for diverse and creative outputs.\n", - "\n", - "```plaintext\n", - "+----------+ +------------+ +------------+ +-----------+\n", - "| User | | Brave | | Agent | | Sarcastic |\n", - "| Input | --> | Search | --> | Processing | --> | Headline |\n", - "| (Topic) | | | | | | Output |\n", - "+----------+ +------------+ +------------+ +-----------+\n", - " | | | |\n", - " | | | |\n", - " v v v v\n", - " \"politics\" Find funny Generate witty \"Area Man Still\n", - " content headline Believes in Democracy\"\n", - "\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -116,18 +16,6 @@ "!pip install --upgrade julep --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 2, @@ -145,9 +33,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "## creating julep client with the api key\n" ] }, { @@ -220,7 +106,7 @@ "\n", "# Define the task\n", "task_def = yaml.safe_load(f\"\"\"\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: Julep Sarcasm Headline Generator\n", "description: This task generates a sarcastic news headline on a user-provided topic.\n", "\n", @@ -285,18 +171,6 @@ "\"\"\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": 6, @@ -371,7 +245,7 @@ "\n", "\"Breaking: World's Richest Man Still Can't Figure Out How to Make People Genuinely Like Him\"\n", "\n", - "\"Shocking Report: Man Who Named Child 'X Æ A-12' May Not Be Most Stable CEO\"\n", + "\"Shocking Report: Man Who Named Child 'X \u00c6 A-12' May Not Be Most Stable CEO\"\n", "\n", "\"Former Trump Officials Suggest Drug Tests for Musk; Musk Agrees, Proving He Might Actually Need One\"\n", "\n", @@ -414,17 +288,17 @@ "Transition output: {'topic': 'Elon Musk'}\n", "--------------------------------------------------\n", "Transition type: step\n", - "Transition output: {'result': [{'link': 'https://9gag.com/tag/elon-musk', 'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new funny cursed meme images about Elon Musk, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'link': 'https://www.youtube.com/watch?v=ukxf9AqLsPY', 'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts Elon Musk, MAGA melts down over SNL, and protesters hit Trump where it hurts—his billionaire bestie's wallet. Gabe Sanchez reports ...'}, {'link': 'https://gizmodo.com/elon-musk-is-annoying-unfunny-and-should-probably-take-a-drug-test-trump-officials-reportedly-say-2000587948', 'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting Musk to mandatory drug testing, which Musk himself has said would be a “great idea” for federal employees. It gets worse. “I have been in the same room with Elon, and he always tries to be funny.'}]}\n", + "Transition output: {'result': [{'link': 'https://9gag.com/tag/elon-musk', 'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new funny cursed meme images about Elon Musk, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'link': 'https://www.youtube.com/watch?v=ukxf9AqLsPY', 'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts Elon Musk, MAGA melts down over SNL, and protesters hit Trump where it hurts\u2014his billionaire bestie's wallet. Gabe Sanchez reports ...'}, {'link': 'https://gizmodo.com/elon-musk-is-annoying-unfunny-and-should-probably-take-a-drug-test-trump-officials-reportedly-say-2000587948', 'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting Musk to mandatory drug testing, which Musk himself has said would be a \u201cgreat idea\u201d for federal employees. It gets worse. \u201cI have been in the same room with Elon, and he always tries to be funny.'}]}\n", "--------------------------------------------------\n", "Transition type: step\n", - "Transition output: {'search_results': [{'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new funny cursed meme images about Elon Musk, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts Elon Musk, MAGA melts down over SNL, and protesters hit Trump where it hurts—his billionaire bestie's wallet. Gabe Sanchez reports ...'}, {'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting Musk to mandatory drug testing, which Musk himself has said would be a “great idea” for federal employees. It gets worse. “I have been in the same room with Elon, and he always tries to be funny.'}]}\n", + "Transition output: {'search_results': [{'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new funny cursed meme images about Elon Musk, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts Elon Musk, MAGA melts down over SNL, and protesters hit Trump where it hurts\u2014his billionaire bestie's wallet. Gabe Sanchez reports ...'}, {'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting Musk to mandatory drug testing, which Musk himself has said would be a \u201cgreat idea\u201d for federal employees. It gets worse. \u201cI have been in the same room with Elon, and he always tries to be funny.'}]}\n", "--------------------------------------------------\n", "Transition type: finish\n", "Transition output: \"Genius Billionaire Desperately Attempts Comedy, Proves Money Can't Buy Sense of Humor\"\n", "\n", "\"Breaking: World's Richest Man Still Can't Figure Out How to Make People Genuinely Like Him\"\n", "\n", - "\"Shocking Report: Man Who Named Child 'X Æ A-12' May Not Be Most Stable CEO\"\n", + "\"Shocking Report: Man Who Named Child 'X \u00c6 A-12' May Not Be Most Stable CEO\"\n", "\n", "\"Former Trump Officials Suggest Drug Tests for Musk; Musk Agrees, Proving He Might Actually Need One\"\n", "\n", @@ -499,7 +373,7 @@ "\n", "\"North London Rivalry Takes Bizarre Turn as Spurs Resort to Executive Poaching Instead of Trophy Hunting\"\n", "\n", - "Pick any of these sarcastic headlines that capture the irony of Tottenham hiring their rival Arsenal's former CEO, while playfully jabbing at Spurs' notorious trophy drought and the historic rivalry between the two clubs! 😏\n" + "Pick any of these sarcastic headlines that capture the irony of Tottenham hiring their rival Arsenal's former CEO, while playfully jabbing at Spurs' notorious trophy drought and the historic rivalry between the two clubs! \ud83d\ude0f\n" ] } ], @@ -554,6 +428,17 @@ "\n", "transitions[1].output" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] } ], "metadata": { diff --git a/cookbooks/advanced/03-trip-planning-assistant.ipynb b/cookbooks/advanced/03-trip-planning-assistant.ipynb new file mode 100644 index 000000000..5da8b4a8f --- /dev/null +++ b/cookbooks/advanced/03-trip-planning-assistant.ipynb @@ -0,0 +1,1019 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Installing the Julep Client" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install julep -U --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# Global UUID is generated for agent and task\n", + "import uuid\n", + "\n", + "AGENT_UUID = uuid.uuid4()\n", + "TASK_UUID = uuid.uuid4() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### creating julep client with the api key\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "from julep import Client\n", + "import os\n", + "\n", + "JULEP_API_KEY = os.environ[\"JULEP_API_KEY\"]\n", + "\n", + "# Create a Julep client\n", + "client = Client(api_key=JULEP_API_KEY, environment=\"production\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an \"agent\"\n", + "\n", + "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n", + "\n", + "To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents)." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Defining the agent\n", + "name = \"Jacob\"\n", + "about = \"A travel assistant that helps plan the perfect trip.\"\n", + "\n", + "# Create the agent\n", + "agent = client.agents.create_or_update(\n", + " agent_id=AGENT_UUID,\n", + " name=name,\n", + " about=about,\n", + " model=\"gpt-4o\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Defining a Task\n", + "\n", + "Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\n", + "\n", + "You can use them to conduct complex actions by defining them step-by-step.\n", + "\n", + "To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks)." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "\n", + "openweathermap_api_key = \"YOUR_API_KEY\"\n", + "brave_api_key = \"YOUR_API_KEY\"\n", + "\n", + "# Defining the task\n", + "task_def = yaml.safe_load(f\"\"\"\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", + "name: Julep Tourist Plan With Weather And Attractions\n", + "description: A task that plans a trip with weather and attractions.\n", + "\n", + "########################################################\n", + "####################### INPUT SCHEMA ##################\n", + "######################################################## \n", + "input_schema:\n", + " type: object\n", + " properties:\n", + " locations:\n", + " type: array\n", + " items:\n", + " type: string\n", + " description: The locations to search for.\n", + "\n", + "########################################################\n", + "####################### TOOLS ##########################\n", + "########################################################\n", + "\n", + "# Define the tools that the task will use in this workflow\n", + "tools:\n", + "- name: wikipedia\n", + " type: integration\n", + " integration:\n", + " provider: wikipedia\n", + "\n", + "- name: weather\n", + " type: integration\n", + " integration:\n", + " provider: weather\n", + " setup:\n", + " openweathermap_api_key: {openweathermap_api_key}\n", + "\n", + "- name: internet_search\n", + " type: integration\n", + " integration:\n", + " provider: brave\n", + " setup:\n", + " brave_api_key: {brave_api_key}\n", + "\n", + "########################################################\n", + "####################### MAIN WORKFLOW ##########################\n", + "########################################################\n", + "\n", + "main:\n", + "# Step 0: Fetch weather data for each location\n", + "- over: $ steps[0].input.locations\n", + " map:\n", + " tool: weather\n", + " arguments:\n", + " location: $ _\n", + "\n", + "# Step 1: Search Wikipedia for tourist attractions for each location\n", + "- over: $ steps[0].input.locations\n", + " map:\n", + " tool: internet_search\n", + " arguments:\n", + " query: $ 'tourist attractions in ' + _\n", + "\n", + "# Step 2: Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n", + "- evaluate:\n", + " zipped: |-\n", + " $ list(\n", + " zip(\n", + " steps[0].input.locations,\n", + " [output['result'] for output in steps[0].output],\n", + " steps[1].output\n", + " )\n", + " )\n", + "\n", + "# Step 3: Create an itinerary for each location\n", + "- over: $ _['zipped']\n", + " parallelism: 3\n", + " # Inside the map step, each `_` represents the current element in the list\n", + " # which is a tuple of (location, weather, attractions)\n", + " map:\n", + " prompt:\n", + " - role: system\n", + " content: >-\n", + " $ f'''You are {{agent.name}}. Your task is to create a detailed itinerary\n", + " for visiting tourist attractions in some locations.\n", + " The user will give you the following information for each location:\n", + "\n", + " - The location\n", + " - The current weather condition\n", + " - The top tourist attractions'''\n", + " - role: user\n", + " content: >-\n", + " $ f'''Location: \"{{_[0]}}\"\n", + " Weather: \"{{_[1]}}\"\n", + " Attractions: \"{{_[2]}}\"'''\n", + " unwrap: true\n", + "\n", + "# Step 4: Create a final plan by joining the activities for each location\n", + "- evaluate:\n", + " final_plan: |-\n", + " $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n", + "\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "# creating the task object\n", + "task = client.tasks.create_or_update(\n", + " task_id=TASK_UUID,\n", + " agent_id=AGENT_UUID,\n", + " **task_def\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an Execution\n", + "\n", + "An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\n", + "\n", + "To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution)." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Started an execution. Execution ID: 067ffa47-3b83-79b7-8000-eaaa1a013f0e\n" + ] + } + ], + "source": [ + "execution = client.executions.create(\n", + " task_id=task.id,\n", + " input={\n", + " \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n", + " }\n", + ")\n", + "\n", + "print(\"Started an execution. Execution ID:\", execution.id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking execution details and output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are multiple ways to get the execution details and the output:\n", + "\n", + "1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\n", + "\n", + "2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\n", + "\n", + "\n", + "Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: running\n", + "--------------------------------------------------\n", + "Execution status: succeeded\n", + "--------------------------------------------------\n", + "Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\n", + "\n", + "### Day 1: Arrival and Exploration\n", + "\n", + "**Morning:**\n", + "- **Central Park:**\n", + " - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\u00b0C, and a chance to see the iconic landscapes.\n", + " - Address: New York, NY\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\n", + "\n", + "**Mid-Morning:**\n", + "- **Metropolitan Museum of Art:**\n", + " - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\n", + " - Address: 1000 5th Ave, New York, NY 10028\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\n", + "\n", + "**Afternoon:**\n", + "- **Lunch near the Upper East Side:**\n", + " - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\n", + "- **Museum of Modern Art (MoMA):**\n", + " - After lunch, take a short walk to MoMA for a dose of contemporary art.\n", + " - Address: 11 W 53rd St, New York, NY 10019\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Times Square:**\n", + " - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\n", + " - Address: Manhattan, NY 10036\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\n", + "\n", + "### Day 2: Iconic Landmarks\n", + "\n", + "**Morning:**\n", + "- **Statue of Liberty and Ellis Island:**\n", + " - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\n", + " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", + "\n", + "**Afternoon:**\n", + "- **Lunch in Lower Manhattan:**\n", + " - Explore dining options in the Financial District.\n", + "- **9/11 Memorial and Museum:**\n", + " - Visit this poignant site to pay respects and learn about the events of 9/11.\n", + " - Address: 180 Greenwich St, New York, NY 10007\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Broadway Show:**\n", + " - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\n", + " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", + "\n", + "### Day 3: Adventure and Relaxation\n", + "\n", + "**Morning:**\n", + "- **High Line Park:**\n", + " - Enjoy a unique stroll along this elevated linear park on a former rail track.\n", + " - Address: New York, NY 10011\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\n", + "\n", + "**Afternoon:**\n", + "- **Chelsea Market:**\n", + " - Experience an array of food options in this historic marketplace for lunch.\n", + " - Address: 75 9th Ave, New York, NY 10011\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Brooklyn Bridge Walk:**\n", + " - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\n", + "\n", + "With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\n", + "---------------\n", + "Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\n", + "\n", + "---\n", + "\n", + "**London Day Itinerary**\n", + "\n", + "**Morning:**\n", + "\n", + "1. **Breakfast at Borough Market**\n", + " - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\n", + "\n", + "2. **Tower of London**\n", + " - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\n", + "\n", + "**Midday:**\n", + "\n", + "3. **Walk Along the Thames & Tower Bridge**\n", + " - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\n", + "\n", + "4. **Lunch at a Pub in Covent Garden**\n", + " - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\n", + "\n", + "**Afternoon:**\n", + "\n", + "5. **British Museum**\n", + " - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\n", + "\n", + "6. **Stroll through Leadenhall Market**\n", + " - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\n", + "\n", + "**Evening:**\n", + "\n", + "7. **Dinner and Evening at The Sky Garden**\n", + " - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\u00b0 views of London's skyline.\n", + "\n", + "8. **Walk Around South Bank**\n", + " - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\n", + "\n", + "**Tips:**\n", + "- Carry an umbrella or a light waterproof jacket just in case.\n", + "- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\n", + "- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\n", + "\n", + "Have a fantastic day exploring London!\n", + "---------------\n", + "### Paris Itinerary\n", + "\n", + "#### **Day 1: Arrival and Evening River Cruise**\n", + "\n", + "- **Morning:**\n", + " - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \n", + " - **Breakfast at a Local Caf\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\u00e9 au lait at a nearby caf\u00e9.\n", + "\n", + "- **Afternoon:**\n", + " - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\n", + " - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\n", + "\n", + "- **Evening:**\n", + " - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\n", + " - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\n", + "\n", + "#### **Day 2: Classic Paris Sights**\n", + "\n", + "- **Morning:**\n", + " - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\n", + " - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\n", + "\n", + "- **Afternoon:**\n", + " - **Lunch at a Caf\u00e9:** Enjoy lunch at a caf\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\u00e7oise.\n", + " - **Walk along the Champs-\u00c9lys\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\n", + "\n", + "- **Evening:**\n", + " - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\n", + "\n", + "#### **Day 3: Art, Culture, and Relaxation**\n", + "\n", + "- **Morning:**\n", + " - **Mus\u00e9e d'Orsay:** Visit the Mus\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\n", + " - **Explore Saint-Germain-des-Pr\u00e9s:** Discover the boutiques and caf\u00e9s in this historic district.\n", + "\n", + "- **Afternoon:**\n", + " - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\n", + " - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\n", + "\n", + "- **Evening:**\n", + " - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\n", + "\n", + "#### **Tips:**\n", + "- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\u00b0C).\n", + "- **Travel Consideration:** Use public transport like the M\u00e9tro to navigate efficiently.\n", + "- **Pass Options:** Consider purchasing the Paris Pass\u00ae for discounts and ease of access at major attractions.\n", + "\n", + "With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\n", + "---------------\n", + "**Detailed Itinerary for a Day in Tokyo**\n", + "\n", + "*Weather Overview:*\n", + "- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\n", + "\n", + "**Morning:**\n", + "\n", + "1. **Visit Asakusa and Sens\u014d-ji Temple:**\n", + " - Start your day in the historical district of Asakusa. Explore Sens\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\n", + " - *Time: 9:00 AM - 11:00 AM*\n", + "\n", + "2. **Breakfast at Asakusa:**\n", + " - Enjoy a traditional Japanese breakfast at one of the local caf\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\n", + "\n", + "**Midday:**\n", + "\n", + "1. **Ueno Park and Museums:**\n", + " - Head over to Ueno Park, a large public park with museums and beautiful gardens.\n", + " - Visit the Tokyo National Museum to explore Japanese art and history.\n", + " - *Time: 11:30 AM - 1:30 PM*\n", + "\n", + "2. **Lunch in Ueno:**\n", + " - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\n", + "\n", + "**Afternoon:**\n", + "\n", + "1. **Tokyo Skytree:**\n", + " - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\n", + " - *Time: 2:30 PM - 4:00 PM*\n", + "\n", + "2. **Shibuya & Harajuku:**\n", + " - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\n", + " - Don\u2019t miss a walk through Yoyogi Park, a large urban park that\u2019s perfect for relaxing.\n", + " - *Time: 4:30 PM - 6:00 PM*\n", + "\n", + "**Evening:**\n", + "\n", + "1. **Dinner in Shinjuku:**\n", + " - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\n", + " - *Time: 7:00 PM - 8:30 PM*\n", + "\n", + "2. **Explore Shinjuku Nightlife:**\n", + " - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\n", + " - *Time: 8:30 PM onward*\n", + "\n", + "*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\n", + "- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\n", + "- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\n", + "- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\n", + "\n", + "Enjoy your day exploring the vibrant and diverse city of Tokyo!\n", + "---------------\n", + "### Sydney Itinerary - Exploring with Light Rain\n", + "\n", + "#### **Day 1: Arrival and Iconic Landmarks**\n", + "\n", + "**Morning:**\n", + "- **Sydney Opera House** \n", + " Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\u2019t forget to bring a light raincoat as there\u2019s some rain expected.\n", + "\n", + "**Afternoon:**\n", + "- **Sydney Harbour Bridge** \n", + " Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\u2019s cloudy.\n", + "\n", + "**Evening:**\n", + "- **The Rocks District** \n", + " Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\n", + "\n", + "#### **Day 2: Culture and Relaxation**\n", + "\n", + "**Morning:**\n", + "- **Art Gallery of New South Wales** \n", + " Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\n", + "\n", + "**Afternoon:**\n", + "- **Sydney Royal Botanic Garden** \n", + " Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\n", + "\n", + "**Evening:**\n", + "- **Dinner in Darling Harbour** \n", + " Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\n", + "\n", + "#### **Day 3: Exploration and Adventure**\n", + "\n", + "**Morning:**\n", + "- **Taronga Zoo** \n", + " Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\n", + "\n", + "**Afternoon:** \n", + "- **Bondi Beach & Coastal Walk** \n", + " Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\n", + "\n", + "**Evening:**\n", + "- **Sydney Observatory** \n", + " Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\n", + "\n", + "### **Notes:**\n", + "- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\n", + "- **Bookings**: It\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\n", + "- **Transportation**: Utilize Sydney\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\n", + "\n", + "Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\n" + ] + } + ], + "source": [ + "import time\n", + "\n", + "execution = client.executions.get(execution.id)\n", + "\n", + "while execution.status != \"succeeded\":\n", + " time.sleep(5)\n", + " execution = client.executions.get(execution.id)\n", + " print(\"Execution status: \", execution.status)\n", + " print(\"-\"*50)\n", + "\n", + "execution = client.executions.get(execution.id)\n", + "\n", + "if 'final_plan' in execution.output:\n", + " print(execution.output['final_plan'])\n", + "else:\n", + " print(execution.output)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transition type: init\n", + "Transition output: {'locations': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']}\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Sydney\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: London\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Tokyo\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Paris\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: New York\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222\u00b0\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87\u00b0C\\n - High: 15.83\u00b0C\\n - Low: 13.86\u00b0C\\n - Feels like: 13.59\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%'}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250\u00b0\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29\u00b0C\\n - High: 18.17\u00b0C\\n - Low: 16.53\u00b0C\\n - Feels like: 17.14\u00b0C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\"}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200\u00b0\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43\u00b0C\\n - High: 14.49\u00b0C\\n - Low: 12.43\u00b0C\\n - Feels like: 12.16\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%'}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20\u00b0\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37\u00b0C\\n - High: 15.91\u00b0C\\n - Low: 13.67\u00b0C\\n - Feels like: 13.75\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%'}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270\u00b0\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74\u00b0C\\n - High: 8.45\u00b0C\\n - Low: 6.64\u00b0C\\n - Feels like: 3.15\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%'}\n", + "--------------------------------------------------\n", + "Transition type: step\n", + "Transition output: [{'result': 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270\u00b0\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74\u00b0C\\n - High: 8.45\u00b0C\\n - Low: 6.64\u00b0C\\n - Feels like: 3.15\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%'}, {'result': 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222\u00b0\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87\u00b0C\\n - High: 15.83\u00b0C\\n - Low: 13.86\u00b0C\\n - Feels like: 13.59\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%'}, {'result': 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200\u00b0\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43\u00b0C\\n - High: 14.49\u00b0C\\n - Low: 12.43\u00b0C\\n - Feels like: 12.16\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%'}, {'result': 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20\u00b0\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37\u00b0C\\n - High: 15.91\u00b0C\\n - Low: 13.67\u00b0C\\n - Feels like: 13.75\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%'}, {'result': \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250\u00b0\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29\u00b0C\\n - High: 18.17\u00b0C\\n - Low: 16.53\u00b0C\\n - Feels like: 17.14\u00b0C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\"}]\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Sydney\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: New York\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: London\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Tokyo\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: Paris\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\u00ae', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass\u00ae. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\u2026'}]}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\u00ae', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass\u00ae. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}\n", + "--------------------------------------------------\n", + "Transition type: step\n", + "Transition output: [{'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\u00ae', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass\u00ae. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\u2026'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\u00ae', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass\u00ae. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}, {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\n", + "--------------------------------------------------\n", + "Transition type: step\n", + "Transition output: {'zipped': [['New York', 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270\u00b0\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74\u00b0C\\n - High: 8.45\u00b0C\\n - Low: 6.64\u00b0C\\n - Feels like: 3.15\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\u00ae', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass\u00ae. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}], ['London', 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222\u00b0\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87\u00b0C\\n - High: 15.83\u00b0C\\n - Low: 13.86\u00b0C\\n - Feels like: 13.59\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\u2026'}]}], ['Paris', 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200\u00b0\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43\u00b0C\\n - High: 14.49\u00b0C\\n - Low: 12.43\u00b0C\\n - Feels like: 12.16\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\u00ae', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass\u00ae. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}], ['Tokyo', 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20\u00b0\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37\u00b0C\\n - High: 15.91\u00b0C\\n - Low: 13.67\u00b0C\\n - Feels like: 13.75\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}], ['Sydney', \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250\u00b0\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29\u00b0C\\n - High: 18.17\u00b0C\\n - Low: 16.53\u00b0C\\n - Feels like: 17.14\u00b0C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]]}\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: ['Paris', 'In Paris, the current weather is as follows:\\nDetailed status: broken clouds\\nWind speed: 3.09 m/s, direction: 200\u00b0\\nHumidity: 51%\\nTemperature: \\n - Current: 13.43\u00b0C\\n - High: 14.49\u00b0C\\n - Low: 12.43\u00b0C\\n - Feels like: 12.16\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do in Paris, France: See Tripadvisor's 5,086,085 traveler reviews and photos of Paris tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Paris. Visit top-rated & must-see attractions.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\u00ae', 'snippet': 'Save up to 50% at top Paris attractions with The Paris Pass\u00ae. Our passes offer great savings, freedom to choose and attractions for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you've been dreaming of a visit to the Eiffel Tower, Louvre Museum and Moulin Rouge, plan your trip with these expert recommendations for things to do in Paris.'}]}]\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: ['London', 'In London, the current weather is as follows:\\nDetailed status: scattered clouds\\nWind speed: 8.05 m/s, direction: 222\u00b0\\nHumidity: 45%\\nTemperature: \\n - Current: 14.87\u00b0C\\n - High: 15.83\u00b0C\\n - Low: 13.86\u00b0C\\n - Feels like: 13.59\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do in London, England: See Tripadvisor's 7,344,050 traveler reviews and photos of London tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in London. Visit top-rated & must-see attractions.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \"London attractions | Visit London's top tourist attractions\", 'snippet': 'See world-famous London attractions and iconic landmarks, like the Tower of London, Buckingham Palace and the London Eye, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city's rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the Sky Garden recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\u2026'}]}]\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: ['New York', 'In New York, the current weather is as follows:\\nDetailed status: few clouds\\nWind speed: 10.29 m/s, direction: 270\u00b0\\nHumidity: 52%\\nTemperature: \\n - Current: 7.74\u00b0C\\n - High: 8.45\u00b0C\\n - Low: 6.64\u00b0C\\n - Feels like: 3.15\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do in New York City, New York: See Tripadvisor's 4,251,245 traveler reviews and photos of New York City tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in New York City. Visit top-rated & must-see attractions.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you're into architecture, Broadway theater, restaurants or other cultural hotspots, New York City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\u00ae', 'snippet': 'Save up to 50% at top New York attractions with The New York Pass\u00ae. Our passes offer great savings, freedom to choose and 100+ attractions for everyone.'}]}]\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\n", + "\n", + "---\n", + "\n", + "**London Day Itinerary**\n", + "\n", + "**Morning:**\n", + "\n", + "1. **Breakfast at Borough Market**\n", + " - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\n", + "\n", + "2. **Tower of London**\n", + " - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\n", + "\n", + "**Midday:**\n", + "\n", + "3. **Walk Along the Thames & Tower Bridge**\n", + " - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\n", + "\n", + "4. **Lunch at a Pub in Covent Garden**\n", + " - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\n", + "\n", + "**Afternoon:**\n", + "\n", + "5. **British Museum**\n", + " - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\n", + "\n", + "6. **Stroll through Leadenhall Market**\n", + " - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\n", + "\n", + "**Evening:**\n", + "\n", + "7. **Dinner and Evening at The Sky Garden**\n", + " - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\u00b0 views of London's skyline.\n", + "\n", + "8. **Walk Around South Bank**\n", + " - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\n", + "\n", + "**Tips:**\n", + "- Carry an umbrella or a light waterproof jacket just in case.\n", + "- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\n", + "- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\n", + "\n", + "Have a fantastic day exploring London!\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: ### Paris Itinerary\n", + "\n", + "#### **Day 1: Arrival and Evening River Cruise**\n", + "\n", + "- **Morning:**\n", + " - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \n", + " - **Breakfast at a Local Caf\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\u00e9 au lait at a nearby caf\u00e9.\n", + "\n", + "- **Afternoon:**\n", + " - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\n", + " - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\n", + "\n", + "- **Evening:**\n", + " - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\n", + " - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\n", + "\n", + "#### **Day 2: Classic Paris Sights**\n", + "\n", + "- **Morning:**\n", + " - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\n", + " - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\n", + "\n", + "- **Afternoon:**\n", + " - **Lunch at a Caf\u00e9:** Enjoy lunch at a caf\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\u00e7oise.\n", + " - **Walk along the Champs-\u00c9lys\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\n", + "\n", + "- **Evening:**\n", + " - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\n", + "\n", + "#### **Day 3: Art, Culture, and Relaxation**\n", + "\n", + "- **Morning:**\n", + " - **Mus\u00e9e d'Orsay:** Visit the Mus\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\n", + " - **Explore Saint-Germain-des-Pr\u00e9s:** Discover the boutiques and caf\u00e9s in this historic district.\n", + "\n", + "- **Afternoon:**\n", + " - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\n", + " - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\n", + "\n", + "- **Evening:**\n", + " - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\n", + "\n", + "#### **Tips:**\n", + "- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\u00b0C).\n", + "- **Travel Consideration:** Use public transport like the M\u00e9tro to navigate efficiently.\n", + "- **Pass Options:** Consider purchasing the Paris Pass\u00ae for discounts and ease of access at major attractions.\n", + "\n", + "With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\n", + "\n", + "### Day 1: Arrival and Exploration\n", + "\n", + "**Morning:**\n", + "- **Central Park:**\n", + " - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\u00b0C, and a chance to see the iconic landscapes.\n", + " - Address: New York, NY\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\n", + "\n", + "**Mid-Morning:**\n", + "- **Metropolitan Museum of Art:**\n", + " - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\n", + " - Address: 1000 5th Ave, New York, NY 10028\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\n", + "\n", + "**Afternoon:**\n", + "- **Lunch near the Upper East Side:**\n", + " - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\n", + "- **Museum of Modern Art (MoMA):**\n", + " - After lunch, take a short walk to MoMA for a dose of contemporary art.\n", + " - Address: 11 W 53rd St, New York, NY 10019\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Times Square:**\n", + " - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\n", + " - Address: Manhattan, NY 10036\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\n", + "\n", + "### Day 2: Iconic Landmarks\n", + "\n", + "**Morning:**\n", + "- **Statue of Liberty and Ellis Island:**\n", + " - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\n", + " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", + "\n", + "**Afternoon:**\n", + "- **Lunch in Lower Manhattan:**\n", + " - Explore dining options in the Financial District.\n", + "- **9/11 Memorial and Museum:**\n", + " - Visit this poignant site to pay respects and learn about the events of 9/11.\n", + " - Address: 180 Greenwich St, New York, NY 10007\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Broadway Show:**\n", + " - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\n", + " - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\n", + "\n", + "### Day 3: Adventure and Relaxation\n", + "\n", + "**Morning:**\n", + "- **High Line Park:**\n", + " - Enjoy a unique stroll along this elevated linear park on a former rail track.\n", + " - Address: New York, NY 10011\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\n", + "\n", + "**Afternoon:**\n", + "- **Chelsea Market:**\n", + " - Experience an array of food options in this historic marketplace for lunch.\n", + " - Address: 75 9th Ave, New York, NY 10011\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\n", + "\n", + "**Evening:**\n", + "- **Brooklyn Bridge Walk:**\n", + " - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\n", + " - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\n", + "\n", + "With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: ['Sydney', \"In Sydney, the current weather is as follows:\\nDetailed status: light rain\\nWind speed: 5.66 m/s, direction: 250\u00b0\\nHumidity: 79%\\nTemperature: \\n - Current: 17.29\u00b0C\\n - High: 18.17\u00b0C\\n - Low: 16.53\u00b0C\\n - Feels like: 17.14\u00b0C\\nRain: {'1h': 0.11}\\nHeat index: None\\nCloud cover: 40%\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top attractions in Sydney. Explore Sydney's many attractions, sightseeing spots & landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do in Sydney, Australia: See Tripadvisor's 1,011,795 traveler reviews and photos of Sydney tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Sydney. Visit top-rated & must-see attractions.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to Sydney, Australia. Explore the city's natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\n", + "--------------------------------------------------\n", + "Transition type: init_branch\n", + "Transition output: ['Tokyo', 'In Tokyo, the current weather is as follows:\\nDetailed status: clear sky\\nWind speed: 4.63 m/s, direction: 20\u00b0\\nHumidity: 30%\\nTemperature: \\n - Current: 15.37\u00b0C\\n - High: 15.91\u00b0C\\n - Low: 13.67\u00b0C\\n - Feels like: 13.75\u00b0C\\nRain: {}\\nHeat index: None\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do in Tokyo, Japan: See Tripadvisor's 1,688,470 traveler reviews and photos of Tokyo tourist attractions. Find what to do today, this weekend, or in April. We have reviews of the best places to see in Tokyo. Visit top-rated & must-see attractions.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our Tokyo tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the Tokyo of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city's history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, Tokyo also offers a number of attractive green spaces in the city center and within relatively short train rides at its outskirts.'}]}]\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: ### Sydney Itinerary - Exploring with Light Rain\n", + "\n", + "#### **Day 1: Arrival and Iconic Landmarks**\n", + "\n", + "**Morning:**\n", + "- **Sydney Opera House** \n", + " Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\u2019t forget to bring a light raincoat as there\u2019s some rain expected.\n", + "\n", + "**Afternoon:**\n", + "- **Sydney Harbour Bridge** \n", + " Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\u2019s cloudy.\n", + "\n", + "**Evening:**\n", + "- **The Rocks District** \n", + " Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\n", + "\n", + "#### **Day 2: Culture and Relaxation**\n", + "\n", + "**Morning:**\n", + "- **Art Gallery of New South Wales** \n", + " Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\n", + "\n", + "**Afternoon:**\n", + "- **Sydney Royal Botanic Garden** \n", + " Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\n", + "\n", + "**Evening:**\n", + "- **Dinner in Darling Harbour** \n", + " Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\n", + "\n", + "#### **Day 3: Exploration and Adventure**\n", + "\n", + "**Morning:**\n", + "- **Taronga Zoo** \n", + " Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\n", + "\n", + "**Afternoon:** \n", + "- **Bondi Beach & Coastal Walk** \n", + " Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\n", + "\n", + "**Evening:**\n", + "- **Sydney Observatory** \n", + " Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\n", + "\n", + "### **Notes:**\n", + "- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\n", + "- **Bookings**: It\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\n", + "- **Transportation**: Utilize Sydney\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\n", + "\n", + "Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\n", + "--------------------------------------------------\n", + "Transition type: finish_branch\n", + "Transition output: **Detailed Itinerary for a Day in Tokyo**\n", + "\n", + "*Weather Overview:*\n", + "- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\n", + "\n", + "**Morning:**\n", + "\n", + "1. **Visit Asakusa and Sens\u014d-ji Temple:**\n", + " - Start your day in the historical district of Asakusa. Explore Sens\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\n", + " - *Time: 9:00 AM - 11:00 AM*\n", + "\n", + "2. **Breakfast at Asakusa:**\n", + " - Enjoy a traditional Japanese breakfast at one of the local caf\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\n", + "\n", + "**Midday:**\n", + "\n", + "1. **Ueno Park and Museums:**\n", + " - Head over to Ueno Park, a large public park with museums and beautiful gardens.\n", + " - Visit the Tokyo National Museum to explore Japanese art and history.\n", + " - *Time: 11:30 AM - 1:30 PM*\n", + "\n", + "2. **Lunch in Ueno:**\n", + " - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\n", + "\n", + "**Afternoon:**\n", + "\n", + "1. **Tokyo Skytree:**\n", + " - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\n", + " - *Time: 2:30 PM - 4:00 PM*\n", + "\n", + "2. **Shibuya & Harajuku:**\n", + " - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\n", + " - Don\u2019t miss a walk through Yoyogi Park, a large urban park that\u2019s perfect for relaxing.\n", + " - *Time: 4:30 PM - 6:00 PM*\n", + "\n", + "**Evening:**\n", + "\n", + "1. **Dinner in Shinjuku:**\n", + " - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\n", + " - *Time: 7:00 PM - 8:30 PM*\n", + "\n", + "2. **Explore Shinjuku Nightlife:**\n", + " - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\n", + " - *Time: 8:30 PM onward*\n", + "\n", + "*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\n", + "- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\n", + "- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\n", + "- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\n", + "\n", + "Enjoy your day exploring the vibrant and diverse city of Tokyo!\n", + "--------------------------------------------------\n", + "Transition type: step\n", + "Transition output: [\"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\\n### Day 1: Arrival and Exploration\\n\\n**Morning:**\\n- **Central Park:**\\n - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\u00b0C, and a chance to see the iconic landscapes.\\n - Address: New York, NY\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\\n**Mid-Morning:**\\n- **Metropolitan Museum of Art:**\\n - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n - Address: 1000 5th Ave, New York, NY 10028\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Lunch near the Upper East Side:**\\n - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n- **Museum of Modern Art (MoMA):**\\n - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n - Address: 11 W 53rd St, New York, NY 10019\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Times Square:**\\n - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n - Address: Manhattan, NY 10036\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\\n### Day 2: Iconic Landmarks\\n\\n**Morning:**\\n- **Statue of Liberty and Ellis Island:**\\n - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n**Afternoon:**\\n- **Lunch in Lower Manhattan:**\\n - Explore dining options in the Financial District.\\n- **9/11 Memorial and Museum:**\\n - Visit this poignant site to pay respects and learn about the events of 9/11.\\n - Address: 180 Greenwich St, New York, NY 10007\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Broadway Show:**\\n - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n### Day 3: Adventure and Relaxation\\n\\n**Morning:**\\n- **High Line Park:**\\n - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n - Address: New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Chelsea Market:**\\n - Experience an array of food options in this historic marketplace for lunch.\\n - Address: 75 9th Ave, New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Brooklyn Bridge Walk:**\\n - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\", \"Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\\n---\\n\\n**London Day Itinerary**\\n\\n**Morning:**\\n\\n1. **Breakfast at Borough Market**\\n - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\\n2. **Tower of London**\\n - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\\n**Midday:**\\n\\n3. **Walk Along the Thames & Tower Bridge**\\n - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\\n4. **Lunch at a Pub in Covent Garden**\\n - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\\n**Afternoon:**\\n\\n5. **British Museum**\\n - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\\n6. **Stroll through Leadenhall Market**\\n - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\\n**Evening:**\\n\\n7. **Dinner and Evening at The Sky Garden**\\n - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\u00b0 views of London's skyline.\\n\\n8. **Walk Around South Bank**\\n - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\\n**Tips:**\\n- Carry an umbrella or a light waterproof jacket just in case.\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\\nHave a fantastic day exploring London!\", \"### Paris Itinerary\\n\\n#### **Day 1: Arrival and Evening River Cruise**\\n\\n- **Morning:**\\n - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n - **Breakfast at a Local Caf\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\u00e9 au lait at a nearby caf\u00e9.\\n\\n- **Afternoon:**\\n - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\\n- **Evening:**\\n - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\\n#### **Day 2: Classic Paris Sights**\\n\\n- **Morning:**\\n - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\\n- **Afternoon:**\\n - **Lunch at a Caf\u00e9:** Enjoy lunch at a caf\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\u00e7oise.\\n - **Walk along the Champs-\u00c9lys\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\\n- **Evening:**\\n - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\\n#### **Day 3: Art, Culture, and Relaxation**\\n\\n- **Morning:**\\n - **Mus\u00e9e d'Orsay:** Visit the Mus\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n - **Explore Saint-Germain-des-Pr\u00e9s:** Discover the boutiques and caf\u00e9s in this historic district.\\n\\n- **Afternoon:**\\n - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\\n- **Evening:**\\n - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\\n#### **Tips:**\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\u00b0C).\\n- **Travel Consideration:** Use public transport like the M\u00e9tro to navigate efficiently.\\n- **Pass Options:** Consider purchasing the Paris Pass\u00ae for discounts and ease of access at major attractions.\\n\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\", \"**Detailed Itinerary for a Day in Tokyo**\\n\\n*Weather Overview:*\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\\n**Morning:**\\n\\n1. **Visit Asakusa and Sens\u014d-ji Temple:**\\n - Start your day in the historical district of Asakusa. Explore Sens\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n - *Time: 9:00 AM - 11:00 AM*\\n\\n2. **Breakfast at Asakusa:**\\n - Enjoy a traditional Japanese breakfast at one of the local caf\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\n\\n**Midday:**\\n\\n1. **Ueno Park and Museums:**\\n - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n - Visit the Tokyo National Museum to explore Japanese art and history.\\n - *Time: 11:30 AM - 1:30 PM*\\n\\n2. **Lunch in Ueno:**\\n - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\\n**Afternoon:**\\n\\n1. **Tokyo Skytree:**\\n - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n - *Time: 2:30 PM - 4:00 PM*\\n\\n2. **Shibuya & Harajuku:**\\n - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n - Don\u2019t miss a walk through Yoyogi Park, a large urban park that\u2019s perfect for relaxing.\\n - *Time: 4:30 PM - 6:00 PM*\\n\\n**Evening:**\\n\\n1. **Dinner in Shinjuku:**\\n - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n - *Time: 7:00 PM - 8:30 PM*\\n\\n2. **Explore Shinjuku Nightlife:**\\n - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n - *Time: 8:30 PM onward*\\n\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\", '### Sydney Itinerary - Exploring with Light Rain\\n\\n#### **Day 1: Arrival and Iconic Landmarks**\\n\\n**Morning:**\\n- **Sydney Opera House** \\n Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\u2019t forget to bring a light raincoat as there\u2019s some rain expected.\\n\\n**Afternoon:**\\n- **Sydney Harbour Bridge** \\n Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\u2019s cloudy.\\n\\n**Evening:**\\n- **The Rocks District** \\n Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\\n#### **Day 2: Culture and Relaxation**\\n\\n**Morning:**\\n- **Art Gallery of New South Wales** \\n Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\\n**Afternoon:**\\n- **Sydney Royal Botanic Garden** \\n Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\\n**Evening:**\\n- **Dinner in Darling Harbour** \\n Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\\n#### **Day 3: Exploration and Adventure**\\n\\n**Morning:**\\n- **Taronga Zoo** \\n Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\\n**Afternoon:** \\n- **Bondi Beach & Coastal Walk** \\n Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\\n**Evening:**\\n- **Sydney Observatory** \\n Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\\n### **Notes:**\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n- **Bookings**: It\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n- **Transportation**: Utilize Sydney\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!']\n", + "--------------------------------------------------\n", + "Transition type: finish\n", + "Transition output: {'final_plan': \"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\\n### Day 1: Arrival and Exploration\\n\\n**Morning:**\\n- **Central Park:**\\n - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\u00b0C, and a chance to see the iconic landscapes.\\n - Address: New York, NY\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\\n**Mid-Morning:**\\n- **Metropolitan Museum of Art:**\\n - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n - Address: 1000 5th Ave, New York, NY 10028\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Lunch near the Upper East Side:**\\n - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n- **Museum of Modern Art (MoMA):**\\n - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n - Address: 11 W 53rd St, New York, NY 10019\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Times Square:**\\n - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n - Address: Manhattan, NY 10036\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\\n### Day 2: Iconic Landmarks\\n\\n**Morning:**\\n- **Statue of Liberty and Ellis Island:**\\n - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n**Afternoon:**\\n- **Lunch in Lower Manhattan:**\\n - Explore dining options in the Financial District.\\n- **9/11 Memorial and Museum:**\\n - Visit this poignant site to pay respects and learn about the events of 9/11.\\n - Address: 180 Greenwich St, New York, NY 10007\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Broadway Show:**\\n - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\\n### Day 3: Adventure and Relaxation\\n\\n**Morning:**\\n- **High Line Park:**\\n - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n - Address: New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\\n**Afternoon:**\\n- **Chelsea Market:**\\n - Experience an array of food options in this historic marketplace for lunch.\\n - Address: 75 9th Ave, New York, NY 10011\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\\n**Evening:**\\n- **Brooklyn Bridge Walk:**\\n - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\n---------------\\nSure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\\n---\\n\\n**London Day Itinerary**\\n\\n**Morning:**\\n\\n1. **Breakfast at Borough Market**\\n - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\\n2. **Tower of London**\\n - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\\n**Midday:**\\n\\n3. **Walk Along the Thames & Tower Bridge**\\n - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\\n4. **Lunch at a Pub in Covent Garden**\\n - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\\n**Afternoon:**\\n\\n5. **British Museum**\\n - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\\n6. **Stroll through Leadenhall Market**\\n - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\\n**Evening:**\\n\\n7. **Dinner and Evening at The Sky Garden**\\n - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\u00b0 views of London's skyline.\\n\\n8. **Walk Around South Bank**\\n - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\\n**Tips:**\\n- Carry an umbrella or a light waterproof jacket just in case.\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\\nHave a fantastic day exploring London!\\n---------------\\n### Paris Itinerary\\n\\n#### **Day 1: Arrival and Evening River Cruise**\\n\\n- **Morning:**\\n - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n - **Breakfast at a Local Caf\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\u00e9 au lait at a nearby caf\u00e9.\\n\\n- **Afternoon:**\\n - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\\n- **Evening:**\\n - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\\n#### **Day 2: Classic Paris Sights**\\n\\n- **Morning:**\\n - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\\n- **Afternoon:**\\n - **Lunch at a Caf\u00e9:** Enjoy lunch at a caf\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\u00e7oise.\\n - **Walk along the Champs-\u00c9lys\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\\n- **Evening:**\\n - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\\n#### **Day 3: Art, Culture, and Relaxation**\\n\\n- **Morning:**\\n - **Mus\u00e9e d'Orsay:** Visit the Mus\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n - **Explore Saint-Germain-des-Pr\u00e9s:** Discover the boutiques and caf\u00e9s in this historic district.\\n\\n- **Afternoon:**\\n - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\\n- **Evening:**\\n - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\\n#### **Tips:**\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\u00b0C).\\n- **Travel Consideration:** Use public transport like the M\u00e9tro to navigate efficiently.\\n- **Pass Options:** Consider purchasing the Paris Pass\u00ae for discounts and ease of access at major attractions.\\n\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\n---------------\\n**Detailed Itinerary for a Day in Tokyo**\\n\\n*Weather Overview:*\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\\n**Morning:**\\n\\n1. **Visit Asakusa and Sens\u014d-ji Temple:**\\n - Start your day in the historical district of Asakusa. Explore Sens\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n - *Time: 9:00 AM - 11:00 AM*\\n\\n2. **Breakfast at Asakusa:**\\n - Enjoy a traditional Japanese breakfast at one of the local caf\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\n\\n**Midday:**\\n\\n1. **Ueno Park and Museums:**\\n - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n - Visit the Tokyo National Museum to explore Japanese art and history.\\n - *Time: 11:30 AM - 1:30 PM*\\n\\n2. **Lunch in Ueno:**\\n - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\\n**Afternoon:**\\n\\n1. **Tokyo Skytree:**\\n - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n - *Time: 2:30 PM - 4:00 PM*\\n\\n2. **Shibuya & Harajuku:**\\n - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n - Don\u2019t miss a walk through Yoyogi Park, a large urban park that\u2019s perfect for relaxing.\\n - *Time: 4:30 PM - 6:00 PM*\\n\\n**Evening:**\\n\\n1. **Dinner in Shinjuku:**\\n - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n - *Time: 7:00 PM - 8:30 PM*\\n\\n2. **Explore Shinjuku Nightlife:**\\n - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n - *Time: 8:30 PM onward*\\n\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\\n---------------\\n### Sydney Itinerary - Exploring with Light Rain\\n\\n#### **Day 1: Arrival and Iconic Landmarks**\\n\\n**Morning:**\\n- **Sydney Opera House** \\n Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\u2019t forget to bring a light raincoat as there\u2019s some rain expected.\\n\\n**Afternoon:**\\n- **Sydney Harbour Bridge** \\n Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\u2019s cloudy.\\n\\n**Evening:**\\n- **The Rocks District** \\n Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\\n#### **Day 2: Culture and Relaxation**\\n\\n**Morning:**\\n- **Art Gallery of New South Wales** \\n Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\\n**Afternoon:**\\n- **Sydney Royal Botanic Garden** \\n Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\\n**Evening:**\\n- **Dinner in Darling Harbour** \\n Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\\n#### **Day 3: Exploration and Adventure**\\n\\n**Morning:**\\n- **Taronga Zoo** \\n Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\\n**Afternoon:** \\n- **Bondi Beach & Coastal Walk** \\n Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\\n**Evening:**\\n- **Sydney Observatory** \\n Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\\n### **Notes:**\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n- **Bookings**: It\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n- **Transportation**: Utilize Sydney\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\"}\n", + "--------------------------------------------------\n" + ] + } + ], + "source": [ + "# Lists all the task steps that have been executed up to this point in time\n", + "transitions = client.executions.transitions.list(execution_id=execution.id).items\n", + "\n", + "# Transitions are retrieved in reverse chronological order\n", + "for transition in reversed(transitions):\n", + " print(\"Transition type: \", transition.type)\n", + " print(\"Transition output: \", transition.output)\n", + " print(\"-\"*50)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/04-hook-generator-trending-reels.ipynb b/cookbooks/advanced/04-hook-generator-trending-reels.ipynb similarity index 100% rename from cookbooks/04-hook-generator-trending-reels.ipynb rename to cookbooks/advanced/04-hook-generator-trending-reels.ipynb diff --git a/cookbooks/05-video-processing-with-natural-language.ipynb b/cookbooks/advanced/05-video-processing-with-natural-language.ipynb similarity index 71% rename from cookbooks/05-video-processing-with-natural-language.ipynb rename to cookbooks/advanced/05-video-processing-with-natural-language.ipynb index bb3e44849..530d0b738 100644 --- a/cookbooks/05-video-processing-with-natural-language.ipynb +++ b/cookbooks/advanced/05-video-processing-with-natural-language.ipynb @@ -1,109 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task Definition: Video Processing with Natural Language\n", - "\n", - "### Overview\n", - "\n", - "This task leverages the cloudinary `integration` tool, and combines it with a prompt step to convert a natural language instructions and apply them to a given video.\n", - "\n", - "### Task Tools:\n", - "\n", - "**Cloudinary**: An `integration` type tool that can upload and transform media files.\n", - "\n", - "### Task Input:\n", - "\n", - "**video_url**: The URL of the video to transform.\n", - "\n", - "**public_id**: The public id of the video to transform.\n", - "\n", - "**transformation_prompt**: The natural language instructions to apply to the video.\n", - "\n", - "### Task Output:\n", - "\n", - "**transformed_video_url**: The URL of the transformed video.\n", - "\n", - "### Task Flow\n", - "\n", - "1. **Input**: The user provides a URL to a video and transformation instructions (in natural language) to apply to the video.\n", - "\n", - "2. **Cloudinary Tool Integration**: The `cloudinary_upload` tool is called to upload the video to cloudinary.\n", - "\n", - "3. **Prompt Step**: The prompt step is used to convert the natural language instructions into a json of transformation instructions that are compatible with Cloudinary's API. In this step, `gemini-1.5-pro` is used as the model due to its ability to read video files.\n", - "\n", - "4. **Cloudinary Tool Integration**: The `cloudinary_upload` tool is called again to apply the transformation instructions to the video.\n", - "\n", - "5. **Output**: The final output is the URL of the transformed video.\n", - "\n", - "```plaintext\n", - "+----------+ +------------+ +------------+ +-----------+\n", - "| Video | | Cloudinary | | Prompt | | Processed |\n", - "| Input | --> | Upload | --> | Step | --> | Video |\n", - "| | | | | (Gemini) | | |\n", - "+----------+ +------------+ +------------+ +-----------+\n", - " | | | |\n", - " | | | |\n", - " v v v v\n", - "\"video.mp4 + Upload video Generate JSON \"video.mp4 with\n", - "NL prompt\" transformations blur & overlay\"\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -120,18 +16,6 @@ "!pip install --upgrade julep --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 2, @@ -150,9 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "## creating julep client with the api key\n" ] }, { @@ -217,13 +99,13 @@ "source": [ "import yaml\n", "\n", - "cloudinary_api_key = \"your_cloudinary_api_key\"\n", - "cloudinary_api_secret = \"your_cloudinary_api_secret\"\n", - "cloudinary_cloud_name = \"your_cloudinary_cloud_name\"\n", + "cloudinary_api_key = os.environ[\"CLOUDINARY_API_KEY\"]\n", + "cloudinary_api_secret = os.environ[\"CLOUDINARY_API_SECRET\"]\n", + "cloudinary_cloud_name = os.environ[\"CLOUDINARY_CLOUD_NAME\"]\n", "\n", "# Define the task\n", "task_def = yaml.safe_load(f\"\"\"\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: Julep Video Processing With Natural Language\n", "description: Process a video using natural language instructions\n", "\n", @@ -328,18 +210,6 @@ "\"\"\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": 219, @@ -518,6 +388,17 @@ "if transitions[0].type == \"finish\":\n", " transformed_video_url = transitions[0].output['transformed_video_url']" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)lep.ai/concepts/tasks)" + ] } ], "metadata": { diff --git a/cookbooks/06-browser-use.ipynb b/cookbooks/advanced/06-browser-use.ipynb similarity index 60% rename from cookbooks/06-browser-use.ipynb rename to cookbooks/advanced/06-browser-use.ipynb index bedb0febe..626ba7aae 100644 --- a/cookbooks/06-browser-use.ipynb +++ b/cookbooks/advanced/06-browser-use.ipynb @@ -1,139 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task: Browser Use Assistant\n", - "\n", - "### Overview\n", - "\n", - "The Browser Use Assistant is an AI agent that can interact with a web browser to perform tasks on behalf of users. It uses a headless Chrome browser through BrowserBase integration, allowing it to navigate websites, click elements, and type text, all while providing visual feedback through screenshots.\n", - "\n", - "### Task Flow\n", - "\n", - "1. **Session Initialization**\n", - " - Create a Julep session for the AI agent\n", - " - Initialize a BrowserBase browser session\n", - " - Set up connection URLs and debugger access\n", - "\n", - "2. **Browser Setup**\n", - " - Configure browser viewport (1024x768)\n", - " - Initialize with Google homepage\n", - " - Establish CDP (Chrome DevTools Protocol) connection\n", - "\n", - "3. **Interactive Loop**\n", - " - Agent receives user goal\n", - " - Agent plans and executes browser actions\n", - " - Takes screenshots for visual confirmation\n", - " - Evaluates progress towards goal\n", - "\n", - "### Key Features\n", - "\n", - "- **Browser Automation**: Performs web interactions like navigation, clicking, and typing\n", - "- **Visual Feedback**: Captures screenshots to verify actions and understand page state\n", - "- **Goal-Oriented**: Continues executing actions until the user's goal is achieved\n", - "- **Secure Sessions**: Uses BrowserBase for isolated browser instances\n", - "\n", - "### Tools Integration\n", - "\n", - "```yaml\n", - "tools:\n", - "- BrowserBase Tools\n", - " - create_browserbase_session\n", - " - get_cdp_url\n", - " - get_session_view_urls\n", - " - perform_browser_action\n", - "- Julep Tools\n", - " - create_julep_session\n", - " - session_chat\n", - "```\n", - "\n", - "### System Capabilities\n", - "\n", - "```plaintext\n", - "* Headless Chrome browser interaction\n", - "* Browser action execution\n", - "* Screenshot-based visual feedback\n", - "* Single-tab operation\n", - "* Direct browser interaction (no UI controls)\n", - "* Text input and navigation\n", - "* Click coordination\n", - "```\n", - "\n", - "### Flow Diagram\n", - "\n", - "```plaintext\n", - "+-------------------+ +----------------------+ +------------------+\n", - "| Session Setup | | Browser Actions | | Goal Check |\n", - "| - Julep Session | --> | - Navigation | --> | - Evaluate |\n", - "| - Browser Session| | - Clicking | | - Continue/End |\n", - "+-------------------+ | - Typing | +------------------+\n", - " | - Screenshots |\n", - " +----------------------+\n", - " ↑\n", - " |\n", - " ↓\n", - " +----------------------+\n", - " | Agent Response |\n", - " | - Plan Actions |\n", - " | - Process Results |\n", - " +----------------------+\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -150,18 +16,6 @@ "!pip install julep -U --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 2, @@ -179,14 +33,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "## creating julep client with the api key\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -212,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -242,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -279,16 +131,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import yaml\n", - "# please replace the DEMO_API_KEY and DEMO_PROJECT_ID with your own API Key and Project ID of BrowserBase\n", + "import os\n", + "\n", + "browserbase_api_key = os.getenv(\"BROWSERBASE_API_KEY\")\n", + "browserbase_project_id = os.getenv(\"BROWSERBASE_PROJECT_ID\")\n", "\n", "# Defining the task\n", "task_def = yaml.safe_load('''\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: computer-use-task\n", "description: A task that uses a computer to navigate the web.\n", "\n", @@ -501,21 +356,9 @@ "''')\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -540,14 +383,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Started an execution. Execution ID: 067a63c3-638a-77e6-8000-3cd61baa9ebb\n" + "Started an execution. Execution ID: 0683064e-362b-7b1b-8000-6ada185329ea\n" ] } ], @@ -586,7 +429,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -595,7 +438,7 @@ "text": [ "Transtion Index: 0\n", "Transition Type: init\n", - "{'agent_id': '5113a738-f5a0-4b71-83e7-b98656985c92',\n", + "{'agent_id': '5502720b-cab1-481b-8750-a5ea04c1814f',\n", " 'goal': \"Navigate to JulepAI's Github repository and tell me the number of \"\n", " \"stars it has. Remember bro, the link for julep's repository is \"\n", " 'https://github.com/julep-ai/julep'}\n", @@ -604,80 +447,29 @@ "Transition Type: step\n", "{'auto_run_tools': False,\n", " 'context_overflow': None,\n", - " 'created_at': '2025-02-07T17:00:38.457752Z',\n", + " 'created_at': '2025-05-23T12:07:00.327671Z',\n", " 'forward_tool_calls': False,\n", - " 'id': '067a63c3-6752-7225-8000-754d7a2a6056',\n", + " 'id': '0683064e-453d-77ed-8000-3ba4d4b3b53d',\n", " 'kind': None,\n", " 'metadata': {},\n", - " 'recall_options': {'alpha': 0.7,\n", - " 'confidence': 0.6,\n", + " 'recall_options': {'confidence': 0.5,\n", " 'lang': 'en-US',\n", " 'limit': 10,\n", " 'max_query_length': 1000,\n", " 'metadata_filter': {},\n", - " 'mmr_strength': 0.0,\n", + " 'mmr_strength': 0.5,\n", " 'mode': 'vector',\n", " 'num_search_messages': 4},\n", " 'render_templates': True,\n", " 'situation': 'Juelp Browser Use Agent',\n", " 'summary': None,\n", - " 'system_template': '{%- if agent.name -%}\\n'\n", - " 'You are {{agent.name}}.{{\" \"}}\\n'\n", - " '{%- endif -%}\\n'\n", - " '\\n'\n", - " '{%- if agent.about -%}\\n'\n", - " 'About you: {{agent.about}}.{{\" \"}}\\n'\n", - " '{%- endif -%}\\n'\n", - " '\\n'\n", - " '{%- if user -%}\\n'\n", - " 'You are talking to a user\\n'\n", - " ' {%- if user.name -%}{{\" \"}} and their name is '\n", - " '{{user.name}}\\n'\n", - " ' {%- if user.about -%}. About the user: '\n", - " '{{user.about}}.{%- else -%}.{%- endif -%}\\n'\n", - " ' {%- endif -%}\\n'\n", - " '{%- endif -%}\\n'\n", - " '\\n'\n", - " '{{NEWLINE}}\\n'\n", - " '\\n'\n", - " '{%- if session.situation -%}\\n'\n", - " 'Situation: {{session.situation}}\\n'\n", - " '{%- endif -%}\\n'\n", - " '\\n'\n", - " '{{NEWLINE+NEWLINE}}\\n'\n", - " '\\n'\n", - " '{%- if agent.instructions -%}\\n'\n", - " 'Instructions:{{NEWLINE}}\\n'\n", - " ' {%- if agent.instructions is string -%}\\n'\n", - " ' {{agent.instructions}}{{NEWLINE}}\\n'\n", - " ' {%- else -%}\\n'\n", - " ' {%- for instruction in agent.instructions -%}\\n'\n", - " ' - {{instruction}}{{NEWLINE}}\\n'\n", - " ' {%- endfor -%}\\n'\n", - " ' {%- endif -%}\\n'\n", - " ' {{NEWLINE}}\\n'\n", - " '{%- endif -%}\\n'\n", - " '\\n'\n", - " '{%- if docs -%}\\n'\n", - " 'Relevant documents:{{NEWLINE}}\\n'\n", - " ' {%- for doc in docs -%}\\n'\n", - " ' {{doc.title}}{{NEWLINE}}\\n'\n", - " ' {%- if doc.content is string -%}\\n'\n", - " ' {{doc.content}}{{NEWLINE}}\\n'\n", - " ' {%- else -%}\\n'\n", - " ' {%- for snippet in doc.content -%}\\n'\n", - " ' {{snippet}}{{NEWLINE}}\\n'\n", - " ' {%- endfor -%}\\n'\n", - " ' {%- endif -%}\\n'\n", - " ' {{\"---\"}}\\n'\n", - " ' {%- endfor -%}\\n'\n", - " '{%- endif -%}',\n", + " 'system_template': None,\n", " 'token_budget': None,\n", - " 'updated_at': '2025-02-07T17:00:38.457752Z'}\n", + " 'updated_at': '2025-05-23T12:07:00.327671Z'}\n", "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n", "Transtion Index: 2\n", "Transition Type: step\n", - "{'julep_session_id': '067a63c3-6752-7225-8000-754d7a2a6056'}\n", + "{'julep_session_id': '0683064e-453d-77ed-8000-3ba4d4b3b53d'}\n", "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" ] } @@ -708,11 +500,22 @@ " pprint.pprint(reformat_output(output))\n", " print(\"----\"*100)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] } ], "metadata": { "kernelspec": { - "display_name": "julep", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -726,7 +529,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/cookbooks/07-personalized-research-assistant.ipynb b/cookbooks/advanced/07-personalized-research-assistant.ipynb similarity index 94% rename from cookbooks/07-personalized-research-assistant.ipynb rename to cookbooks/advanced/07-personalized-research-assistant.ipynb index 7c9edb206..8e83fd87a 100644 --- a/cookbooks/07-personalized-research-assistant.ipynb +++ b/cookbooks/advanced/07-personalized-research-assistant.ipynb @@ -1,143 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "## Task Definition: Develop a Personalized Research Paper Recommendation Assistant\n", - "\n", - "### Overview\n", - "\n", - "This task is a personal research paper assistant that can search the arxiv for information and recommend research papers to the user based on their persona. It further uses the llama parse tool to scrape the research papers and extract the contents.\n", - "\n", - "### Task Tools:\n", - "\n", - "**brave_search**: An `integration` type tool that can search the web and extract data from a given URL.\n", - "\n", - "**arxiv_search**: An `integration` type tool that can search the arxiv for research papers.\n", - "\n", - "**llama_parse_scrape**: An `integration` type tool that can scrape the web and extract data from a given URL.\n", - "\n", - "**get_user_from_ppid**: A `system` type tool that can get a user from the user ppid.\n", - "\n", - "**list_user_docs**: A `system` type tool that can list the user docs.\n", - "\n", - "**get_user_docs**: A `system` type tool that can get the user docs.\n", - "\n", - "**create_agent_doc**: A `system` type tool that can create an agent doc.\n", - "\n", - "**create_user_doc**: A `system` type tool that can create a user doc.\n", - "\n", - "### Task Input:\n", - "\n", - "**topics**: A list of topics to search for.\n", - "\n", - "**user_ppid**: The user ppid to search for.\n", - "\n", - "### Task Output:\n", - "\n", - "**output**: A list of research papers that are recommended to the user.\n", - "\n", - "### Task Flow\n", - "\n", - "1. **Brave Search**: The `brave_search` tool is called to search the web for the topics.\n", - "\n", - "2. **Prompt Step**: The prompt step is used to extract the keywords from the search results.\n", - "\n", - "3. **Evaluate**: The keywords are evaluated to get the top 8 keywords.\n", - "\n", - "4. **Arxiv Search**: The `arxiv_search` tool is called to search the arxiv for the keywords.\n", - "\n", - "5. **Evaluate**: The arxiv results are evaluated to get the top 2 research papers for each keyword.\n", - "\n", - "6. **Get User**: The `get_user` tool is called to get the user from the user ppid.\n", - "\n", - "7. **Get User Docs**: The `get_user_docs` tool is called to get the user docs. In this case, we are getting the user persona.\n", - "\n", - "8. **Prompt Step**: The prompt step is used to select the top 5 research papers based on the user persona and the research papers.\n", - "\n", - "9. **Evaluate**: The research papers are evaluated to get the top 5 research papers.\n", - "\n", - "10. **Llama Parse Scrape**: The `llama_parse_scrape` tool is called to scrape the research papers.\n", - "\n", - "11. **Evaluate**: The scraped research papers are evaluated to get the paper contents.\n", - "\n", - "12. **Create User Doc**: The `create_user_doc` tool is called to create a user doc with the paper contents.\n", - "\n", - "```plaintext\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - "| Brave Search | | Extract | | Evaluate | | Arxiv Search |\n", - "| (for topics) | --> | Keywords | --> | Top 8 | --> | (for keywords)|\n", - "| | | (Prompt Step) | | Keywords | | |\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - " |\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - "| Select Top 5 | | Get User | | Get User | | Evaluate |\n", - "| Papers | <-- | from PPID | <-- | Docs (Persona)| <-- | Arxiv Results |\n", - "| (Prompt Step) | | | | | | |\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - " |\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - "| Evaluate | | Llama Parse | | Evaluate | | Create User |\n", - "| Paper Titles | --> | Scrape | --> | Paper Contents| --> | Doc |\n", - "| and URLs | | (for URLs) | | | | |\n", - "+----------------+ +----------------+ +----------------+ +----------------+\n", - "```\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -154,18 +16,6 @@ "!pip install julep -U --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 2, @@ -192,9 +42,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "## creating julep client with the api key\n" ] }, { @@ -349,8 +197,11 @@ "outputs": [], "source": [ "import yaml\n", - "task_def = yaml.safe_load(\"\"\"\n", - " # yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json \n", + "import os\n", + "brave_api_key = os.environ[\"BRAVE_API_KEY\"]\n", + "llamaparse_api_key = os.environ[\"LLAMA_API_KEY\"]\n", + "task_def = yaml.safe_load(f\"\"\"\n", + " # yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json \n", "name: Julep Personalized Research Paper Recommendation Assistant\n", "description: A research paper recommendation assistant that can search the arxiv for information and recommend research papers to the user based on their persona.\n", "\n", @@ -380,7 +231,7 @@ " integration:\n", " provider: brave\n", " setup:\n", - " brave_api_key: \"DEMO_API_KEY\"\n", + " brave_api_key: {brave_api_key}\n", " \n", "- name: arxiv_search\n", " type: integration\n", @@ -392,7 +243,7 @@ " integration:\n", " provider: llama_parse\n", " setup:\n", - " llamaparse_api_key: \"DEMO_API_KEY\"\n", + " llamaparse_api_key: {llamaparse_api_key}\n", " params:\n", " result_format: \"text\"\n", " num_workers: 3\n", @@ -457,7 +308,7 @@ " $ f'''You are a research assistant.\n", " Based on the following latest html news snippet, generate keywords:\n", " \n", - " { '\\\\n'.join([doc['snippet'] for docs in _ for doc in docs['result']]) }\n", + " {{ '\\\\n'.join([doc['snippet'] for docs in _ for doc in docs['result']]) }}\n", " \n", " Your response should be a list of keywords, separated by commas. Do not add any other text.\n", " Example: `KEYWORDS: keyword1, keyword2, keyword3`'''\n", @@ -513,12 +364,12 @@ " This careful selection ensures that the recommendations are both relevant and beneficial to the user's ongoing research and professional development.\n", "\n", " Below is a detailed description of the user's persona:\n", - " { _.persona }\n", + " {{ _.persona }}\n", "\n", " Based on this persona, please review the following list of research paper titles. \n", " These titles have been gathered from a comprehensive search to match the user's interests:\n", "\n", - " { '\\\\n'.join([f\"- (Title: {doc['title']}, \\\\n\\\\n - URL: {doc['pdf_url']})\" for result in steps[4].output.arxiv_results for doc in result['result']]) }\n", + " {{ \"\\\\n\".join([f\"- (Title: {{doc['title']}}, \\\\n\\\\n - URL: {{doc['pdf_url']}})\" for result in steps[4].output.arxiv_results for doc in result['result']]) }}\n", "\n", "\n", " After reviewing the titles, please compile a list of the top 5 relevant research papers. \n", @@ -563,21 +414,6 @@ "\"\"\")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `metadata_filter` is used to filter the user based on the ppid.\n", - "- The `persona` is the user persona that is used to filter the research papers.\n", - "- The `paper_titles_and_urls` is the list of paper titles and urls that are used to call the `llama_parse_scrape` tool.\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": 8, @@ -1713,6 +1549,17 @@ "# pretty printing the arxiv results\n", "pprint.pprint(transitions.output)\n" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] } ], "metadata": { diff --git a/cookbooks/advanced/08-rag-chatbot.ipynb b/cookbooks/advanced/08-rag-chatbot.ipynb new file mode 100644 index 000000000..9c7da02cd --- /dev/null +++ b/cookbooks/advanced/08-rag-chatbot.ipynb @@ -0,0 +1,2025 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\"julep\"\n", + "\n", + "
\n", + "

\n", + " \n", + " \"Get\n", + " \n", + "  \n", + " \n", + " \"Documentation\"\n", + " \n", + "

\n", + "

\n", + " \"NPM\n", + "  \n", + " \"PyPI\n", + "  \n", + " \"Docker\n", + "  \n", + " \"GitHub\n", + "

\n", + " \n", + "

\n", + " Discord\n", + " ·\n", + " 𝕏\n", + " ·\n", + " LinkedIn\n", + "

\n", + "
\n", + "\n", + "# Task Definition: Chatbot for a Website\n", + "\n", + "### Overview\n", + "\n", + "This task implements an automated system to index and process a website. The system crawls the website, extracts relevant information, and creates a searchable knowledge base that can be queried programmatically. Finally, it creates a chatbot that can answer questions about the website using the RAG knowledge base.\n", + "\n", + "### Task Tools:\n", + "\n", + "- **get_page**: Web crawler component for systematically scraping a website's page using JIna's API\n", + "- **create_agent_doc**: Document processor for converting web content into indexed, searchable documents\n", + "\n", + "### Task Input:\n", + "\n", + "Required parameter:\n", + "- **url**: Entry point URL for the crawler (e.g., \"https://en.wikipedia.org/wiki/Artificial_intelligence\", or \"https://julep.ai\")\n", + "- **reducing_strength**: Number of sentences to club together to reduce the size of the chunks list\n", + "\n", + "### Task Output:\n", + "\n", + "- Indexed knowledge base containing processed documentation about the given website links\n", + "- Query interface for programmatic access to the documentation\n", + "\n", + "### Task Flow\n", + "\n", + "1. Create an agent with the get_page tool\n", + "2. Get the get_page tool's API key \n", + "3. Crawl website using get_page tool:\n", + " - Specify URL and page limit\n", + " - Enable smart mode, proxy, readability\n", + " - Filter out images and SVGs\n", + " - Use sentence-based chunking (15 sentences per chunk)\n", + "4. For each crawled page:\n", + " - Extract content\n", + " - Break into chunks\n", + " - Generate succinct context for each chunk\n", + " - Combine chunk with context\n", + "5. Create agent documents:\n", + " - Store processed chunks as documents\n", + " - Add metadata like source\n", + " - Index for search/retrieval\n", + "6. Finally chat with the agent in the session and retrieve the documents that are relevant to the user's query\n", + "\n", + "```plaintext\n", + "+----------------+ +----------------+ +----------------+ +---------------+\n", + "| Jina AI | | Extract | | Process | | Create |\n", + "| Crawler | --> | Content | --> | Content | --> | Agent Docs |\n", + "| (URL Entry) | | (Web Pages) | | (Chunks) | | (Index) |\n", + "+----------------+ +----------------+ +----------------+ +---------------+\n", + " |\n", + "+----------------+ +----------------+ +----------------+ +---------------+\n", + "| Query | | Search | | Retrieve | | Chat with |\n", + "| Interface | <-- | Index | <-- | Documents | <-- | Agent |\n", + "| (User Input) | | (Knowledge) | | (Context) | | (Session) |\n", + "+----------------+ +----------------+ +----------------+ +---------------+\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Implementation\n", + "\n", + "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", + "\n", + "\n", + " \"Open\n", + "\n", + "\n", + "### Additional Information\n", + "\n", + "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", + "\n", + "**Author:** Julep AI \n", + "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Installing the Julep Client" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.1.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install julep -U --quiet" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### NOTE:\n", + "\n", + "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", + "- Once created, these UUIDs should remain unchanged for simplicity.\n", + "- Altering a UUID will result in the system treating it as a new agent or task.\n", + "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Global UUID is generated for agent and task\n", + "import uuid\n", + "\n", + "# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\n", + "# the `create` methods for the sake of not creating new resources every time a cell is run.\n", + "AGENT_UUID = uuid.uuid4()\n", + "TASK_UUID = uuid.uuid4()\n", + "SESSION_UUID = uuid.uuid4()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating Julep Client with the API Key\n", + "\n", + "Get your API key from [here](https://dashboard.julep.ai/)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from julep import Client\n", + "import os\n", + "from dotenv import load_dotenv\n", + "\n", + "load_dotenv(override=True)\n", + "\n", + "JULEP_API_KEY = os.environ.get(\"JULEP_API_KEY\")\n", + "\n", + "# Create a Julep client\n", + "client = Client(api_key=JULEP_API_KEY, environment=\"production\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an \"agent\"\n", + "\n", + "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n", + "\n", + "To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Create agent\n", + "agent = client.agents.create_or_update(\n", + " agent_id=AGENT_UUID,\n", + " name=\"Website Navigator\",\n", + " about=\"An AI assistant that can navigate a company's website and assist you in finding the information you need to make the most of our services.\",\n", + " model=\"gpt-4o\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of documents in the agent's document store: 0\n" + ] + } + ], + "source": [ + "docs = [*client.agents.docs.list(agent_id=AGENT_UUID)]\n", + "print(f\"Number of documents in the agent's document store: {len(docs)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Defining a Task\n", + "\n", + "Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\n", + "\n", + "You can use them to conduct complex actions by defining them step-by-step.\n", + "\n", + "To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "jina_api_key = \"jina_api_key\"\n", + "\n", + "task_def = yaml.safe_load('''\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", + "name: Julep Jina Crawler Task\n", + "description: A Julep agent that can crawl a website and store the content in the document store.\n", + "\n", + "########################################################\n", + "################### INPUT SCHEMA #######################\n", + "########################################################\n", + "\n", + "input_schema:\n", + " type: object\n", + " properties:\n", + " url:\n", + " type: string\n", + " reducing_strength:\n", + " type: integer\n", + " \n", + "########################################################\n", + "################### TOOLS ##############################\n", + "########################################################\n", + "\n", + "tools:\n", + "- name: get_page\n", + " type: api_call\n", + " api_call:\n", + " method: GET\n", + " url: https://r.jina.ai/\n", + " headers:\n", + " accept: application/json\n", + " x-return-format: markdown\n", + " x-with-images-summary: \"true\"\n", + " x-with-links-summary: \"true\"\n", + " x-retain-images: \"none\"\n", + " x-no-cache: \"true\"\n", + " Authorization: \"Bearer {jina_api_key}\"\n", + "\n", + "- name : create_agent_doc\n", + " description: Create an agent doc\n", + " type: system\n", + " system:\n", + " resource: agent\n", + " subresource: doc\n", + " operation: create\n", + "\n", + "########################################################\n", + "################### INDEX PAGE SUBWORKFLOW ##############\n", + "########################################################\n", + "\n", + "index_page:\n", + "\n", + "# Step #0 - Evaluate the content\n", + "- evaluate:\n", + " document: $ _.document\n", + " chunks: |\n", + " $ [\" \".join(_.content[i:i + max(_.reducing_strength, len(_.content) // 9)]) \n", + " for i in range(0, len(_.content), max(_.reducing_strength, len(_.content) // 9))]\n", + " label: docs\n", + "\n", + "# Step #1 - Process each content chunk in parallel\n", + "- over: \"$ [(steps[0].input.content, chunk) for chunk in _['chunks']]\"\n", + " parallelism: 3\n", + " map:\n", + " prompt: \n", + " - role: user\n", + " content: >-\n", + " $ f\"\"\"\n", + " \n", + " {_[0]}\n", + " \n", + "\n", + " Here is the chunk we want to situate within the whole document\n", + " \n", + " {_[1]}\n", + " \n", + "\n", + " Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. \n", + " Answer only with the succinct context and nothing else.\"\"\"\n", + " \n", + " unwrap: true\n", + " settings:\n", + " max_tokens: 16000\n", + "\n", + "# Step #2 - Create a new document and add it to the agent docs store\n", + "- evaluate:\n", + " final_chunks: |\n", + " $ [\n", + " NEWLINE.join([chunk, succint]) for chunk, succint in zip(steps[1].input.chunks, _)\n", + " ]\n", + "\n", + "# Step #3 - Create a new document and add it to the agent docs store\n", + "- over: $ _['final_chunks']\n", + " parallelism: 3\n", + " map:\n", + " tool: create_agent_doc\n", + " arguments:\n", + " agent_id: \"$ str(agent.id)\" # <--- This is the agent id of the agent you want to add the document to\n", + " data:\n", + " metadata:\n", + " source: \"jina_crawler\"\n", + "\n", + " title: \"Website Document\"\n", + " content: $ _\n", + "\n", + "########################################################\n", + "################### MAIN WORKFLOW ######################\n", + "########################################################\n", + "\n", + "main:\n", + "\n", + "# Step 0: Get the content of the product page\n", + "- tool: get_page\n", + " arguments:\n", + " url: $ \"https://r.jina.ai/\" + steps[0].input.url\n", + "\n", + "# Step 1: Chunk the content\n", + "- evaluate:\n", + " result: $ chunk_doc(_.json.data.content.strip())\n", + "\n", + "# Step 2: Evaluate step to document chunks\n", + "- workflow: index_page\n", + " arguments:\n", + " content: $ _.result\n", + " document: $ steps[0].output.json.data.content.strip()\n", + " reducing_strength: $ steps[0].input.reducing_strength\n", + "''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notes:\n", + "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", + "- The `$` sign is used to differentiate between a Python expression and a string.\n", + "- The `_` refers to the output of the previous step.\n", + "- The `steps[index].input` refers to the input of the step at `index`.\n", + "- The `steps[index].output` refers to the output of the step at `index`." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Create the task\n", + "task = client.tasks.create_or_update(\n", + " task_id=TASK_UUID,\n", + " agent_id=AGENT_UUID,\n", + " **task_def\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an Execution\n", + "\n", + "An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\n", + "\n", + "To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "execution_homepage = client.executions.create(\n", + " task_id=TASK_UUID,\n", + " input={\n", + " \"url\": \"https://julep.ai/\",\n", + " \"reducing_strength\": 2\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Monitoring and analyzing execution\n", + "\n", + "There are multiple ways to track and analyze the execution:\n", + "\n", + "1. **Stream Execution Status**: This method streams real-time status updates from the execution, allowing you to monitor its progress as it happens. Each event contains the current status of the execution (e.g., `running`, `succeeded`, `failed`).\n", + "\n", + "2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\n", + "\n", + "Note: The streaming status updates will continue until the execution completes. You can see the transitions after the execution has completed to analyze the detailed outputs of each step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "running\n", + "running\n", + "running\n", + "running\n", + "running\n", + "running\n", + "running\n", + "running\n", + "running\n", + "succeeded\n" + ] + } + ], + "source": [ + "for event in client.executions.status.stream(execution_id=execution_homepage.id):\n", + " print(event.status)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Index: 0 Type: init\n", + "output: {\n", + " \"url\": \"https://julep.ai/\",\n", + " \"reducing_strength\": 2\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 1 Type: step\n", + "output: {\n", + " \"json\": {\n", + " \"code\": 200,\n", + " \"data\": {\n", + " \"url\": \"https://julep.ai/\",\n", + " \"title\": \"Julep AI\",\n", + " \"usage\": {\n", + " \"tokens\": 4630\n", + " },\n", + " \"content\": \"Julep AI\\n\\n===============\\n\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\nDeploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\nOpen-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n[Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\nConnect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\nLLM Platforms\\n\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\nAny REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\nReal people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\nScale to millions.\\n----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\nProduction Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\nAnswers.\\n---------------------\\n\\nWhat is Julep?\\n\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\nWho is Julep for?\\n\\nJulep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\nHow does Julep's approach differ from typical AI development?\\n\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\nHow is Julep different from agent frameworks?\\n\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\nWhat types of workflows can I build with Julep?\\n\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\nHow does Julep handle scaling and fault tolerance?\\n\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\nIs Julep secure and enterprise-grade?\\n\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\nWhat are Julep\\u2019s pricing models?\\n\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\nKeep me informed\\n\\nDev Resources\\n\\n[Docs](https://docs.julep.ai/)\\n\\n[Get API Key](https://dashboard.julep.ai/)\\n\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n[About](https://julep.ai/about)\\n\\n[Contact Us](https://julep.ai/contact)\\n\\n[Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n[Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n[Twitter](https://x.com/julep_ai)\\n\\n[Dev.to](https://dev.to/julep)\\n\\n[Hugging Face](https://huggingface.co/julep-ai)\\n\\n[Youtube](https://www.youtube.com/@julep_ai)\\n\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\",\n", + " \"description\": \"Backend for building AI agent workflows. A new DSL for building tasks and a server for running them. \\nAllows companie so build and deploy AI pipelines in minues.\"\n", + " },\n", + " \"meta\": {\n", + " \"usage\": {\n", + " \"tokens\": 4630\n", + " }\n", + " },\n", + " \"status\": 20000\n", + " },\n", + " \"content\": \"eyJjb2RlIjoyMDAsInN0YXR1cyI6MjAwMDAsImRhdGEiOnsidGl0bGUiOiJKdWxlcCBBSSIsImRlc2NyaXB0aW9uIjoiQmFja2VuZCBmb3IgYnVpbGRpbmcgQUkgYWdlbnQgd29ya2Zsb3dzLiBBIG5ldyBEU0wgZm9yIGJ1aWxkaW5nIHRhc2tzIGFuZCBhIHNlcnZlciBmb3IgcnVubmluZyB0aGVtLiBcbkFsbG93cyBjb21wYW5pZSBzbyBidWlsZCBhbmQgZGVwbG95IEFJIHBpcGVsaW5lcyBpbiBtaW51ZXMuIiwidXJsIjoiaHR0cHM6Ly9qdWxlcC5haS8iLCJjb250ZW50IjoiSnVsZXAgQUlcblxuPT09PT09PT09PT09PT09XG5cblshW0ltYWdlIDFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OWFpDZlQ1SHk1MTBYVTlGdUEwUUFMMzEwWTAucG5nKV0oaHR0cHM6Ly9qdWxlcC5haS8pXG5cbltOZXcgTGF1bmNoIE9wZW4tU291cmNlIFJlc3BvbnNlcyBBUEldKGh0dHBzOi8vZG9jcy5qdWxlcC5haS9yZXNwb25zZXMpXG5cbk9wZW4gU291cmNlXG5cbltHaXRodWIg4piFIDQuN0tdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9qdWxlcClcblxuRGVwbG95IHNlcnZlcmxlc3NcblxuQUkgd29ya2Zsb3dzXG5cbmF0IHNjYWxlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5pbiBtaW51dGVzLCBub3Qgd2Vla3MuXG5cbk9wZW4tc291cmNlIEFQSSB0byBidWlsZCBcblxuaW5maW5pdGVseSBzY2FsYWJsZSwgZHVyYWJsZSBhbmQgbG9uZyBydW5uaW5nIEFJIHBpcGVsaW5lc1xuXG51c2luZyBhZ2VudHMsIHRhc2tzIGFuZCB0b29sc1xuXG5bRGVwbG95IHlvdXIgZmlyc3Qgd29ya2Zsb3ddKGh0dHBzOi8vZGFzaGJvYXJkLmp1bGVwLmFpLylcblxuW0dldCBhIGRlbW9dKGh0dHBzOi8vY2FsZW5kbHkuY29tL2lzaGl0YS1qdWxlcClcblxuQ1VTVE9NRVIgU1RPUklFU1xuXG5WaWRlbyBFZGl0aW5nXG5cblJBRyBBc3NpdGFudHNcblxuTWFya2V0aW5nXG5cblVzZXIgUHJvZmlsaW5nXG5cblZlcmlmaWNhdGlvbnNcblxuIVtJbWFnZSAyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvQUV3WWgxWWR6cEN0VXVDMGNTNTMxWURXVWxzLnBuZz9zY2FsZS1kb3duLXRvPTEwMjQpXG5cblZpZHlvIGJ1aWx0IHBlcnNvbmFsaXNlZCBtYXJrZXRpbmcgaW50ZWxsaWdlbmNlIGZvciB0aG91c2FuZHMgb2YgdXNlcnMgdXNpbmcgcG9zdGluZyB0cmVuZHMgYW5kIGN1cnJlbnQgdG9wIHRyZW5kcy5cblxuSXRlcmF0ZSBhbmQgZGVwbG95IEFJIGZlYXR1cmVzIHN1cGVyIGZhc3QgYnkgYnJpbmdpbmcgZGF0YSBmcm9tIGRpZmZlcmVudCBzb3VyY2VzIGluIG9uZSBwbGFjZS5cblxuQ29ubmVjdCB3aXRoIGFueSBBSSBtb2RlbCxcblxuQVBJIG9yIGRhdGEgc291cmNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblNlYW1sZXNzbHkgaW50ZWdyYXRlIHdpdGggeW91ciBleGlzdGluZyBzdGFjayBhbmQgZmF2b3JpdGUgQUkgbW9kZWxzLlxuXG5MTE0gUGxhdGZvcm1zXG5cbiFbSW1hZ2UgM10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL3p4V3hORjRTekR0Y0ZMOW1WbUF2b0RGNERFLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDRdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9waDdFRzdvWWtRNUF3dTg2aGMwNXdSanZHdy5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA1XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvSU1IV0tiZmhjOGRabzdNaG5rcGxLM0l0bW1NLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDZdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9RWXRXM3BnSUwyakVUQk4zY0VwVzZIUGRsWS5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA3XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvWHZsMFlud0xtaWw2VDNBR2pSbGZwQXhJeUpBLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDhdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy84MDlmeTlyOXh1aFhQaGlIVzFrdllIanVGNC5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA5XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvdXpYRmxMckgzbTdhOEl5ZzFwdmV3MWdyNFUucG5nP2xvc3NsZXNzPTEpXG5cbiFbSW1hZ2UgMTBdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy82U0l6T3A5bTh0SHFBWjZ6bk8xTGdxUjVYRFkucG5nP2xvc3NsZXNzPTEpXG5cbkxhbmd1YWdlc1xuXG5JbnRlZ3JhdGlvbnNcblxuKiAgICFbSW1hZ2UgMTFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxMl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTNdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDE0XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxNV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxNl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxOF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDIwXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyMV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyMl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjNdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyNF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDI2XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyN10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyOF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzMF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDMyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzM10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzNF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzNl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDM4XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzOV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSA0MF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuXG5BbnkgUkVTVCBBUElcblxuIyMjIEJ1aWxkIHdpdGggSnVsZXBcblxuQ3JlYXRlIGFuIGFnZW50XG5cbkRlZmluZSBhZ2VudHMgdGhhdCBjYW4gdGFsayB0byB1c2VycyBpbnNpZGUgb2YgYSBzZXNzaW9uXG5cbkFkZCB0b29sc1xuXG5FcXVpcCBhZ2VudHMgd2l0aCB0b29scyAtIHdlYiBzZWFyY2gsIEFQSSBjYWxscywgb3IgY3VzdG9tIGludGVncmF0aW9uc1xuXG5EZWZpbmUgeW91ciB0YXNrc1xuXG5EZWZpbmUgbXVsdGktc3RlcCBwcm9jZXNzZXMgaW4gWUFNTCB3aXRoIGRlY2lzaW9uIHRyZWVzLCBsb29wcywgYW5kIHBhcmFsbGVsIGV4ZWN1dGlvblxuXG5EZXBsb3lcblxuRXhlY3V0ZSBwcm9kdWN0aW9uLWdyYWRlIHdvcmtmbG93cyB3aXRoIG9uZSBjb21tYW5kXG5cbmFnZW50ID0ganVsZXAuYWdlbnRzLmNyZWF0ZShcblxubmFtZT1cIlNwaWRlcm1hblwiLFxuXG5hYm91dD1cIkFJIHRoYXQgY2FuIGNyYXdsIHRoZSB3ZWIgYW5kIGV4dHJhY3QgZGF0YVwiLFxuXG5tb2RlbD1cImdwdC00by1taW5pXCIsXG5cbmRlZmF1bHRfc2V0dGluZ3M9e1xuXG5cInRlbXBlcmF0dXJlXCI6IDAuNzUsXG5cblwibWF4X3Rva2Vuc1wiOiAxMDAwMCxcblxuXCJ0b3BfcFwiOiAxLjAsXG5cbn1cblxuKVxuXG5SZWFsIHBlb3BsZSwgUmVhbCByZXN1bHRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogICAgIEp1bGVwIHRvIG1lIHNpdHMgaW4gdGhlIGludGVyc2VjdGlvbiBvZiB3aGF0IFphcGllciBkaWQgZm9yIHNpbXBsaWZ5aW5nIHdvcmtmbG93cywgYW5kIHdoYXQgVmVyY2VsIGRpZCBmb3Igc2ltcGxpZnlpbmcgc2hpcHBpbmcuIFRoZSBuZXcgcG9zc2liaWxpdGllcyBhcmUgZW5kbGVzcy4gSSBhbSBleGNpdGVkIGFidXQgd2hhdCBhbGwgY2FuIGJlIGRvbmUgd2l0aCB0aGlzIHRlY2ggYXQgRVMuICAhW0ltYWdlIDQxXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvRE5IMXRQWDRvREhiZjlycU1FcDlqcTFuenM4LmpwZWcpICBTdXJ5YW5zaCBUaWJhcmV3YWwgQ0VPLCBFc3NlbnRpYWxseVNwb3J0cyAgICAgXG4qICAgICBGb3IgVmlkeW8sIHdlIHNoaXBwZWQgNiBtb250aHMgd29ydGggb2YgcHJvZHVjdCBkZXZlbG9wbWVudCBpbiA2IGhvdXJzLiBHQU1FIENIQU5HRVIhISAgIVtJbWFnZSA0Ml0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2ZUYnM4Yjc2WDRsQlM3cG9ZQmMxNTZHRS5qcGVnKSAgVmVkYW50IE1haGVzaHdhcmkgQ0VPLCBWaWR5by5haSAgICAgXG4qICAgICBXZSB0cmllZCBidWlsZGluZyBvdXIgYWkgc3RhY2sgd2hlcmUgd2UgbmVlZGVkIHNpbXBsZSBhdXRvbWF0ZWQgY29tcHV0ZXIgdXNlLiB3ZSBzcGVudCBtb250aHMgdHJ5aW5nIHRvIGdldCBpdCByaWdodCwgYnV0IG91ciBkZXZlbG9wbWVudCB0aW1lIGdvdCBjdXQgdG8gYSBjb3VwbGUgd2Vla3MgYmVjYXVzZSBtb3N0IG9mIHRoZSBpbmZyYSBvcmNoZXN0cmF0aW9uIHdhcyBoYW5kbGVkIGJ5IGp1bGVwLiBhbGwgdGhhdCB3ZSBoYWQgdG8gZG8gd2FzIHJlZmluZSBvdXIgcHJvbXB0cyAgIVtJbWFnZSA0M10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL3Rja3N0VllxTm5ZOEdZVVZSR0pqS3N1Y2hudy5qcGVnKSAgTWFkaGF2YW4gQ0VPLCBSZWNsYWltIFByb3RvY29sICAgICBcbiogICAgIFwiU2FtZSBleHBlcmllbmNlIGFzIHJldmlld2luZyBkZXNpZ25zIG9uIEZpZ21hIHdpdGggbXkgZGVzaWduZXIuIFNhdCB3aXRoIG15IGRldmVsb3BlciBvbmNlLCBhbmQgd2Uga2VwdCBicmFpbnN0b3JtaW5nLCB0ZXN0aW5nLCBwcm90b3R5cGluZyBhbmQgc2hpcHBpbmcgYXQgb25jZS4gSSBnb3QgY29udHJvbCBiYWNrIGluIG15IGhhbmRzIGFzIGEgbm9uLWRldmVsb3Blci5cIiAgIVtJbWFnZSA0NF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL015Uk1WSnA3aGJYeWxObktNY0hhc0hiS3lCWS5qcGVnKSAgQWtzaGF5IFBydXRoaSBDRU8sIENhbG0gU2xlZXAgICAgIFxuKiAgICAgV29ya2luZyB3aXRoIEp1bGVwIGFjY2VsZXJhdGVkIFVrdW1pLCBieSBlbmFibGluZyB1cyB0byBmb2N1cyBvbiBvdXIgY29yZSBzdHJlbmd0aHMgYW5kIGxldHRpbmcgSnVsZXAgbmF2aWdhdGUgdGhlIGNvbXBsZXggd2ViIG9mIGNhbGxzIHRvIGFpIG1vZGVscyB3ZSBjb3VsZCBkbyBtb3JlIHdpdGggbGVzcy4gICFbSW1hZ2UgNDVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9HVjhGU0toRnNhUTVzd3NzajRlNUxZUVQ3Z00uanBnKSAgU2FjaGluIEdhdXIgQ29mb3VuZGVyLCBVa3VtaSBBSSAgICAgXG4qICAgICBKdWxlcCB0byBtZSBzaXRzIGluIHRoZSBpbnRlcnNlY3Rpb24gb2Ygd2hhdCBaYXBpZXIgZGlkIGZvciBzaW1wbGlmeWluZyB3b3JrZmxvd3MsIGFuZCB3aGF0IFZlcmNlbCBkaWQgZm9yIHNpbXBsaWZ5aW5nIHNoaXBwaW5nLiBUaGUgbmV3IHBvc3NpYmlsaXRpZXMgYXJlIGVuZGxlc3MuIEkgYW0gZXhjaXRlZCBhYnV0IHdoYXQgYWxsIGNhbiBiZSBkb25lIHdpdGggdGhpcyB0ZWNoIGF0IEVTLiAgIVtJbWFnZSA0Nl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0ROSDF0UFg0b0RIYmY5cnFNRXA5anExbnpzOC5qcGVnKSAgU3VyeWFuc2ggVGliYXJld2FsIENFTywgRXNzZW50aWFsbHlTcG9ydHMgICAgIFxuKiAgICAgRm9yIFZpZHlvLCB3ZSBzaGlwcGVkIDYgbW9udGhzIHdvcnRoIG9mIHByb2R1Y3QgZGV2ZWxvcG1lbnQgaW4gNiBob3Vycy4gR0FNRSBDSEFOR0VSISEgICFbSW1hZ2UgNDddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9mVGJzOGI3Nlg0bEJTN3BvWUJjMTU2R0UuanBlZykgIFZlZGFudCBNYWhlc2h3YXJpIENFTywgVmlkeW8uYWkgICAgIFxuKiAgICAgV2UgdHJpZWQgYnVpbGRpbmcgb3VyIGFpIHN0YWNrIHdoZXJlIHdlIG5lZWRlZCBzaW1wbGUgYXV0b21hdGVkIGNvbXB1dGVyIHVzZS4gd2Ugc3BlbnQgbW9udGhzIHRyeWluZyB0byBnZXQgaXQgcmlnaHQsIGJ1dCBvdXIgZGV2ZWxvcG1lbnQgdGltZSBnb3QgY3V0IHRvIGEgY291cGxlIHdlZWtzIGJlY2F1c2UgbW9zdCBvZiB0aGUgaW5mcmEgb3JjaGVzdHJhdGlvbiB3YXMgaGFuZGxlZCBieSBqdWxlcC4gYWxsIHRoYXQgd2UgaGFkIHRvIGRvIHdhcyByZWZpbmUgb3VyIHByb21wdHMgICFbSW1hZ2UgNDhdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy90Y2tzdFZZcU5uWThHWVVWUkdKaktzdWNobncuanBlZykgIE1hZGhhdmFuIENFTywgUmVjbGFpbSBQcm90b2NvbCAgICAgXG4qICAgICBcIlNhbWUgZXhwZXJpZW5jZSBhcyByZXZpZXdpbmcgZGVzaWducyBvbiBGaWdtYSB3aXRoIG15IGRlc2lnbmVyLiBTYXQgd2l0aCBteSBkZXZlbG9wZXIgb25jZSwgYW5kIHdlIGtlcHQgYnJhaW5zdG9ybWluZywgdGVzdGluZywgcHJvdG90eXBpbmcgYW5kIHNoaXBwaW5nIGF0IG9uY2UuIEkgZ290IGNvbnRyb2wgYmFjayBpbiBteSBoYW5kcyBhcyBhIG5vbi1kZXZlbG9wZXIuXCIgICFbSW1hZ2UgNDldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9NeVJNVkpwN2hiWHlsTm5LTWNIYXNIYkt5QlkuanBlZykgIEFrc2hheSBQcnV0aGkgQ0VPLCBDYWxtIFNsZWVwICAgICBcbiogICAgIFdvcmtpbmcgd2l0aCBKdWxlcCBhY2NlbGVyYXRlZCBVa3VtaSwgYnkgZW5hYmxpbmcgdXMgdG8gZm9jdXMgb24gb3VyIGNvcmUgc3RyZW5ndGhzIGFuZCBsZXR0aW5nIEp1bGVwIG5hdmlnYXRlIHRoZSBjb21wbGV4IHdlYiBvZiBjYWxscyB0byBhaSBtb2RlbHMgd2UgY291bGQgZG8gbW9yZSB3aXRoIGxlc3MuICAhW0ltYWdlIDUwXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvR1Y4RlNLaEZzYVE1c3dzc2o0ZTVMWVFUN2dNLmpwZykgIFNhY2hpbiBHYXVyIENvZm91bmRlciwgVWt1bWkgQUkgICAgIFxuKiAgICAgSnVsZXAgdG8gbWUgc2l0cyBpbiB0aGUgaW50ZXJzZWN0aW9uIG9mIHdoYXQgWmFwaWVyIGRpZCBmb3Igc2ltcGxpZnlpbmcgd29ya2Zsb3dzLCBhbmQgd2hhdCBWZXJjZWwgZGlkIGZvciBzaW1wbGlmeWluZyBzaGlwcGluZy4gVGhlIG5ldyBwb3NzaWJpbGl0aWVzIGFyZSBlbmRsZXNzLiBJIGFtIGV4Y2l0ZWQgYWJ1dCB3aGF0IGFsbCBjYW4gYmUgZG9uZSB3aXRoIHRoaXMgdGVjaCBhdCBFUy4gICFbSW1hZ2UgNTFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ETkgxdFBYNG9ESGJmOXJxTUVwOWpxMW56czguanBlZykgIFN1cnlhbnNoIFRpYmFyZXdhbCBDRU8sIEVzc2VudGlhbGx5U3BvcnRzICAgICBcbiogICAgIEZvciBWaWR5bywgd2Ugc2hpcHBlZCA2IG1vbnRocyB3b3J0aCBvZiBwcm9kdWN0IGRldmVsb3BtZW50IGluIDYgaG91cnMuIEdBTUUgQ0hBTkdFUiEhICAhW0ltYWdlIDUyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvZlRiczhiNzZYNGxCUzdwb1lCYzE1NkdFLmpwZWcpICBWZWRhbnQgTWFoZXNod2FyaSBDRU8sIFZpZHlvLmFpICAgICBcbiogICAgIFdlIHRyaWVkIGJ1aWxkaW5nIG91ciBhaSBzdGFjayB3aGVyZSB3ZSBuZWVkZWQgc2ltcGxlIGF1dG9tYXRlZCBjb21wdXRlciB1c2UuIHdlIHNwZW50IG1vbnRocyB0cnlpbmcgdG8gZ2V0IGl0IHJpZ2h0LCBidXQgb3VyIGRldmVsb3BtZW50IHRpbWUgZ290IGN1dCB0byBhIGNvdXBsZSB3ZWVrcyBiZWNhdXNlIG1vc3Qgb2YgdGhlIGluZnJhIG9yY2hlc3RyYXRpb24gd2FzIGhhbmRsZWQgYnkganVsZXAuIGFsbCB0aGF0IHdlIGhhZCB0byBkbyB3YXMgcmVmaW5lIG91ciBwcm9tcHRzICAhW0ltYWdlIDUzXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvdGNrc3RWWXFOblk4R1lVVlJHSmpLc3VjaG53LmpwZWcpICBNYWRoYXZhbiBDRU8sIFJlY2xhaW0gUHJvdG9jb2wgICAgIFxuKiAgICAgXCJTYW1lIGV4cGVyaWVuY2UgYXMgcmV2aWV3aW5nIGRlc2lnbnMgb24gRmlnbWEgd2l0aCBteSBkZXNpZ25lci4gU2F0IHdpdGggbXkgZGV2ZWxvcGVyIG9uY2UsIGFuZCB3ZSBrZXB0IGJyYWluc3Rvcm1pbmcsIHRlc3RpbmcsIHByb3RvdHlwaW5nIGFuZCBzaGlwcGluZyBhdCBvbmNlLiBJIGdvdCBjb250cm9sIGJhY2sgaW4gbXkgaGFuZHMgYXMgYSBub24tZGV2ZWxvcGVyLlwiICAhW0ltYWdlIDU0XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvTXlSTVZKcDdoYlh5bE5uS01jSGFzSGJLeUJZLmpwZWcpICBBa3NoYXkgUHJ1dGhpIENFTywgQ2FsbSBTbGVlcCAgICAgXG4qICAgICBXb3JraW5nIHdpdGggSnVsZXAgYWNjZWxlcmF0ZWQgVWt1bWksIGJ5IGVuYWJsaW5nIHVzIHRvIGZvY3VzIG9uIG91ciBjb3JlIHN0cmVuZ3RocyBhbmQgbGV0dGluZyBKdWxlcCBuYXZpZ2F0ZSB0aGUgY29tcGxleCB3ZWIgb2YgY2FsbHMgdG8gYWkgbW9kZWxzIHdlIGNvdWxkIGRvIG1vcmUgd2l0aCBsZXNzLiAgIVtJbWFnZSA1NV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dWOEZTS2hGc2FRNXN3c3NqNGU1TFlRVDdnTS5qcGcpICBTYWNoaW4gR2F1ciBDb2ZvdW5kZXIsIFVrdW1pIEFJICAgICBcblxuQnVpbGQgQUkgcGlwZWxpbmVzIFxuXG5pbiBtaW51dGVzLlxuXG5TY2FsZSB0byBtaWxsaW9ucy5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuUmFwaWQgUHJvdG90eXBpbmdcblxuXCJGcm9tIGlkZWEgdG8gZGVtbyBpbiBtaW51dGVzXCIgdXNpbmcgYnVpbHQtaW4gUkFHLCBpbi1ob3VzZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBleHRlcm5hbCB0b29scy5cblxuUHJvZHVjdGlvbiBSZWFkeVxuXG5cIkdvIGxpdmUgaW5zdGFudGx5IHdpdGggbWFuYWdlZCBpbmZyYXN0cnVjdHVyZVwiIGFuZCBmZWF0dXJlcyBzdWNoIGFzIGxvbmctcnVubmluZyB0YXNrcywgYXV0b21hdGljIHJldHJpZXMgYW5kIGVycm9yIGhhbmRsaW5nXG5cbk1vZHVsYXIgRGVzaWduXG5cblwiQnVpbGQgZmVhdHVyZXMgbGlrZSBMZWdvIGJsb2Nrc1wiIGJ5IGNvbm5lY3RpbmcgdG8gYW55IGV4dGVybmFsIEFQSSwgc3dpdGNoIGJldHdlZW4gTExNcyBhbmQgYWRkIGN1c3RvbSB0b29sc1xuXG5JbmZpbml0ZSBTY2FsZVxuXG5IYW5kbGUgbWlsbGlvbnMgb2YgY29uY3VycmVudCB1c2VycyB3aXRoIGF1dG9tYXRpYyBzY2FsaW5nIGFuZCBsb2FkIGJhbGFuY2luZ1xuXG5GdXR1cmUgUHJvb2ZcblxuXCJBZGQgbmV3IEFJIG1vZGVscyBhbnl0aW1lXCIgXCJJbnRlZ3JhdGUgd2l0aCBhbnkgbmV3IHRvb2wgb3IgQVBJXCJcblxuQ29tcGxldGUgQ29udHJvbFxuXG5cIkZ1bGwgdmlzaWJpbGl0eSBpbnRvIEFJIG9wZXJhdGlvbnNcIiBcIk1hbmFnZSBjb3N0cyBhbmQgcGVyZm9ybWFuY2UgZWFzaWx5XCJcblxuUXVlc3Rpb25zPyBcblxuQW5zd2Vycy5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5XaGF0IGlzIEp1bGVwP1xuXG5KdWxlcCBpcyBhIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3cgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgc2NpZW5jZSB0ZWFtcyBidWlsZCwgaXRlcmF0ZSBvbiwgYW5kIGRlcGxveSBtdWx0aS1zdGVwIEFJIHBpcGVsaW5lcyB1c2luZyBhIHNpbXBsZSwgZGVjbGFyYXRpdmUgWUFNTC1iYXNlZCBjb25maWd1cmF0aW9uLlxuXG5XaG8gaXMgSnVsZXAgZm9yP1xuXG5KdWxlcCBpcyBkZXNpZ25lZCBmb3IgZGF0YSBzY2llbnRpc3RzIGFuZCBNTCBlbmdpbmVlcnPigJRlc3BlY2lhbGx5IGluIGVudGVycHJpc2Ugc2V0dGluZ3PigJR3aG8gd2FudCB0byBxdWlja2x5IG1vdmUgZnJvbSBBSSBwcm90b3R5cGVzIHRvIHByb2R1Y3Rpb24gd2l0aG91dCB0aGUgbmVlZCBmb3IgaGVhdnkgYmFja2VuZCBlbmdpbmVlcmluZy5cblxuSG93IGRvZXMgSnVsZXAncyBhcHByb2FjaCBkaWZmZXIgZnJvbSB0eXBpY2FsIEFJIGRldmVsb3BtZW50P1xuXG5XaGlsZSBtb3N0IHBsYXRmb3JtcyBmb2N1cyBvbiBwcm9tcHQgZW5naW5lZXJpbmcgYW5kIGNoYWluaW5nIExMTSBjYWxscywgSnVsZXAgYnJpbmdzIHNvZnR3YXJlIGVuZ2luZWVyaW5nIGRpc2NpcGxpbmUgdG8gQUkgZGV2ZWxvcG1lbnQuIFRocm91Z2ggb3VyIDgtRmFjdG9yIEFnZW50IG1ldGhvZG9sb2d5LCB3ZSB0cmVhdCBBSSBjb21wb25lbnRzIGFzIHByb3BlciBzeXN0ZW0gZWxlbWVudHM6IC0gUHJvbXB0cyBhcyBDb2RlOiBUcmFjayBwcm9tcHRzIHNlcGFyYXRlbHkgZnJvbSBhcHBsaWNhdGlvbiBjb2RlLCBlbmFibGluZyBzeXN0ZW1hdGljIGltcHJvdmVtZW50cyBhbmQgcHJvcGVyIHZlcnNpb25pbmcuIC0gQ2xlYXIgVG9vbCBJbnRlcmZhY2VzOiBEZWZpbmUgZXhwbGljaXQgaW50ZXJmYWNlcyBmb3IgYWxsIHRvb2wgaW50ZXJhY3Rpb25zLCBtYWtpbmcgY2FwYWJpbGl0aWVzIG1vZHVsYXIgYW5kIG1haW50YWluYWJsZS4gLU1vZGVsIEluZGVwZW5kZW5jZTogVHJlYXQgbW9kZWwgcHJvdmlkZXJzIGFzIGV4dGVybmFsLCByZXBsYWNlYWJsZSByZXNvdXJjZXMgdG8gYXZvaWQgdmVuZG9yIGxvY2staW4gYW5kIGVuYWJsZSBlYXN5IHN3aXRjaGluZy4gLUNvbnRleHQgTWFuYWdlbWVudDogRXhwbGljaXRseSBkZWZpbmUgaG93IGFwcGxpY2F0aW9uIGFuZCB1c2VyIHN0YXRlIGlzIG1hbmFnZWQgYW5kIHJlZHVjZWQuIC1Hcm91bmQgVHJ1dGggRXhhbXBsZXM6IE1haW50YWluIGNsZWFyIGV4YW1wbGVzIG9mIGV4cGVjdGVkIHByb21wdCByZXN1bHRzIGZvciB2YWxpZGF0aW9uIGFuZCB0ZXN0aW5nLiAtU3RydWN0dXJlZCBSZWFzb25pbmc6IFNlcGFyYXRlIHByb2Nlc3NlcyBpbnRvIGRlbGliZXJhdGl2ZSAocGxhbm5lZCwgbXVsdGktc3RlcCkgYW5kIGltcHJvbXB0dSAocXVpY2sgcmVzcG9uc2UpIHJlYXNvbmluZy4gLVdvcmtmbG93LUJhc2VkIE1vZGVsOiBjb21wbGV4IHByb2Nlc3NlcyBhcyBjbGVhciB3b3JrZmxvd3MgcmF0aGVyIHRoYW4gY2hhaW5zIG9mIHByb21wdHMuIC1GdWxsIE9ic2VydmFiaWxpdHk6IFNhdmUgZXhlY3V0aW9uIHRyYWNlcyBmb3IgZGVidWdnaW5nLCBtb25pdG9yaW5nLCBhbmQgY29udGludW91cyBpbXByb3ZlbWVudC5cblxuSG93IGlzIEp1bGVwIGRpZmZlcmVudCBmcm9tIGFnZW50IGZyYW1ld29ya3M/XG5cbldoaWxlIExhbmdDaGFpbiBpcyBncmVhdCBmb3IgY3JlYXRpbmcgc2VxdWVuY2VzIG9mIHByb21wdHMgYW5kIG1hbmFnaW5nIG1vZGVsIGludGVyYWN0aW9ucywgSnVsZXAgaXMgYnVpbHQgZm9yIGNyZWF0aW5nIHBlcnNpc3RlbnQgQUkgYWdlbnRzIHdpdGggYWR2YW5jZWQgdGFzayBjYXBhYmlsaXRpZXMuIFRoaW5rIG9mIExhbmdDaGFpbiBhcyBhIHRvb2wgZm9yIHByb21wdCBjaGFpbnMsIHdoaWxlIEp1bGVwIGlzIGEgY29tcGxldGUgcGxhdGZvcm0gZm9yIGJ1aWxkaW5nIHByb2R1Y3Rpb24tcmVhZHkgQUkgc3lzdGVtcyB3aXRoIGNvbXBsZXggd29ya2Zsb3dzLCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgbG9uZy1ydW5uaW5nIHRhc2tzLlxuXG5XaGF0IHR5cGVzIG9mIHdvcmtmbG93cyBjYW4gSSBidWlsZCB3aXRoIEp1bGVwP1xuXG5Zb3UgY2FuIGJ1aWxkIG11bHRpLXN0ZXAgQUkgd29ya2Zsb3dzIHRoYXQgaW5jbHVkZSBkZWNpc2lvbi1tYWtpbmcsIGxvb3BzLCBwYXJhbGxlbCBwcm9jZXNzaW5nLCBzdGF0ZSBtYW5hZ2VtZW50LCByZXRyaWVzLCBhbmQgaW50ZWdyYXRpb25zIHdpdGggZXh0ZXJuYWwgdG9vbHMgYW5kIEFQSXMuXG5cbkhvdyBkb2VzIEp1bGVwIGhhbmRsZSBzY2FsaW5nIGFuZCBmYXVsdCB0b2xlcmFuY2U/XG5cbkp1bGVwIGF1dG9tYXRpY2FsbHkgc2NhbGVzIHRvIGhhbmRsZSB0aG91c2FuZHMgdG8gbWlsbGlvbnMgb2YgZXhlY3V0aW9ucyBhbmQgaXMgYnVpbHQgd2l0aCByb2J1c3QgZmF1bHQgdG9sZXJhbmNlLCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgbG9uZy1ydW5uaW5nIGV4ZWN1dGlvbiBjYXBhYmlsaXRpZXMgdG8gZW5zdXJlIHJlbGlhYmxlLCBwcm9kdWN0aW9uLWdyYWRlIHdvcmtmbG93cy5cblxuSXMgSnVsZXAgc2VjdXJlIGFuZCBlbnRlcnByaXNlLWdyYWRlP1xuXG5ZZXMuIEp1bGVwIGlzIGJ1aWx0IHdpdGggZW50ZXJwcmlzZSBuZWVkcyBpbiBtaW5kLiBXZSBvZmZlciBwcml2YXRlIGRlcGxveW1lbnRzLCByb2J1c3Qgc2VjdXJpdHkgbWVhc3VyZXMsIGFuZCBjb21wbGlhbmNlIGZlYXR1cmVzIHRoYXQgZW5zdXJlIG91ciBwbGF0Zm9ybSBpcyByZWxpYWJsZSBhbmQgcHJvZHVjdGlvbi1yZWFkeS5cblxuV2hhdCBhcmUgSnVsZXDigJlzIHByaWNpbmcgbW9kZWxzP1xuXG5XZSBvZmZlciBhIGdlbmVyb3VzIGZyZWUgdGllciBmb3IgZXhwZXJpbWVudGF0aW9uLiBGb3IgcGFpZCBwbGFucywgd2UgaGF2ZSB0d28gbWFpbiBtb2RlbHM6IGEgdXNhZ2UtYmFzZWQgcHJpY2luZyBtb2RlbCAoY2hhcmdpbmcgcGVyIHdvcmtmbG93IHN0ZXAgZXhlY3V0ZWQpIGZvciBvdXIgY2xvdWQgcGxhdGZvcm0sIGFuZCBkZWRpY2F0ZWQgZW50ZXJwcmlzZS9vbi1wcmVtIGRlcGxveW1lbnRzIGZvciBsYXJnZSBvcmdhbml6YXRpb25zLlxuXG4jIyMgQnVpbGQgZmFzdGVyIHVzaW5nIEp1bGVwIEFQSVxuXG4jIyMgRGVwbG95IG11bHRpLXN0ZXAgd29ya2Zsb3dzIGVhc2lseSB3aXRoIGJ1aWx0LWluIHRvb2xzIGFuZCBTdGF0ZSBtYW5hZ2VtZW50IHRoYXQgaXMgcHJvZHVjdGlvbiByZWFkeSBmcm9tIGRheSBvbmUuXG5cbktlZXAgbWUgaW5mb3JtZWRcblxuRGV2IFJlc291cmNlc1xuXG5bRG9jc10oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpLylcblxuW0dldCBBUEkgS2V5XShodHRwczovL2Rhc2hib2FyZC5qdWxlcC5haS8pXG5cbltQeXRob24gU0RLXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvcHl0aG9uLXNkay9ibG9iL21haW4vUkVBRE1FLm1kKVxuXG5bSmF2YXNjcmlwdCBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9ub2RlLXNkay9ibG9iL21haW4vUkVBRE1FLm1kKVxuXG5bSW50ZWdyYXRpb24gTGlzdF0oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpL2RvY3MvaW50ZWdyYXRpb25zL3N1cHBvcnRlZC1pbnRlZ3JhdGlvbnMpXG5cblVzZWNhc2VzXG5cbltSQUcgQ2hhdGJvdF0oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wOC1yYWctY2hhdGJvdC5pcHluYilcblxuW1dlYiBDcmF3bGVyXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvYmxvYi9kZXYvY29va2Jvb2tzLzAxLXdlYnNpdGUtY3Jhd2xlci5pcHluYilcblxuW0Jyb3dzZXIgVXNlXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvYmxvYi9kZXYvY29va2Jvb2tzLzA2LWJyb3dzZXItdXNlLmlweW5iKVxuXG5bVmlkZW8gUHJvY2Vzc2luZ10oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wNS12aWRlby1wcm9jZXNzaW5nLXdpdGgtbmF0dXJhbC1sYW5ndWFnZS5pcHluYilcblxuW0hvb2sgR2VuZXJhdG9yIGZvciBSZWVsc10oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wNC1ob29rLWdlbmVyYXRvci10cmVuZGluZy1yZWVscy5pcHluYilcblxuQ29tcGFueVxuXG5bQWJvdXRdKGh0dHBzOi8vanVsZXAuYWkvYWJvdXQpXG5cbltDb250YWN0IFVzXShodHRwczovL2p1bGVwLmFpL2NvbnRhY3QpXG5cbltCb29rIERlbW9dKGh0dHBzOi8vY2FsZW5kbHkuY29tL2lzaGl0YS1qdWxlcClcblxuU29jaWFsc1xuXG5bR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXApXG5cbltMaW5rZWRJbl0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvanVsZXAtYWkpXG5cbltUd2l0dGVyXShodHRwczovL3guY29tL2p1bGVwX2FpKVxuXG5bRGV2LnRvXShodHRwczovL2Rldi50by9qdWxlcClcblxuW0h1Z2dpbmcgRmFjZV0oaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9qdWxlcC1haSlcblxuW1lvdXR1YmVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0BqdWxlcF9haSlcblxuIVtJbWFnZSA1Nl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL05YWkNmVDVIeTUxMFhVOUZ1QTBRQUwzMTBZMC5wbmcpXG5cbkJ1aWx0IGJ5IEVuZ2luZWVycywgZm9yIEVuZ2luZWVyc1xuXG7CqSBKdWxlcCBBSSBJbmMuIDIwMjVcblxuW1ByaXZhY3kgUG9saWN5XShodHRwczovL3d3dy50ZXJtc2ZlZWQuY29tL2xpdmUvZmE1MmJkYzUtNjJmMy00NWFkLWEyMjAtNzE2ZTFjYTZlMmY5KSB8IFtUZXJtcyBvZiBTZXJ2aWNlXShodHRwczovL3d3dy50ZXJtc2ZlZWQuY29tL2xpdmUvZTQ5ZmNhMDQtZTlkMi00MTg2LWFhZWItMDFlZDFhMGQ3ODUwKSIsInVzYWdlIjp7InRva2VucyI6NDYzMH19LCJtZXRhIjp7InVzYWdlIjp7InRva2VucyI6NDYzMH19fQ==\",\n", + " \"headers\": {\n", + " \"nel\": \"{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\",\n", + " \"date\": \"Tue, 10 Jun 2025 14:34:44 GMT\",\n", + " \"vary\": \"Accept-Encoding\",\n", + " \"cf-ray\": \"94d9975758eb3448-EWR\",\n", + " \"server\": \"cloudflare\",\n", + " \"alt-svc\": \"h3=\\\":443\\\"; ma=86400\",\n", + " \"report-to\": \"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=sqOmshWjmTtznQnP9Ef1NzIE%2FR38Bo1J4RgBmwwG7SOQk%2BE3fu8qjaMorv8FCcpxR5PjyTMY3f4ZGcqdv2yLOTob%2BSRZ9kkN8RNonYum9PdsDKNS1QVVxnx4jQ%3D%3D\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\",\n", + " \"connection\": \"keep-alive\",\n", + " \"traceparent\": \"00-46f61c43e27a22cadff131cc46346eeb-9cd0803c0973b922-00\",\n", + " \"content-type\": \"application/json; charset=utf-8\",\n", + " \"server-timing\": \"cfL4;desc=\\\"?proto=TCP&rtt=1821&min_rtt=1482&rtt_var=798&sent=4&recv=6&lost=0&retrans=0&sent_bytes=2828&recv_bytes=792&delivery_rate=1954116&cwnd=244&unsent_bytes=0&cid=34ad012006f0e80d&ts=280&x=0\\\"\",\n", + " \"cf-cache-status\": \"DYNAMIC\",\n", + " \"content-encoding\": \"gzip\",\n", + " \"transfer-encoding\": \"chunked\",\n", + " \"x-cloud-trace-context\": \"46f61c43e27a22cadff131cc46346eeb/11299672460417546530\"\n", + " },\n", + " \"status_code\": 200\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 2 Type: step\n", + "output: {\n", + " \"result\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ]\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 3 Type: step\n", + "output: {\n", + " \"content\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"document\": \"Julep AI\\n\\n===============\\n\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\nDeploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\nOpen-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n[Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\nConnect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\nLLM Platforms\\n\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\nAny REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\nReal people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\nScale to millions.\\n----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\nProduction Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\nAnswers.\\n---------------------\\n\\nWhat is Julep?\\n\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\nWho is Julep for?\\n\\nJulep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\nHow does Julep's approach differ from typical AI development?\\n\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\nHow is Julep different from agent frameworks?\\n\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\nWhat types of workflows can I build with Julep?\\n\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\nHow does Julep handle scaling and fault tolerance?\\n\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\nIs Julep secure and enterprise-grade?\\n\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\nWhat are Julep\\u2019s pricing models?\\n\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\nKeep me informed\\n\\nDev Resources\\n\\n[Docs](https://docs.julep.ai/)\\n\\n[Get API Key](https://dashboard.julep.ai/)\\n\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n[About](https://julep.ai/about)\\n\\n[Contact Us](https://julep.ai/contact)\\n\\n[Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n[Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n[Twitter](https://x.com/julep_ai)\\n\\n[Dev.to](https://dev.to/julep)\\n\\n[Hugging Face](https://huggingface.co/julep-ai)\\n\\n[Youtube](https://www.youtube.com/@julep_ai)\\n\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\",\n", + " \"reducing_strength\": 2\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 4 Type: init_branch\n", + "output: {\n", + " \"content\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"document\": \"Julep AI\\n\\n===============\\n\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\nDeploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\nOpen-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n[Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\nConnect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\nLLM Platforms\\n\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\nAny REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\nReal people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\nScale to millions.\\n----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\nProduction Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\nAnswers.\\n---------------------\\n\\nWhat is Julep?\\n\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\nWho is Julep for?\\n\\nJulep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\nHow does Julep's approach differ from typical AI development?\\n\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\nHow is Julep different from agent frameworks?\\n\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\nWhat types of workflows can I build with Julep?\\n\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\nHow does Julep handle scaling and fault tolerance?\\n\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\nIs Julep secure and enterprise-grade?\\n\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\nWhat are Julep\\u2019s pricing models?\\n\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\nKeep me informed\\n\\nDev Resources\\n\\n[Docs](https://docs.julep.ai/)\\n\\n[Get API Key](https://dashboard.julep.ai/)\\n\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n[About](https://julep.ai/about)\\n\\n[Contact Us](https://julep.ai/contact)\\n\\n[Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n[Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n[Twitter](https://x.com/julep_ai)\\n\\n[Dev.to](https://dev.to/julep)\\n\\n[Hugging Face](https://huggingface.co/julep-ai)\\n\\n[Youtube](https://www.youtube.com/@julep_ai)\\n\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\",\n", + " \"reducing_strength\": 2\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 5 Type: step\n", + "output: {\n", + " \"label\": \"docs\",\n", + " \"chunks\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"document\": \"Julep AI\\n\\n===============\\n\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\nDeploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\nOpen-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n[Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\nConnect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\nLLM Platforms\\n\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\nAny REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\nReal people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\nScale to millions.\\n----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\nProduction Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\nAnswers.\\n---------------------\\n\\nWhat is Julep?\\n\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\nWho is Julep for?\\n\\nJulep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\nHow does Julep's approach differ from typical AI development?\\n\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\nHow is Julep different from agent frameworks?\\n\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\nWhat types of workflows can I build with Julep?\\n\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\nHow does Julep handle scaling and fault tolerance?\\n\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\nIs Julep secure and enterprise-grade?\\n\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\nWhat are Julep\\u2019s pricing models?\\n\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\nKeep me informed\\n\\nDev Resources\\n\\n[Docs](https://docs.julep.ai/)\\n\\n[Get API Key](https://dashboard.julep.ai/)\\n\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n[About](https://julep.ai/about)\\n\\n[Contact Us](https://julep.ai/contact)\\n\\n[Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n[Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n[Twitter](https://x.com/julep_ai)\\n\\n[Dev.to](https://dev.to/julep)\\n\\n[Hugging Face](https://huggingface.co/julep-ai)\\n\\n[Youtube](https://www.youtube.com/@julep_ai)\\n\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 6 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 7 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 8 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 9 Type: finish_branch\n", + "output: \"This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 10 Type: finish_branch\n", + "output: \"This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 11 Type: finish_branch\n", + "output: \"The chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 12 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 13 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 14 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 15 Type: finish_branch\n", + "output: \"The chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 16 Type: finish_branch\n", + "output: \"The chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 17 Type: finish_branch\n", + "output: \"This chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 18 Type: init_branch\n", + "output: [\n", + " [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n!\",\n", + " \"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* !\",\n", + " \"* ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use.\",\n", + " \"GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. !\",\n", + " \"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n\",\n", + " \"Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes.\",\n", + " \"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n!\",\n", + " \"[Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + " ],\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 19 Type: finish_branch\n", + "output: \"This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 20 Type: step\n", + "output: [\n", + " \"The chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\",\n", + " \"This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\",\n", + " \"This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\",\n", + " \"The chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\",\n", + " \"The chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\",\n", + " \"This chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\",\n", + " \"This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 21 Type: step\n", + "output: {\n", + " \"final_chunks\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\",\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\",\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\",\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\",\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\",\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\",\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + " ]\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 22 Type: init_branch\n", + "output: \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 23 Type: init_branch\n", + "output: \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 24 Type: init_branch\n", + "output: \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 25 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-7657-7461-8000-0679f7c457a8\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.400193Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 26 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-76e8-7da2-8000-c6d8ab7a6278\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.435869Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 27 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-77e9-7a7e-8000-6451affc72c2\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.498033Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 28 Type: init_branch\n", + "output: \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 29 Type: init_branch\n", + "output: \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 30 Type: init_branch\n", + "output: \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 31 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-8607-71fa-8000-249a60bff59f\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.380747Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 32 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-866e-76ef-8000-35be7f9f61b1\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.406044Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 33 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-86c4-700b-8000-028f20c56cf7\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.426705Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 34 Type: init_branch\n", + "output: \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 35 Type: finish_branch\n", + "output: {\n", + " \"id\": \"0684842a-95d7-7c74-8000-70b120c31efa\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:21.369126Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + "}\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 36 Type: finish_branch\n", + "output: [\n", + " {\n", + " \"id\": \"0684842a-76e8-7da2-8000-c6d8ab7a6278\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.435869Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-7657-7461-8000-0679f7c457a8\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.400193Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-77e9-7a7e-8000-6451affc72c2\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.498033Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-8607-71fa-8000-249a60bff59f\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.380747Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-86c4-700b-8000-028f20c56cf7\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.426705Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-866e-76ef-8000-35be7f9f61b1\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.406044Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-95d7-7c74-8000-70b120c31efa\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:21.369126Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " }\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n", + "Index: 37 Type: finish\n", + "output: [\n", + " {\n", + " \"id\": \"0684842a-76e8-7da2-8000-c6d8ab7a6278\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"Julep AI\\n\\n===============\\n\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\\nOpen Source\\n\\n[Github \\u2605 4.7K](https://github.com/julep-ai/julep)\\n\\n Deploy serverless\\n\\nAI workflows\\n\\nat scale\\n=========================================\\n\\nin minutes, not weeks.\\n\\n Open-source API to build \\n\\ninfinitely scalable, durable and long running AI pipelines\\n\\nusing agents, tasks and tools\\n\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\n\\n [Get a demo](https://calendly.com/ishita-julep)\\n\\nCUSTOMER STORIES\\n\\nVideo Editing\\n\\nRAG Assitants\\n\\nMarketing\\n\\nUser Profiling\\n\\nVerifications\\n\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\\n Connect with any AI model,\\n\\nAPI or data source\\n----------------------------------------------\\n\\nSeamlessly integrate with your existing stack and favorite AI models.\\n\\n LLM Platforms\\n\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\\nLanguages\\n\\nIntegrations\\n\\n* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* !\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.435869Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-7657-7461-8000-0679f7c457a8\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \\n* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \\n* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * !\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.400193Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-77e9-7a7e-8000-6451affc72c2\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \\n* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \\n * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \\n* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \\n\\n Any REST API\\n\\n### Build with Julep\\n\\nCreate an agent\\n\\nDefine agents that can talk to users inside of a session\\n\\nAdd tools\\n\\nEquip agents with tools - web search, API calls, or custom integrations\\n\\nDefine your tasks\\n\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\\nDeploy\\n\\nExecute production-grade workflows with one command\\n\\nagent = julep.agents.create(\\n\\nname=\\\"Spiderman\\\",\\n\\nabout=\\\"AI that can crawl the web and extract data\\\",\\n\\nmodel=\\\"gpt-4o-mini\\\",\\n\\ndefault_settings={\\n\\n\\\"temperature\\\": 0.75,\\n\\n\\\"max_tokens\\\": 10000,\\n\\n\\\"top_p\\\": 1.0,\\n\\n}\\n\\n)\\n\\n Real people, Real results\\n-------------------------\\n\\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* \\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:19.498033Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-8607-71fa-8000-249a60bff59f\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \\n* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \\n* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.380747Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-86c4-700b-8000-028f20c56cf7\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \\n* \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \\n* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \\n\\nBuild AI pipelines \\n\\nin minutes.\\n\\n Scale to millions.\\n ----------------------------------------------------\\n\\nRapid Prototyping\\n\\n\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\\n Production Ready\\n\\n\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\\nModular Design\\n\\n\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\\nInfinite Scale\\n\\nHandle millions of concurrent users with automatic scaling and load balancing\\n\\nFuture Proof\\n\\n\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\\nComplete Control\\n\\n\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\\nQuestions? \\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Answers.\\n ---------------------\\n\\nWhat is Julep?\\n\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\\n Who is Julep for?\\n\\n Julep is designed for data scientists and ML engineers\\u2014especially in enterprise settings\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\\n How does Julep's approach differ from typical AI development?\\n\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.426705Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-866e-76ef-8000-35be7f9f61b1\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\\n How is Julep different from agent frameworks?\\n\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\\n What types of workflows can I build with Julep?\\n\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\\n How does Julep handle scaling and fault tolerance?\\n\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\\n Is Julep secure and enterprise-grade?\\n\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\\n What are Julep\\u2019s pricing models?\\n\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\\n ### Build faster using Julep API\\n\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\\n Keep me informed\\n\\nDev Resources\\n\\n [Docs](https://docs.julep.ai/)\\n\\n [Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:20.406044Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " },\n", + " {\n", + " \"id\": \"0684842a-95d7-7c74-8000-70b120c31efa\",\n", + " \"title\": \"Website Document\",\n", + " \"content\": [\n", + " \"[Get API Key](https://dashboard.julep.ai/)\\n\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\\nUsecases\\n\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\\nCompany\\n\\n [About](https://julep.ai/about)\\n\\n [Contact Us](https://julep.ai/contact)\\n\\n [Book Demo](https://calendly.com/ishita-julep)\\n\\nSocials\\n\\n [Github](https://github.com/julep-ai/julep)\\n\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\\n [Twitter](https://x.com/julep_ai)\\n\\n [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Dev.to](https://dev.to/julep)\\n\\n [Hugging Face](https://huggingface.co/julep-ai)\\n\\n [Youtube](https://www.youtube.com/@julep_ai)\\n\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\\nBuilt by Engineers, for Engineers\\n\\n\\u00a9 Julep AI Inc. 2025\\n\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\"\n", + " ],\n", + " \"language\": \"english\",\n", + " \"metadata\": {\n", + " \"source\": \"jina_crawler\"\n", + " },\n", + " \"modality\": \"text\",\n", + " \"created_at\": \"2025-06-10T14:35:21.369126Z\",\n", + " \"embeddings\": [],\n", + " \"embedding_model\": \"text-embedding-3-large\",\n", + " \"embedding_dimensions\": 1024\n", + " }\n", + "]\n", + "----------------------------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "import json\n", + "execution_transitions = client.executions.transitions.list(\n", + " execution_id=execution_homepage.id, limit=2000).items\n", + "\n", + "for index, transition in enumerate(reversed(execution_transitions)):\n", + " print(\"Index: \", index, \"Type: \", transition.type)\n", + " print(\"output: \", json.dumps(transition.output, indent=2))\n", + " print(\"-\" * 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lisitng the Document Store for the Agent\n", + "\n", + "The document store is where the agent stores the documents it has created. Each document has a `title` , `content`, `id`, `metadata`, `created_at` and the `vector embedding` associated with it. This will be used for the retrieval of the documents when the agent is queried." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of documents in the document store: 4\n" + ] + } + ], + "source": [ + "docs = [*client.agents.docs.list(agent_id=AGENT_UUID)]\n", + "print(\"Number of documents in the document store: \", len(docs))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# # # UNCOMMENT THIS TO DELETE ALL THE AGENT'S DOCUMENTS\n", + "\n", + "# for doc in client.agents.docs.list(agent_id=AGENT_UUID, limit=1000):\n", + "# client.agents.docs.delete(agent_id=AGENT_UUID, doc_id=doc.id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a Session\n", + "\n", + "A session is used to interact with the agent. It is used to send messages to the agent and receive responses.\n", + "Situation is the initial message that is sent to the agent to set the context for the conversation. Out here you can add more information about the agent and the task it is performing to help the agent answer better. Additionally, you can also define the `search_threshold` and `search_query_chars` which are used to control the retrieval of the documents from the document store which will be used for the retrieval of the documents when the agent is queried.\n", + "More information about the session can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#session)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Agent created with ID: cd2bc3ee-fe18-4ddc-8f8a-d547dbf183d7\n", + "Session created with ID: 0684842b-fa18-7840-8000-eba0bbbca948\n" + ] + } + ], + "source": [ + "situation = \"\"\"\n", + "You are an AI agent designed to assist users with their queries about our company and products.\n", + "Your goal is to provide clear and detailed responses.\n", + "\n", + "**Guidelines**:\n", + "1. Assume the user is unfamiliar with the company and products.\n", + "2. Thoroughly read and comprehend the user's question.\n", + "3. Use the provided context documents to find relevant information.\n", + "4. Craft a detailed response based on the context and your understanding of the company and products.\n", + "5. Include links to specific company pages for further information when applicable.\n", + "\n", + "**Response format**:\n", + "- Use simple, clear language.\n", + "- Include relevant website links.\n", + "\n", + "**Important**:\n", + "- For questions related to the business, only use the information that are explicitly given in the documents above.\n", + "- If the user asks about the business, and it's not given in the documents above, respond with an answer that states that you don't know.\n", + "- Use the most recent and relevant data from context documents.\n", + "- Be proactive in helping users find solutions.\n", + "- Ask for clarification if the query is unclear.\n", + "- Avoid using the following in your response: Based on the provided documents, based on the provided information, based on the documentation... etc.\n", + "\n", + "{%- if docs -%}\n", + "**Relevant documents**:{{NEWLINE}}\n", + " {%- for doc in docs -%}\n", + " {{doc.title}}{{NEWLINE}}\n", + " {%- if doc.content is string -%}\n", + " {{doc.content}}{{NEWLINE}}\n", + " {%- else -%}\n", + " {%- for snippet in doc.content -%}\n", + " {{snippet}}{{NEWLINE}}\n", + " {%- endfor -%}\n", + " {%- endif -%}\n", + " {{\"---\"}}\n", + " {%- endfor -%}\n", + "\n", + "{%- else -%}\n", + "There are no documents available for this query.\n", + "{%- endif -%}\n", + "\"\"\"\n", + "\n", + "# Create a session for interaction\n", + "session = client.sessions.create(\n", + " situation=situation,\n", + " agent=str(AGENT_UUID),\n", + " recall_options={\n", + " \"mode\": \"hybrid\",\n", + " \"num_search_messages\": 1,\n", + " # \"max_query_length\": 800,\n", + " \"confidence\": 0.5,\n", + " \"alpha\": 0.5,\n", + " \"limit\": 10,\n", + " # \"mmr_strength\": 0.5,\n", + " },\n", + ")\n", + "print(f\"Agent created with ID: {agent.id}\")\n", + "print(f\"Session created with ID: {session.id}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chatting with the Agent\n", + "\n", + "The chat method is used to send messages to the agent and receive responses. The messages are sent as a list of dictionaries with the `role` and `content` keys." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def chat_with_agent(user_question):\n", + " response = client.sessions.chat(\n", + " session_id=session.id,\n", + " messages=[\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": user_question,\n", + " }\n", + " ],\n", + " recall=True,\n", + " )\n", + "\n", + " return response" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Building with Julep involves a few straightforward steps to create, deploy, and manage AI workflows. Here's a step-by-step guide:\n", + "\n", + "1. **Create an Agent**: Define agents that can interact with users within a session. Agents are the core of your AI workflows.\n", + "\n", + "2. **Add Tools**: Equip your agents with necessary tools such as web search, API calls, or custom integrations. This allows your agent to access and retrieve data efficiently.\n", + "\n", + "3. **Define Your Tasks**: Use YAML to define multi-step processes. You can incorporate decision trees, loops, and parallel execution to handle complex workflows.\n", + "\n", + "4. **Deploy**: Once you have configured your agent and defined its tasks, you can execute production-grade workflows with a single command.\n", + "\n", + "Here's a basic example of creating an agent with Julep:\n", + "\n", + "```python\n", + "agent = julep.agents.create(\n", + " name=\"Spiderman\",\n", + " about=\"AI that can crawl the web and extract data\",\n", + " model=\"gpt-4o-mini\",\n", + " default_settings={\n", + " \"temperature\": 0.75,\n", + " \"max_tokens\": 10000,\n", + " \"top_p\": 1.0,\n", + " }\n", + ")\n", + "```\n", + "\n", + "For more detailed information and resources, you can explore the development documentation and SDKs available on Julep's platform:\n", + "\n", + "- [Julep Development Docs](https://docs.julep.ai/)\n", + "- [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n", + "- [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n", + "\n", + "These resources offer comprehensive guidance on setting up and optimizing your AI workflows with Julep.\n" + ] + } + ], + "source": [ + "# Example usage\n", + "user_question = \"How do I build with julep?\"\n", + "response = chat_with_agent(user_question)\n", + "\n", + "print(response.choices[0].message.content)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Julep AI has received several positive testimonials from customers, showcasing its transformative impact on various businesses. Here are some highlights:\n", + "\n", + "1. **Suryansh Tibarewal, CEO of EssentiallySports**: He mentioned that Julep sits at the intersection of what Zapier did for simplifying workflows and what Vercel did for simplifying shipping, expressing excitement about the endless possibilities with Julep's technology.\n", + "\n", + "2. **Vedant Maheshwari, CEO of Vidyo.ai**: Noted Julep as a \"GAME CHANGER,\" stating that Vidyo was able to ship six months' worth of product development in just six hours.\n", + "\n", + "3. **Madhavan, CEO of Reclaim Protocol**: Shared that their AI stack development time was significantly reduced from months to a couple of weeks, largely due to Julep handling most of the infrastructure orchestration, allowing them to focus on refining prompts.\n", + "\n", + "4. **Akshay Pruthi, CEO of Calm Sleep**: Described the experience as akin to reviewing designs on Figma, where he could brainstorm, test, prototype, and ship alongside his developer, regaining control as a non-developer.\n", + "\n", + "5. **Sachin Gaur, Cofounder of Ukumi AI**: Highlighted that working with Julep allowed them to focus on their core strengths while Julep managed the complexities of AI model integration, enabling them to accomplish more with fewer resources.\n", + "\n", + "These testimonials reflect Julep's ability to enhance development efficiency, simplify workflows, and empower businesses to focus on their key competencies.\n" + ] + } + ], + "source": [ + "# Example usage\n", + "user_question = \"What customer testimonials has julep received?\"\n", + "response = chat_with_agent(user_question)\n", + "\n", + "print(response.choices[0].message.content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check the matched documents" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matched docs:\n", + "\n", + "\n", + "Doc 1:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + "* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * !\n", + "The chunk contains a series of image links that are part of a section detailing integrations and capabilities of the Julep AI platform, showcasing the variety of supported platforms, tools, and APIs that can be connected for building scalable AI workflows.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 2:\n", + "Title: Website Document\n", + "Snippet content:\n", + "-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\n", + "\n", + " How is Julep different from agent frameworks?\n", + "\n", + " While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\n", + "\n", + " What types of workflows can I build with Julep?\n", + "\n", + " You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\n", + "\n", + " How does Julep handle scaling and fault tolerance?\n", + "\n", + " Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\n", + "\n", + " Is Julep secure and enterprise-grade?\n", + "\n", + " Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\n", + "\n", + " Is Julep secure and enterprise-grade?\n", + "\n", + " Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\n", + "\n", + " What are Julep’s pricing models?\n", + "\n", + " We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\n", + "\n", + " ### Build faster using Julep API\n", + "\n", + "### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\n", + "\n", + " Keep me informed\n", + "\n", + "Dev Resources\n", + "\n", + " [Docs](https://docs.julep.ai/)\n", + "\n", + " [Get API Key](https://dashboard.julep.ai/)\n", + "\n", + " [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n", + "\n", + " [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n", + "\n", + "\n", + "This chunk provides insights into Julep's AI workflow capabilities, differentiation from other agent frameworks, the scalability and fault tolerance of its platform, enterprise readiness, pricing models, and available development resources. It emphasizes Julep's strengths in creating advanced AI systems with robust state management, security features, and integration options.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 3:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Get API Key](https://dashboard.julep.ai/)\n", + "\n", + " [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n", + "\n", + " [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n", + "\n", + " [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\n", + "\n", + "Usecases\n", + "\n", + "[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\n", + "\n", + " [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\n", + "\n", + " [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\n", + "\n", + "[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\n", + "\n", + " [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\n", + "\n", + "Company\n", + "\n", + " [About](https://julep.ai/about)\n", + "\n", + " [Contact Us](https://julep.ai/contact)\n", + "\n", + " [Book Demo](https://calendly.com/ishita-julep)\n", + "\n", + "Socials\n", + "\n", + " [Github](https://github.com/julep-ai/julep)\n", + "\n", + "[LinkedIn](https://www.linkedin.com/company/julep-ai)\n", + "\n", + " [Twitter](https://x.com/julep_ai)\n", + "\n", + " [Dev.to](https://dev.to/julep)\n", + "\n", + " [Hugging Face](https://huggingface.co/julep-ai)\n", + "\n", + " [Youtube](https://www.youtube.com/@julep_ai)\n", + "\n", + "! [Dev.to](https://dev.to/julep)\n", + "\n", + " [Hugging Face](https://huggingface.co/julep-ai)\n", + "\n", + " [Youtube](https://www.youtube.com/@julep_ai)\n", + "\n", + "! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\n", + "\n", + "Built by Engineers, for Engineers\n", + "\n", + "© Julep AI Inc. 2025\n", + "\n", + " [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\n", + "This chunk provides resources and external links related to Julep AI, including API keys, SDKs, use cases, company contact and social media channels, situated at the end of the document as a resource and contact section.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 4:\n", + "Title: Website Document\n", + "Snippet content:\n", + "The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \n", + "* \"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \n", + "* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\" ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \n", + "* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \n", + "* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) \n", + "Customer testimonials showcasing the efficiency and transformative impact of Julep AI on various businesses, highlighting rapid development, workflow simplification, and enhanced focus on core strengths.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 5:\n", + "Title: Website Document\n", + "Snippet content:\n", + "Julep AI\n", + "\n", + "===============\n", + "\n", + "[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\n", + "\n", + " [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\n", + "\n", + "Open Source\n", + "\n", + "[Github ★ 4.7K](https://github.com/julep-ai/julep)\n", + "\n", + " Deploy serverless\n", + "\n", + "AI workflows\n", + "\n", + "at scale\n", + "=========================================\n", + "\n", + "in minutes, not weeks.\n", + "\n", + " Open-source API to build \n", + "\n", + "infinitely scalable, durable and long running AI pipelines\n", + "\n", + "using agents, tasks and tools\n", + "\n", + " [Deploy your first workflow](https://dashboard.julep.ai/)\n", + "\n", + " [Get a demo](https://calendly.com/ishita-julep)\n", + "\n", + "CUSTOMER STORIES\n", + "\n", + "Video Editing\n", + "\n", + "RAG Assitants\n", + "\n", + "Marketing\n", + "\n", + "User Profiling\n", + "\n", + "Verifications\n", + "\n", + "! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\n", + "\n", + "Vidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\n", + "\n", + " Iterate and deploy AI features super fast by bringing data from different sources in one place.\n", + "\n", + " Connect with any AI model,\n", + "\n", + "API or data source\n", + "----------------------------------------------\n", + "\n", + "Seamlessly integrate with your existing stack and favorite AI models.\n", + "\n", + " LLM Platforms\n", + "\n", + "! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\n", + "\n", + "! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\n", + "\n", + "! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\n", + "\n", + "! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\n", + "\n", + "! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\n", + "\n", + "! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\n", + "\n", + "! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\n", + "\n", + "! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\n", + "\n", + "! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\n", + "\n", + "! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\n", + "\n", + "! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\n", + "\n", + "Languages\n", + "\n", + "Integrations\n", + "\n", + "* ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* !\n", + "The chunk introduces Julep AI, an open-source platform for deploying serverless AI workflows at scale. It highlights the open-source API's capabilities for building scalable AI pipelines using agents, tasks, and tools. The section also showcases integration with existing stacks and favorite AI models, mentions customer stories in various applications, and lists supported platforms and integrations.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 6:\n", + "Title: Website Document\n", + "Snippet content:\n", + "we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \n", + "* \"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\" ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \n", + "* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \n", + "\n", + "Build AI pipelines \n", + "\n", + "in minutes.\n", + "\n", + " Scale to millions.\n", + " ----------------------------------------------------\n", + "\n", + "Rapid Prototyping\n", + "\n", + "\"From idea to demo in minutes\" using built-in RAG, in-house state management and external tools.\n", + "\n", + " Production Ready\n", + "\n", + "\"Go live instantly with managed infrastructure\" and features such as long-running tasks, automatic retries and error handling\n", + "\n", + "Modular Design\n", + "\n", + "\"Build features like Lego blocks\" by connecting to any external API, switch between LLMs and add custom tools\n", + "\n", + "Infinite Scale\n", + "\n", + "Handle millions of concurrent users with automatic scaling and load balancing\n", + "\n", + "Future Proof\n", + "\n", + "\"Add new AI models anytime\" \"Integrate with any new tool or API\"\n", + "\n", + "Complete Control\n", + "\n", + "\"Full visibility into AI operations\" \"Manage costs and performance easily\"\n", + "\n", + "Questions? \n", + "\n", + " Answers.\n", + " ---------------------\n", + "\n", + "What is Julep?\n", + "\n", + " Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\n", + "\n", + " Answers.\n", + " ---------------------\n", + "\n", + "What is Julep?\n", + "\n", + " Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\n", + "\n", + " Who is Julep for?\n", + "\n", + " Julep is designed for data scientists and ML engineers—especially in enterprise settings—who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\n", + "\n", + " How does Julep's approach differ from typical AI development?\n", + "\n", + " While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\n", + "The chunk is part of a promotional document for Julep AI, highlighting customer testimonials and specific advantages of using the Julep platform for AI development. It discusses how Julep reduces development time by managing infrastructure and provides features like rapid prototyping, production readiness, and scalability. The text also explains Julep's target audience, its unique software engineering approach to AI, and the 8-Factor Agent methodology that distinguishes it from typical AI development and frameworks.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 7:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "\n", + " Any REST API\n", + "\n", + "### Build with Julep\n", + "\n", + "Create an agent\n", + "\n", + "Define agents that can talk to users inside of a session\n", + "\n", + "Add tools\n", + "\n", + "Equip agents with tools - web search, API calls, or custom integrations\n", + "\n", + "Define your tasks\n", + "\n", + " Define multi-step processes in YAML with decision trees, loops, and parallel execution\n", + "\n", + "Deploy\n", + "\n", + "Execute production-grade workflows with one command\n", + "\n", + "agent = julep.agents.create(\n", + "\n", + "name=\"Spiderman\",\n", + "\n", + "about=\"AI that can crawl the web and extract data\",\n", + "\n", + "model=\"gpt-4o-mini\",\n", + "\n", + "default_settings={\n", + "\n", + "\"temperature\": 0.75,\n", + "\n", + "\"max_tokens\": 10000,\n", + "\n", + "\"top_p\": 1.0,\n", + "\n", + "}\n", + "\n", + ")\n", + "\n", + " Real people, Real results\n", + "-------------------------\n", + "\n", + "* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \n", + "* \"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \n", + "* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \n", + "* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* \n", + "The chunk is part of a larger document detailing Julep AI, a platform for building and deploying scalable AI workflows. It highlights Julep's capabilities in creating agents, defining tasks, and deploying workflows with YAML configurations. The chunk includes testimonials from CEOs praising Julep's impact on workflow simplification and rapid deployment, likening it to tools like Zapier and Vercel. The chunk emphasizes real-world applications and user experiences with the platform.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 8:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + "* ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! * ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "* ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1) \n", + "* ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1) \n", + "* ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * !\n", + "This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 9:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Get API Key](https://dashboard.julep.ai/)\n", + "\n", + " [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n", + "\n", + " [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n", + "\n", + " [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\n", + "\n", + "Usecases\n", + "\n", + "[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\n", + "\n", + " [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\n", + "\n", + " [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\n", + "\n", + "[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\n", + "\n", + " [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\n", + "\n", + "Company\n", + "\n", + " [About](https://julep.ai/about)\n", + "\n", + " [Contact Us](https://julep.ai/contact)\n", + "\n", + " [Book Demo](https://calendly.com/ishita-julep)\n", + "\n", + "Socials\n", + "\n", + " [Github](https://github.com/julep-ai/julep)\n", + "\n", + "[LinkedIn](https://www.linkedin.com/company/julep-ai)\n", + "\n", + " [Twitter](https://x.com/julep_ai)\n", + "\n", + " [Dev.to](https://dev.to/julep)\n", + "\n", + " [Hugging Face](https://huggingface.co/julep-ai)\n", + "\n", + " [Youtube](https://www.youtube.com/@julep_ai)\n", + "\n", + "! [Dev.to](https://dev.to/julep)\n", + "\n", + " [Hugging Face](https://huggingface.co/julep-ai)\n", + "\n", + " [Youtube](https://www.youtube.com/@julep_ai)\n", + "\n", + "! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\n", + "\n", + "Built by Engineers, for Engineers\n", + "\n", + "© Julep AI Inc. 2025\n", + "\n", + " [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\n", + "This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\n", + "----------------------------------------------------------------------------------------------------\n", + "Doc 10:\n", + "Title: Website Document\n", + "Snippet content:\n", + "[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1) \n", + "* ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1) \n", + " * ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1) \n", + "* ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1) \n", + "\n", + " Any REST API\n", + "\n", + "### Build with Julep\n", + "\n", + "Create an agent\n", + "\n", + "Define agents that can talk to users inside of a session\n", + "\n", + "Add tools\n", + "\n", + "Equip agents with tools - web search, API calls, or custom integrations\n", + "\n", + "Define your tasks\n", + "\n", + " Define multi-step processes in YAML with decision trees, loops, and parallel execution\n", + "\n", + "Deploy\n", + "\n", + "Execute production-grade workflows with one command\n", + "\n", + "agent = julep.agents.create(\n", + "\n", + "name=\"Spiderman\",\n", + "\n", + "about=\"AI that can crawl the web and extract data\",\n", + "\n", + "model=\"gpt-4o-mini\",\n", + "\n", + "default_settings={\n", + "\n", + "\"temperature\": 0.75,\n", + "\n", + "\"max_tokens\": 10000,\n", + "\n", + "\"top_p\": 1.0,\n", + "\n", + "}\n", + "\n", + ")\n", + "\n", + " Real people, Real results\n", + "-------------------------\n", + "\n", + "* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!! ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg) Vedant Maheshwari CEO, Vidyo.ai \n", + "* We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg) Madhavan CEO, Reclaim Protocol \n", + "* \"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\" ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg) Akshay Pruthi CEO, Calm Sleep \n", + "* Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less. ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg) Sachin Gaur Cofounder, Ukumi AI \n", + "* Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES. ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg) Suryansh Tibarewal CEO, EssentiallySports \n", + "* \n", + "This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\n", + "----------------------------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "print(\"Matched docs:\\n\\n\")\n", + "for index, doc in enumerate(response.docs):\n", + " print(f\"Doc {index + 1}:\")\n", + " print(f\"Title: {doc.title}\")\n", + " print(f\"Snippet content:\\n{doc.snippet.content}\")\n", + " print(\"-\" * 100)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/09-companion-agent.ipynb b/cookbooks/advanced/09-companion-agent.ipynb similarity index 83% rename from cookbooks/09-companion-agent.ipynb rename to cookbooks/advanced/09-companion-agent.ipynb index 055676a8c..4202fa56e 100644 --- a/cookbooks/09-companion-agent.ipynb +++ b/cookbooks/advanced/09-companion-agent.ipynb @@ -1,169 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\"julep\"\n", - "\n", - "
\n", - "

\n", - " \n", - " \"Get\n", - " \n", - "  \n", - " \n", - " \"Documentation\"\n", - " \n", - "

\n", - "

\n", - " \"NPM\n", - "  \n", - " \"PyPI\n", - "  \n", - " \"Docker\n", - "  \n", - " \"GitHub\n", - "

\n", - " \n", - "

\n", - " Discord\n", - " ·\n", - " 𝕏\n", - " ·\n", - " LinkedIn\n", - "

\n", - "
\n", - "\n", - "# Task Definition: Companion AI - Storyline Generator and User Persona Management\n", - "\n", - "### Overview\n", - "\n", - "The Julep AI Companion Project is designed to enhance user interactions with AI companions by:\n", - "- Generating detailed storylines for conversations.\n", - "- Updating session contexts based on chat history.\n", - "- Refining user personas to reflect changes in preferences and experiences.\n", - "\n", - "### Task Tools:\n", - "\n", - "* Task 1: Generate a Storyline for a Companion-User Conversation\n", - "\n", - "- **get_agent**: Retrieve a Julep agent by ID.\n", - "- **list_users**: List Julep users using a metadata filter.\n", - "- **list_agent_docs**: List documents associated with an agent.\n", - "- **create_agent_doc**: Create a new document for an agent.\n", - "\n", - "* Task 2: Update Session Situation Based on Chat History\n", - "\n", - "- **get_julep_session**: Retrieve a Julep session by ID.\n", - "- **update_julep_session**: Update the situation of a session.\n", - "- **history_julep_session**: List the history of a session.\n", - "\n", - "* Task 3: Update the User Persona (and About Section) Based on Chat History\n", - "\n", - "- **get_user_from_ppid**: Retrieve a user using the user PPID.\n", - "- **list_user_docs**: List documents associated with a user.\n", - "- **create_user_doc**: Create a new document for a user.\n", - "- **history_julep_session**: List the history of a session.\n", - "- **update_user**: Update user information.\n", - "\n", - "### Task Input:\n", - "\n", - "- **Agent Information**: Includes agent ID, name, about, and instructions.\n", - "- **User Information**: Comprises user ID, name, about, and metadata.\n", - "- **Session Details**: Consists of session ID and chat history.\n", - "- **User Input**: User messages that drive the conversation and task execution.\n", - "\n", - "### Task Output:\n", - "\n", - "* Task 1:\n", - "- **Storyline**: Detailed narrative for the conversation.\n", - "\n", - "* Task 2:\n", - "- **Session Situation**: Updated context for the session.\n", - "\n", - "* Task 3:\n", - "- **User Persona**: Refined user profile based on chat history.\n", - "\n", - "### Task Flows\n", - "\n", - "* Task 1: Generate a Storyline\n", - "\n", - "This task involves creating a detailed narrative for a companion-user conversation. The storyline is structured in sections such as introduction, rising action, climax, falling action, and conclusion.\n", - "\n", - "The task flow consists of:\n", - "1. Retrieving agent details using `get_agent` tool with the agent ID\n", - "2. Getting user information via `list_users` tool filtered by user PPID\n", - "3. Evaluating agent and user data to understand their characteristics\n", - "4. Using a specialized prompt to generate the storyline that:\n", - " - Reviews companion's name, about section, and instructions\n", - " - Analyzes user's name and background\n", - " - Creates a structured narrative with clear plot progression\n", - " - Ensures alignment with companion's role and objectives\n", - "5. Storing the generated storyline using `create_agent_doc` tool\n", - "\n", - "* Task 2: Update Session Situation\n", - "\n", - "This task updates the session context based on the chat history and user input, ensuring that the AI companion can engage effectively with the user.\n", - "\n", - "The task flow consists of:\n", - "1. Retrieving current session details using `get_julep_session` tool with session ID\n", - "2. Getting session history via `history_julep_session` tool\n", - "3. Evaluating session history and user input to:\n", - " - Track conversation context and emotional state\n", - " - Identify key topics and interests discussed\n", - " - Monitor engagement patterns and preferences\n", - "4. Using a specialized prompt to generate a system message that:\n", - " - Provides empathetic and understanding responses\n", - " - Maintains positive communication tone\n", - " - Engages with user interests appropriately\n", - " - Adapts to user's mood and conversation style\n", - " - Respects boundaries and privacy\n", - " - Suggests relevant activities and topics\n", - "5. Updating the session situation using `update_julep_session` tool\n", - "\n", - "* Task 3: Update User Persona\n", - "\n", - "This task refines the user persona document to capture changes in demographics, psychographics, and content preferences based on recent chat history.\n", - "\n", - "The task flow consists of:\n", - "1. Retrieving user information using `get_user_from_ppid` tool filtered by user PPID\n", - "2. Getting existing user persona via `list_user_docs` tool\n", - "3. Retrieving session history using `history_julep_session` tool\n", - "4. Evaluating user data and chat history to:\n", - " - Track demographic information changes\n", - " - Monitor psychographic preferences\n", - " - Identify content interests and engagement patterns\n", - "5. Using a specialized prompt to generate an updated persona that:\n", - " - Updates demographics (age, gender, location)\n", - " - Refines psychographic traits and interests\n", - " - Adjusts content preferences and engagement levels\n", - " - Maintains consistency with previous persona\n", - "6. Storing the updated persona using `create_user_doc` tool\n", - "7. Updating user's about section via `update_user` tool" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementation\n", - "\n", - "To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\n", - "\n", - "\n", - " \"Open\n", - "\n", - "\n", - "### Additional Information\n", - "\n", - "For more details about the task or if you have any questions, please don't hesitate to contact the author:\n", - "\n", - "**Author:** Julep AI \n", - "**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or Discord" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -181,18 +17,6 @@ "!pip install --upgrade julep --quiet" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### NOTE:\n", - "\n", - "- UUIDs are generated for both the agent and task to uniquely identify them within the system.\n", - "- Once created, these UUIDs should remain unchanged for simplicity.\n", - "- Altering a UUID will result in the system treating it as a new agent or task.\n", - "- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one." - ] - }, { "cell_type": "code", "execution_count": 3, @@ -220,9 +44,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Creating Julep Client with the API Key\n", - "\n", - "Get your API key from [here](https://dashboard.julep.ai/)" + "### creating julep client with the api key\n" ] }, { @@ -371,7 +193,7 @@ "source": [ "# Defining the task to generate a story line for the agent\n", "task_def_1 = yaml.safe_load('''\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: Generate a Story line for the agent\n", "description: Generate a story line for the agent\n", "\n", @@ -488,11 +310,11 @@ " - role: user\n", " content: |-\n", " $ f\"\"\"\n", - " Companion's name: {steps[2].outputs.agent['name']}\n", - " Companion's about: {steps[2].outputs.agent['about']}\n", - " Companion's instructions: {steps[2].outputs.agent['instructions']}\n", - " User's name: {steps[2].outputs.user['name']}\n", - " User's about: {steps[2].outputs.user['about']}\n", + " Companion's name: {steps[2].output.agent['name']}\n", + " Companion's about: {steps[2].output.agent['about']}\n", + " Companion's instructions: {steps[2].output.agent['instructions']}\n", + " User's name: {steps[2].output.user['name']}\n", + " User's about: {steps[2].output.user['about']}\n", " \"\"\"\n", " unwrap: true\n", "\n", @@ -506,18 +328,6 @@ "''')" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "code", "execution_count": null, @@ -710,6 +520,11 @@ "source": [ "# The story line is the output of the second (chronologically, i.e. the\n", "# second transition in the transitions list).\n", + "import time\n", + "while execution.status != \"succeeded\":\n", + " execution = client.executions.get(execution_1.id)\n", + " time.sleep(1)\n", + "\n", "story_line = execution_transitions[1].output\n", "print(story_line)" ] @@ -800,7 +615,7 @@ "source": [ "# Defining the task to update the session situation based on the history of the session and the user input\n", "task_def_2 = yaml.safe_load('''\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: Update the session situation based on the history of the session and the user input\n", "description: Update the session situation based on the history of the session and the user input\n", "\n", @@ -822,7 +637,8 @@ "################### TOOLS ##############################\n", "########################################################\n", "\n", - "# Define the tools that the task will use in this workflow tools:\n", + "# Define the tools that the task will use in this workflow \n", + "tools :\n", "- name: get_julep_session\n", " description: Get a julep session by id\n", " type: system\n", @@ -918,18 +734,6 @@ "\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notes:\n", - "- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\n", - "- The `$` sign is used to differentiate between a Python expression and a string.\n", - "- The `_` refers to the output of the previous step.\n", - "- The `steps[index].input` refers to the input of the step at `index`.\n", - "- The `steps[index].output` refers to the output of the step at `index`." - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -943,7 +747,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -1246,7 +1050,7 @@ "source": [ "# The profiler workflow to update the user persona\n", "task_def_3 = yaml.safe_load(f'''\n", - "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\n", + "# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\n", "name: generate_update_persona\n", "description: Update the user persona based on the session chat history and the user data\n", "\n", @@ -1703,10 +1507,21 @@ } ], "source": [ - "persona_doc = client.users.docs.list(user_id=USER_ID).items[0]\n", + "persona_doc = client.users.docs.list(user_id=USER_ID).items\n", "\n", "print(\"User docs: \")\n", - "print(persona_doc.content[0])" + "print(persona_doc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" ] } ], diff --git a/cookbooks/10-reel-generator.ipynb b/cookbooks/advanced/10-reel-generator.ipynb similarity index 100% rename from cookbooks/10-reel-generator.ipynb rename to cookbooks/advanced/10-reel-generator.ipynb diff --git a/cookbooks/advanced/11-hacker-news-personalized-generator.ipynb b/cookbooks/advanced/11-hacker-news-personalized-generator.ipynb new file mode 100644 index 000000000..259c72a2c --- /dev/null +++ b/cookbooks/advanced/11-hacker-news-personalized-generator.ipynb @@ -0,0 +1,499 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\"julep\"\n", + "\n", + "
\n", + "

\n", + " \n", + " \"Get\n", + " \n", + "  \n", + " \n", + " \"Documentation\"\n", + " \n", + "

\n", + "

\n", + " \"NPM\n", + "  \n", + " \"PyPI\n", + "  \n", + " \"Docker\n", + "  \n", + " \"GitHub\n", + "

\n", + " \n", + "

\n", + " Discord\n", + " ·\n", + " 𝕏\n", + " ·\n", + " LinkedIn\n", + "

\n", + "
\n", + "\n", + "# Hacker News Personalized Newsletter Generator\n", + "\n", + "## Overview\n", + "\n", + "This cookbook demonstrates how to build an intelligent newsletter generator that fetches top stories from Hacker News, personalizes content based on user preferences, and creates curated summaries. The agent analyzes story relevance using AI, scrapes full article content, and generates insightful summaries for a truly personalized reading experience.\n", + "\n", + "## What This Cookbook Does\n", + "\n", + "The Hacker News agent performs the following workflow:\n", + "\n", + "1. **Fetches Top Stories**: Retrieves the latest top stories from Hacker News API\n", + "2. **Filters by Score**: Only includes stories that meet a minimum score threshold\n", + "3. **Scrapes Article Content**: Uses Spider web scraping to get full article content in markdown format\n", + "4. **Fetches Comments**: Retrieves top comments for each story to provide community context\n", + "5. **Personalizes Content**: Scores each story based on user's technology interests (0-100)\n", + "6. **Generates Summaries**: Creates concise, insightful summaries for relevant stories\n", + "7. **Formats Output**: Produces a clean newsletter format with titles, URLs, and summaries\n", + "\n", + "## Key Features\n", + "\n", + "- **Parallel Processing**: Fetches story details, article content, and comments in parallel for efficiency\n", + "- **Smart Filtering**: Two-stage filtering - first by HN score, then by personalization relevance\n", + "- **Full Content Analysis**: Goes beyond titles to analyze actual article content\n", + "- **Community Context**: Includes top comments to capture community insights\n", + "- **Customizable Parameters**: Configurable minimum score, number of stories, and user interests\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install julep -U --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import uuid\n", + "\n", + "AGENT_UUID = uuid.uuid4()\n", + "TASK_UUID = uuid.uuid4() " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating Julep Client with the API Key\n", + "\n", + "Get your API key from [here](https://dashboard.julep.ai/)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from julep import Client\n", + "import os\n", + "\n", + "JULEP_API_KEY = \"your-api-key\"\n", + "\n", + "# Create a Julep client\n", + "client = Client(api_key=JULEP_API_KEY, environment=\"production\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an \"agent\"\n", + "\n", + "Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\n", + "\n", + "To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Defining the agent\n", + "name = \"Hacker News Agent\"\n", + "about = \"A hacker news agent that can fetch the top stories from Hacker News and summarize them.\"\n", + "\n", + "# Create the agent\n", + "agent = client.agents.create_or_update(\n", + " agent_id=AGENT_UUID,\n", + " name=name,\n", + " about=about,\n", + " model=\"gpt-4o\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Defining a Task\n", + "\n", + "Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\n", + "\n", + "You can use them to conduct complex actions by defining them step-by-step.\n", + "\n", + "To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "\n", + "SPIDER_API_KEY = \"spider-api-key\"\n", + "\n", + "# Defining the task\n", + "task_def = yaml.safe_load(f\"\"\"\n", + "name: HN Newsletter Generator\n", + "description: Fetch top Hacker News stories, personalize content\n", + "input_schema:\n", + "type: object\n", + "properties:\n", + " min_score:\n", + " type: integer\n", + " default: 50\n", + " num_stories:\n", + " type: integer\n", + " default: 10\n", + " description: Number of stories to include in newsletter\n", + " user_preferences:\n", + " type: array\n", + " items:\n", + " type: string\n", + " description: User's technology interests (e.g., [\"AI/ML\", \"Python\", \"Startups\"])\n", + "\n", + "tools:\n", + "# Fetch top story IDs from Hacker News\n", + "- name: fetch_hn_stories\n", + "type: api_call\n", + "api_call:\n", + " method: GET\n", + " url: https://hacker-news.firebaseio.com/v0/topstories.json\n", + " headers:\n", + " Content-Type: application/json\n", + "\n", + "# Get detailed information for a specific story\n", + "- name: get_story_details\n", + "type: api_call\n", + "api_call:\n", + " method: GET\n", + " url: \"https://example.com\"\n", + " headers:\n", + " Content-Type: application/json\n", + "\n", + "# Fetch individual comment details\n", + "- name: get_comment_details\n", + "type: api_call\n", + "api_call:\n", + " method: GET\n", + " url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json\n", + "\n", + "# Spider web scraping integration\n", + "- name: spider_fetch\n", + "type: integration\n", + "integration:\n", + " provider: spider\n", + " setup:\n", + " spider_api_key: {SPIDER_API_KEY}\n", + "\n", + "main:\n", + "# Step 0: Fetch top story IDs from Hacker News\n", + "# This returns an array of story IDs sorted by ranking (typically returns 500 IDs)\n", + "- tool: fetch_hn_stories\n", + "arguments:\n", + " url: \"https://hacker-news.firebaseio.com/v0/topstories.json\"\n", + "label: fetch_story_ids\n", + "\n", + "# Step 1: Extract first 50 story IDs\n", + "# We limit to 50 to avoid overwhelming API calls while still having enough stories to filter\n", + "- evaluate:\n", + " story_ids: $ steps[\"fetch_story_ids\"].output.json[:50]\n", + " message: $ f\"Fetched {{len(steps['fetch_story_ids'].output.json)}} stories, processing top 50\"\n", + "label: extract_ids\n", + "\n", + "# Step 2: Fetch details for each story in parallel\n", + "# Retrieves full story data (title, url, score, comments count) for each ID with parallelism of 10\n", + "- over: $ steps[\"extract_ids\"].output[\"story_ids\"]\n", + "parallelism: 10\n", + "map:\n", + " tool: get_story_details\n", + " arguments:\n", + " method: GET\n", + " url: $ f\"https://hacker-news.firebaseio.com/v0/item/{{_}}.json\"\n", + "label: all_stories\n", + "\n", + "# Step 3: Extract successfully fetched story data from the API responses\n", + "- evaluate:\n", + " stories: $ [item[\"json\"] for item in _ if item and \"json\" in item]\n", + "label: extract_stories\n", + "\n", + "# Step 4: Filter by score\n", + "# Only keep stories that meet the minimum score threshold (default: 50 points)\n", + "- evaluate:\n", + " filtered: $ [s for s in steps[\"extract_stories\"][\"output\"][\"stories\"] if \"score\" in s and s[\"score\"] >= inputs.get(\"min_score\", 50)]\n", + "label: filter_stories\n", + "\n", + "# Step 5: Sort stories by score and limit to requested number\n", + "# Takes top N stories based on num_stories input parameter (default: 10)\n", + "- evaluate:\n", + " sorted_stories: '$ steps[\"filter_stories\"][\"output\"][\"filtered\"][:inputs.get(\"num_stories\", 10)]'\n", + "label: sort_stories\n", + "\n", + "# Step 6: Fetch full article content for each story using Spider web scraping\n", + "# Spider converts web pages to clean markdown format for easier processing\n", + "- over: $ steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]\n", + "parallelism: 4\n", + "map:\n", + " tool: spider_fetch\n", + " arguments:\n", + " url: $ _['url']\n", + " params:\n", + " request: smart_mode\n", + " return_format: markdown\n", + " proxy_enabled: $ True\n", + " filter_output_images: $ True\n", + " filter_output_svg: $ True\n", + " readability: $ True\n", + " limit: 1\n", + "label: fetch_content\n", + "\n", + "# Step 7: Extract scraped content from Spider responses\n", + "# Handles cases where scraping might fail for some URLs\n", + "- evaluate:\n", + " scraped_contents: '$ [item[\"result\"][0][\"content\"] if item and \"result\" in item and item[\"result\"] and \"content\" in item[\"result\"][0] else \"\" for item in _]'\n", + "label: extract_scraped_content\n", + "\n", + "# Step 8: Prepare comment fetching by creating pairs of story ID and comment ID\n", + "# Gets up to 3 top comments per story for context\n", + "- evaluate:\n", + " comment_pairs: '$ [{{\"story_id\": story[\"id\"], \"story_index\": idx, \"comment_id\": kid}} for idx, story in \n", + "enumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]) if \"kids\" in story for kid in story[\"kids\"][:3]]'\n", + "label: prepare_comments\n", + "\n", + "# Step 9: Fetch all comment details in parallel\n", + "# Higher parallelism (15) since comments are smaller and faster to fetch\n", + "- over: '$ steps[\"prepare_comments\"][\"output\"][\"comment_pairs\"]'\n", + "parallelism: 15\n", + "map:\n", + " tool: get_comment_details\n", + " arguments:\n", + " method: GET\n", + " url: '$ f\"https://hacker-news.firebaseio.com/v0/item/{{_[\\\"comment_id\\\"]}}.json\"'\n", + "label: fetch_all_comments\n", + "\n", + "# Step 10: Extract just the comment data\n", + "# Filters out any failed comment fetches\n", + "- evaluate:\n", + " comment_results: '$ [item[\"json\"] for item in _ if item and \"json\" in item and item[\"json\"]]'\n", + "label: extract_comments\n", + "\n", + "# Step 11: Group comments by their parent story index\n", + "# This maintains the relationship between comments and their stories\n", + "- evaluate:\n", + " comments_grouped: '$ [[pair[\"story_index\"], steps[\"extract_comments\"][\"output\"][\"comment_results\"][i]] for i, pair in \n", + "enumerate(steps[\"prepare_comments\"][\"output\"][\"comment_pairs\"])]'\n", + "label: comments_with_index\n", + "\n", + "# Step 12: Combine stories with their scraped content and top comments\n", + "# Creates a complete data structure for each story\n", + "- evaluate:\n", + " stories_with_comments: '$ [dict(story, content=steps[\"extract_scraped_content\"][\"output\"][\"scraped_contents\"][i], top_comments=[item[1] for item in \n", + "steps[\"comments_with_index\"][\"output\"][\"comments_grouped\"] if item[0] == i]) for i, story in enumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"])]'\n", + "label: final_stories_with_comments\n", + "\n", + "# Step 13: Score each story individually based on user preferences\n", + "# Uses LLM to analyze relevance to user's specified interests\n", + "# Returns a score 0-100 for personalization\n", + "- over: $ steps[\"final_stories_with_comments\"][\"output\"][\"stories_with_comments\"]\n", + "parallelism: 10\n", + "map:\n", + " prompt:\n", + " - role: system\n", + " content: |-\n", + " $ f'''\n", + " You are a content curator. Score this HN story's relevance to the user's interests.\n", + " User interests: $ {{ steps[0].input.user_preferences }}\n", + "\n", + " Return only a JSON object with the relevance score (0-100).\n", + " Return ONLY raw JSON without markdown code blocks\n", + " '''\n", + " - role: user\n", + " content: >-\n", + " $ f'''\n", + " Story to analyze:\n", + " Title: $ {{ _[\"title\"] }}\n", + " URL: $ {{ _[\"url\"] }}\n", + " Score: $ {{ _[\"score\"] }}\n", + " Content preview: $ {{ _[\"content\"]}}\n", + " Top comment: $ {{ _[\"top_comments\"][0][\"text\"] }}\n", + "\n", + " Return format: \"relevance_score\" from 0 to 100\n", + " Return only a JSON object with the relevance score (0-100).\n", + " Return ONLY raw JSON without markdown code blocks\n", + " '''\n", + " unwrap: true\n", + "label: score_stories\n", + "\n", + "# Step 14: Combine original stories with their relevance scores\n", + "# Creates tuples of story data and personalization score\n", + "- evaluate:\n", + " scored_stories: '$ [{{\"story\": steps[\"final_stories_with_comments\"][\"output\"][\"stories_with_comments\"][i], \"relevance_score\": json.loads(steps[\"score_stories\"][\"output\"][i])[\"relevance_score\"]}} for i in range(len(steps[\"score_stories\"][\"output\"]))]'\n", + "label: combine_scores\n", + "\n", + "# Step 15: Filter stories with relevance >= 60\n", + "# Only keep stories that are highly relevant to user's interests\n", + "- evaluate:\n", + " personalized_stories: $ [item for item in steps[\"combine_scores\"][\"output\"][\"scored_stories\"] if item[\"relevance_score\"] >= 60]\n", + "label: filter_personalized\n", + "\n", + "# Step 16: Generate concise summaries for each personalized story\n", + "# Creates 100-word summaries highlighting key insights\n", + "- over: $ steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]\n", + "parallelism: 10\n", + "map:\n", + " prompt:\n", + " - role: system\n", + " content: |\n", + " Generate a concise, insightful summary (max 100 words) for this article.\n", + " Focus on key insights and why it matters.\n", + " - role: user\n", + " content: >-\n", + " $ f'''\n", + " Title: {{ _[\"story\"][\"title\"] }}\n", + " Content: {{ _[\"story\"][\"content\"] }}\n", + " Top comments: {{ _[\"story\"][\"top_comments\"] }}\n", + " '''\n", + " unwrap: true\n", + "label: generate_summaries\n", + "\n", + "# Step 17: Prepare final output structure\n", + "# Formats all data into a clean structure\n", + "# Includes title, URLs, comment count, and generated summary\n", + "- evaluate:\n", + " final_output: |\n", + " $ [{{\n", + " \"title\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"title\"],\n", + " \"url\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"url\"],\n", + " \"hn_url\": f\"https://news.ycombinator.com/item?id={{steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}}\",\n", + " \"comments_count\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"].get(\"descendants\", 0),\n", + " \"summary\": steps[\"generate_summaries\"][\"output\"][i]\n", + " }} for i in range(len(steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]))]\n", + "label: prepare_final_output\n", + "\n", + "\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "task = client.tasks.create_or_update(\n", + " task_id=TASK_UUID,\n", + " agent_id=AGENT_UUID,\n", + " **task_def\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating an Execution\n", + "\n", + "An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\n", + "\n", + "To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "execution = client.executions.create(\n", + " task_id=task.id,\n", + " input={\n", + " \"min_score\": 50,\n", + " \"num_stories\": 10,\n", + " \"user_preferences\": [\"AI/ML\", \"Python\", \"Startups\", \"tech\"],\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### List Transitions\n", + "\n", + "This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "transitions = []\n", + "of = 0\n", + "\n", + "while new_transitions:= client.executions.transitions.list(execution.id, limit=100, offset=of).items:\n", + " transitions.extend(new_transitions)\n", + " of += 100\n", + "\n", + "for i, transition in enumerate(transitions):\n", + " print(f\"Transition index: {len(transitions) - i}, type: {transition.type}, current: {transition.current}, next: {transition.next}\")\n", + " print(\"-\" * 10)\n", + " print(transition.output)\n", + " print(\"/\" * 10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "execution = client.executions.get(execution.id)\n", + "\n", + "print(execution.output)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/basics/01-Hello-Agent.ipynb b/cookbooks/basics/01-Hello-Agent.ipynb new file mode 100644 index 000000000..7acaa68ec --- /dev/null +++ b/cookbooks/basics/01-Hello-Agent.ipynb @@ -0,0 +1,59 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Hello Agent\n", + "Create a basic agent using Julep.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from julep import Client\n", + "import os, uuid\n\n", + "client = Client(api_key=os.getenv('JULEP_API_KEY'))\n", + "agent = client.agents.create(name='Hello Agent', model='gpt-4o', about='Basic example agent')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "session = client.sessions.create(agent_id=agent.id)\n", + "response = client.sessions.chat(session_id=session.id, messages=[{\"role\": \"user\", \"content\": 'hello'}])\n", + "print(response.choices[0].message.content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "julep", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/basics/02-Simple-Task.ipynb b/cookbooks/basics/02-Simple-Task.ipynb new file mode 100644 index 000000000..fdd6c4c00 --- /dev/null +++ b/cookbooks/basics/02-Simple-Task.ipynb @@ -0,0 +1,57 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simple Task\n", + "Define a simple task for the agent.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "task_def = yaml.safe_load('''\nname: Echo Task\ndescription: Echo user input\nmain:\n - prompt:\n - role: system\n content: |\n Say hello and repeat the message.\n - role: user\n content: $ input.message\n''')\n", + "task = client.tasks.create(agent_id=agent.id, **task_def)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "execution = client.executions.create(task_id=task.id, input={'message':'Julep rocks!'})\n", + "print(execution.status)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "julep", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/basics/03-Adding-Tools.ipynb b/cookbooks/basics/03-Adding-Tools.ipynb new file mode 100644 index 000000000..2c72e81ff --- /dev/null +++ b/cookbooks/basics/03-Adding-Tools.ipynb @@ -0,0 +1,52 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adding Tools\n", + "Attach a tool to your agent.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tool = client.agents.tools.create(\n agent_id=agent.id,\n name='wikipedia_search',\n type='integration',\n integration={'provider':'wikipedia'}\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After creating the tool you can reference it within task definitions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "julep", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/basics/04-Parallel-Steps.ipynb b/cookbooks/basics/04-Parallel-Steps.ipynb new file mode 100644 index 000000000..f110d05f3 --- /dev/null +++ b/cookbooks/basics/04-Parallel-Steps.ipynb @@ -0,0 +1,47 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parallel Steps\n", + "Example of running steps in parallel.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import yaml\n", + "task_def = yaml.safe_load('''\nname: Parallel Example\ndescription: Process items concurrently\nmain:\n - map:\n over: $ input.items\n parallelism: 2\n prompt:\n - role: user\n content: $ _\n''')\n", + "task = client.tasks.create(agent_id=agent.id, **task_def)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "julep", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbooks/basics/05-RAG-and-Docs.ipynb b/cookbooks/basics/05-RAG-and-Docs.ipynb new file mode 100644 index 000000000..17df3a047 --- /dev/null +++ b/cookbooks/basics/05-RAG-and-Docs.ipynb @@ -0,0 +1,48 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# RAG and Docs\n", + "This notebook demonstrates Retrieval Augmented Generation using documents.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "session = client.sessions.create(agent=agent.id, recall=True, recall_options={'mode':'vector','limit':5})\n", + "# Assume a document has been uploaded to the user\n", + "response = client.sessions.chat(session_id=session.id, messages=[{ 'role':'user', 'content':'Tell me about Julep' }])\n", + "print(response.choices[0].message.content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Concepts\n", + "\n", + "- [Agents](https://docs.julep.ai/concepts/agents)\n", + "- [Tasks](https://docs.julep.ai/concepts/tasks)\n", + "- [Tools](https://docs.julep.ai/concepts/tools)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "julep", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/deploy/responses-build-docker-compose.yaml b/deploy/responses-build-docker-compose.yaml index 048dacb0e..123b0cbcc 100644 --- a/deploy/responses-build-docker-compose.yaml +++ b/deploy/responses-build-docker-compose.yaml @@ -1,7 +1,7 @@ name: open-responses include: - - ../agents-api/docker-compose-api.yml + - ../src/agents-api/docker-compose-api.yml - ../memory-store/docker-compose.yml - ../integrations-service/docker-compose.yml - # - ../llm-proxy/docker-compose.yml + # - ../src/llm-proxy/docker-compose.yml diff --git a/deploy/simple-docker-compose.yaml b/deploy/simple-docker-compose.yaml index 63456e46c..d1b7431e7 100644 --- a/deploy/simple-docker-compose.yaml +++ b/deploy/simple-docker-compose.yaml @@ -90,12 +90,12 @@ services: restart: unless-stopped volumes: - type: bind - source: ../llm-proxy/litellm-config.yaml + source: ../src/llm-proxy/litellm-config.yaml target: /app/config.yaml bind: create_host_path: true - type: bind - source: ../llm-proxy/.keys + source: ../src/llm-proxy/.keys target: /app/.keys read_only: true bind: @@ -215,12 +215,12 @@ services: default: null volumes: - type: bind - source: ../scheduler/dynamicconfig + source: ../src/scheduler/dynamicconfig target: /etc/temporal/config/dynamicconfig bind: create_host_path: true - type: bind - source: ../scheduler/cert + source: ../src/scheduler/cert target: /cert bind: create_host_path: true diff --git a/deploy/standalone-docker-compose.yaml b/deploy/standalone-docker-compose.yaml index 205103b30..440caa13c 100644 --- a/deploy/standalone-docker-compose.yaml +++ b/deploy/standalone-docker-compose.yaml @@ -1,16 +1,10 @@ -########################## -### OPEN RESPONSES API ### -########################## - # An open-source self-hosted version of the new [OpenAI Responses API](https://community.openai.com/t/introducing-the-responses-api/1140929). name: open-responses -## ENVIRONMENT VARS ## # (Recommended way to set them is using `.env` file instead of here) x--shared-environment: &shared-environment - ### REQUIRED ### # Responses API Key AGENTS_API_KEY: ${RESPONSES_API_KEY:?RESPONSES_API_KEY is required} AGENTS_API_KEY_HEADER_NAME: ${RESPONSES_API_KEY_HEADER_NAME:-Authorization} @@ -24,7 +18,6 @@ x--shared-environment: &shared-environment # Brave Search API Key (For web search tool BRAVE_API_KEY: ${BRAVE_API_KEY} - ### OPTIONAL ### # Service settings RESPONSES_API_PORT: ${RESPONSES_API_PORT:-8080} MEMORY_STORE_PASSWORD: ${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password} @@ -43,14 +36,12 @@ x--shared-environment: &shared-environment NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY} GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS} - ### INTERNAL ### # Change **ONLY** if you know what you're doing EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-openai/text-embedding-3-large} ENABLE_RESPONSES: "True" PG_DSN: postgres://postgres:${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}@memory-store:5432/postgres INTEGRATION_SERVICE_URL: ${INTEGRATION_SERVICE_URL:-http://integrations:8000} -## SERVICES ## services: api: diff --git a/docker-bake.hcl b/docker-bake.hcl index 26b8aebe7..fe6b52ebc 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -19,7 +19,7 @@ group "default" { } target "agents-api" { - context = "./agents-api" + context = "./src/agents-api" dockerfile = "Dockerfile" tags = [ "julepai/agents-api:${TAG}", @@ -28,7 +28,7 @@ target "agents-api" { } target "agents-api-worker" { - context = "./agents-api" + context = "./src/agents-api" dockerfile = "Dockerfile.worker" tags = [ "julepai/worker:${TAG}", @@ -37,7 +37,7 @@ target "agents-api-worker" { } target "memory-store" { - context = "./memory-store" + context = "./src/memory-store" dockerfile = "Dockerfile" tags = [ "julepai/memory-store:${TAG}", @@ -46,7 +46,7 @@ target "memory-store" { } target "integrations" { - context = "./integrations-service" + context = "./src/integrations-service" dockerfile = "Dockerfile" tags = [ "julepai/integrations:${TAG}", @@ -55,7 +55,7 @@ target "integrations" { } target "gateway" { - context = "./gateway" + context = "./src/gateway" dockerfile = "Dockerfile" tags = [ "julepai/gateway:${TAG}", @@ -64,7 +64,7 @@ target "gateway" { } target "blob-store" { - context = "./blob-store" + context = "./src/blob-store" dockerfile = "Dockerfile" tags = [ "julepai/blob-store:${TAG}", diff --git a/docker-compose.yml b/docker-compose.yml index e2e5d5cfb..9d03a6672 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,25 @@ - # TODO: Make docker compose setup production ready # SCRUM-30 name: julep include: - - ./memory-store/docker-compose.yml - - ./gateway/docker-compose.yml - - ./agents-api/docker-compose.yml - - ./scheduler/docker-compose.yml - - ./llm-proxy/docker-compose.yml - - ./integrations-service/docker-compose.yml - - ./monitoring/docker-compose.yml - - ./blob-store/docker-compose.yml - - ./hasura/docker-compose.yml + - ./src/memory-store/docker-compose.yml + - ./src/gateway/docker-compose.yml + - ./src/agents-api/docker-compose.yml + - ./src/scheduler/docker-compose.yml + - ./src/llm-proxy/docker-compose.yml + - ./src/integrations-service/docker-compose.yml + - ./src/monitoring/docker-compose.yml + - ./src/blob-store/docker-compose-ha.yml + - ./src/hasura/docker-compose.yml + - ./src/analytics/docker-compose.yml + - ./src/feature-flags/docker-compose.yml # - ./code-interpreter/docker-compose.yml # - ./embedding-service/docker-compose.yml # TODO: Enable after testing - # - ./monitoring/docker-compose.yml + # - ./src/monitoring/docker-compose.yml ### Notes on authentication diff --git a/documentation/AGENTS.md b/documentation/AGENTS.md new file mode 100644 index 000000000..f2f092b60 --- /dev/null +++ b/documentation/AGENTS.md @@ -0,0 +1,92 @@ +# AGENTS.md - documentation + +This directory contains the project documentation, guides, cookbooks, and asset files. + +Key Uses +- Bash commands: + - (No build commands; docs are static markdown.) +- Core directories: + - `concepts/`, `guides/`, `cookbooks/`, `tutorials/`, `assets/`. +- Style guidelines: + - Markdown formatted for readability; wrap at 96 chars. + - Use Google-style code blocks with language tags. +- Testing instructions: + - Manually verify links and code samples. +- Repository etiquette: + - Update `CHANGELOG.md` and navigation `SUMMARY.md` for doc changes. +- Developer environment: + - Preview docs using any local static site generator if desired. +- Unexpected behaviors: + - Ensure images in `assets/` render correctly in all output formats. + +# Julep Documentation Structure + +## Core Purpose +- Julep: Platform for building AI agents with memory, context retention, and complex task execution +- Main Components: Agents, Tasks, Sessions, Tools, Documents, Users +- Architecture: Client-side SDK + Server-side execution engine + Integrations system + +## Key System Concepts + +### Projects +- Definition: Organizational units for grouping related resources +- Components: Canonical name, display name, metadata +- Use: Organize agents, users, and files into logical groups +- Features: Default project for compatibility, future API key/billing segmentation + +### Agents +- Definition: Configured LLM instances with specific personas and capabilities +- Components: Instructions, metadata, tools, docs +- Configuration: Name, model, system template, default settings, project +- Use: Power sessions and tasks as conversational or autonomous entities + +### Tasks +- Definition: Multi-step workflows (similar to GitHub Actions) +- Step Types: Prompt, Evaluate, Tool Call, If-else, Foreach, Map-reduce, etc. +- Execution: Run by agents, maintain state, handle complex logic +- Input/Output: Schema-validated, supports Python expressions with $ syntax + +### Sessions +- Definition: Stateful conversation contexts between users and agents +- Use: Real-time interaction, history tracking, continuous dialogue +- Features: Pausing, resuming, maintaining context across interactions + +### Tools +- Types: + - User-defined functions: Custom functions requiring client execution + - System tools: Built-in operations for accessing Julep APIs + - Integration tools: Pre-built connectors to external services + - API Call tools: Direct HTTP requests to external endpoints +- Integration Categories: Communication, Search, Media processing, Web automation + +### Technical Architecture +- API Layer: RESTful endpoints, authentication, rate limiting +- Task Engine: Distributed processing, state management, parallel execution +- Document Store: Vector database for semantic search, document indexing +- Security: API key auth, data encryption, access controls + +## Documentation Navigation +- Introduction: Basic concepts, installation, quickstart +- Core Concepts: Detailed explanations of each main component +- Tutorials: Practical examples and walkthroughs +- Advanced: Architecture details, agentic patterns, complex workflows +- Integrations: Descriptions of supported external tools and services +- SDKs: Python and Node.js client libraries + +## Developer Workflows +- CLI Usage: Project structure, commands, configuration +- Project Management: Initialization, synchronization, execution +- Templates: Available starter templates for common use cases +- Development Flow: Edit locally, sync to server, run and monitor + +## Integration Categories +- Communication & Data: Email, Weather API +- Media & File Processing: LlamaParse, FFmpeg, Cloudinary, Unstructured +- Search: Arxiv, Algolia, Brave, Wikipedia +- Web & Browser: BrowserBase, Spider, Remote Browser + +## Development Resources +- Discord Community: https://discord.gg/p4c7ehs4vD +- GitHub Repo: https://github.com/julep-ai/julep +- Documentation Site: https://docs.julep.ai/ +- Support Email: developers@julep.ai diff --git a/documentation/CLAUDE.md b/documentation/CLAUDE.md deleted file mode 100644 index 1f83b7852..000000000 --- a/documentation/CLAUDE.md +++ /dev/null @@ -1,65 +0,0 @@ -# Julep Documentation Structure - -## Core Purpose -- Julep: Platform for building AI agents with memory, context retention, and complex task execution -- Main Components: Agents, Tasks, Sessions, Tools, Documents, Users -- Architecture: Client-side SDK + Server-side execution engine + Integrations system - -## Key System Concepts - -### Agents -- Definition: Configured LLM instances with specific personas and capabilities -- Components: Instructions, metadata, tools, docs -- Configuration: Name, model, system template, default settings -- Use: Power sessions and tasks as conversational or autonomous entities - -### Tasks -- Definition: Multi-step workflows (similar to GitHub Actions) -- Step Types: Prompt, Evaluate, Tool Call, If-else, Foreach, Map-reduce, etc. -- Execution: Run by agents, maintain state, handle complex logic -- Input/Output: Schema-validated, supports Python expressions with $ syntax - -### Sessions -- Definition: Stateful conversation contexts between users and agents -- Use: Real-time interaction, history tracking, continuous dialogue -- Features: Pausing, resuming, maintaining context across interactions - -### Tools -- Types: - - User-defined functions: Custom functions requiring client execution - - System tools: Built-in operations for accessing Julep APIs - - Integration tools: Pre-built connectors to external services - - API Call tools: Direct HTTP requests to external endpoints -- Integration Categories: Communication, Search, Media processing, Web automation - -### Technical Architecture -- API Layer: RESTful endpoints, authentication, rate limiting -- Task Engine: Distributed processing, state management, parallel execution -- Document Store: Vector database for semantic search, document indexing -- Security: API key auth, data encryption, access controls - -## Documentation Navigation -- Introduction: Basic concepts, installation, quickstart -- Core Concepts: Detailed explanations of each main component -- Tutorials: Practical examples and walkthroughs -- Advanced: Architecture details, agentic patterns, complex workflows -- Integrations: Descriptions of supported external tools and services -- SDKs: Python and Node.js client libraries - -## Developer Workflows -- CLI Usage: Project structure, commands, configuration -- Project Management: Initialization, synchronization, execution -- Templates: Available starter templates for common use cases -- Development Flow: Edit locally, sync to server, run and monitor - -## Integration Categories -- Communication & Data: Email, Weather API -- Media & File Processing: LlamaParse, FFmpeg, Cloudinary, Unstructured -- Search: Arxiv, Algolia, Brave, Wikipedia -- Web & Browser: BrowserBase, Spider, Remote Browser - -## Development Resources -- Discord Community: https://discord.gg/p4c7ehs4vD -- GitHub Repo: https://github.com/julep-ai/julep -- Documentation Site: https://julep.ai/docs -- Support Email: developers@julep.ai \ No newline at end of file diff --git a/documentation/CLAUDE.md b/documentation/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/documentation/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/documentation/FAQ.mdx b/documentation/FAQ.mdx new file mode 100644 index 000000000..9749988ac --- /dev/null +++ b/documentation/FAQ.mdx @@ -0,0 +1,787 @@ +--- +title: 'FAQ' +description: 'Frequently Asked Questions about Julep Platform' +icon: 'question' +--- + +# Julep Platform FAQ + +This comprehensive FAQ document covers all aspects of the Julep platform, from architecture to troubleshooting. The information is organized by category for easy navigation. + +## Table of Contents + +1. [Architecture & System Design](#architecture--system-design) +2. [Data Model & Storage](#data-model--storage) +3. [Task Execution & Workflow](#task-execution--workflow) +4. [Agents API](#agents-api) +5. [Worker System & Integration](#worker-system--integration) +6. [Development & Deployment](#development--deployment) +7. [Performance & Optimization](#performance--optimization) +8. [Security & Compliance](#security--compliance) +9. [Advanced Use Cases & Patterns](#advanced-use-cases--patterns) +10. [Troubleshooting & Common Issues](#troubleshooting--common-issues) + +--- + +## Architecture & System Design + +### Q: What is the overall system architecture of Julep, including all core components and their interactions? + +Julep is a distributed system built on a microservices architecture designed to orchestrate complex AI workflows. The main components include: + +- **Client Applications**: Initiate requests to the Julep system +- **Gateway**: Entry point for all API requests, handles authentication and load balancing (implemented using Traefik) +- **Agents API**: Provides REST endpoints for managing agents, tasks, sessions, and documents; initiates workflows in Temporal +- **Temporal Workflow Engine**: Orchestrates durable workflow execution, retries, and state management +- **Worker System**: Executes workflows and activities defined in Temporal by polling for tasks +- **LiteLLM Proxy**: Provides a unified interface for interacting with various LLM providers +- **Memory Store**: Provides persistent storage using PostgreSQL/TimescaleDB for relational data and vector embeddings +- **Integration Service**: Enables connections with external tools and APIs + +### Q: How does Julep handle distributed task execution and what role does Temporal play in the architecture? + +Julep handles distributed task execution primarily through the Temporal Workflow Engine: + +- **Workflow Orchestration**: Temporal ensures durable execution of workflows, handling retries and maintaining state across failures +- **Task Queues**: The Agents API initiates workflows by sending requests to Temporal, which places them on task queues like `julep-task-queue` +- **Worker Execution**: Workers poll Temporal for tasks and execute activities like LLM calls, tool operations, and data interactions +- **State Management**: Temporal persists workflow execution state in PostgreSQL, ensuring long-running processes can recover from failures + +### Q: What are the key design decisions behind separating agents-api, memory-store, integrations-service, and other components? + +The separation follows microservices principles: + +- **Modularity and Independent Scaling**: Each service can be developed, deployed, and scaled independently +- **Separation of Concerns**: Each component handles specific functionalities: + - `agents-api`: Manages agent definitions, tasks, sessions, and orchestrates workflows + - `memory-store`: Handles all data persistence including relational data and vector embeddings + - `integrations-service`: Provides standardized interface for external tool usage + - `llm-proxy`: Centralizes LLM interactions with a unified API +- **Resilience**: Failures in one service are isolated from others +- **Technology Flexibility**: Different services can use different technologies if needed + +### Q: How does the gateway component route requests between different services? + +The Gateway component uses Traefik and routes requests based on defined rules: + +- Requests to `/api/*` are routed to the Agents API service +- Requests to `/tasks-ui/*` go to the Temporal UI service +- `/v1/graphql` requests are directed to the Hasura service +- In multi-tenant setups, it enforces JWT-based authentication and forwards `X-Developer-Id` headers for resource isolation + +### Q: What is the role of the blob-store and how does it integrate with S3-compatible storage? + +The blob-store is used for persistent storage of large data, specifically for Temporal workflow data when `USE_BLOB_STORE_FOR_TEMPORAL` is enabled. It integrates with S3-compatible storage through environment variables: +- `S3_ENDPOINT`, `S3_ACCESS_KEY`, and `S3_SECRET_KEY` for connection +- `BLOB_STORE_BUCKET` defines the bucket name +- `BLOB_STORE_CUTOFF_KB` sets the size threshold for blob storage + +### Q: How does the llm-proxy (LiteLLM) handle different language model providers? + +LiteLLM provides a unified interface to multiple LLM providers: +- Supports providers like OpenAI, Anthropic, Gemini, Groq, and OpenRouter +- Configuration defined in `litellm-config.yaml` with model names, parameters, and API keys +- Handles response patching for consistency (e.g., changing `finish_reason` from "eos" to "stop") +- Tracks token usage and costs in PostgreSQL +- Implements request caching using Redis and supports parallel forwarding + +### Q: What are the scalability patterns and limitations of the current architecture? + +Julep's architecture supports scalability through: +- **Agents API**: Horizontal scaling via multiple instances, configurable with `GUNICORN_WORKERS` +- **Worker**: Multiple workers with concurrency control using `TEMPORAL_MAX_CONCURRENT_ACTIVITIES` +- **Memory Store**: PostgreSQL connection pooling with `POOL_MAX_SIZE` +- **LiteLLM**: Request caching and parallel forwarding +- **Temporal**: Durable workflow execution that scales to handle concurrent tasks + +### Q: How does Julep ensure high availability and fault tolerance across services? + +High availability is achieved through: +- Temporal's durable execution model with automatic retries +- Microservices architecture allowing independent service failures +- PostgreSQL for persistent state storage +- Worker pools for distributed task execution +- Connection pooling and retry mechanisms + +--- + +## Data Model & Storage + +### Q: What is the complete data model including relationships between Agents, Tasks, Tools, Sessions, Entries, and Executions? + +The core entities and their relationships: + +- **Developer**: Manages Agents, Users, and owns Tasks +- **Agent**: Has Tasks, defines Tools, owns Docs, participates in Sessions +- **User**: Owns Docs and participates in Sessions +- **Task**: Contains WorkflowSteps and is executed as Executions +- **Execution**: Logs Transitions and tracks task execution state +- **Session**: Contains Entries (conversation history) +- **Entry**: Individual messages within a Session +- **Tool**: Capabilities available to Agents +- **Doc**: Documents with embeddings for knowledge base + +All entities use UUIDs for identification and include `developer_id` for multi-tenancy. + +### Q: How does the memory-store handle vector embeddings and similarity search? + +The memory store provides vectorized document storage: +- Documents have an `embeddings` field stored in `docs_embeddings_store` table +- Supports three search types: + - **Vector Search**: `search_docs_by_embedding` for semantic similarity + - **Text Search**: `search_docs_by_text` using PostgreSQL full-text search + - **Hybrid Search**: `search_docs_hybrid` combining both approaches +- Uses cosine similarity for vector comparisons +- Implements Maximum Marginal Relevance (MMR) for result diversity + +### Q: What PostgreSQL and TimescaleDB features are leveraged for time-series data? + +While PostgreSQL is the primary database, specific TimescaleDB features are not explicitly detailed in the codebase. The system uses: +- Standard PostgreSQL timestamps (`created_at`, `updated_at`) for temporal data +- Time-based filtering in queries (e.g., `list_entries` with date ranges) +- No explicit TimescaleDB-specific features documented + +### Q: How are agent instructions and task definitions stored and versioned? + +- **Agent Instructions**: Stored as `string` or `array[string]` in the Agent entity +- **Task Definitions**: Stored as Task entities with fields like `name`, `description`, `input_schema`, `main` (workflow steps), and `tools` +- **Versioning**: Handled through UUID changes - altering a UUID creates a new entity while preserving the original +- Timestamps (`created_at`, `updated_at`) provide implicit version tracking + +### Q: What is the schema for storing conversation history and context? + +Conversation history uses two main entities: +- **Session**: Contains `id`, `user`, `agent`, `situation` (context), `system_template`, and `metadata` +- **Entry**: Contains `id`, `session_id`, `role` (user/assistant/system), `content` (string or JSON), `source`, and `timestamp` +- Sessions group entries and maintain context across conversations + +### Q: How does Julep handle data partitioning and archiving for long-running agents? + +The codebase does not contain explicit information about data partitioning or archiving strategies. The system uses: +- Multi-tenancy through `developer_id` filtering +- Pagination support for large datasets +- Time-based filtering capabilities +- No documented automatic archiving policies + +### Q: What are the indexing strategies for optimizing query performance? + +Indexing strategies include: +- Trigram indexes for text search (indicated by `trigram_similarity_threshold` parameter) +- Vector indexes for embedding similarity searches +- Document chunking and embedding storage for efficient retrieval +- Use of prepared statements for query optimization + +--- + +## Task Execution & Workflow + +### Q: How does the TaskExecutionWorkflow handle complex multi-step operations? + +The TaskExecutionWorkflow orchestrates multi-step operations by: +- Processing different WorkflowStep types through dedicated handlers +- Managing state transitions between steps +- Integrating with Temporal for durability and reliability +- Using `handle_step` method to process each step type +- Evaluating expressions within steps using `eval_step_exprs` + +### Q: What are all the possible workflow step types and their configurations? + +**Basic Steps:** +- **PromptStep**: Sends prompts to LLMs and handles responses +- **ToolCallStep**: Executes tool calls (functions, integrations, APIs, system operations) +- **EvaluateStep**: Evaluates expressions and returns results +- **SetStep**: Sets values in execution state +- **GetStep**: Retrieves values from execution state +- **LogStep**: Logs messages during execution +- **ReturnStep**: Returns a value and completes workflow +- **ErrorWorkflowStep**: Raises an error and fails the workflow +- **SleepStep**: Pauses execution for specified duration +- **WaitForInputStep**: Pauses for external input + +**Control Flow Steps:** +- **IfElseWorkflowStep**: Conditional branching based on condition +- **SwitchStep**: Multi-way branching based on case evaluation +- **ForeachStep**: Iterates over collections +- **MapReduceStep**: Maps function over items with optional parallelism +- **YieldStep**: Yields execution to another workflow +- **ParallelStep**: Executes steps in parallel (not yet implemented) + +### Q: How does the state machine handle transitions between different execution states? + +The state machine tracks execution through: +- **States**: `queued`, `starting`, `running`, `succeeded`, `failed`, `cancelled` +- **Transitions**: Record state changes with types: `init`, `step`, `finish`, `error`, `cancelled` +- Each transition includes `output`, `current`, and `next` workflow steps +- Transitions stored in `execution_transitions` table +- `create_execution_transition` function records all state changes + +### Q: What happens when a task fails midway through execution? + +When a task fails: +- Execution status transitions to "failed" +- An "error" transition is created with the error message +- The `error` field of the Execution object is populated +- The system tracks the failure point and error details +- Workflow implements retry policies for retryable errors +- Non-retryable errors cause immediate failure + +### Q: How are conditional branches and loops implemented in workflows? + +**Conditional Branches:** +- `IfElseWorkflowStep`: Evaluates condition and executes "then" or "else" branch +- `SwitchStep`: Multi-way branching with multiple cases + +**Loops:** +- `ForeachStep`: Iterates over collections processing each item +- `MapReduceStep`: Maps functions over collections with optional parallel execution + +These are processed by dedicated handlers like `_handle_IfElseWorkflowStep` and `_handle_ForeachStep`. + +### Q: What is the retry and error handling strategy for failed steps? + +- **Error Classification**: Errors classified as retryable or non-retryable +- **Retry Policy**: `DEFAULT_RETRY_POLICY` applied to retryable errors +- **Max Retries**: Workflow fails if max retries exceeded +- **Error Transitions**: "error" transitions record failure states +- **Last Error Tracking**: `last_error` attribute stores recent errors + +### Q: How does Julep handle long-running tasks and prevent timeouts? + +Julep uses Temporal's timeout mechanisms: +- `schedule_to_close_timeout` and `heartbeat_timeout` for activities +- Activity and workflow heartbeats ensure progress tracking +- Large data handling via `RemoteObject` pattern to optimize memory +- Blob storage for data exceeding size thresholds + +### Q: What are the mechanisms for task cancellation and cleanup? + +- **Workflow Cancellation**: Handled through Temporal's cancellation features +- **State Management**: Execution can transition to "cancelled" state +- **Persistence**: All transitions persisted for state restoration +- **Cleanup**: Status updates and transition history provide cleanup context + +--- + +## Agents API + +### Q: What are all the endpoints available in the Agents API and their use cases? + +The Agents API provides these endpoints: +- `/agents`: Create, retrieve, update, delete agent definitions +- `/tasks`: Define and execute tasks, retrieve workflow definitions +- `/sessions`: Manage conversational sessions and conversation history +- `/executions`: Track task executions and monitor status +- `/docs`: Handle document storage, search, and retrieval with embeddings +- `/tools`: Define and manage agent tools +- `/users`: Manage user accounts and authentication +- `/responses`: OpenAI-compatible interface for LLM responses + +### Q: How does session management work and what data is maintained per session? + +Session management maintains conversation state: +- **Session Data**: `id`, `agent_id`, `user_id`, `created_at`, situation context +- **Entries**: Individual conversation turns with role, content, and timestamps +- Sessions created with `julep.sessions.create` linking agent and user +- Messages added via `julep.sessions.chat` with role and content +- Pagination support for retrieving conversation history + +### Q: What are the different types of tools an agent can use and how are they configured? + +Tool types available: +- **Web Search Tool**: Performs web searches with domain filtering +- **Function Tools**: OpenAI-compatible function calling format +- **System Tools**: Internal Julep resources (e.g., `create_julep_session`, `session_chat`) +- **Integration Tools**: External services (e.g., BrowserBase, email providers) + +Configuration includes name, type, description, and type-specific parameters. + +### Q: How does document storage and retrieval work for agent knowledge bases? + +Documents (`Doc` entities) provide agent knowledge: +- Stored in PostgreSQL with embeddings in `docs_embeddings_store` +- Owned by either Agent or User +- Three search methods: text-based, embedding-based, hybrid +- Document operations: create, retrieve, list, search +- Supports metadata filtering and pagination + +### Q: What are the authentication and authorization mechanisms for the API? + +Two authentication modes: + +**Single-Tenant Mode:** +- Uses `AGENTS_API_KEY` for authentication +- Default developer ID assumed +- `X-Auth-Key` header required + +**Multi-Tenant Mode:** +- JWT-based authentication via Gateway +- `X-Developer-Id` header for resource isolation +- Developer-specific data access control +- JWT must contain sub, email, exp, iat claims + +### Q: How are agent instructions processed and validated? + +- Instructions stored as string or array of strings +- Validated by Pydantic models from OpenAPI schemas +- Included in agent's `default_system_template` +- Dynamic rendering supports both single and array formats +- TypeSpec definitions ensure consistent structure + +### Q: What are the rate limiting and quota management strategies? + +Rate limiting and quota management are planned features: +- `max_free_sessions` and `max_free_executions` environment variables defined +- Implementation details not yet available +- Listed as future enhancement in roadmap + +### Q: How does the API handle streaming responses for real-time interactions? + +Streaming support is currently planned but not implemented: +- Open Responses API designed for OpenAI compatibility +- `stream` configuration option available +- Full streaming implementation pending + +--- + +## Worker System & Integration + +### Q: How does the worker system integrate with different LLM providers? + +The Worker integrates with LLMs through LiteLLM Proxy: +- LiteLLM acts as unified interface to various providers +- Supports OpenAI, Anthropic, Gemini, Groq, OpenRouter +- Worker makes LLM calls via LiteLLM Proxy +- Configuration in `litellm-config.yaml` +- Handles authentication, routing, and caching + +### Q: What are the system activities available and how do they work? + +System activities include: +- **LLM Calls**: Through LiteLLM Proxy +- **Tool Operations**: Via Integration Service +- **Data Operations**: Reading/writing to Memory Store +- **PG Query Step**: Direct PostgreSQL queries +- Activities invoked with `StepContext` and appropriate definitions + +### Q: How does Julep handle tool execution and external API calls? + +Tool execution handled by Integration Service: +- **Integration Tools**: Connect to external services with provider/method specs +- **System Tools**: Operate on internal Julep resources +- `ToolCallStep` defines tool and arguments +- Worker invokes Integration Service for execution +- Examples: email sending, browser automation, document search + +### Q: What is the sandboxing mechanism for Python expression evaluation? + +Python expression sandboxing: +- `validate_py_expression` function validates expressions +- Identifies expressions starting with `$`, `_`, or containing `{{` +- Checks for syntax errors, undefined names, unsafe operations +- Limited scope with allowed names: `_`, `inputs`, `outputs`, `state`, `steps` +- Prevents dunder attribute access and unapproved function calls + +### Q: How are integration credentials managed and secured? + +Integration credentials managed through: +- Credentials stored in `setup` parameters of tool definitions +- API keys provided in task definition YAML +- Environment variables for service-level credentials +- No explicit encryption details documented + +### Q: What are the patterns for building custom integrations? + +Custom integrations defined as Tool entities: +- Type set to `integration` +- Specify `provider`, `method`, and `setup` parameters +- Include provider-specific configuration (API keys, endpoints) +- Used within Task workflows as ToolCallStep +- Examples: Browserbase, email providers, Cloudinary + +### Q: How does the browser automation integration work? + +Browser automation workflow: +1. Create Julep session for AI agent +2. Create browser session using Browserbase +3. Store session info (browser_session_id, connect_url) +4. Perform actions via `perform_browser_action` tool +5. Interactive loop with agent planning and execution +6. Screenshot capture for visual feedback + +### Q: What are the performance optimizations for worker pools? + +Worker performance optimizations: +- `TEMPORAL_MAX_CONCURRENT_ACTIVITIES` controls concurrency +- `TEMPORAL_MAX_ACTIVITIES_PER_SECOND` limits activity rate +- `GUNICORN_WORKERS` for integration service scaling +- Connection pooling and timeout configurations +- LiteLLM caching and parallel forwarding + +--- + +## Development & Deployment + +### Q: What is the recommended development workflow for building with Julep? + +Development workflow uses Docker Compose with watch mode: +- Changes in source directories trigger automatic sync/restart +- `agents-api`: Watches `./agents_api` and `gunicorn_conf.py` +- `worker`: Watches `./agents_api` and `Dockerfile.worker` +- `integrations`: Watches its directory for changes +- Lock file or Dockerfile changes trigger rebuilds + +### Q: How should developers set up their local environment for testing? + +Local setup primarily uses Docker: +1. Create project directory: `mkdir julep-responses-api` +2. Download and edit `.env` file +3. Download Docker Compose file +4. Run containers: `docker compose up --watch` +5. Verify with `docker ps` + +Alternative CLI installation available via `npx` or `uvx`. + +### Q: What are the deployment options and best practices? + +Deployment options: + +**Single-Tenant Mode:** +- All users share context +- `SKIP_CHECK_DEVELOPER_HEADERS=True` +- Requires `AGENTS_API_KEY` + +**Multi-Tenant Mode:** +- Isolated resources per developer +- `AGENTS_API_MULTI_TENANT_MODE: true` +- JWT validation via Gateway + +**Best Practices:** +- Use environment variables for configuration +- Implement layered security (API keys, JWT tokens) +- Enable independent component scaling +- Configure appropriate connection pools + +### Q: How does the TypeSpec code generation work and when to use it? + +TypeSpec code generation: +- TypeSpec files define data models (e.g., `models.tsp`) +- `scripts/generate_openapi_code.sh` generates code +- Creates Pydantic models and OpenAPI schemas +- Edit TypeSpec files, not generated code +- Regenerate after model changes + +### Q: What are the testing strategies for agents and workflows? + +Testing strategies include: +- Unit tests for entities (agents, docs, sessions, etc.) +- Integration tests simulating scenarios +- Workflow tests using `unittest.mock.patch` +- Test fixtures for consistent data +- Ward framework for test organization + +### Q: How to debug failed task executions and trace through workflows? + +Debugging approach: +- Check Execution status and error field +- List transitions to trace execution flow +- Examine transition outputs and types +- Use LogStep for workflow logging +- Error transitions indicate failure points + +### Q: What are the monitoring and observability features? + +Limited monitoring information available: +- Execution state and transition logging +- No explicit monitoring features documented +- Prometheus and Grafana mentioned in architecture +- Detailed observability features not specified + +### Q: How to handle database migrations in production? + +Database migration information not explicitly documented: +- PostgreSQL used as primary database +- Migration files exist in memory-store +- Production migration process not detailed + +--- + +## Performance & Optimization + +### Q: What are the performance characteristics of different operations? + +Performance characteristics: +- MapReduceStep supports sequential or parallel execution +- API response times reduced by 15% (per changelog) +- Parallel processing improves collection operations +- Connection pooling optimizes database access +- Caching planned for future optimization + +### Q: How does Julep handle concurrent agent executions? + +Concurrent execution handled through: +- TaskExecutionWorkflow with Temporal orchestration +- Worker pools for distributed execution +- State isolation per execution +- Temporal manages workflow concurrency +- StepContext provides execution isolation + +### Q: What are the caching strategies employed across the system? + +Current caching: +- LiteLLM Proxy implements request caching +- Redis used for LiteLLM cache storage +- Web Search Tool has result caching +- Advanced caching mechanisms planned + +### Q: How to optimize memory usage for large conversation histories? + +Memory optimization strategies: +- Pagination with `limit` and `offset` parameters +- Maximum limit of 1000 entries per request +- `search_window` for time-based filtering (default 4 weeks) +- Token counting per entry +- RemoteObject pattern for large data + +### Q: What are the bottlenecks in the current architecture? + +Potential bottlenecks: +- Large data retrieval without proper pagination +- Complex database queries on large tables +- Multi-tenancy query filtering overhead +- Temporal workflow state management at scale +- JSON aggregation in history queries + +### Q: How does connection pooling work for database access? + +Connection pooling configuration: +- `connection_lifetime`: 600 seconds +- `idle_timeout`: 180 seconds +- `max_connections`: 50 +- `retries`: 1 +- `use_prepared_statements`: true +- `POOL_MAX_SIZE` configurable (default: CPU count, max 10) + +### Q: What are the best practices for writing efficient task definitions? + +Best practices: +- Define clear input schemas +- Use modular workflow steps +- Implement proper error handling +- Avoid infinite loops in recursive patterns +- Use appropriate tool types +- Monitor execution status and transitions +- Leverage parallel processing where applicable + +--- + +## Security & Compliance + +### Q: How does Julep handle sensitive data and ensure data privacy? + +Data privacy ensured through: +- Multi-tenant architecture with resource isolation +- Developer-specific data access via `developer_id` +- `X-Developer-Id` header for request routing +- Separate data storage per developer + +### Q: What are the security measures for multi-tenant deployments? + +Multi-tenant security: +- JWT-based authentication at Gateway +- JWT validation with required claims (sub, email, exp, iat) +- `X-Developer-Id` header enforcement +- Developer ID verification against database +- Resource isolation by developer + +### Q: How are API keys and secrets managed throughout the system? + +Secret management: +- Environment variables for service credentials +- API keys in tool setup parameters +- `AGENTS_API_KEY` and `JWT_SHARED_KEY` for auth +- LLM provider keys as environment variables +- No explicit encryption details provided + +### Q: What audit logging capabilities are available? + +Audit logging: +- Currently limited implementation +- Listed as planned feature in roadmap +- Usage tracking for LLM calls (tokens and costs) +- Comprehensive audit logging pending + +### Q: How does Julep ensure secure execution of user-provided code? + +Secure code execution through: +- Task-based workflow system with YAML definitions +- Controlled tool invocation with explicit permissions +- Python expression validation +- Structured workflow steps +- No arbitrary code execution + +### Q: What are the network security considerations for deployment? + +Network security: +- API key authentication for single-tenant +- JWT tokens for multi-tenant +- Gateway-level authentication +- HTTPS/TLS support implied +- Service-to-service communication within network + +--- + +## Advanced Use Cases & Patterns + +### Q: What are examples of complex multi-agent workflows? + +**Browser Use Assistant:** +- Session initialization +- Browser session creation +- Interactive agent-browser loop +- Screenshot feedback +- Goal-oriented task completion + +**Email Assistant:** +- Email input processing +- Query generation +- Documentation search +- Response generation +- Automated email sending + +**Video Processing:** +- Natural language instructions +- Cloudinary integration +- Transformation generation +- Video processing execution + +### Q: How to implement human-in-the-loop patterns? + +Human-in-the-loop not explicitly documented: +- `WaitForInputStep` provides pause mechanism +- Session-based interactions allow user input +- No dedicated approval workflow patterns +- Can be built using existing primitives + +### Q: What are the patterns for building conversational agents with memory? + +Conversational memory patterns: +- Session and Entry entities maintain history +- `previous_response_id` links responses +- Session metadata and custom templates +- Persistent conversation state +- Context maintained across interactions + +### Q: How to implement custom tool integrations? + +Custom tool implementation: +1. Define Tool entity with type `integration` +2. Specify provider, method, setup parameters +3. Use `@function_tool` decorator for functions +4. Add to agent's tool list +5. Invoke via ToolCallStep in workflows + +### Q: What are the best practices for handling structured data extraction? + +Structured data handling: +- Tools accept and return structured JSON +- Evaluate steps process tool outputs +- Response objects contain structured data +- Pydantic models ensure data validation +- TypeSpec defines consistent schemas + +### Q: How to build agents that can learn and adapt over time? + +Learning/adaptation features limited: +- Agent instructions can be updated +- Metadata field allows dynamic information +- No explicit learning mechanisms +- Adaptation through instruction updates +- Memory through conversation history + +### Q: What are the patterns for building agents that can collaborate? + +Agent collaboration not documented: +- Current model focuses on single agents +- No inter-agent communication patterns +- Sessions link one agent to users +- Collaboration would require custom implementation + +--- + +## Troubleshooting & Common Issues + +### Q: What are the most common errors and how to resolve them? + +**Python Expression Errors:** +- Syntax errors: Fix malformed expressions +- Undefined names: Use allowed names only +- Unsafe operations: Avoid dunder attributes +- Runtime errors: Check for division by zero +- Unsupported features: Avoid lambdas, walrus operator + +**Schema Validation Errors:** +- Pydantic validation failures +- Adjust JSON to match expected schema + +**Integration Errors:** +- ApplicationError for missing tools +- Verify tool definitions and availability + +### Q: How to debug issues with task execution? + +Debugging steps: +1. Check Execution status field +2. Review error messages in Execution object +3. List and examine transitions +4. Check transition outputs and types +5. Use LogStep for additional logging +6. Trace workflow step progression + +### Q: What are the common performance problems and solutions? + +Performance issues and solutions: +- **Large collections**: Use MapReduceStep parallelism +- **Rate limits**: Implement SleepStep delays +- **Memory usage**: Paginate large result sets +- **Database queries**: Ensure proper indexing +- **Concurrent execution**: Configure worker pools + +### Q: How to handle edge cases in agent conversations? + +Edge case handling: +- `IfElseWorkflowStep` for conditional logic +- `SwitchStep` for complex branching +- `WaitForInputStep` for user input +- `ErrorWorkflowStep` for invalid states +- Proper error handling in workflows + +### Q: What are the known limitations and workarounds? + +**Expression Limitations:** +- No set comprehensions, lambdas, walrus operator +- Use alternative Python constructs + +**Backwards Compatibility:** +- Old expression formats supported +- Use `$` prefix for consistency + +**ParallelStep Not Implemented:** +- Use MapReduceStep with parallelism instead + +**Streaming Not Available:** +- Planned feature, not yet implemented + +**Rate Limiting:** +- Basic environment variables defined +- Full implementation pending + +--- + +## Additional Resources + +- [System Architecture Wiki](https://deepwiki.com/wiki/julep-ai/julep#2) +- [Data Model Wiki](https://deepwiki.com/wiki/julep-ai/julep#2.2) +- [TaskExecutionWorkflow Wiki](https://deepwiki.com/wiki/julep-ai/julep#3) +- [Workflow Steps Wiki](https://deepwiki.com/wiki/julep-ai/julep#3.1) + +This FAQ is generated from the Julep platform documentation and codebase analysis. For the most up-to-date information, please refer to the official Julep documentation and repository. \ No newline at end of file diff --git a/documentation/advanced/agentic-patterns.mdx b/documentation/advanced/agentic-patterns.mdx index ceaa649cc..9f56656bf 100644 --- a/documentation/advanced/agentic-patterns.mdx +++ b/documentation/advanced/agentic-patterns.mdx @@ -56,7 +56,7 @@ Steps generally include: ![Routing Workflow](../assets/agentic-patterns/routing-workflow.png "Routing Workflow") **Example implementation:** -```yaml +```yaml [expandable] main: # Classification step - prompt: @@ -97,7 +97,7 @@ Keys to consider: **Example implementations:** 1. Sectioning: -```yaml +```yaml [expandable] tools: - name: aggregate_results type: ... # depends on the specific needs @@ -126,7 +126,7 @@ main: ``` 2. Voting: -```yaml +```yaml [expandable] tools: - name: perform_voting description: Perform voting on the results of running the task instances, and return the majority best result. @@ -193,7 +193,7 @@ General flow: ![Evaluator-Optimizer Workflow](../assets/agentic-patterns/evaluator-optimizer-workflow.png "Evaluator-Optimizer Workflow") **Example implementation:** -```yaml +```yaml [expandable] tools: - name: score_content description: Score the content based on the criteria. Returns a json object with a score between 0 and 1, and a feedback string. diff --git a/documentation/advanced/architecture-deep-dive.mdx b/documentation/advanced/architecture-deep-dive.mdx index de126aeb0..3dd516ff7 100644 --- a/documentation/advanced/architecture-deep-dive.mdx +++ b/documentation/advanced/architecture-deep-dive.mdx @@ -23,11 +23,19 @@ Think of Julep as a platform that combines both client-side and server-side comp To help you visualize this, here's a diagram: + + + + ## Core Components @@ -55,11 +63,15 @@ To help you visualize this, here's a diagram:

Github Actions-style workflows for complex operations.

+ + +

Encrypted key-value pairs for securely storing sensitive information like API keys and credentials.

+
## Infrastructure Components - +

The document store provides a vector database for semantic search along with a document management system. It supports various file types and handles automatic indexing and retrieval of documents.

@@ -68,6 +80,10 @@ To help you visualize this, here's a diagram:

The task execution engine handles distributed task processing, state management, error handling with retries, and supports parallel execution of tasks.

+ +

The secrets store provides encrypted storage for sensitive information like API keys, credentials, and tokens. It uses AES-256 encryption and developer-scoped access controls to securely manage confidential data.

+
+

The API layer provides RESTful API endpoints, SDK support, authentication and authorization capabilities, and handles rate limiting and quotas.

@@ -128,6 +144,7 @@ To help you visualize this, here's a diagram:
  • **2.** Secure communication
  • **3.** Data isolation
  • **4.** Access controls
  • +
  • **5.** Encrypted secrets
  • diff --git a/documentation/advanced/chat.mdx b/documentation/advanced/chat.mdx index b4df7e43a..8b6a0045c 100644 --- a/documentation/advanced/chat.mdx +++ b/documentation/advanced/chat.mdx @@ -55,7 +55,6 @@ Here's an example of how a typical message object might be structured in a chat tool_call_id (str | None): Optional identifier for a tool call associated with this message. content (Annotated[str | list[str] | list[Content | ContentModel7 | ContentModel] | None, Field(...)]): The main content of the message, which can be a string, a list of strings, or a list of content models. name (str | None): Optional name associated with the message. - continue_ (Annotated[StrictBool | None, Field(alias="continue")]): Flag to indicate whether to continue the conversation without interruption. tool_calls (list[ChosenFunctionCall | ChosenComputer20241022 | ChosenTextEditor20241022 | ChosenBash20241022] | None): List of tool calls generated during the message creation, if any. """ # Example of a simple message structure @@ -86,6 +85,9 @@ Here's an example of how a typical message object might be structured in a chat | `save` | `bool` | Whether this interaction should be stored in the session history or not | `True` | | `remember` | `bool` | DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release) | `False` | | `model` | `str` | The model to use for the chat completion. | `None` | +| `metadata` | `dict[str, Any]` | Custom metadata that can be passed to the system template for dynamic behavior. See [System Templates](/advanced/system-templates) for details. | `None` | +| `auto_run_tools` | `bool` | Whether to automatically execute tools and send the results back to the model (requires tools on the agent) | `False` | +| `recall_tools` | `bool` | Whether to include tool requests and responses when recalling messages from history | `True` | ## Usage @@ -96,7 +98,7 @@ Here's an example of how to use the chat API in Julep using the SDKs: - ```python Python + ```python Python [expandable] # Create a session with custom recall options client.sessions.create( agent=agent.id, @@ -128,9 +130,45 @@ Here's an example of how to use the chat API in Julep using the SDKs: ) print("Agent's response:", response.choices[0].message.content) print("Searched Documents:", response.docs) + + # Chat with metadata for dynamic system prompts + response_with_metadata = client.sessions.chat( + session_id=session.id, + messages=[ + { + "role": "user", + "content": "Help me with Python" + } + ], + metadata={ + "language": "Spanish", + "expertise_level": "beginner", + "custom_instructions": "Use simple examples" + } + ) + # The metadata will be available in the system template as {{metadata.language}}, etc. + + # Chat with structured JSON response + response_json = client.sessions.chat( + session_id=session.id, + messages=[ + { + "role": "user", + "content": "Analyze the sentiment of: 'I love using Julep, it makes AI development so much easier!'" + } + ], + response_format={"type": "json_object"}, + # When using response_format, instruct the model to return JSON + settings={ + "temperature": 0.3 + } + ) + # Response will be valid JSON that can be parsed + import json + sentiment_data = json.loads(response_json.choices[0].message.content) ``` - ```javascript Node.js + ```javascript Node.js [expandable] client.sessions.create({ agent: agent.id, user: user.id, @@ -159,6 +197,41 @@ Here's an example of how to use the chat API in Julep using the SDKs: ], recall: true }); + + // Chat with metadata for dynamic system prompts + const responseWithMetadata = await client.sessions.chat({ + session_id: session.id, + messages: [ + { + role: "user", + content: "Help me with Python" + } + ], + metadata: { + language: "Spanish", + expertise_level: "beginner", + custom_instructions: "Use simple examples" + } + }); + // The metadata will be available in the system template as {{metadata.language}}, etc. + + // Chat with structured JSON response + const responseJson = await client.sessions.chat({ + session_id: session.id, + messages: [ + { + role: "user", + content: "Analyze the sentiment of: 'I love using Julep, it makes AI development so much easier!'" + } + ], + response_format: { type: "json_object" }, + // When using response_format, instruct the model to return JSON + settings: { + temperature: 0.3 + } + }); + // Response will be valid JSON that can be parsed + const sentimentData = JSON.parse(responseJson.choices[0].message.content); ``` @@ -177,10 +250,44 @@ To learn more about the Session object, check out the [Session](/concepts/sessio - **Content-Type**: `text/event-stream` - - **Body**: A stream of `ChatOutputChunk` objects - - This feature is not implemented yet. - + - **Body**: A stream of `ChatOutputChunk` objects sent as Server-Sent Events (SSE) + + To enable streaming, set `stream: true` in your chat request: + + + ```python Python + from julep import AsyncClient + + # Streaming requires async client + async_client = AsyncClient(api_key="your-api-key") + + response = await async_client.sessions.chat( + session_id=session.id, + messages=[{"role": "user", "content": "Tell me a story"}], + stream=True + ) + + async for chunk in response: + if chunk.choices[0].delta.content: + print(chunk.choices[0].delta.content, end="") + ``` + + ```javascript Node.js + const response = await client.sessions.chat({ + session_id: session.id, + messages: [{ role: "user", content: "Tell me a story" }], + stream: true + }); + + for await (const chunk of response) { + process.stdout.write(chunk.choices[0].delta.content); + } + ``` + + + + Streaming is not available when `auto_run_tools=true`. The system will return an error if both options are enabled. + @@ -201,6 +308,98 @@ Both types of responses include the following fields: - `usage`: Statistics on token usage for the completion request +## Automatic Tool Calling + +Julep supports automatic tool execution during chat interactions. This feature allows tools to be executed seamlessly without manual intervention, making conversations more fluid and responsive. + +### How It Works + +1. **When `auto_run_tools=true`**: + - The model identifies when a tool should be used based on the conversation + - The tool is automatically executed by Julep's backend + - Results are fed back to the model to continue the conversation + - The entire process happens in a single API call + +2. **When `auto_run_tools=false` (default)**: + - The model returns tool call requests in the response + - Your application must execute the tools manually + - Results need to be sent back in a follow-up message + +### Example with Automatic Tool Execution + + + ```python Python + # Agent with a weather tool + agent = client.agents.create( + name="Weather Assistant", + tools=[ + { + "name": "get_weather", + "type": "integration", + "integration": {"provider": "weather"} + } + ] + ) + + # Chat with automatic tool execution + response = client.sessions.chat( + session_id=session.id, + messages=[ + { + "role": "user", + "content": "What's the weather like in Tokyo and Paris?" + } + ], + auto_run_tools=True # Tools execute automatically + ) + + # The response already includes the weather data + print(response.choices[0].message.content) + # Output: "In Tokyo, it's currently 22°C with clear skies. + # In Paris, it's 15°C with light rain." + ``` + + ```javascript Node.js + // Agent with a weather tool + const agent = await client.agents.create({ + name: "Weather Assistant", + tools: [ + { + name: "get_weather", + type: "integration", + integration: {provider: "weather"} + } + ] + }); + + // Chat with automatic tool execution + const response = await client.sessions.chat({ + session_id: session.id, + messages: [ + { + role: "user", + content: "What's the weather like in Tokyo and Paris?" + } + ], + auto_run_tools: true // Tools execute automatically + }); + + // The response already includes the weather data + console.log(response.choices[0].message.content); + // Output: "In Tokyo, it's currently 22°C with clear skies. + // In Paris, it's 15°C with light rain." + ``` + + +### Tool History Management + +The `recall_tools` parameter controls whether tool calls and their results are included when recalling conversation history: + +- **`recall_tools=true` (default)**: Tool interactions are preserved in the conversation history +- **`recall_tools=false`**: Tool calls and results are excluded from recalled messages + +This is useful when you want to maintain a cleaner conversation history without the technical details of tool executions. + ## Finish Reasons diff --git a/documentation/advanced/lifecycle.mdx b/documentation/advanced/lifecycle.mdx index 1ac08a970..32add2503 100644 --- a/documentation/advanced/lifecycle.mdx +++ b/documentation/advanced/lifecycle.mdx @@ -72,7 +72,7 @@ Next, we define the external tools our task will use: integration: provider: brave setup: - api_key: {brave_api_key} + brave_api_key: {brave_api_key} ``` We're using two integrations: @@ -134,7 +134,7 @@ This step: #### Step 4: Generate Itineraries -```yaml +```yaml [expandable] - over: $ _['zipped'] parallelism: 3 # Inside the map step, each `_` represents the current element in the list diff --git a/documentation/advanced/localsetup.mdx b/documentation/advanced/localsetup.mdx index b7c99ec88..46d182446 100644 --- a/documentation/advanced/localsetup.mdx +++ b/documentation/advanced/localsetup.mdx @@ -68,16 +68,43 @@ docker compose --env-file .env --profile temporal-ui --profile multi-tenant --pr > **Note:** In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK. ### 6. Generate a JWT Token (Only for Multi-Tenant Mode) - -To generate a JWT token, `jwt-cli` is required. Kindly install the same before proceeding with the next steps. - -Use the following command and replace `JWT_SHARED_KEY` with the corresponding key from your `.env` file to generate a JWT token: - -```bash -jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -j -v +10d +%s) --sub '00000000-0000-0000-0000-000000000000' '{}' -``` - -This command generates a JWT token that will be valid for 10 days. +Replace `JWT_SHARED_KEY` with the corresponding key from your `.env` file to generate a JWT token + + + + 1. **Install** the JWT CLI from apt: + ```bash + sudo apt install jwt + ``` + 2. **Export** your `JWT_SHARED_KEY`: + ```bash + export JWT_SHARED_KEY="your-shared-key" + ``` + 3. **Generate** the token: + ```bash + jwt -alg HS512 -sign + -claim exp=$(date -d '+10 days' +%s) -claim iat=$(date +%s) -claim sub=00000000-0000-0000-0000-000000000000 -key <(printf '%s' "$JWT_SHARED_SECRET") + ``` + + + + + 1. **Install** the Mike-Engel JWT-CLI: + ```bash + brew install mike-engel/jwt-cli/jwt-cli + ``` + 2. **Export** your `JWT_SHARED_KEY`: + ```bash + export JWT_SHARED_KEY="your-shared-key" + ``` + + 3. **Generate** the token: + ```bash + jwt encode --secret "$JWT_SHARED_KEY" --alg HS512 --exp $(date -v +10d +%s) --sub '00000000-0000-0000-0000-000000000000' '{}' + ``` + + + +> **Note:** This command generates a JWT token that will be valid for 10 days. ### 7. Access and Interact - **Temporal UI**: You can access the Temporal UI through the specified port in your `.env` file. diff --git a/documentation/advanced/render.mdx b/documentation/advanced/render.mdx index 54a12ad49..8ce8656a4 100644 --- a/documentation/advanced/render.mdx +++ b/documentation/advanced/render.mdx @@ -53,7 +53,6 @@ Here's an example of how a typical message object might be structured in a rende tool_call_id (str | None): Optional identifier for a tool call associated with this message. content (Annotated[str | list[str] | list[Content | ContentModel7 | ContentModel] | None, Field(...)]): The main content of the message, which can be a string, a list of strings, or a list of content models. name (str | None): Optional name associated with the message. - continue_ (Annotated[StrictBool | None, Field(alias="continue")]): Flag to indicate whether to continue the conversation without interruption. tool_calls (list[ChosenFunctionCall | ChosenComputer20241022 | ChosenTextEditor20241022 | ChosenBash20241022] | None): List of tool calls generated during the message creation, if any. """ # Example of a simple message structure @@ -111,7 +110,7 @@ Here's an example of how to use the render endpoint in Julep using the SDKs: - ```python Python + ```python Python [expandable] # Create a session with custom recall options client.sessions.create( agent=agent.id, @@ -146,7 +145,7 @@ Here's an example of how to use the render endpoint in Julep using the SDKs: print("Available tools:", render_response.tools) ``` - ```javascript Node.js + ```javascript Node.js [expandable] client.sessions.create({ agent: agent.id, user: user.id, diff --git a/documentation/advanced/secrets-management.mdx b/documentation/advanced/secrets-management.mdx new file mode 100644 index 000000000..03995625f --- /dev/null +++ b/documentation/advanced/secrets-management.mdx @@ -0,0 +1,219 @@ +--- +title: 'Secrets Management' +description: 'Advanced techniques for managing sensitive information in Julep' +icon: 'key' +--- + +# Secrets Management + +This guide covers advanced topics for managing secrets in Julep, including security architecture, best practices, rotation policies, and integration patterns. + +## Security Architecture + +Secrets in Julep are stored with a layered security approach: + +1. **Application-level Validation**: Secrets are validated before being stored +2. **Database Encryption**: Secrets are stored encrypted using PostgreSQL's pgcrypto extension with AES-256 +3. **Access Control**: Secrets are scoped to developers and only accessible within their resources +4. **Master Key Security**: A separate master encryption key secures all stored secrets + +The encryption process works as follows: +- When a secret is created, its value is encrypted using the master key +- The encrypted value is stored in the database's `value_encrypted` column +- When a secret is accessed, the value is decrypted using the master key +- The master key is stored as an environment variable, separate from the database + +## Creating Effective Secret Names + +Secrets should have descriptive names that follow these conventions: + +- Use snake_case formatting +- Begin with a letter and contain only alphanumeric characters and underscores +- Use a prefix to indicate the service (e.g., `aws_secret_key`, `stripe_api_key`) +- Be specific enough to understand the purpose (e.g., `gmail_oauth_token` vs `email_token`) + +## Secret Rotation Best Practices + +Regular rotation of secrets is a security best practice: + +1. Create a new secret with a temporary name +2. Update your services to use the new secret +3. Once confirmed working, delete the old secret +4. Update the new secret's name to the standard name + +For automated rotation: + +```python [expandable] +from julep import Julep +import uuid + +client = Julep(api_key="your_api_key") + +# Generate temporary name +temp_name = f"stripe_key_rotation_{uuid.uuid4().hex[:8]}" + +# Create new secret with temp name +client.secrets.create( + name=temp_name, + value="sk_new_value...", + description="New Stripe API key (rotation)", + metadata={"rotation_date": "2025-05-10"} +) + +# Test the new key (implement your validation logic here) +# ... + +# If valid, delete old secret and rename new one +client.secrets.delete(name="stripe_api_key") +client.secrets.update( + name=temp_name, + new_name="stripe_api_key", + description="Stripe API key", + metadata={"last_rotated": "2025-05-10"} +) +``` + +## Using Secrets with Different Tool Types + +### API Tools + +For HTTP-based tools, reference secrets in the headers or authentication: + +```yaml +steps: + - kind: tool_call + tool: api_service + operation: fetch_data + arguments: + url: "https://api.example.com/data" + headers: + Authorization: "$ f'Bearer {secrets.api_token}'" +``` + +### Database Connections + +For database tools, use secrets for connection credentials: + +```yaml +steps: + - kind: tool_call + tool: database + operation: query + arguments: + query: "SELECT * FROM users LIMIT 10" + secrets: + db_username: "my_db_user" + db_password: "my_db_password" +``` + +### AI Service Integration + +For AI services that require API keys: + +```yaml +steps: + - kind: prompt + model: "$ secrets.preferred_model" + provider: "$ secrets.provider_name" + prompt: "Generate creative ideas for a marketing campaign" + api_key: "$ secrets.openai_api_key" +``` + +## Managing Secrets for Multi-Environment Deployments + +For applications deployed across development, staging, and production environments: + +1. Use consistent naming conventions with environment prefixes: + - `dev_stripe_key`, `staging_stripe_key`, `prod_stripe_key` + +2. Use metadata to tag secrets by environment: + ```python + client.secrets.create( + name="stripe_api_key", + value="sk_test_...", + metadata={"environment": "production"} + ) + ``` + +3. Filter secrets by environment when listing: + ```python + prod_secrets = client.secrets.list( + metadata={"environment": "production"} + ) + ``` + +## Secret Templating + +For complex configurations that require multiple secrets: + +```yaml +steps: + - kind: tool_call + tool: database + operation: query + arguments: + connection_string: "$ f'mongodb+srv://{secrets.db_username}:{secrets.db_password}@{secrets.db_host}/{secrets.db_name}'" +``` + +## Securing LLM API Keys with Secrets + +Julep automatically looks for LLM API keys in your secrets store based on the provider name. Use these naming conventions for automatic lookup: + +| Provider | Secret Name | +|----------|-------------| +| OpenAI | `OPENAI_API_KEY` | +| Anthropic | `ANTHROPIC_API_KEY` | +| Google | `GOOGLE_API_KEY` | +| Azure OpenAI | `AZURE_OPENAI_API_KEY` | +| Cohere | `COHERE_API_KEY` | + +Example of setting up an LLM API key: + +```python +client.secrets.create( + name="OPENAI_API_KEY", + value="sk-...", + description="OpenAI API key for GPT-4 access" +) +``` + +## Audit and Monitoring + +Best practices for security monitoring: + +1. Regularly audit secret access and usage +2. Track changes to secrets via the `updated_at` timestamp +3. Implement secret expiration for highly sensitive data +4. Use metadata to track last review or rotation dates + +Example audit script: + +```python +from julep import Julep +from datetime import datetime, timedelta + +client = Julep(api_key="your_api_key") + +# Find secrets not rotated in over 90 days +old_threshold = datetime.now() - timedelta(days=90) +secrets = client.secrets.list() + +for secret in secrets.items: + if secret.updated_at < old_threshold: + print(f"WARNING: Secret {secret.name} has not been rotated in over 90 days") +``` + +## Troubleshooting + +Common issues when working with secrets: + +1. **Secret Not Found**: Check that the secret name matches exactly, including case +2. **Permission Errors**: Verify the developer ID has access to the secret +3. **Encryption Errors**: Ensure the master key is correctly set in the environment +4. **Reference Errors**: Ensure the secret reference syntax is correct in expressions and templates + +## Next Steps + +- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets +- [Integration Patterns](/guides/advanced/integration-patterns) - Learn how to use secrets with integrations +- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets \ No newline at end of file diff --git a/documentation/advanced/system-templates.mdx b/documentation/advanced/system-templates.mdx new file mode 100644 index 000000000..aff913f7e --- /dev/null +++ b/documentation/advanced/system-templates.mdx @@ -0,0 +1,574 @@ +--- +title: System Templates +description: Learn how to use Jinja2 templates to create dynamic system prompts for your AI agents +icon: code-merge +--- + + +System templates allow you to create dynamic, context-aware prompts for your AI agents using Jinja2 templating. This guide covers everything you need to know about creating and customizing system templates. + + +## Overview + +System templates in Julep are **Jinja2 templates** that define the initial system prompt for your AI agents. They allow you to: + +- Create dynamic prompts that adapt based on context +- Include user information, session data, and other variables +- Implement conditional logic for different scenarios +- Maintain consistency across agent interactions +- Inject custom metadata at the message level for dynamic behavior + +## Template Hierarchy + +Julep uses a three-level hierarchy for system templates: + +1. **Agent Default Template**: Defined when creating an agent +2. **Session Template**: Can override the agent's default template for specific sessions +3. **Chat Metadata**: Can inject dynamic variables at the individual message level + + +The session template takes precedence over the agent's default template. Chat metadata is available in both cases. + + +## Default System Template + +When you create an agent without specifying a custom template, Julep uses this default template: + +```jinja +{%- if agent.name -%} +You are {{agent.name}}.{{" "}} +{%- endif -%} + +{%- if agent.about -%} +About you: {{agent.about}}.{{" "}} +{%- endif -%} + +{%- if user.name -%} +You are talking to {{user.name}}.{{" "}} +{%- endif -%} + +{%- if user.about -%} +About the user: {{user.about}}.{{" "}} +{%- endif -%} + +{{agent.instructions}} + +{%- if tools -%} +You have access to these tools: +{%- for tool in tools -%} +{%- if tool.type == "function" -%} +- {{tool.function.name}} +{%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%} +{%- else -%} +- {{ 0/0 }} {# Error: Other tool types aren't supported yet #} +{%- endif -%} +{%- endfor -%} +{%- endif -%} + +{%- if docs -%} +Relevant documents: +{%- for doc in docs -%} +{{doc.title}} +{%- if doc.content -%}: + +{{doc.content}} + +{%- endif -%} +{%- endfor -%} +{%- endif -%} +``` + +## Template Variables + +The following variables are available in your system templates: + +### Core Variables + +| Variable | Type | Description | +|----------|------|-------------| +| `agent` | Object | The agent's configuration and details | +| `agent.name` | String | The agent's name | +| `agent.about` | String | Description of the agent | +| `agent.instructions` | Array/String | Agent's instructions | +| `user` | Object | Information about the current user | +| `user.name` | String | The user's name | +| `user.about` | String | Description of the user | +| `session` | Object | Current session information | +| `session.situation` | String | The session's context/situation | + +### Dynamic Variables + +| Variable | Type | Description | +|----------|------|-------------| +| `tools` | Array | Available tools for the agent | +| `docs` | Array | Relevant documents from searches | +| `metadata` | Object | Custom metadata passed in chat requests | + +## Creating Custom Templates + +### Basic Example + +Here's a simple custom template for a customer service agent: + + + +```python python +agent = client.agents.create( + name="Customer Support Agent", + model="gpt-4", + about="A helpful customer service representative", + instructions=[ + "Be polite and professional", + "Always offer to help further" + ], + default_system_template=""" +You are {{agent.name}}, a customer service representative. + +{%- if metadata.priority == "high" -%} +⚠️ HIGH PRIORITY CUSTOMER - Provide expedited service +{%- endif -%} + +{%- if metadata.customer_tier == "premium" -%} +Premium customer - Offer enhanced support options +{%- endif -%} + +Your guidelines: +{{agent.instructions}} + +{%- if user.name -%} +Customer name: {{user.name}} +{%- endif -%} +""" +) +``` + +```javascript javascript +const agent = await client.agents.create({ + name: "Customer Support Agent", + model: "gpt-4", + about: "A helpful customer service representative", + instructions: [ + "Be polite and professional", + "Always offer to help further" + ], + default_system_template: ` +You are {{agent.name}}, a customer service representative. + +{%- if metadata.priority == "high" -%} +⚠️ HIGH PRIORITY CUSTOMER - Provide expedited service +{%- endif -%} + +{%- if metadata.customer_tier == "premium" -%} +Premium customer - Offer enhanced support options +{%- endif -%} + +Your guidelines: +{{agent.instructions}} + +{%- if user.name -%} +Customer name: {{user.name}} +{%- endif -%} +` +}); +``` + + + +### Advanced Example with Conditional Logic + + + +```python python +template = """ +{%- if agent.name -%} +You are {{agent.name}}. +{%- endif -%} + +{# Mood-based personality adjustment #} +{%- if metadata.mood == "friendly" -%} +Be warm, conversational, and use a friendly tone. +{%- elif metadata.mood == "professional" -%} +Maintain a formal, business-appropriate tone. +{%- elif metadata.mood == "playful" -%} +Feel free to be creative and add appropriate humor. +{%- else -%} +Respond in a balanced, helpful manner. +{%- endif -%} + +{# Language preferences #} +{%- if metadata.language -%} +Respond in {{metadata.language}}. +{%- endif -%} + +{# Expertise areas #} +{%- if metadata.expertise -%} +You are an expert in: +{%- for skill in metadata.expertise -%} +- {{skill}} +{%- endfor -%} +{%- endif -%} + +{# Include instructions #} +{{agent.instructions}} + +{# Tool availability #} +{%- if tools -%} +Available tools: +{%- for tool in tools -%} +- {{tool.function.name}}: {{tool.function.description}} +{%- endfor -%} +{%- endif -%} +""" + +# Using the template with metadata +response = client.sessions.chat( + session_id=session.id, + messages=[ + {"role": "user", "content": "Help me with Python"} + ], + metadata={ + "mood": "friendly", + "language": "English", + "expertise": ["Python", "Machine Learning", "Data Science"] + } +) +``` + +```javascript javascript +const template = ` +{%- if agent.name -%} +You are {{agent.name}}. +{%- endif -%} + +{# Mood-based personality adjustment #} +{%- if metadata.mood == "friendly" -%} +Be warm, conversational, and use a friendly tone. +{%- elif metadata.mood == "professional" -%} +Maintain a formal, business-appropriate tone. +{%- elif metadata.mood == "playful" -%} +Feel free to be creative and add appropriate humor. +{%- else -%} +Respond in a balanced, helpful manner. +{%- endif -%} + +{# Language preferences #} +{%- if metadata.language -%} +Respond in {{metadata.language}}. +{%- endif -%} + +{# Expertise areas #} +{%- if metadata.expertise -%} +You are an expert in: +{%- for skill in metadata.expertise -%} +- {{skill}} +{%- endfor -%} +{%- endif -%} + +{# Include instructions #} +{{agent.instructions}} + +{# Tool availability #} +{%- if tools -%} +Available tools: +{%- for tool in tools -%} +- {{tool.function.name}}: {{tool.function.description}} +{%- endfor -%} +{%- endif -%} +`; + +// Using the template with metadata +const response = await client.sessions.chat({ + sessionId: session.id, + messages: [ + { role: "user", content: "Help me with Python" } + ], + metadata: { + mood: "friendly", + language: "English", + expertise: ["Python", "Machine Learning", "Data Science"] + } +}); +``` + + + +## Using Chat Metadata + +The `metadata` field in chat requests allows you to pass dynamic variables that can be used in your system templates. This enables message-level customization without modifying the agent or session. + +### Example: Dynamic Instructions + + + +```python python +# Create an agent with a metadata-aware template +agent = client.agents.create( + name="Adaptive Assistant", + default_system_template=""" +You are {{agent.name}}. + +{%- if metadata.instructions -%} +Special instructions for this conversation: +{{metadata.instructions}} +{%- endif -%} + +{%- if metadata.constraints -%} +Important constraints: +{%- for constraint in metadata.constraints -%} +- {{constraint}} +{%- endfor -%} +{%- endif -%} +""" +) + +# Use metadata to modify behavior per message +response = client.sessions.chat( + session_id=session.id, + messages=[{"role": "user", "content": "Write a story"}], + metadata={ + "instructions": "Write in the style of Edgar Allan Poe", + "constraints": [ + "Keep it under 200 words", + "Include a raven", + "End with a twist" + ] + } +) +``` + +```javascript javascript +// Create an agent with a metadata-aware template +const agent = await client.agents.create({ + name: "Adaptive Assistant", + default_system_template: ` +You are {{agent.name}}. + +{%- if metadata.instructions -%} +Special instructions for this conversation: +{{metadata.instructions}} +{%- endif -%} + +{%- if metadata.constraints -%} +Important constraints: +{%- for constraint in metadata.constraints -%} +- {{constraint}} +{%- endfor -%} +{%- endif -%} +` +}); + +// Use metadata to modify behavior per message +const response = await client.sessions.chat({ + sessionId: session.id, + messages: [{ role: "user", content: "Write a story" }], + metadata: { + instructions: "Write in the style of Edgar Allan Poe", + constraints: [ + "Keep it under 200 words", + "Include a raven", + "End with a twist" + ] + } +}); +``` + + + +## Session vs Agent Templates + +You can override an agent's default template at the session level: + + + +```python python +# Agent with default template +agent = client.agents.create( + name="Multi-purpose Assistant", + default_system_template="You are a helpful assistant." +) + +# Session with custom template +session = client.sessions.create( + agent_id=agent.id, + system_template=""" +You are a technical writing assistant. +Focus on clarity, accuracy, and proper documentation structure. +{%- if metadata.doc_type -%} +You are writing a {{metadata.doc_type}}. +{%- endif -%} +""" +) +``` + +```javascript javascript +// Agent with default template +const agent = await client.agents.create({ + name: "Multi-purpose Assistant", + default_system_template: "You are a helpful assistant." +}); + +// Session with custom template +const session = await client.sessions.create({ + agentId: agent.id, + system_template: ` +You are a technical writing assistant. +Focus on clarity, accuracy, and proper documentation structure. +{%- if metadata.doc_type -%} +You are writing a {{metadata.doc_type}}. +{%- endif -%} +` +}); +``` + + + + +Use session templates when you need different behavior for the same agent in different contexts (e.g., customer service vs internal support). + + +## Jinja2 Features + +System templates support the full range of Jinja2 features: + +### Conditionals + +```jinja +{%- if user.subscription_level == "premium" -%} +You have access to advanced features. +{%- elif user.subscription_level == "basic" -%} +Some features may be limited. +{%- else -%} +Welcome! Consider upgrading for more features. +{%- endif -%} +``` + +### Loops + +```jinja +{%- if metadata.topics -%} +Focus on these topics: +{%- for topic in metadata.topics -%} +- {{topic}} +{%- endfor -%} +{%- endif -%} +``` + +### Filters + +```jinja +Agent name in uppercase: {{agent.name|upper}} +Word count limit: {{metadata.word_limit|default(500)}} +``` + +### Comments + +```jinja +{# This is a comment and won't appear in the output #} +``` + +## Best Practices + + +Avoid overly complex templates. If your template is becoming too large, consider breaking the logic into different agents or sessions. + + + +When using metadata, choose clear, descriptive keys: +- ✅ `metadata.customer_tier` +- ❌ `metadata.ct` + + + +Always handle cases where variables might be missing: +```jinja +{{metadata.language|default("English")}} +``` + + + +Test your templates with various metadata combinations to ensure they render correctly in all scenarios. + + +## Common Patterns + +### Multi-language Support + +```jinja +{%- if metadata.language == "es" -%} +Eres un asistente útil. Responde en español. +{%- elif metadata.language == "fr" -%} +Vous êtes un assistant utile. Répondez en français. +{%- else -%} +You are a helpful assistant. Respond in English. +{%- endif -%} +``` + +### Role-based Access + +```jinja +{%- if metadata.user_role == "admin" -%} +You have full access to all operations and sensitive information. +{%- elif metadata.user_role == "user" -%} +Provide general assistance. Do not share sensitive information. +{%- endif -%} +``` + +### Context-aware Behavior + +```jinja +{%- if metadata.context == "code_review" -%} +Focus on code quality, security issues, and best practices. +{%- elif metadata.context == "debugging" -%} +Help identify and fix issues. Ask clarifying questions. +{%- elif metadata.context == "learning" -%} +Explain concepts clearly with examples. Be patient and thorough. +{%- endif -%} +``` + +## Debugging Templates + +To debug template rendering issues: + +1. **Check Variable Availability**: Ensure all referenced variables exist +2. **Validate Jinja2 Syntax**: Use a Jinja2 linter or validator +3. **Test Incrementally**: Add template features one at a time +4. **Use the Render Endpoint**: Test template rendering without making chat requests + + + +```python python +# Test template rendering +render_result = client.sessions.render( + session_id=session.id, + messages=[{"role": "user", "content": "Test"}], + metadata={"test_var": "test_value"} +) + +# Inspect the rendered system message +print(render_result.messages[0]["content"]) +``` + +```javascript javascript +// Test template rendering +const renderResult = await client.sessions.render({ + sessionId: session.id, + messages: [{ role: "user", content: "Test" }], + metadata: { test_var: "test_value" } +}); + +// Inspect the rendered system message +console.log(renderResult.messages[0].content); +``` + + + +## Related Topics + +- [Agents](/concepts/agents) - Learn more about agent configuration +- [Sessions](/concepts/sessions) - Understand session management +- [Tasks](/concepts/tasks) - Create complex workflows with templates +- [Tool Integration](/integrations/tools) - Add tools referenced in templates + + +System templates are rendered server-side before being sent to the language model. This ensures security and consistency across all API clients. + \ No newline at end of file diff --git a/documentation/advanced/types-of-task-steps.mdx b/documentation/advanced/types-of-task-steps.mdx index c5933d774..891625106 100644 --- a/documentation/advanced/types-of-task-steps.mdx +++ b/documentation/advanced/types-of-task-steps.mdx @@ -58,7 +58,59 @@ Send messages to the AI model: settings: model: "claude-3.5-sonnet" temperature: 0.8 + +# Prompt with automatic tool execution +- prompt: What's the weather in San Francisco? + auto_run_tools: true # Tools execute automatically if needed + +# Prompt with JSON response format +- prompt: + - role: system + content: You are a helpful assistant that always responds in JSON format. + - role: user + content: List 3 interesting facts about space. Format as JSON with 'facts' array. + settings: + model: "gpt-4o-mini" + temperature: 0.7 + response_format: + type: json_object + +# Prompt with JSON schema for structured output +- prompt: + - role: system + content: You are a data extraction specialist. + - role: user + content: Extract product information from the description. + settings: + response_format: + type: json_schema + json_schema: + name: product_info + schema: + type: object + properties: + product_name: + type: string + features: + type: array + items: + type: string + price: + type: number + required: ["product_name", "features", "price"] ``` + + +When `auto_run_tools` is set to `true` in a prompt step, any tools available to the agent will be automatically executed if the model decides to use them. The results are then fed back to the model to continue processing. This is particularly useful for creating autonomous workflows where the agent can gather information and make decisions without manual intervention. + + + +The `response_format` setting allows you to request structured output from the model. There are two main options: +- `type: json_object` - Ensures the model responds with valid JSON +- `type: json_schema` - Enforces a specific JSON structure defined by a schema + +When using `response_format`, make sure to instruct the model to produce JSON in your prompt (via system or user message) for best results. Response format support varies by model provider - check the [supported models documentation](/integrations/supported-models) for compatibility. + In the prompt step we offer a bunch of Python functions to help you manipulate data. Here is a list of the functions you can use: @@ -147,7 +199,7 @@ Pause workflow for user input: Executing a subworkflow from a main workflow: -```yaml YAML +```yaml YAML [expandable] # Subworkflow subworkflow: - evaluate: @@ -309,7 +361,7 @@ Process collections in parallel: Conditional execution: -```yaml YAML +```yaml YAML [expandable] # Simple if - if: $ _.count > 0 then: @@ -386,26 +438,6 @@ Return values from workflow: timestamp: $ datetime.now().isoformat() ``` -### Yield Step - -Execute subworkflows: - -```yaml YAML -# Yield to subworkflow -- yield: - workflow: process_data - arguments: - input_data: $ _.raw_data - -# Yield with result handling -- yield: - workflow: analyze - arguments: - text: $ _.content -- evaluate: - analysis_result: $ _ -``` - ### Log Step Log messages or specific values: @@ -426,8 +458,8 @@ Handle errors by specifying an error message: Here's an example combining various step types: -```yaml YAML -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Multi-Step Task Demonstration description: A demonstration of multi-step task processing with research and summarization capabilities. @@ -452,7 +484,7 @@ tools: integration: provider: brave setup: - api_key: "DEMO_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" ################################################################################ ############################# MAIN WORKFLOW #################################### diff --git a/documentation/concepts/agents.mdx b/documentation/concepts/agents.mdx index 919532b65..675c224de 100644 --- a/documentation/concepts/agents.mdx +++ b/documentation/concepts/agents.mdx @@ -25,6 +25,7 @@ When creating an agent, you can leverage the following configuration options: |-------------------------|-----------------------|-----------------------------------------------------------------------------|-------------| | `name` | `string` | The name of your agent | Required | | `canonical_name` | `string` | A unique identifier for your agent, following the pattern `[a-zA-Z][a-zA-Z0-9_]*` | `null` | +| `project` | `string` | The canonical name of the project this agent belongs to | `"default"` | | `about` | `string` | A brief description of what your agent does | `""` | | `model` | `string` | The language model your agent uses (e.g., "gpt-4-turbo", "gemini-nano") | `""` | | `instructions` | `string` \| `list[string]`| Specific tasks or behaviors expected from the agent | `[]` | @@ -33,9 +34,11 @@ When creating an agent, you can leverage the following configuration options: | `default_system_template` | `string` | Default system template for all sessions created by this agent. | See [default system template](/concepts/agents#default-system-template) | -The **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/). +The **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. + +For a comprehensive guide on system templates including available variables, customization options, and advanced usage patterns, see the [System Templates](/advanced/system-templates) documentation. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/). -```python Python +```python Python [expandable] {%- if agent.name -%} You are {{ agent.name }}. {%- endif -%} @@ -102,6 +105,7 @@ In Julep, how you use agents is very important. The YAML below shows the anatomy ```yaml YAML name: "My Agent" model: "claude-3.5-sonnet" +project: "data-analytics" about: "A helpful AI assistant that specializes in data analysis" instructions: "You are a helpful AI assistant that specializes in data analysis" metadata: @@ -171,6 +175,42 @@ To create an agent, you can use the `create` method in the Python or Node.js SDK ``` +### Using default_settings with response_format + +You can configure your agent to always return structured JSON responses by setting `response_format` in the `default_settings`: + + + ```python Python + agent = client.agents.create( + name="Data Analyst", + model="gpt-4o-mini", + about="An agent that analyzes data and returns structured insights", + instructions="Always provide analysis results in a structured format", + default_settings={ + "temperature": 0.3, + "response_format": { + "type": "json_object" + } + } + ) + ``` + + ```javascript Node.js + const agent = await client.agents.create({ + name: "Data Analyst", + model: "gpt-4o-mini", + about: "An agent that analyzes data and returns structured insights", + instructions: "Always provide analysis results in a structured format", + default_settings: { + temperature: 0.3, + response_format: { + type: "json_object" + } + } + }); + ``` + + Check out the API reference [here](/api-reference/agents/create-agent) or SDK reference (Python [here](/sdks/python/reference#agents) or JavaScript [here](/sdks/nodejs/reference#agents) for more details on different operations you can perform on agents. @@ -178,12 +218,40 @@ To create an agent, you can use the `create` method in the Python or Node.js SDK ## Relationship To Other Concepts This section will help you understand how agents relate to other concepts in Julep. + +### Projects + +Agents belong to exactly one project, which helps organize related resources together. When creating an agent, you can specify which project it belongs to using the `project` parameter. If not specified, the agent will be assigned to the "default" project. + +For example: + + +```python Python +# Create an agent in a specific project +agent = client.agents.create( + name="Customer Support Bot", + project="support-platform" +) +``` + +```javascript Node.js +// Create an agent in a specific project +const agent = await client.agents.create({ + name: "Customer Support Bot", + project: "support-platform" +}); +``` + + +For more information about projects, see [Projects](/concepts/projects). + ### Tools Agents can be associated with different types of tools available in Julep to enable them to perform operations. These tools associated with an agent can also be leveraged by a task associated with the agent. For example: + ```python Python # Create an agent agent = client.agents.create(name="My Agent") @@ -202,6 +270,22 @@ client.agents.tools.create( } ) ``` +```javascript Node.js +// Create an agent +const agent = await client.agents.create({name: "My Agent"}); + +// Associate a tool with the agent +await client.agents.tools.create(agent.id, { + name: "computer", + type: "computer_20241022", + computer_20241022: { + display_height_px: 768, + display_width_px: 1024, + display_number: 1, + }, +}); +``` + ### Sessions @@ -209,6 +293,7 @@ Agents can be used in sessions to enable real-time, interactive conversations. W For example: + ```python Python # Create an agent agent = client.agents.create(name="My Agent") @@ -217,6 +302,15 @@ agent = client.agents.create(name="My Agent") session = client.sessions.create(agent=agent.id) ``` +```javascript Node.js +// Create an agent +const agent = await client.agents.create({name: "My Agent"}); + +// Create a session with the agent +const session = await client.sessions.create({agent: agent.id}); +``` + + ## Best Practices @@ -253,6 +347,11 @@ session = client.sessions.create(agent=agent.id) ## Next Steps - [Agent Tools](/concepts/tools) - Learn about tools and how to use them with agents -- [Agent Tasks](/concepts/tasks) - Learn about tasks and how to use them with agents +- [Agent Tasks](/concepts/tasks) - Learn about tasks and how to use them with agents - [Agent Sessions](/concepts/sessions) - Learn about sessions and how to use them with agents -- [Agent Docs](/concepts/docs) - Learn about docs and how to use them with agents \ No newline at end of file +- [Agent Docs](/concepts/docs) - Learn about docs and how to use them with agents + +## See Examples + +- [Hello Agent notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/01-Hello-Agent.ipynb) +- [Companion Agent notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/09-companion-agent.ipynb) diff --git a/documentation/concepts/docs.mdx b/documentation/concepts/docs.mdx index 9b86649df..ba1e0e76c 100644 --- a/documentation/concepts/docs.mdx +++ b/documentation/concepts/docs.mdx @@ -65,6 +65,56 @@ Documents are attached to either an agent or a user. This is how you can create Check out the [API reference](/api-reference/create-user-doc) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs. +### Getting a Doc + +To get a doc, you can use the `client.docs.get` method, and pass the doc's ID. + +**Example:** + + +```python Python +# Getting a doc +doc = client.docs.get(doc_id="doc_id") + +print(doc) +``` + +```javascript Node.js +// Getting a doc +const doc = await client.docs.get("doc_id"); + +console.log(doc) +``` + + +When you get a doc, you can access the doc's `title`, `content`, `embeddings`, `metadata` and other attributes. + + + ``` [expandable] + Doc( + id='0680b756-9827-7cf2-8000-82ed5daf816e', + content=['The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa.'], + created_at=datetime.datetime(2023, 4, 25, 11, 43, 37, 513161, tzinfo=datetime.timezone.utc), + title='Old World', + embedding_dimensions=1024, + embedding_model='text-embedding-3-large', + embeddings=[ + -0.036940154, + 0.021077264, + -0.03274468, + 0.016222501, + ... + -0.05038565, + 0.012776218, + ... + ], + language='english', + metadata={"source": "https://en.wikipedia.org/wiki/Medieval_period"}, + modality='text' + ) + ``` + + ### Chunking In Julep, documents are not automatically chunked. We recommend that developers handle chunking based on their specific use case requirements, as different applications may have unique needs for how documents should be divided. @@ -94,33 +144,33 @@ The default parameters for full-text search are based on our internal benchmarki **Example:** - ```python Python - # Define the query - text_query = "Medieval times in Europe" - - # Search for docs - matched_docs = client.agents.docs.search( - agent_id="agent_id", - text=text_query, - limit=10, # the maximum number of docs to return - ) +```python Python +# Define the query +text_query = "Medieval times in Europe" + +# Search for docs +matched_docs = client.agents.docs.search( + agent_id="agent_id", + text=text_query, + limit=10, # the maximum number of docs to return +) + +print(matched_docs.model_dump()) +``` - print(matched_docs.model_dump()) - ``` +```javascript Node.js +// Define the query +const text_query = "Medieval times in Europe"; - ```javascript Node.js - // Define the query - const text_query = "Medieval times in Europe"; +// Search for docs +const matched_docs = await client.agents.docs.search({ + agent_id: "agent_id", + text: text_query, + limit: 10, // the maximum number of docs to return +}); - // Search for docs - const matched_docs = await client.agents.docs.search({ - agent_id: "agent_id", - text: text_query, - limit: 10, // the maximum number of docs to return - }); - - console.log(matched_docs); - ``` +console.log(matched_docs); +``` @@ -169,36 +219,36 @@ The default parameters for embedding search are based on our internal benchmarki - ```python Python - # Define the vector query - vector_query = client.docs.embed(text="Medieval times in Europe").vectors[0] - - # Search for docs - matched_docs = client.agents.docs.search( - agent_id="agent_id", - vector=vector_query, - limit=10, # the maximum number of docs to return - confidence=-0.3, # confidence range is -1 to 1 - ) - - print(matched_docs.model_dump()) - ``` +```python Python +# Define the vector query +vector_query = client.docs.embed(text="Medieval times in Europe").vectors[0] + +# Search for docs +matched_docs = client.agents.docs.search( + agent_id="agent_id", + vector=vector_query, + limit=10, # the maximum number of docs to return + confidence=-0.3, # confidence range is -1 to 1 +) + +print(matched_docs.model_dump()) +``` - ```javascript Node.js - // Define the vector query - const embedding_result = client.docs.embed({ text: "Medieval times in Europe" }); - const vector_query = embedding_result.vectors[0]; +```javascript Node.js +// Define the vector query +const embedding_result = client.docs.embed({ text: "Medieval times in Europe" }); +const vector_query = embedding_result.vectors[0]; - // Search for docs - const matched_docs = await client.agents.docs.search({ - agent_id: "agent_id", - vector: vector_query, - limit: 10, // the maximum number of docs to return - confidence: -0.3, // confidence range is -1 to 1 - }); +// Search for docs +const matched_docs = await client.agents.docs.search({ + agent_id: "agent_id", + vector: vector_query, + limit: 10, // the maximum number of docs to return + confidence: -0.3, // confidence range is -1 to 1 +}); - console.log(matched_docs); - ``` +console.log(matched_docs); +``` @@ -279,66 +329,66 @@ The default parameters for hybrid search are based on our internal benchmarking. **Example:** - ```python Python - # Define the query - text_query = "Medieval times in Europe" - # Embed the query using the `docs.embed` method - embedded_query = client.docs.embed(text=text_query).vectors[0] - - # Search for docs - matched_docs = client.agents.docs.search( - agent_id="agent_id", - text=text_query, - alpha=0.5, # the weight of the embedding query - vector=embedded_query, - confidence=-0.3, # confidence range is -1 to 1 - ) - - print(matched_docs.model_dump()) - ``` - - ```javascript Node.js - // Define the query - const text_query = "Medieval times in Europe"; - // Embed the query using the `docs.embed` method - const embedding_result = await client.docs.embed({ text: text_query }); - const embedded_query = embedding_result.vectors[0]; - - // Search for docs - const matched_docs = await client.agents.docs.search({ - agent_id: "agent_id", - text: text_query, - vector: embedded_query, - confidence: -0.3, // confidence range is -1 to 1 - alpha: 0.5, // the weight of the embedding query - }); +```python Python +# Define the query +text_query = "Medieval times in Europe" +# Embed the query using the `docs.embed` method +embedded_query = client.docs.embed(text=text_query).vectors[0] + +# Search for docs +matched_docs = client.agents.docs.search( + agent_id="agent_id", + text=text_query, + alpha=0.5, # the weight of the embedding query + vector=embedded_query, + confidence=-0.3, # confidence range is -1 to 1 +) + +print(matched_docs.model_dump()) +``` - console.log(matched_docs); - ``` +```javascript Node.js +// Define the query +const text_query = "Medieval times in Europe"; +// Embed the query using the `docs.embed` method +const embedding_result = await client.docs.embed({ text: text_query }); +const embedded_query = embedding_result.vectors[0]; + +// Search for docs +const matched_docs = await client.agents.docs.search({ + agent_id: "agent_id", + text: text_query, + vector: embedded_query, + confidence: -0.3, // confidence range is -1 to 1 + alpha: 0.5, // the weight of the embedding query +}); + +console.log(matched_docs); +``` ``` - {'docs': [{'id': '06791e86-6dcf-7816-8000-e4c3b781d05b', - 'owner': {'id': '06791e82-46b7-739c-8000-3428f9d4e40f', 'role': 'agent'}, - 'snippet': {'content': 'The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.', - 'index': 0, - 'embedding': [ - -0.036940154, - 0.021077264, - -0.03274468, - 0.016222501, - -0.05038565, - 0.012776218, - -0.034123193, - -0.005039564, - ... - ...]}, - 'distance': 0.13411101466087272, - 'metadata': {"source": "https://en.wikipedia.org/wiki/Medieval_period"}, - 'title': 'Old World'}], - 'time': 0.0514223575592041} - ``` +{'docs': [{'id': '06791e86-6dcf-7816-8000-e4c3b781d05b', +'owner': {'id': '06791e82-46b7-739c-8000-3428f9d4e40f', 'role': 'agent'}, +'snippet': {'content': 'The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.', + 'index': 0, + 'embedding': [ + -0.036940154, + 0.021077264, + -0.03274468, + 0.016222501, + -0.05038565, + 0.012776218, + -0.034123193, + -0.005039564, + ... + ...]}, +'distance': 0.13411101466087272, +'metadata': {"source": "https://en.wikipedia.org/wiki/Medieval_period"}, +'title': 'Old World'}], +'time': 0.0514223575592041} +``` @@ -352,13 +402,26 @@ While search is carried on based on the textual and/or semantic content of the d **Example:** - ```python Python - # Filter docs based on metadata - dev_client.agents.docs.list( - agent_id="agent_id", - metadata_filter={"source": "wikipedia"}, - ) - ``` +```python Python +# Filter docs based on metadata +dev_client.agents.docs.list( + agent_id="agent_id", + metadata_filter={"source": "wikipedia"}, +) +print(docs.items) +``` + +```javascript Node.js +// Filter docs based on metadata +const docs = await client.agents.docs.list( + agentId, + { + metadata_filter: {"source": "wikipedia"}, + } +); + +console.log(docs.items); +``` @@ -378,7 +441,7 @@ By leveraging [System Tools](/concepts/tools#system-tools), Julep [Tasks](/conce **Example:** -```yaml +```yaml [expandable] input_schema: type: object properties: diff --git a/documentation/concepts/execution.mdx b/documentation/concepts/execution.mdx index 56c47ea47..a5697f9a1 100644 --- a/documentation/concepts/execution.mdx +++ b/documentation/concepts/execution.mdx @@ -219,6 +219,61 @@ Example: Check out the API reference [here](/api-reference/executions) or SDK reference (Python [here](/sdks/python/reference#executions) or JavaScript [here](/sdks/nodejs/reference#executions) for more details on different operations you can perform on executions. +## Streaming Execution Status Updates + +### Using the raw SSE endpoint + +You can subscribe to real-time status updates using the Server-Sent Events (SSE) endpoint. Each event conforms to the `ExecutionStatusEvent` schema and includes the following fields: + +- **execution_id**: The UUID of the execution. +- **status**: The current execution status. +- **updated_at**: ISO 8601 timestamp of the update. +- **error**: Error message if the execution failed. +- **transition_count**: Number of transitions that have occurred. +- **metadata**: Arbitrary metadata for the event. + +```bash +curl -X GET 'https://api.julep.ai/api/executions/{execution_id}/status.stream' \ + -H 'Authorization: Bearer $JULEP_API_KEY' +``` + +You'll be getting events that look like this: + +```bash +data: {"execution_id":"068306ff-e0f3-7fe9-8000-0013626a759a","status":"starting","updated_at":"2025-05-23T12:54:24.565424Z","error":null,"transition_count":1,"metadata":{}} +data: {"execution_id":"068306ff-e0f3-7fe9-8000-0013626a759a","status":"running","updated_at":"2025-05-23T12:54:30.903484Z","error":null,"transition_count":2,"metadata":{}} +data: {"execution_id":"068306ff-e0f3-7fe9-8000-0013626a759a","status":"succeeded","updated_at":"2025-05-23T12:56:12.054067Z","error":null,"transition_count":3,"metadata":{}} +``` + +### Using the Python SDK `AsyncClient` + + +```python Python +from julep import AsyncClient + +client = AsyncClient(api_key="YOUR_API_KEY") +execution_id = "YOUR_EXECUTION_ID" + +# Subscribe to the live status stream (async generator) +status_stream = await client.executions.status.stream(execution_id=execution_id) + +# Consume events in real-time using async for +async for event in status_stream: + print("Execution status:", event.status, "updated at", event.updated_at) + + +``` + + + +This approach relies on Python's async / await syntax. Make sure to: + +1. Use `AsyncClient` not `Client`. +2. `await client.executions.status.stream(...)` to obtain the async generator. +3. Iterate with `async for` to consume events. + + + ## Updating/Cancelling an Execution To update or cancel an execution, you can use the `change_status` method in the SDKs. diff --git a/documentation/concepts/files.mdx b/documentation/concepts/files.mdx new file mode 100644 index 000000000..effa97468 --- /dev/null +++ b/documentation/concepts/files.mdx @@ -0,0 +1,225 @@ +--- +title: 'Files' +description: 'Managing files and attachments in Julep' +icon: 'file' +--- + +# Files + +Files in Julep allow agents to work with various types of data including documents, images, audio, and other media. Files are stored securely and can be accessed by agents and tasks as needed. + +## Overview + +Julep's file system provides: + +- Secure storage for various file types +- Unique identifiers for consistent access +- Metadata for organization and discovery +- Content hashing for integrity verification +- Project association for logical grouping + +## File Properties + +Each file in Julep has the following properties: + +| **Field** | **Type** | **Description** | **Default** | +|---------------|------------|-------------------------------------------------------|--------------| +| `name` | `string` | Name of the file | Required | +| `project` | `string` | The canonical name of the project this file belongs to | `"default"` | +| `content` | `string` | Base64-encoded file content | Required | +| `description` | `string` | Description of the file | `""` | +| `mime_type` | `string` | MIME type of the file | `null` | +| `size` | `number` | Size of the file in bytes (read-only) | Auto-calculated | +| `hash` | `string` | Hash of the file content (read-only) | Auto-calculated | +| `created_at` | `string` | Creation timestamp (read-only) | Auto-generated | + +## Creating Files + +You can create files using the Julep SDK in Python or JavaScript: + + +```python Python +from julep import Julep +import base64 + +client = Julep(api_key="your_api_key") + +# Read a local file and encode it as base64 +with open("path/to/document.pdf", "rb") as file: + content = base64.b64encode(file.read()).decode("utf-8") + +# Create the file in Julep +file = client.files.create( + name="document.pdf", + project="knowledge-base", + content=content, + description="Important document for reference", + mime_type="application/pdf" +) + +print(f"Created file: {file.id}") +``` + +```javascript Node.js +import { Julep } from '@julep/sdk'; +import fs from 'fs'; + +const client = new Julep({ apiKey: 'your_api_key' }); + +// Read a local file and encode it as base64 +const content = fs.readFileSync('path/to/document.pdf').toString('base64'); + +// Create the file in Julep +const file = await client.files.create({ + name: "document.pdf", + project: "knowledge-base", + content: content, + description: "Important document for reference", + mime_type: "application/pdf" +}); + +console.log(`Created file: ${file.id}`); +``` + + +## Managing Files + +### Retrieving Files + + +```python Python +# Get a specific file by ID +file = client.files.get("file_id_here") +print(file) + +# List all files +files = client.files.list() +for file in files: + print(f"{file.name}: {file.description}") + +# List files with filtering +files = client.files.list(metadata_filter={"category": "report"}) +``` + +```javascript Node.js +// Get a specific file by ID +const file = await client.files.get("file_id_here"); +console.log(file); + +// List all files +const files = await client.files.list(); +files.forEach(file => console.log(`${file.name}: ${file.description}`)); + +// List files with filtering +const files = await client.files.list({ metadata_filter: { category: "report" } }); +``` + + +### Deleting Files + + +```python Python +# Delete a file +client.files.delete("file_id_here") +``` + +```javascript Node.js +// Delete a file +await client.files.delete("file_id_here"); +``` + + +## Relationship to Other Concepts + +### Projects + +Files belong to exactly one project, which helps organize related resources together. When creating a file, you can specify which project it belongs to using the `project` parameter. If not specified, the file will be assigned to the "default" project. + +**Example:** + + +```python Python +# Create a file in a specific project +file = client.files.create( + name="marketing-image.jpg", + project="product-launch", + content=base64_content, + mime_type="image/jpeg" +) +``` + +```javascript Node.js +// Create a file in a specific project +const file = await client.files.create({ + name: "marketing-image.jpg", + project: "product-launch", + content: base64Content, + mime_type: "image/jpeg" +}); +``` + + +For more information about projects, see [Projects](/concepts/projects). + +### Agents and Tasks + +Files can be used by both agents and tasks to access and process information. For example, an agent might analyze an image file, or a task might process a document file. + + +```python Python +# Create a file +file = client.files.create(name="data.csv", content=base64_content) + +# Reference the file in a task execution +execution = client.tasks.executions.create( + task_id="task_id_here", + input={"file_id": file.id} +) +``` + +```javascript Node.js +// Create a file +const file = await client.files.create({ + name: "data.csv", + content: base64Content +}); + +// Reference the file in a task execution +const execution = await client.tasks.executions.create({ + task_id: "task_id_here", + input: { file_id: file.id } +}); +``` + + +## Best Practices + + + +
      +
    • Group related files in the same project
    • +
    • Use consistent naming conventions
    • +
    • Include descriptive metadata for better discovery
    • +
    +
    + +
      +
    • Keep file sizes reasonable for faster processing
    • +
    • Consider chunking large files into smaller ones
    • +
    • Be mindful of the content limits when Base64 encoding
    • +
    +
    + +
      +
    • Avoid storing sensitive information in files
    • +
    • Regularly audit and clean up unused files
    • +
    • Validate file types before uploading
    • +
    +
    +
    + +## Next Steps + +- [Projects](/concepts/projects) - Learn about organizing resources with projects +- [Agents](/concepts/agents) - Learn how agents can work with files +- [Tasks](/concepts/tasks) - Learn how to use files in task workflows \ No newline at end of file diff --git a/documentation/concepts/projects.mdx b/documentation/concepts/projects.mdx new file mode 100644 index 000000000..ee5cf5b3f --- /dev/null +++ b/documentation/concepts/projects.mdx @@ -0,0 +1,105 @@ +--- +title: 'Projects' +description: 'Organizational units for grouping related resources' +icon: 'layer-group' +--- + + +## Overview +Projects are organizational units that allow you to group related agents, users, files, and other resources together. They provide a way to manage resources at a higher level and maintain clean separation between different use cases or applications. + +Projects provide several benefits: + +- **Organization**: Group related resources together logically +- **Management**: Administer resources at the project level +- **Isolation**: Keep resources separate between different applications +- **Deployment**: Deploy multiple templates or configurations without conflicts + +Each developer automatically gets a "default" project that contains all existing resources. This ensures backward compatibility with existing applications while providing the benefits of project organization. + +## Project Properties + +A project includes: + +- `id`: Unique identifier +- `canonical_name`: Machine-readable name (unique per developer) +- `name`: Human-readable display name +- `metadata`: Custom attributes for the project + +## Project Relationships + +Projects have a one-to-many relationship with resources: + +- Each agent belongs to exactly one project +- Each user belongs to exactly one project +- Each file belongs to exactly one project + +When creating resources, you can specify which project they belong to using the `project` field. If not specified, resources are automatically assigned to the "default" project. + +## Default Project + +Every developer automatically receives a "default" project when they first interact with the API. This project: + +- Cannot be deleted +- Has a canonical name of "default" +- Contains all previously created resources (pre-dating the projects feature) +- Serves as a fallback for resources created without a project specification + +## API Operations + +Projects support standard CRUD operations: + +- `GET /projects`: List all projects for a developer +- `POST /projects`: Create a new project +- `GET /projects/{id}`: Retrieve a specific project +- `PUT /projects/{id}`: Update a project +- `PATCH /projects/{id}`: Partially update a project +- `DELETE /projects/{id}`: Delete a project (except the default project) + +## Usage Examples + +### Creating a Project + +```json +POST /projects +{ + "name": "Customer Support Bot", + "canonical_name": "support-bot", + "metadata": { + "description": "Resources for our customer support chatbot", + "team": "customer-success" + } +} +``` + +### Creating a Resource in a Project + +When creating a resource such as an agent, specify the project canonical name: + +```json +POST /agents +{ + "name": "Support Assistant", + "project": "support-bot", + "instructions": [ + "You are a helpful customer support assistant." + ], + "model": "gpt-4-turbo" +} +``` + +## Future Capabilities + +Projects are designed with future extensibility in mind. Planned enhancements include: + +- Project-specific API keys for more granular access control +- Usage tracking and billing at the project level +- Enhanced permissions and role-based access control +- Cross-project resource sharing capabilities + +## Best Practices + +- Use meaningful canonical names for projects that reflect their purpose +- Group resources by logical application or team +- Use metadata to add custom attributes for filtering and organization +- Create separate projects for development, staging, and production environments \ No newline at end of file diff --git a/documentation/concepts/secrets.mdx b/documentation/concepts/secrets.mdx new file mode 100644 index 000000000..adfd33f3d --- /dev/null +++ b/documentation/concepts/secrets.mdx @@ -0,0 +1,128 @@ +--- +title: 'Secrets' +description: 'Securely store and manage sensitive information for your LLM applications' +icon: 'key' +--- + +# Secrets + +Secrets allow you to securely store and manage sensitive information like API keys, credentials, and other confidential data that your agents and tasks need to access external services. + +## What are Secrets? + +Secrets are encrypted key-value pairs that can be referenced in your tasks and used by your agents without exposing the actual values in your code or configuration files. This helps maintain security and separates sensitive data from your application logic. + +## Key Features + +- **Encrypted Storage**: All secrets are encrypted at rest using industry-standard AES-256 encryption +- **Access Control**: Secrets are scoped to developers and cannot be accessed across developer accounts +- **Named References**: Reference secrets by name in tasks and tools instead of hardcoding values +- **Versioning**: Track when secrets were created and updated +- **Metadata Support**: Add custom metadata to organize and categorize your secrets + +## Common Use Cases + +- Storing API keys for external services (OpenAI, Google, AWS, etc.) +- Managing database credentials +- Securing authentication tokens +- Storing sensitive configuration values +- Managing encrypted communication channels + +## Secrets vs. Environment Variables + +While environment variables are commonly used for configuration, secrets provide several advantages: + +- **Encrypted Storage**: Environment variables are stored in plain text, while secrets are encrypted +- **Access Management**: Environment variables are global, while secrets have access controls +- **Audit Trail**: Secrets maintain creation and update timestamps +- **Organized Management**: The secrets API provides a structured way to manage sensitive data + +## Working with Secrets + +### Creating Secrets + +Secrets can be created through the API, SDK, or CLI: + + ```python Python + secret = client.secrets.create( + name="stripe_api_key", + value="sk_test_...", + description="Stripe API key for payment processing", + metadata={"environment": "production", "owner": "payments-team"} + ) + + print(f"Created secret: {secret.name}") + ``` + + ```bash CLI + julep secrets create --name "openai_api_key" --value "sk-..." --description "OpenAI API key" + ``` + + ```bash API + curl https://dev.julep.ai:443/api/secrets \ + --request POST \ + --header 'Content-Type: application/json' \ + --data '{ + "metadata": {}, + "name": "openai_api_key", + "description": "", + "value": "sk-..." + }' + ``` + + + +#### Required Parameters + +- `name`: The name of the secret (must be a valid identifier) +- `value`: The secret value to encrypt and store + +#### Optional Parameters + +- `description`: A description of what the secret is used for +- `metadata`: A dictionary of metadata to associate with the secret + +### Using Secrets in Tasks + +Once created, secrets can be referenced in your tasks: + +```yaml +steps: + - kind: tool_call + tool: openai + operation: completion + arguments: + prompt: "Summarize this text" + secret_name: openai_api_key +``` + +### Using Secrets in Expressions + +You can also reference secrets in expressions: + +```yaml +steps: + - kind: prompt + model: gpt-4 + prompt: "Generate a summary" + template_variables: + api_url: "$ f'https://api.example.com/v1?key={secrets.api_key}'" +``` + +## Secret Names and Conventions + +Secret names must: +- Begin with a letter +- Contain only alphanumeric characters and underscores +- Be unique within a developer account + +Good naming conventions: +- Use descriptive names like `stripe_api_key` instead of just `api_key` +- Include service names in the key name +- Use consistent formatting (snake_case recommended) + +## Next Steps + +- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets +- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets +- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets \ No newline at end of file diff --git a/documentation/concepts/sessions.mdx b/documentation/concepts/sessions.mdx index eed681aa6..067a184a0 100644 --- a/documentation/concepts/sessions.mdx +++ b/documentation/concepts/sessions.mdx @@ -33,8 +33,8 @@ When creating a session, you can leverage the following configuration options to | `system_template` | `str` \| `None` | A specific system prompt template that sets the background for this session | `None` | | `render_templates` | `StrictBool` | Whether to render system and assistant messages as Jinja templates | `True` | | `token_budget` | `int` \| `None` | Threshold value for the adaptive context functionality | `None` | -| `auto_run_tools` | `StrictBool` | Whether to auto-run tools and send the tool results to the model when available | `False` | -| `forward_tool_calls` | `StrictBool` | Whether to forward tool calls directly to the model | `False` | +| `auto_run_tools` | `StrictBool` | Whether to automatically execute tools and send the results back to the model when available | `False` | +| `forward_tool_calls` | `StrictBool` | Whether to forward tool calls directly to the model | `False` | | `recall_options` | `object` \| `None` | Options for different RAG search modes (VectorDocSearch, TextOnlyDocSearch, HybridDocSearch) in the session | `VectorDocSearch` | ### Recall Options (RAG Search) @@ -105,9 +105,11 @@ You can control the fuzzy matching behavior using the `trigram_similarity_thresh ### System Template -The **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/). +The **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. + +For a comprehensive guide on system templates including available variables, customization options, and advanced usage patterns, see the [System Templates](/advanced/system-templates) documentation. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/). -```python +```python [expandable] {%- if agent.name -%} You are {{agent.name}}.{{" "}} {%- endif -%} @@ -293,14 +295,17 @@ In this example, the user John Doe is associated with the agent Mark Lee in the ### Tools -Sessions have the ability to use [Tools](/concepts/tools). If an agent has a tool, and the LLM decides to use it, the tool will be run and the result will be automatically sent to the LLM for further processing. +Sessions have the ability to use [Tools](/concepts/tools). When `auto_run_tools` is set to `true` (available in chat calls), if an agent has a tool and the LLM decides to use it, the tool will be executed automatically and the result will be sent back to the LLM for further processing. When `auto_run_tools` is `false` (default), tool calls are returned in the response without execution. Example: -If the agent that's associated with the session has a tool called `fetch_weather`, and the LLM decides to use it, the tool will be run and the result will be automatically sent to the LLM for further processing. +If the agent that's associated with the session has a tool called `fetch_weather`, and the LLM decides to use it: +- With `auto_run_tools=true`: The tool executes automatically and returns weather data to the LLM +- With `auto_run_tools=false`: The tool call is returned in the response for manual execution ```python Python + # With automatic tool execution response = client.sessions.chat( session_id="session_id", messages=[ @@ -309,14 +314,33 @@ If the agent that's associated with the session has a tool called `fetch_weather "content": "What is the weather in San Francisco?" } ], - auto_run_tools=True + auto_run_tools=True, # Tools execute automatically + recall_tools=True # Tool calls/results included in message history ) print("Agent's response:", response.choices[0].message.content) # Agent's response: The weather in San Francisco is 70 degrees and it's sunny. Humidity is 50%, and the wind speed is around 10 mph. + + # Without automatic tool execution (default) + response = client.sessions.chat( + session_id="session_id", + messages=[ + { + "role": "user", + "content": "What is the weather in San Francisco?" + } + ], + auto_run_tools=False # Default - returns tool calls without execution + ) + + # Check if tool calls were made + if response.choices[0].message.tool_calls: + print("Tool calls:", response.choices[0].message.tool_calls) + # You need to execute these tools manually and send results back ``` ```javascript Node.js + // With automatic tool execution const response = await client.sessions.chat({ session_id: "session_id", messages: [ @@ -325,10 +349,29 @@ If the agent that's associated with the session has a tool called `fetch_weather content: "What is the weather in San Francisco?" } ], - auto_run_tools=True + auto_run_tools: true, // Tools execute automatically + recall_tools: true // Tool calls/results included in message history }); console.log("Agent:", response.choices[0].message.content); // Agent's response: The weather in San Francisco is 70 degrees and it's sunny. Humidity is 50%, and the wind speed is around 10 mph. + + // Without automatic tool execution (default) + const response2 = await client.sessions.chat({ + session_id: "session_id", + messages: [ + { + role: "user", + content: "What is the weather in San Francisco?" + } + ], + auto_run_tools: false // Default - returns tool calls without execution + }); + + // Check if tool calls were made + if (response2.choices[0].message.tool_calls) { + console.log("Tool calls:", response2.choices[0].message.tool_calls); + // You need to execute these tools manually and send results back + } ``` @@ -337,7 +380,7 @@ If the agent that's associated with the session has a tool called `fetch_weather When chatting in a session, the session can automatically search for documents that are associated with any of the agents and/or users that participate in the session. You can control whether the session should search for documents when chatting using the `recall` option of the `chat` method, which is set to `True` by default. You can also set the session's `recall_options` when creating the session to control how the session should search for documents. - ```python Python + ```python Python [expandable] # Create a session with custom recall options client.sessions.create( agent=agent.id, @@ -371,7 +414,7 @@ When chatting in a session, the session can automatically search for documents t print("Searched Documents:", response.docs) ``` - ```javascript Node.js + ```javascript Node.js [expandable] client.sessions.create({ agent: agent.id, user: user.id, @@ -406,7 +449,7 @@ When chatting in a session, the session can automatically search for documents t When running the above code with an agent that has documents about Julep, the session will search for documents that are relevant to the conversation and return them in the `response.docs` field. - ``` + ``` [expandable] Agent's response: Julep is a comprehensive platform designed for creating production-ready AI systems and agents. Here are the key aspects of Julep: Core Features: @@ -477,10 +520,10 @@ Dev Resources [Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations) Usecases [User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py) -[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) -[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) +[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) +[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) [Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py) -[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-Website_Crawler_using_Spider.ipynb) +[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb) [Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py) [Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py) Company @@ -505,10 +548,10 @@ Dev Resources [Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations) Usecases [User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py) -[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) -[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) +[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) +[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) [Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py) -[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-Website_Crawler_using_Spider.ipynb) +[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb) [Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py) [Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py) Company @@ -533,10 +576,10 @@ Dev Resources [Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations) Usecases [User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py) -[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/00-Devfest-Email-Assistant.ipynb) -[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) +[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) +[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb) [Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py) -[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-Website_Crawler_using_Spider.ipynb) +[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb) [Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py) [Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py) Company @@ -555,7 +598,7 @@ Built by Engineers, for Engineers This chunk provides an overview of resources and support options offered by Julep AI, including documentation, development tools, community links, and contact information for booking demos or reaching out for support. It highlights features such as the Julep API, multi-step workflow deployment, and various use cases relevant for developers. ``` - This example is taken from the `crawling-and-rag` cookbook. Check it out [here](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-crawling-and-rag.ipynb). + This example is taken from the `crawling-and-rag` cookbook. Check it out [here](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/10-crawling-and-rag.ipynb). ## Best Practices diff --git a/documentation/concepts/tasks.mdx b/documentation/concepts/tasks.mdx index 8e2613477..88a1114c3 100644 --- a/documentation/concepts/tasks.mdx +++ b/documentation/concepts/tasks.mdx @@ -44,6 +44,17 @@ input_schema: description: The text to summarize ``` + + **⚠️ Workflow Input Size Warning**: Avoid passing extremely large objects as input to your workflows, as this can cause execution failures. Large inputs (such as massive JSON objects, extensive arrays, or huge text files) may exceed memory limits or hit serialization constraints. + + **What to do instead:** + - **Break large data into smaller chunks** and process them iteratively + - **Use file uploads** and pass file references instead of raw content + - **Implement pagination** for large datasets + + **Rule of thumb:** If your input data is larger than a few megabytes, consider alternative approaches. + + ### Tools Tools are functions that can be used by an agent to perform tasks. Julep supports: @@ -64,7 +75,7 @@ tools: provider: brave method: search setup: - api_key: + brave_api_key: ``` ### Sub-Workflows @@ -168,7 +179,7 @@ Access agent and session data: Here's how these components work together: -```yaml YAML +```yaml YAML [expandable] name: Process Customer Feedback description: Analyze and categorize customer feedback input_schema: @@ -182,16 +193,26 @@ input_schema: default: true tools: - - name: categorize - integration: - provider: classification - method: categorize +- name: get_weather_info + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: OPENWEATHERMAP_API_KEY main: - - prompt: Analyze customer sentiment - - tool: categorize - arguments: - text: $ steps[0].input.feedback_text +- tool: get_weather_info + arguments: + location: $ steps[0].input.location + +- prompt: |- + $ f"""The weather in {steps[0].output.location} is the following: + {steps[0].output.weather} + + + Analyze the weather and provide a summary of the weather in the location. Include some recommendations on what to wear based on the weather. + + """ ``` > Learn more about tools [here](/concepts/tools). @@ -208,7 +229,7 @@ Here's a simple task that summarizes a document and checks if the summary is too -```yaml YAML +```yaml task.yaml [expandable] name: Summarize Document description: Create a concise summary of any document input_schema: @@ -220,8 +241,8 @@ input_schema: main: - prompt: |- - $ f'''Analyze the following text and create a summary: - {steps[0].input.document_text}''' + $ f'''Analyze the following text and create a summary: + {steps[0].input.document_text}''' unwrap: true - evaluate: too_long: $ len(_) > 500 @@ -230,31 +251,35 @@ main: prompt: |- $ f'''Make the summary more concise: {steps[0].output}''' + unwrap: true else: evaluate: content: $ steps[0].output ``` -```python Python -# Create a task +```python main.py import yaml -task_yaml = """ -// ... task yaml here ... -""" -task_def = yaml.safe_load(task_yaml) +import os + +task_def = yaml.safe_load(open("task.yaml")) + task = client.tasks.create( agent_id="agent_id", **task_def ) ``` -```javascript Node.js +```javascript index.js + + // Create a task -const taskYaml = ` -// ... task yaml here ... -` +import yaml from "yaml"; +import fs from "fs"; + +const task_definition = yaml.parse(fs.readFileSync("task.yaml", "utf8")); + async function createTask(agentId) { - const task = await client.tasks.create(agentId, yaml.parse(taskYaml)); + const task = await client.tasks.create(agentId, task_definition); return task; } ``` @@ -273,21 +298,21 @@ Here's how to execute a task: ```python Python # Execute a task execution = client.executions.create( - task_id=task.id, - input={ - "document_text": "This is a sample document" - } + task_id=task.id, + input={ + "document_text": "This is a sample document" + } ) # Monitor progress while True: - result = client.executions.get(execution.id) - if result.status in ["succeeded", "failed"]: - break - time.sleep(1) + result = client.executions.get(execution.id) + if result.status in ["succeeded", "failed"]: + break + time.sleep(1) ``` -```javascript Node.js +```javascript Node.js [expandable] // Execute a task async function executeTask(taskId) { const execution = await client.executions.create(taskId, { @@ -328,21 +353,95 @@ Julep agents can power tasks by providing memory, context, or tools. Tasks are m For example: -```python Python + +```python Python [expandable] import yaml # Create an agent agent = client.agents.create( - name="Customer Support Agent", - about="An agent that handles customer support requests", - model="gpt-4o", + name="Customer Support Agent", + about="An agent that handles customer support requests", + model="gpt-4o", ) # Add a tool to the agent client.agents.tools.create( - agent_id=agent.id, - name="send_email", - **yaml.safe_load(""" + agent_id=agent.id, + **yaml.safe_load(""" + name: send_email + type: integration + integration: + provider: email + method: send + setup: + host: "smtp.example.com" + port: 587 + user: "your_username" + password: "your_password" + """), +) + +# Create a task that inherits this tool +task = client.tasks.create( + agent_id=agent.id, + **yaml.safe_load(""" + name: Handle Support Request + + # Make sure to set this to true if you want to inherit tools from the agent + inherit_tools: true + + input_schema: + type: object + properties: + customer_email: + type: string + description: The email of the customer + subject: + type: string + body: + type: string + description: The body of the email + + main: + - prompt: + - role: system + content: You are a customer support agent who works for Julep AI. You will be given a support request from a customer. You will need to handle the request by sending a reply email to the customer. + - role: user + content: |- + $ f"""Handle the support request from this email: {steps[0].input.customer_email} + The subject of the email is this: + {steps[0].input.subject} + + --- + + The body of the email is this: + {steps[0].input.body} + """ + unwrap: true + + - tool: send_email + arguments: + to: $ steps[0].input.customer_email + from: "support@julep.ai" + subject: "$ f'Re: {steps[0].input.subject}'" + body: $ steps[0].output + """) +) +``` + +```javascript Node.js [expandable] +// Create an agent +const agent = await client.agents.create({ + name: "Customer Support Agent", + about: "An agent that handles customer support requests", + model: "gpt-4o", + }); + +// Add a tool to the agent +await client.agents.tools.create( + agent.id, + yaml.parse(` + name: send_email type: integration integration: provider: email @@ -352,28 +451,161 @@ client.agents.tools.create( port: 587 user: "your_username" password: "your_password" - """), -) + `) +); + +// Create a task that inherits this tool +const task = await client.tasks.create( + agent.id, + yaml.parse(` + name: Handle Support Request + + # Make sure to set this to true if you want to inherit tools from the agent + inherit_tools: true + + input_schema: + type: object + properties: + customer_email: + type: string + description: The email of the customer + subject: + type: string + body: + type: string + description: The body of the email -# Create a task that inherits this tool -task = client.tasks.create( - agent_id=agent.id, - name="Handle Support Request", - **yaml.safe_load(""" main: + - prompt: + - role: system + content: You are a customer support agent who works for Julep AI. You will be given a support request from a customer. You will need to handle the request by sending a reply email to the customer. + - role: user + content: |- + $ f"""Handle the support request from this email: {steps[0].input.customer_email} + The subject of the email is this: + {steps[0].input.subject} + + --- + + The body of the email is this: + {steps[0].input.body} + """ + unwrap: true + - tool: send_email arguments: to: $ steps[0].input.customer_email from: "support@julep.ai" - subject: $ steps[0].input.subject - body: $ steps[0].input.body - """) -) + subject: "$ f'Re: {steps[0].input.subject}'" + body: $ steps[0].output + `) +); ``` + ### Tools -Task can leverage tools to perform complex operations. Tools can be defined in the task definition or can be associated with an agent. +Task can leverage tools to perform complex operations. There are 2 ways of defining tools for tasks: + +1. Associate a tool with an agent, and inherit it in the task definition by setting `inherit_tools` to `true` while creating the task. Example: + + +```python Python [expandable] +client.agents.tools.create( + agent_id="agent_id", + **yaml.safe_load(""" + name: get_weather_info + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: "your_openweathermap_api_key" + """) + +task = client.tasks.create( + agent_id="agent_id", + **yaml.safe_load(""" + name: Get Weather Info + inherit_tools: true + main: + - tool: get_weather_info + arguments: + location: New York + """) +) +``` + +```javascript Node.js [expandable] +await client.agents.tools.create( + agent.id, + yaml.parse(` + name: get_weather_info + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: "your_openweathermap_api_key" + `) +); + +task = await client.tasks.create( + agent.id, + yaml.parse(` + name: Get Weather Info + inherit_tools: true + main: + - tool: get_weather_info + arguments: + location: New York + `) +); +``` + + +2. Define a tool in the task definition. Example: + + +```python Python +task = client.tasks.create( + agent_id="agent_id", + **yaml.safe_load(""" + name: Get Weather Info + tools: + - name: get_weather_info + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: "your_openweathermap_api_key" + main: + - tool: get_weather_info + arguments: + location: New York + """) +) +``` + +```javascript Node.js +task = await client.tasks.create( + agent.id, + yaml.parse(` + name: Get Weather Info + tools: + - name: get_weather_info + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: "your_openweathermap_api_key" + main: + - tool: get_weather_info + arguments: + location: New York + `) +); +``` + + When you define a tool in the task definition, it is available to all steps in that task only. On the other hand, when you associate a tool with an agent, it is available to all the Tasks associated with that agent. ## Best Practices @@ -406,4 +638,9 @@ When you define a tool in the task definition, it is available to all steps in t - [Workflow Steps](/advanced/types-of-task-steps) - Learn about all available step types - [Tools](/concepts/tools) - Learn about tools and how to use them in tasks -- [Sessions](/concepts/sessions) - Learn about sessions and how to use them in tasks \ No newline at end of file +- [Sessions](/concepts/sessions) - Learn about sessions and how to use them in tasks + +## See Examples + +- [Simple Task notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/02-Simple-Task.ipynb) +- [Trip Planning Assistant notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb) diff --git a/documentation/concepts/tools.mdx b/documentation/concepts/tools.mdx index 1b67762e8..90917c441 100644 --- a/documentation/concepts/tools.mdx +++ b/documentation/concepts/tools.mdx @@ -22,35 +22,6 @@ Tools in Julep consist of three main components: - **`api_calls`**: Direct API calls executed during workflow processes as tool calls. [Learn more](#api-call-tool) 3. **Arguments**: The inputs required by the tool. -#### User-defined Function Tool - -These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example: - -```yaml YAML -name: Example system tool task -description: List agents using system call - -tools: - - name: send_notification - description: Send a notification to the user - type: function - function: - parameters: - type: object - properties: - text: - type: string - description: Content of the notification - -main: - - tool: send_notification - arguments: - content: "hi" -``` - - -Whenever julep encounters a user-defined function, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep. - #### System Tool @@ -164,25 +135,51 @@ Checkout the list of integrations that Julep supports [here](/integrations/suppo #### API Call Tool -Julep can also directly make `api_call` during workflow executions as tool calls. Similar to `integration` tools, additional runtime parameters are loaded from metadata fields. For example, +Julep can also directly make `api_call` during workflow executions as tool calls. Similar to `integration` tools, additional runtime parameters are loaded from metadata fields. + +API call tools support `params_schema` to define the expected parameters for the API call, enabling better validation and documentation: ```yaml YAML name: Example api_call task tools: - type: api_call - name: hello + name: weather_api + description: Get weather information for a location api_call: method: GET # Required - HTTP method must be specified - url: https://httpbin.org/get # Required - URL must be specified - # Optional parameters can be added here (headers, follow_redirects, etc.) + url: https://api.openweathermap.org/data/2.5/weather # Required - URL must be specified + params_schema: # Define expected parameters + type: object + properties: + q: + type: string + description: City name or coordinates + units: + type: string + enum: [metric, imperial] + description: Temperature units + appid: + type: string + description: API key (loaded from metadata) + required: [q, appid] main: -- tool: hello +- tool: weather_api arguments: - json: - test: $ _.input # <-- python expression + params: + q: $ _.location # City from input + units: "metric" + appid: $ metadata.weather_api_key # API key from metadata ``` + +The `params_schema` follows JSON Schema format and helps: +- Document expected parameters for the API +- Enable LLMs to understand what parameters the tool accepts +- Provide validation for API calls +- Generate better tool descriptions for the model + +
      @@ -201,6 +198,7 @@ main:
      • method: (Required) The HTTP method to use.
      • url: (Required) The URL to call.
      • +
      • params_schema: JSON Schema definition for API parameters, enabling validation and better LLM understanding.
      • schema: The schema of the response.
      • headers: The headers to send with the request.
      • content: The content as base64 to send with the request.
      • @@ -220,6 +218,169 @@ main: - We utlize the python httpx library to make the api calls. Please refer to the [httpx documentation](https://www.python-httpx.org/api/#request-parameters) for more details on the parameters. +#### User-defined Function Tool + +These are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example: + +```yaml YAML [expandable] +name: Example system tool task +description: List agents using system call + +tools: + - name: send_notification + description: Send a notification to the user + type: function + function: + parameters: + type: object + properties: + text: + type: string + description: Content of the notification + +main: + - tool: send_notification + arguments: + content: "hi" +``` + + +Whenever julep encounters a user-defined function, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep. + + +##### How User-Defined Functions Work + +**User-defined function tools** in Julep work exactly like OpenAI's function calling: + +1. **Definition**: You define a function signature with name, description, and parameters schema +2. **Model Decision**: The LLM decides when to call your function based on the conversation context +3. **Execution Pause**: When Julep encounters a user-defined function call, it pauses execution and returns control to your client +4. **Your Implementation**: You implement the actual function logic in your client code +5. **Result Return**: You send the function results back to Julep to continue the workflow + + +Unlike `integration`, `system`, or `api_call` tools that execute automatically, function tools require manual handling by your client application. + + +##### Complete Example: Math Calculator with Function Tools + +Here's a comprehensive example showing how to implement and handle user-defined functions: + +```python [expandable] +import yaml +import time +from julep import Julep + +# Replace with your API key +API_KEY = "your-api-key" + +client = Julep(api_key=API_KEY, environment="production") + +# 1. Define your actual functions +def add_numbers(a, b): + """Add two numbers together""" + result = a + b + print(f"Adding {a} + {b} = {result}") + return result + +def multiply_numbers(x, y): + """Multiply two numbers""" + result = x * y + print(f"Multiplying {x} × {y} = {result}") + return result + +# Function dispatcher +FUNCTION_MAP = { + "add_numbers": add_numbers, + "multiply_numbers": multiply_numbers, +} + +def execute_function(function_name, arguments): + """Execute a function by name with arguments""" + if function_name not in FUNCTION_MAP: + raise ValueError(f"Unknown function: {function_name}") + + func = FUNCTION_MAP[function_name] + return func(**arguments) + +# 2. Create agent +agent = client.agents.create( + name="Math Calculator", + model="gpt-4o-mini", + instructions="You are a calculator." +) + +# 3. Define task with inline tools +task_def = yaml.safe_load(""" +name: "function-tool-demo" + +tools: + - name: add_numbers + type: function + function: + parameters: + type: object + properties: + a: + type: number + description: First number + b: + type: number + description: Second number + required: ["a", "b"] + +main: + - tool: add_numbers + arguments: + a: 15 + b: 27 +""") + +# 4. Create and execute task +task = client.tasks.create(agent_id=agent.id, **task_def) +execution = client.executions.create(task_id=task.id, input={}) + +print(f"Execution: {execution.id}") + +# 5. Monitor and handle function calls +for i in range(15): + execution = client.executions.get(execution.id) + print(f"Iteration {i+1}: Status = {execution.status}") + + if execution.status == "awaiting_input": + # Execute the function based on task definition + tool_name = task_def["main"][0]["tool"] # "add_numbers" + arguments = task_def["main"][0]["arguments"] # {"a": 15, "b": 27} + + result = execute_function(tool_name, arguments) + print(f"Result: {result}") + + # Use change_status to provide tool results + client.executions.change_status( + execution_id=execution.id, + status="running", # Resume execution + input={"result": result} + ) + print("Sent result back to Julep") + + elif execution.status == "succeeded": + print(f"Output: {execution.output}") + break + + elif execution.status == "failed": + print(f"Failed: {execution.error}") + break + + time.sleep(3) +``` + +##### Key Points + +1. **Execution Status Monitoring**: You must monitor the execution status and watch for `awaiting_input` +2. **Manual Function Execution**: When status is `awaiting_input`, execute your function locally +3. **Resume with Results**: Use `change_status` to resume execution with the function output +4. **Alternative Tool Creation**: You can also use `client.agents.tools.create()` to create tools before running the task + ## How to Use Tools @@ -345,6 +506,183 @@ When a tool is associated with a task, it is meant to be used only for that task When a tool is associated with an agent, it is meant to be used across all tasks associated with that agent. This allows for greater flexibility and reuse of tools, as the agent can leverage the same tool in multiple tasks. It also simplifies the management of tools, as they only need to be defined once for the agent and can then be utilized in various tasks. +## Automatic Tool Execution + +Julep supports automatic tool execution, allowing agents to seamlessly use tools without manual intervention. This feature is controlled by the `auto_run_tools` parameter. + +### How Automatic Tool Execution Works + +1. **In Sessions (Chat)**: + - Set `auto_run_tools=true` when calling `sessions.chat()` + - When the model decides to use a tool, Julep automatically: + - Executes the tool with the provided arguments + - Captures the tool's output + - Sends the results back to the model + - Continues the conversation with the tool results + - All happens in a single API call - no manual intervention needed + +2. **In Tasks (Prompt Steps)**: + - Set `auto_run_tools: true` in the prompt step definition + - During task execution, tools are automatically invoked when needed + - Results flow seamlessly into subsequent steps + +3. **Default Behavior** (`auto_run_tools=false`): + - Tool calls are returned in the response + - Your application must handle tool execution + - Results must be sent back in a follow-up message + +### Example: Session with Automatic Tools + + +```python Python +# Create agent with multiple tools +agent = client.agents.create( + name="Research Assistant", + tools=[ + { + "name": "web_search", + "type": "integration", + "integration": {"provider": "brave"} + }, + { + "name": "wikipedia", + "type": "integration", + "integration": {"provider": "wikipedia"} + } + ] +) + +# Chat with automatic tool execution +response = client.sessions.chat( + session_id=session.id, + messages=[ + { + "role": "user", + "content": "Tell me about the latest developments in quantum computing" + } + ], + auto_run_tools=True # Enable automatic execution +) + +# Response includes information gathered from tools +print(response.choices[0].message.content) +# "Based on recent search results, here are the latest developments..." +``` + +```javascript Node.js +// Create agent with multiple tools +const agent = await client.agents.create({ + name: "Research Assistant", + tools: [ + { + name: "web_search", + type: "integration", + integration: {provider: "brave"} + }, + { + name: "wikipedia", + type: "integration", + integration: {provider: "wikipedia"} + } + ] +}); + +// Chat with automatic tool execution +const response = await client.sessions.chat({ + session_id: session.id, + messages: [ + { + role: "user", + content: "Tell me about the latest developments in quantum computing" + } + ], + auto_run_tools: true // Enable automatic execution +}); + +// Response includes information gathered from tools +console.log(response.choices[0].message.content); +// "Based on recent search results, here are the latest developments..." +``` + + +### Example: Task with Automatic Tools + +```yaml YAML +name: Research and Summarize Task +tools: + - name: web_search + type: integration + integration: + provider: brave + + - name: save_research_summary + description: Save the research summary as a document + type: system + system: + resource: agent + subresource: doc + operation: create + +main: + # Step 1: Search with automatic tool execution + - prompt: + - role: user + content: "Search for recent news about {{topic}} and create a comprehensive summary and save it as a document for agent {{agent.id}}" + auto_run_tools: true # Tools execute automatically + + # Step 2: The results from tools are already available + - evaluate: + summary: $ _.choices[0].message.content +``` + +### When to Use Automatic Tool Execution + +**Use `auto_run_tools=true` when**: +- Building conversational agents that need real-time information +- Creating autonomous workflows in tasks +- You want a seamless, single-call interaction +- Tools are trusted and don't require manual validation + +**Use `auto_run_tools=false` when**: +- You need to validate or modify tool inputs before execution +- Tool execution requires user confirmation +- You want to handle tool errors with custom logic +- Building applications with complex tool orchestration + + +**Important**: User-defined function tools (`type: function`) are **never** executed automatically, regardless of the `auto_run_tools` setting. They always pause execution and return control to the client for manual handling. This is a key difference from `system`, `integration`, and `api_call` tools. + + +### Tool Execution Flow + + + + The LLM analyzes the user's request and decides if a tool is needed + + + The model generates appropriate tool calls with arguments + + + With auto_run_tools=true: Julep executes the tool automatically + With auto_run_tools=false: Tool calls are returned for manual handling + + + Tool results are fed back to the model or returned to the client + + + The model uses tool results to generate the final response + + + +### Managing Tool History + +When using `sessions.chat()`, the `recall_tools` parameter controls whether tool interactions are saved in the conversation history: + +- `recall_tools=true` (default): Tool calls and results are preserved +- `recall_tools=false`: Tool interactions are excluded from history + +This helps maintain clean conversation logs while still benefiting from tool capabilities. + ## Best Practices @@ -368,4 +706,9 @@ When a tool is associated with an agent, it is meant to be used across all tasks ## Next Steps - [Checkout the Integration](/integrations/supported-integrations) - Learn how to use executions in an integration -- [Checkout the Tutorial](/tutorials/trip-planning) - Learn how to use tools in a task \ No newline at end of file +- [Checkout the Tutorial](/tutorials/trip-planning) - Learn how to use tools in a task + +## See Examples + +- [Adding Tools notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/03-Adding-Tools.ipynb) +- [Browser Use notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/06-browser-use.ipynb) diff --git a/documentation/concepts/users.mdx b/documentation/concepts/users.mdx index d58694d46..394784d2f 100644 --- a/documentation/concepts/users.mdx +++ b/documentation/concepts/users.mdx @@ -23,6 +23,7 @@ When creating a user, the following attributes can be specified: | **Field** | **Type** | **Description** | **Default** | |------------|----------|--------------------------------------------------------------------|-------------| | `name` | `string` | The name of the user. | Required | +| `project` | `string` | The canonical name of the project this user belongs to. | `"default"` | | `about` | `string` | Information about the user. | `""` | | `metadata` | `object` | Additional metadata for the user, such as preferences or settings. | `null` | @@ -38,6 +39,7 @@ You can create a user using Julep's SDKs in Python or JavaScript. Below are exam user = client.users.create( name="John Doe", + project="university-assistant", about="A 21-year-old man who is a student at MIT.", metadata={ "email": "john.doe@example.com", @@ -58,6 +60,7 @@ You can create a user using Julep's SDKs in Python or JavaScript. Below are exam const user = await client.users.create({ name: "John Doe", + project: "university-assistant", about: "A 21-year-old man who is a student at MIT.", metadata: { email: "john.doe@example.com", @@ -168,6 +171,32 @@ Remove users from your system when they are no longer needed. ## Relationship to Other Concepts +### Projects + +Users belong to exactly one project, which helps organize related resources together. When creating a user, you can specify which project it belongs to using the `project` parameter. If not specified, the user will be assigned to the "default" project. + +**Example:** + + + ```python Python + # Create a user in a specific project + user = client.users.create( + name="Marketing User", + project="marketing-campaign" + ) + ``` + + ```javascript Node.js + // Create a user in a specific project + const user = await client.users.create({ + name: "Marketing User", + project: "marketing-campaign" + }); + ``` + + +For more information about projects, see [Projects](/concepts/projects). + ### Sessions Users interact with agents through **sessions**, which maintain the context and history of conversations. Each session is associated with a single user and an agent, ensuring that interactions are personalized and relevant. diff --git a/documentation/development.mdx b/documentation/development.mdx deleted file mode 100644 index 0ba0c593e..000000000 --- a/documentation/development.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: 'Development' -description: 'Learn how to preview changes locally' ---- - - - **Prerequisite**: Please install Node.js (version 19 or higher) before proceeding. - - -Step 1. Install Mintlify on your OS: - - - -```bash npm -npm i -g mintlify -``` - -```bash yarn -yarn global add mintlify -``` - - - -Step 2. Go to the docs are located (where you can find `mint.json`) and run the following command: - -```bash -mintlify dev -``` - -The documentation website is now available at `http://localhost:3000`. - -### Custom Ports - -Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333: - -```bash -mintlify dev --port 3333 -``` - -You will see an error like this if you try to run Mintlify in a port that's already taken: - -```md -Error: listen EADDRINUSE: address already in use :::3000 -``` - -## Mintlify Versions - -Each CLI is linked to a specific version of Mintlify. Please update the CLI if your local website looks different than production. - - - -```bash npm -npm i -g mintlify@latest -``` - -```bash yarn -yarn global upgrade mintlify -``` - - - -## Deployment - - - Unlimited editors available under the [Pro - Plan](https://mintlify.com/pricing) and above. - - -You should see the following if the deploy successfully went through: - - - - - -## Troubleshooting - -Here's how to solve some common problems when working with the CLI. - - - - Update to Node v18. Run `mintlify install` and try again. - - -Go to the `C:/Users/Username/.mintlify/` directory and remove the `mint` -folder. Then Open the Git Bash in this location and run `git clone -https://github.com/mintlify/mint.git`. - -Repeat step 3. - - - - Try navigating to the root of your device and delete the ~/.mintlify folder. - Then run `mintlify dev` again. - - - -Curious about what changed in a CLI version? [Check out the CLI changelog.](/changelog/command-line) diff --git a/documentation/docs.json b/documentation/docs.json index 8842520a9..8f9c0d006 100644 --- a/documentation/docs.json +++ b/documentation/docs.json @@ -9,243 +9,258 @@ }, "favicon": "/favicon.svg", "navigation": { - "versions": [ + "tabs": [ { - "version": "v1", - "tabs": [ + "tab": "Home", + "anchors": [ { - "tab": "Home", - "groups": [ + "anchor": "Get Started", + "icon": "rocket", + "pages": [ + "introduction/julep", + "introduction/install", + "introduction/quickstart", + "introduction/developer-orientation", + "FAQ" + ] + }, + { + "anchor": "Julep CLI", + "icon": "terminal", + "pages": [ + "julepcli/introduction", + "julepcli/commands" + ] + }, + { + "anchor": "Core Concepts", + "icon": "cubes", + "pages": [ + "concepts/projects", + "concepts/agents", + "concepts/tasks", + "concepts/sessions", + "concepts/tools", + "concepts/users", + "concepts/docs", + "concepts/files", + "concepts/execution", + "concepts/secrets" + ] + }, + { + "anchor": "Tutorials", + "icon": "graduation-cap", + "pages": [ + "tutorials/trip-planning", + "tutorials/trip-planning-input", + "tutorials/trip-planning-tools", + "tutorials/trip-planning-workflow", + "tutorials/trip-planning-running", + "tutorials/browser-use", + "tutorials/rag-chatbot", + "tutorials/video-processing", + "tutorials/julep-assistant", + "tutorials/hacker-news-newsletter" + ] + }, + { + "anchor": "Integrations", + "icon": "plug", + "pages": [ + "integrations/supported-integrations", + "integrations/supported-models", { - "group": "Get Started", + "group": "Communication & Data", "pages": [ - "introduction/julep", - "introduction/install", - "introduction/quickstart" + "integrations/communicationdata/email", + "integrations/communicationdata/google-sheets", + "integrations/communicationdata/weather" ] }, { - "group": "Julep CLI", + "group": "Media & File Processing", "pages": [ - "julepcli/introduction", - "julepcli/commands" + "integrations/mediafile/llamaparse", + "integrations/mediafile/ffmpeg", + "integrations/mediafile/cloudinary", + "integrations/mediafile/unstructured" ] }, { - "group": "Core Concepts", + "group": "Search", "pages": [ - "concepts/agents", - "concepts/tasks", - "concepts/sessions", - "concepts/tools", - "concepts/users", - "concepts/docs", - "concepts/execution" + "integrations/search/arxiv", + "integrations/search/algolia", + "integrations/search/brave", + "integrations/search/wikipedia" ] }, { - "group": "Tutorials", + "group": "Web & Browser Automation", "pages": [ - "tutorials/browser-use", - "tutorials/rag-chatbot", - "tutorials/trip-planning", - "tutorials/video-processing" + "integrations/webbrowser/browserbase", + "integrations/webbrowser/spider", + "integrations/webbrowser/remote-browser" ] }, { - "group": "Integrations", + "group": "Extensibility", "pages": [ - "integrations/supported-models", - "integrations/supported-integrations", - "integrations/contributing-integrations", - { - "group": "Communication & Data", - "pages": [ - "integrations/communicationdata/email", - "integrations/communicationdata/weather" - ] - }, - { - "group": "Media & File Processing", - "pages": [ - "integrations/mediafile/llamaparse", - "integrations/mediafile/ffmpeg", - "integrations/mediafile/cloudinary", - "integrations/mediafile/unstructured" - ] - }, - { - "group": "Search", - "pages": [ - "integrations/search/arxiv", - "integrations/search/algolia", - "integrations/search/brave", - "integrations/search/wikipedia" - ] - }, - { - "group": "Web & Browser Automation", - "pages": [ - "integrations/webbrowser/browserbase", - "integrations/webbrowser/spider", - "integrations/webbrowser/remote-browser" - ] - } + "integrations/extensibility/mcp" ] }, - { - "group": "Advanced Topics", - "pages": [ - "advanced/new-syntax", - "advanced/python-expression", - "advanced/types-of-task-steps", - "advanced/chat", - "advanced/render", - "advanced/files", - "advanced/architecture-deep-dive", - "advanced/agentic-patterns", - "advanced/lifecycle", - "advanced/multi-agent-multi-user-sessions", - "advanced/localsetup" - ] - } + "integrations/contributing-integrations" ] }, { - "tab": "Guides", - "groups": [ + "anchor": "Advanced Topics", + "icon": "flask", + "pages": [ + "advanced/new-syntax", + "advanced/python-expression", + "advanced/types-of-task-steps", + "advanced/chat", + "advanced/render", + "advanced/system-templates", + "advanced/files", + "advanced/secrets-management", + "advanced/architecture-deep-dive", + "advanced/agentic-patterns", + "advanced/lifecycle", + "advanced/multi-agent-multi-user-sessions", + "advanced/localsetup" + ] + }, + { + "anchor":"Open Responses API (Alpha)", + "icon": "message-dots", + "pages": [ + "responses/quickstart", + "responses/concepts", + "responses/examples", + "responses/cli", + "responses/roadmap" + ] + } + ] + }, + { + "tab": "Guides", + "groups": [ + { + "group": "Guides", + "pages": [ + "guides/getting-started/chat-with-an-agent", + "guides/getting-started/create-and-execute-julep-task", + "guides/using-secrets", + "guides/adding-tool-integration", + "guides/modifying-agent-workflow", { - "group": "Guides", + "group": "Getting Started Examples", "pages": [ - "guides/getting-started/chat-with-an-agent", - "guides/getting-started/create-and-execute-julep-task", - { - "group": "Getting Started Examples", - "pages": [ - "guides/getting-started/tool-integration-demo" - ] - }, - { - "group": "Use Case Examples", - "pages": [ - "guides/use-cases/customer-service", - "guides/use-cases/research-assistant", - "guides/use-cases/document-processing", - "guides/use-cases/data-analysis" - ] - }, - { - "group": "Advanced Examples", - "pages": [ - "guides/advanced/multi-agent-systems", - "guides/advanced/complex-workflows", - "guides/advanced/integration-patterns" - ] - }, - { - "group": "Cookbooks", - "pages": [ - "guides/cookbooks/quick-solutions", - "guides/cookbooks/industry-solutions", - "guides/cookbooks/community-examples" - ] - } + "guides/getting-started/tool-integration-demo" + ] + }, + { + "group": "Use Case Examples", + "pages": [ + "guides/use-cases/customer-service", + "guides/use-cases/research-assistant", + "guides/use-cases/document-processing", + "guides/use-cases/data-analysis" + ] + }, + { + "group": "Advanced Examples", + "pages": [ + "guides/advanced/multi-agent-systems", + "guides/advanced/complex-workflows", + "guides/advanced/integration-patterns" + ] + }, + { + "group": "Cookbooks", + "pages": [ + "guides/cookbooks/quick-solutions", + "guides/cookbooks/industry-solutions", + "guides/cookbooks/community-examples" ] } ] - }, + } + ] + }, + { + "tab": "SDK", + "groups": [ { - "tab": "SDK", - "groups": [ + "group": "SDKs", + "pages": [ + "sdks/index", { - "group": "SDKs", + "group": "Python SDK", "pages": [ - "sdks/index", + "sdks/python/installation", { - "group": "Python SDK", + "group": "Core Components", "pages": [ - "sdks/python/installation", - { - "group": "Core Components", - "pages": [ - "sdks/python/agents", - "sdks/python/tasks", - "sdks/python/sessions" - ] - }, - "sdks/python/tools-integration", - "sdks/python/advanced-usage", - "sdks/python/reference" + "sdks/python/agents", + "sdks/python/tasks", + "sdks/python/sessions", + "sdks/python/secrets" ] }, + "sdks/python/tools-integration", + "sdks/python/advanced-usage", + "sdks/python/reference" + ] + }, + { + "group": "Node.js SDK", + "pages": [ + "sdks/nodejs/installation", { - "group": "Node.js SDK", + "group": "Core Components", "pages": [ - "sdks/nodejs/installation", - { - "group": "Core Components", - "pages": [ - "sdks/nodejs/agents", - "sdks/nodejs/tasks", - "sdks/nodejs/sessions" - ] - }, - "sdks/nodejs/tools-integration", - "sdks/nodejs/advanced-usage", - "sdks/nodejs/reference" + "sdks/nodejs/agents", + "sdks/nodejs/tasks", + "sdks/nodejs/sessions", + "sdks/nodejs/secrets" ] }, - { - "group": "Common Patterns", - "pages": [ - "sdks/common/error-handling", - "sdks/common/authentication", - "sdks/common/testing" - ] - } + "sdks/nodejs/tools-integration", + "sdks/nodejs/advanced-usage", + "sdks/nodejs/reference" ] - } - ] - }, - { - "tab": "🚨 Open Responses API (Alpha)", - "groups": [ + }, { - "group": "Responses API (Alpha)", + "group": "Common Patterns", "pages": [ - "responses/quickstart", - "responses/concepts", - "responses/examples", - "responses/cli", - "responses/roadmap" + "sdks/common/error-handling", + "sdks/common/authentication", + "sdks/common/testing", + "sdks/common/secrets" ] } ] - }, - { - "tab": "API Reference", - "openapi": { - "source": "https://api.julep.ai/api/openapi.json", - "directory": "api-reference" - } } ] - } - ], - "global": { - "anchors": [ - { - "anchor": "Community", - "href": "https://discord.gg/p4c7ehs4vD", - "icon": "discord" - }, - { - "anchor": "Changelog", - "href": "https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md", - "icon": "clipboard" + }, + { + "tab": "Supported Integrations", + "pages": [ + "integrations/supported-integrations" + ] + }, + { + "tab": "API Reference", + "openapi": { + "source": "https://api.julep.ai/api/openapi.json", + "directory": "api-reference" } - ] - } + } + ] }, "styling": { "codeblocks": "dark" @@ -289,6 +304,14 @@ }, "navbar": { "links": [ + { + "label": "Community", + "href": "https://discord.gg/p4c7ehs4vD" + }, + { + "label": "Changelog", + "href": "https://updates.julep.ai" + }, { "label": "Support", "href": "mailto:developers@julep.ai" @@ -335,5 +358,6 @@ "family": "Figtree", "weight": 500 } - } + }, + "js": ["scripts/julep-chat-widget.js"] } \ No newline at end of file diff --git a/documentation/guides/adding-tool-integration.mdx b/documentation/guides/adding-tool-integration.mdx new file mode 100644 index 000000000..d1124bec0 --- /dev/null +++ b/documentation/guides/adding-tool-integration.mdx @@ -0,0 +1,20 @@ +--- +title: 'Adding a Tool Integration' +description: 'Extend Julep with your own tool or API' +--- + +# Adding a Tool Integration + +This guide explains how to connect a new external tool or API to Julep. You will create a small service that wraps the tool and exposes actions that agents can call. + +## 1. Create an Integration Service + +Use the Julep SDK to define your integration service. Each action should accept structured inputs and return structured outputs. + +## 2. Register the Service + +Deploy the service and register its OpenAPI specification with your Julep project. The new actions become available to your agents. + +## 3. Invoke From a Task + +Call the actions from your task steps. The agent can now leverage your custom tool as part of its workflow. diff --git a/documentation/guides/advanced/integration-patterns.mdx b/documentation/guides/advanced/integration-patterns.mdx index 5ad801526..e5cc2e7af 100644 --- a/documentation/guides/advanced/integration-patterns.mdx +++ b/documentation/guides/advanced/integration-patterns.mdx @@ -1,11 +1,257 @@ --- title: 'Integration Patterns' description: 'Common patterns for integrating with external services' -groups: ['admin'] --- # Integration Patterns -Learn about common patterns for external service integration. +When integrating external services with Julep, following consistent patterns helps ensure security, reliability, and maintainability. This guide covers common integration patterns with a focus on using secrets effectively. -[Placeholder content] \ No newline at end of file +## Authentication Patterns + +### API Key Authentication with Secrets + +For services that use API keys for authentication, store them as secrets: + +```yaml +steps: + - kind: tool_call + tool: external_api + operation: fetch_data + arguments: + url: "https://api.example.com/data" + headers: + Authorization: "$ f'Bearer {secrets.api_key}'" + X-API-Key: "$ secrets.api_key" +``` + +### OAuth Authentication with Secrets + +For OAuth flows, keep client credentials in secrets: + +```yaml +steps: + - kind: tool_call + tool: oauth_service + operation: get_token + arguments: + client_id: "$ secrets.oauth_client_id" + client_secret: "$ secrets.oauth_client_secret" + scope: "read write" + output: token + + - kind: tool_call + tool: api_service + operation: call_api + arguments: + url: "https://api.example.com/data" + headers: + Authorization: "Bearer {{ token }}" +``` + +### Basic Authentication with Secrets + +For services using basic authentication: + +```yaml +steps: + - kind: tool_call + tool: api_service + operation: call_api + arguments: + url: "https://api.example.com/data" + auth: + username: "$ secrets.api_username" + password: "$ secrets.api_password" +``` + +## Integration Configuration Patterns + +### Database Connection with Secrets + +When connecting to databases, use secrets for connection parameters: + +```yaml +steps: + - kind: tool_call + tool: database + operation: query + arguments: + query: "SELECT * FROM users LIMIT 10" + connection: + host: "$ secrets.db_host" + port: "$ secrets.db_port" + user: "$ secrets.db_username" + password: "$ secrets.db_password" + database: "$ secrets.db_name" +``` + +### Service Configuration with Secrets + +For configuring service endpoints and parameters: + +```yaml +steps: + - kind: tool_call + tool: email + operation: send + arguments: + to: "recipient@example.com" + subject: "Important update" + body: "This is an important message." + smtp: + host: "$ secrets.smtp_host" + port: "$ secrets.smtp_port" + username: "$ secrets.smtp_username" + password: "$ secrets.smtp_password" + tls: true +``` + +## Advanced Integration Patterns + +### Hybrid Secret and Expression Pattern + +Combine secrets with expressions for dynamic configurations: + +```yaml +steps: + - kind: transform + expression: "$ f'https://{secrets.api_domain}/v1/{input.resource}?api_key={secrets.api_key}'" + input: + resource: "users" + output: api_url + + - kind: tool_call + tool: http + operation: get + arguments: + url: "{{ api_url }}" +``` + +### Multi-tenant Service Integration + +For handling multiple tenant configurations with secrets: + +```yaml +steps: + - kind: transform + expression: "$ f'tenant_{input.tenant_id}'" + input: + tenant_id: "123" + output: tenant_key + + - kind: transform + expression: "$ f'{secrets[tenant_key + \"_api_key\"]}'" + output: api_key + + - kind: tool_call + tool: external_api + operation: fetch_data + arguments: + url: "https://api.example.com/data" + headers: + Authorization: "Bearer {{ api_key }}" +``` + +### Service Discovery Pattern + +For dynamically selecting services based on configuration: + +```yaml [expandable] +steps: + - kind: transform + expression: "$ secrets.preferred_service" + output: service_name + + - kind: if_else + if: "$ service_name == 'service_a'" + then: + - kind: tool_call + tool: service_a + operation: process + arguments: + input: "{{ input }}" + api_key: "$ secrets.service_a_api_key" + else: + - kind: tool_call + tool: service_b + operation: process + arguments: + data: "{{ input }}" + auth_token: "$ secrets.service_b_auth_token" +``` + +## Best Practices + +### Secret Naming Conventions + +- Use descriptive names: `stripe_api_key` instead of just `api_key` +- Use service prefixes: `aws_access_key`, `aws_secret_key` +- For multiple environments: `dev_api_key`, `prod_api_key` + +### Secret Rotation + +Implement regular secret rotation without service disruption: + +```python [expandable] +# Python example of rotating a secret +from julep import Julep +import uuid + +client = Julep(api_key="your_api_key") + +# Generate temporary name +temp_name = f"stripe_key_rotation_{uuid.uuid4().hex[:8]}" + +# Create new secret with temp name +client.secrets.create( + name=temp_name, + value="sk_new_value...", + description="New Stripe API key (rotation)" +) + +# Test the new key works +# ... + +# If valid, delete old secret and rename new one +client.secrets.delete(name="stripe_api_key") +client.secrets.update( + name=temp_name, + new_name="stripe_api_key", + description="Stripe API key" +) +``` + +### Error Handling + +For graceful handling of authentication and configuration errors: + +```yaml [expandable] +steps: + - kind: try_catch + try: + - kind: tool_call + tool: external_api + operation: fetch_data + arguments: + url: "https://api.example.com/data" + headers: + Authorization: "Bearer $ secrets.api_key" + catch: + - kind: if_else + if: "$ error.type == 'AuthenticationError'" + then: + - kind: prompt + model: gpt-4 + prompt: "API key authentication failed. Please suggest troubleshooting steps." + else: + - kind: prompt + model: gpt-4 + prompt: "An error occurred: {{ error.message }}" +``` + +## Next Steps + +- [Secrets Management](/advanced/secrets-management) - Learn about advanced secrets management +- [Complex Workflows](/guides/advanced/complex-workflows) - Build complex workflows with integrations +- [Multi-Agent Systems](/guides/advanced/multi-agent-systems) - Coordinate multiple agents with integrations \ No newline at end of file diff --git a/documentation/guides/cookbooks/community-examples.mdx b/documentation/guides/cookbooks/community-examples.mdx index 8ebfd7a92..2a4dd0f19 100644 --- a/documentation/guides/cookbooks/community-examples.mdx +++ b/documentation/guides/cookbooks/community-examples.mdx @@ -8,4 +8,11 @@ groups: ['admin'] Showcase of examples from the Julep community. -[Placeholder content] \ No newline at end of file +- [Hook Generator](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-hook-generator-trending-reels.ipynb) + Generate hook lines for trending reels. +- [Reel Generator](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/10-reel-generator.ipynb) + Create short-form video scripts. +- [Companion Agent](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/09-companion-agent.ipynb) + Story-driven companion agent. +- [Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb) + Process videos with natural language. diff --git a/documentation/guides/cookbooks/industry-solutions.mdx b/documentation/guides/cookbooks/industry-solutions.mdx index ab74f0283..14ad50381 100644 --- a/documentation/guides/cookbooks/industry-solutions.mdx +++ b/documentation/guides/cookbooks/industry-solutions.mdx @@ -8,4 +8,11 @@ groups: ['admin'] Examples of Julep implementations across different industries. -[Placeholder content] \ No newline at end of file +- [Website Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-website-crawler.ipynb) + Spider-based website crawler. +- [Trip Planning Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/03-trip-planning-assistant.ipynb) + Trip planning with weather data. +- [Research Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/07-personalized-research-assistant.ipynb) + Tailored research assistant. +- [Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb) + Process videos with natural language. diff --git a/documentation/guides/cookbooks/quick-solutions.mdx b/documentation/guides/cookbooks/quick-solutions.mdx index 4a3309d9e..f69d7af25 100644 --- a/documentation/guides/cookbooks/quick-solutions.mdx +++ b/documentation/guides/cookbooks/quick-solutions.mdx @@ -8,4 +8,11 @@ groups: ['admin'] Collection of ready-to-use solutions for common scenarios. -[Placeholder content] \ No newline at end of file +- [Devfest Email Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) + Event email management. +- [Sarcastic Headlines](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb) + Generate witty news headlines. +- [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/06-browser-use.ipynb) + Automate web browsing tasks. +- [RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/08-rag-chatbot.ipynb) + RAG chatbot demonstration. diff --git a/documentation/guides/getting-started/chat-with-an-agent.mdx b/documentation/guides/getting-started/chat-with-an-agent.mdx index dba17c7aa..f9ac817ad 100644 --- a/documentation/guides/getting-started/chat-with-an-agent.mdx +++ b/documentation/guides/getting-started/chat-with-an-agent.mdx @@ -127,7 +127,7 @@ const response = await julep.sessions.chat( ## Full Example -```python Python +```python Python [expandable] from julep import Julep # Initialize the Julep client @@ -164,7 +164,7 @@ response = julep.sessions.chat( ) ``` -```javascript Node.js +```javascript Node.js [expandable] const julep = require('@julep/sdk'); // Initialize the Julep client diff --git a/documentation/guides/getting-started/create-and-execute-julep-task.mdx b/documentation/guides/getting-started/create-and-execute-julep-task.mdx index b068bde70..5e175a786 100644 --- a/documentation/guides/getting-started/create-and-execute-julep-task.mdx +++ b/documentation/guides/getting-started/create-and-execute-julep-task.mdx @@ -58,17 +58,14 @@ const agent = await julep.agents.create({ In this step, you will define the task that the Julep agent will execute. This involves specifying the task's name, description, input schema, tools, and the main workflow. The task definition is written in YAML format and includes details about the integrations and the logic for processing the input data. -```python Python +```python Python [expandable] import yaml task_def = yaml.safe_load(""" -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Trip Planning Task description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. -######################################################## -################### INPUT SCHEMA ####################### -######################################################## input_schema: type: object @@ -79,9 +76,6 @@ input_schema: type: string description: The locations to search for. -######################################################## -################### TOOLS ############################## -######################################################## tools: - name: wikipedia @@ -101,11 +95,8 @@ tools: integration: provider: brave setup: - api_key: "YOUR_BRAVE_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" -######################################################## -################### MAIN WORKFLOW ###################### -######################################################## main: - over: $ steps[0].input.locations @@ -167,17 +158,14 @@ task = julep.tasks.create( ) ``` -```javascript Node.js +```javascript Node.js [expandable] const yaml = require("yaml"); const task_def = yaml.safeLoad(""" -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Trip Planning Task description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. -######################################################## -################### INPUT SCHEMA ####################### -######################################################## input_schema: type: object @@ -188,9 +176,6 @@ input_schema: type: string description: The locations to search for. -######################################################## -################### TOOLS ############################## -######################################################## tools: - name: wikipedia @@ -210,11 +195,8 @@ tools: integration: provider: brave setup: - api_key: "YOUR_BRAVE_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" -######################################################## -################### MAIN WORKFLOW ###################### -######################################################## main: - over: $ steps[0].input.locations @@ -389,7 +371,7 @@ while (transitions[0].items.type !== "finish" && transitions[0].items.type !== " -```python Python +```python Python [expandable] from julep import Julep import yaml import time @@ -404,13 +386,10 @@ agent = julep.agents.create( ) task_def = yaml.safe_load(""" -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Trip Planning Task description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. -######################################################## -################### INPUT SCHEMA ####################### -######################################################## input_schema: type: object @@ -421,9 +400,6 @@ input_schema: type: string description: The locations to search for. -######################################################## -################### TOOLS ############################## -######################################################## tools: - name: wikipedia @@ -443,11 +419,8 @@ tools: integration: provider: brave setup: - api_key: "YOUR_BRAVE_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" -######################################################## -################### MAIN WORKFLOW ###################### -######################################################## main: - over: $ steps[0].input.locations @@ -527,7 +500,7 @@ while execution.status not in ["succeeded", "failed", "cancelled"]: time.sleep(5) ``` -```javascript Node.js +```javascript Node.js [expandable] const julep = require('@julep/sdk'); // Initialize the Julep client @@ -542,13 +515,10 @@ const agent = await julep.agents.create({ const yaml = require("yaml"); const task_def = yaml.safeLoad(""" -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Trip Planning Task description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. -######################################################## -################### INPUT SCHEMA ####################### -######################################################## input_schema: type: object @@ -559,9 +529,6 @@ input_schema: type: string description: The locations to search for. -######################################################## -################### TOOLS ############################## -######################################################## tools: - name: wikipedia @@ -581,11 +548,8 @@ tools: integration: provider: brave setup: - api_key: "YOUR_BRAVE_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" -######################################################## -################### MAIN WORKFLOW ###################### -######################################################## main: - over: $ steps[0].input.locations diff --git a/documentation/guides/modifying-agent-workflow.mdx b/documentation/guides/modifying-agent-workflow.mdx new file mode 100644 index 000000000..13e9664d2 --- /dev/null +++ b/documentation/guides/modifying-agent-workflow.mdx @@ -0,0 +1,20 @@ +--- +title: 'Modifying Agent Workflow' +description: 'Customize how your agents process tasks' +--- + +# Modifying Agent Workflow + +Julep tasks are flexible workflows that control how an agent operates. This guide shows how to adjust the default behavior. + +## 1. Edit the Task YAML + +Add, remove, or reorder steps in your task definition. You can insert tool calls, conditional logic, or loops to suit your needs. + +## 2. Update Agent Configuration + +Point your agent to the new task file or update its task list via the SDK. Your changes apply immediately to new sessions. + +## 3. Test Iteratively + +Run the task locally or through the API to verify each modification. Adjust prompts and steps until the workflow produces the desired output. diff --git a/documentation/guides/using-secrets.mdx b/documentation/guides/using-secrets.mdx new file mode 100644 index 000000000..86920279a --- /dev/null +++ b/documentation/guides/using-secrets.mdx @@ -0,0 +1,283 @@ +--- +title: 'Using Secrets in Julep' +description: 'A practical guide to managing and using secrets in your Julep applications' +--- + +# Using Secrets in Julep + +This guide will walk you through the process of creating, managing, and using secrets in your Julep applications. Secrets provide a secure way to store and use sensitive information like API keys, credentials, and tokens without exposing them in your code or configuration files. + +## Creating Secrets + +You can create secrets using the Julep CLI, SDKs, or directly through the API. + +### Using the CLI + +```bash +# Create a new secret +julep secrets create --name "openai_api_key" --value "sk-..." --description "OpenAI API key for production" + +# List all secrets +julep secrets list + +# Get a specific secret +julep secrets get openai_api_key +``` + +### Using the Python SDK + +```python +from julep import Julep + +client = Julep(api_key="your_api_key") + +# Create a secret +client.secrets.create( + name="openai_api_key", + value="sk-...", + description="OpenAI API key for production" +) + +# List all secrets +secrets = client.secrets.list() +for secret in secrets.items: + print(f"{secret.name}: {secret.description}") +``` + +### Using the Node.js SDK + +```javascript +import { Julep } from '@julep/sdk'; + +const julep = new Julep({ apiKey: 'your_api_key' }); + +// Create a secret +await julep.secrets.create({ + name: 'openai_api_key', + value: 'sk-...', + description: 'OpenAI API key for production' +}); + +// List all secrets +const secrets = await julep.secrets.list(); +secrets.items.forEach(secret => { + console.log(`${secret.name}: ${secret.description}`); +}); +``` + +### Using the REST API + +You can also create secrets directly using the REST API: + +```bash +curl -X POST "https://api.julep.ai/v1/secrets/{developer_id}" \ + -H "Authorization: Bearer {api_key}" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "openai_api_key", + "value": "sk-...", + "description": "OpenAI API key for production" + }' +``` + +## Using Secrets in Tasks + +Once you've created secrets, you can reference them in your tasks using the `secret_name` field or the `secrets` object. + +### Direct Secret Reference + +For tools that require a single API key or token: + +```yaml +steps: + - kind: tool_call + tool: openai + operation: chat + arguments: + model: "gpt-4" + messages: + - role: "user" + content: "What's the weather like in San Francisco?" + secret_name: openai_api_key +``` + +### Multiple Secrets + +For tools that require multiple secrets: + +```yaml +steps: + - kind: tool_call + tool: email + operation: send + arguments: + to: "recipient@example.com" + subject: "Hello from Julep" + body: "This is a test email sent from Julep." + secrets: + service_api_key: "email_service_api_key" + sender_address: "email_sender_address" +``` + +### Using Secrets in Expressions + +You can reference secrets in expressions using the `secrets` object: + +```yaml +steps: + - kind: transform + expression: "$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'" + input: "search query" + output: api_url +``` + +For template variables in prompts: + +```yaml +steps: + - kind: prompt + model: gpt-4 + prompt: "Access the database at {{ db_url }} with credentials {{ credentials }}" + template_variables: + db_url: "$ secrets.db_host" + credentials: "$ f'User: {secrets.db_username}, Password: {secrets.db_password}'" +``` + +## Managing Secrets + +### Updating Secrets + +To update an existing secret: + +```bash +# CLI +julep secrets update openai_api_key --value "new-sk-..." + +# Python SDK +client.secrets.update( + name="openai_api_key", + value="new-sk-..." +) + +# Node.js SDK +await julep.secrets.update({ + name: 'openai_api_key', + value: 'new-sk-...' +}); +``` + +### Adding Metadata + +You can add metadata to organize and categorize your secrets: + +```python +client.secrets.create( + name="stripe_api_key", + value="sk_test_...", + description="Stripe API key for payment processing", + metadata={ + "environment": "production", + "owner": "payments-team", + "rotation_date": "2025-05-10" + } +) +``` + +This metadata can be used for filtering when listing secrets: + +```python +production_secrets = client.secrets.list( + metadata={"environment": "production"} +) +``` + +### Deleting Secrets + +When a secret is no longer needed: + +```bash +# CLI +julep secrets delete openai_api_key + +# Python SDK +client.secrets.delete(name="openai_api_key") + +# Node.js SDK +await julep.secrets.delete({ name: 'openai_api_key' }); +``` + +## Common Use Cases + +### Securing LLM API Keys + +Julep can automatically use developer secrets for LLM API keys based on the provider: + +```python +# Store the API key as a secret +client.secrets.create( + name="OPENAI_API_KEY", + value="sk-..." +) + +# The key will be automatically used for OpenAI requests +task = client.tasks.create({ + "steps": [ + { + "kind": "prompt", + "model": "gpt-4", + "prompt": "Generate a story about space exploration." + } + ] +}) +``` + +### External API Integration + +For tools that call external APIs: + +```yaml +steps: + - kind: tool_call + tool: api + operation: request + arguments: + method: "GET" + url: "https://api.example.com/data" + headers: + Authorization: "$ f'Bearer {secrets.api_token}'" + X-API-Key: "$ secrets.api_key" +``` + +### Database Connections + +For database operations: + +```yaml +steps: + - kind: tool_call + tool: postgres + operation: query + arguments: + query: "SELECT * FROM users LIMIT 10" + connection: + host: "$ secrets.pg_host" + user: "$ secrets.pg_user" + password: "$ secrets.pg_password" + database: "$ secrets.pg_database" +``` + +## Best Practices + +1. **Never commit secrets** to version control +2. Use descriptive names for your secrets +3. Add metadata to organize your secrets +4. Rotate secrets regularly +5. Use the minimum necessary permissions +6. Delete unused secrets promptly +7. Use secret references instead of hardcoding values + +## Next Steps + +- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets +- [Integration Patterns](/guides/advanced/integration-patterns) - Learn how to use secrets with integrations +- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets \ No newline at end of file diff --git a/documentation/images/architecture-diagram.svg b/documentation/images/architecture-diagram.svg new file mode 100644 index 000000000..2b95615d5 --- /dev/null +++ b/documentation/images/architecture-diagram.svg @@ -0,0 +1,23 @@ + + + Client App + + + Julep Cloud + + Agents + + Workflows + + + External Tools + + + + + + + + + + diff --git a/documentation/images/julep-architecture.svg b/documentation/images/julep-architecture.svg new file mode 100644 index 000000000..a3d5fe93a --- /dev/null +++ b/documentation/images/julep-architecture.svg @@ -0,0 +1 @@ +DEVELOPER LAYER
        Developer Tools
        Python SDK | Node.js SDK | CLI | REST API
        Developer Tools...
        Your App
        Chatbots | AI Agents | Workflows | RAG Apps
        Your App...
        Uses
        Uses
        CORE CONCEPTS
        🤖 Agent
        AI with instructions
        and tools
        🤖 Agent...
        💬 Session
        Conversation
        context
        💬 Session...
        🔧 Tool
        Capabilities &
        integrations
        🔧 Tool...
        Execution
        Running task
        instance
        ⚡ Execution...
        📄 Document
        Knowledge
        base
        📄 Document...
        📋 Task
        Multi-step
        workflows
        📋 Task...
        BACKEND SERVICES
        API Gateway
        Traefik + Auth
        API Gateway...
        Agents API
        FastAPI
        Agents API...
        Temporal
        Workflow Engine
        Temporal...
        Workers
        Task Execution
        Workers...
        LLM Proxy
        AI Router
        LLM Proxy...
        PostgreSQL
        + Vectors
        PostgreSQL...
        Redis
        Cache
        Redis...
        Blob
        Storage
        Blob...
        AI Models
        GPT-4, Claude,
        Gemini
        AI Models...
        External Tools
        Search, Email,
        Browser
        External Tools...
        1. SDK calls
        1. SDK calls
        2. Define workflows
        2. Define workflows
        3. Start conversations
        3. Start conversations
        Stored in
        Stored in
        Executed by
        Executed by
        Managed by
        Managed by
        Processed by
        Processed by
        Tracked by
        Tracked by
        Indexed in
        Indexed in
        HTTP/gRPC
        HTTP/gRPC
        Business Logic
        Business Logic
        Integrations
        Integrations
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/documentation/images/julep_overview.svg b/documentation/images/julep_overview.svg new file mode 100644 index 000000000..6af23aa65 --- /dev/null +++ b/documentation/images/julep_overview.svg @@ -0,0 +1 @@ +
        Julep Simple Overview
        Julep Simple Overview
        LLM
        Language Model
        LLM...
        AGENT
        Central Orchestrator
        Prompt Management
        AGENT...
        USERS
        User Profiles
        Individual Info
        USERS...
        SESSIONS
        Chat Instances
        Multiple Active
        SESSIONS...
        DOCUMENTS
        Information Storage
        Retrieval System
        DOCUMENTS...
        TASKS
        GitHub Actions-style
        Multi-step Workflows
        Recipe Instructions
        TASKS...
        TOOLS
        Programmatic Interfaces
        TOOLS...
        Web Search
        Web Search
        API Call
        API Call
        File Read
        File Read
        calls
        calls
        interacts with
        interacts with
        Joins
        Joins
        Owns
        Owns
        Uses
        Uses
        Executes
        Executes
        Uses
        Uses
        Text is not SVG - cannot display
        \ No newline at end of file diff --git a/documentation/integrations/assets/Algolia_logo_full_blue.svg b/documentation/integrations/assets/Algolia_logo_full_blue.svg new file mode 100644 index 000000000..d126ad3fd --- /dev/null +++ b/documentation/integrations/assets/Algolia_logo_full_blue.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/documentation/integrations/assets/ArXiv_logo_2022.svg.png b/documentation/integrations/assets/ArXiv_logo_2022.svg.png new file mode 100644 index 000000000..5c5c7d5b0 Binary files /dev/null and b/documentation/integrations/assets/ArXiv_logo_2022.svg.png differ diff --git a/documentation/integrations/assets/Brave_logo.svg.png b/documentation/integrations/assets/Brave_logo.svg.png new file mode 100644 index 000000000..ab0b253ef Binary files /dev/null and b/documentation/integrations/assets/Brave_logo.svg.png differ diff --git a/documentation/integrations/assets/Cloudinary_logo.svg.png b/documentation/integrations/assets/Cloudinary_logo.svg.png new file mode 100644 index 000000000..c68482aee Binary files /dev/null and b/documentation/integrations/assets/Cloudinary_logo.svg.png differ diff --git a/documentation/integrations/assets/FFmpeg-Logo.svg b/documentation/integrations/assets/FFmpeg-Logo.svg new file mode 100644 index 000000000..a668e945d --- /dev/null +++ b/documentation/integrations/assets/FFmpeg-Logo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documentation/integrations/assets/OWM.png b/documentation/integrations/assets/OWM.png new file mode 100644 index 000000000..3a127b28b Binary files /dev/null and b/documentation/integrations/assets/OWM.png differ diff --git a/documentation/integrations/assets/Playwright_Logo.svg.png b/documentation/integrations/assets/Playwright_Logo.svg.png new file mode 100644 index 000000000..0b663da78 Binary files /dev/null and b/documentation/integrations/assets/Playwright_Logo.svg.png differ diff --git a/documentation/integrations/assets/email.png b/documentation/integrations/assets/email.png new file mode 100644 index 000000000..318ea26f5 Binary files /dev/null and b/documentation/integrations/assets/email.png differ diff --git a/documentation/integrations/assets/llamacloud-black.svg b/documentation/integrations/assets/llamacloud-black.svg new file mode 100644 index 000000000..145fcb764 --- /dev/null +++ b/documentation/integrations/assets/llamacloud-black.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/documentation/integrations/assets/logo-full.svg b/documentation/integrations/assets/logo-full.svg new file mode 100644 index 000000000..d21f4187f --- /dev/null +++ b/documentation/integrations/assets/logo-full.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/integrations/assets/pngimg.com - wikipedia_PNG30.png b/documentation/integrations/assets/pngimg.com - wikipedia_PNG30.png new file mode 100644 index 000000000..90535d664 Binary files /dev/null and b/documentation/integrations/assets/pngimg.com - wikipedia_PNG30.png differ diff --git a/documentation/integrations/assets/spider-logo-github-dark.png b/documentation/integrations/assets/spider-logo-github-dark.png new file mode 100644 index 000000000..b26b550d2 Binary files /dev/null and b/documentation/integrations/assets/spider-logo-github-dark.png differ diff --git a/documentation/integrations/assets/unstructured-color.png b/documentation/integrations/assets/unstructured-color.png new file mode 100644 index 000000000..5dd3b7982 Binary files /dev/null and b/documentation/integrations/assets/unstructured-color.png differ diff --git a/documentation/integrations/communicationdata/email.mdx b/documentation/integrations/communicationdata/email.mdx index 354aa215e..004ea6e56 100644 --- a/documentation/integrations/communicationdata/email.mdx +++ b/documentation/integrations/communicationdata/email.mdx @@ -25,7 +25,7 @@ To get started with the Email integration, follow these steps to configure and c Use the following YAML configuration to define your email sending task: -```yaml Email Example +```yaml Email Example [expandable] name: Email Task tools: diff --git a/documentation/integrations/communicationdata/google-sheets.mdx b/documentation/integrations/communicationdata/google-sheets.mdx new file mode 100644 index 000000000..3227c195d --- /dev/null +++ b/documentation/integrations/communicationdata/google-sheets.mdx @@ -0,0 +1,254 @@ +--- +title: 'Google Sheets' +description: 'Learn how to use the Google Sheets integration with Julep' +icon: 'table' +--- + +## Overview + +Welcome to the Google Sheets integration guide for Julep! This integration allows you to read, write, and manage data in Google Sheets spreadsheets, enabling you to build workflows that leverage structured data storage and manipulation. Whether you're tracking metrics, managing inventories, or processing data tables, this guide will walk you through the setup and usage. + +## Prerequisites + + + To use the Google Sheets integration, you need either: + 1. A Google Cloud service account with Sheets API enabled (recommended) + 2. Use Julep's shared service account (limited to spreadsheets shared with it) + + For your own service account, follow the [Google Get Started guide](https://developers.google.com/workspace/guides/get-started) to create credentials. + + +## How to Use the Integration + +To get started with the Google Sheets integration, follow these steps to configure and create a task: + + + + Choose between using your own service account or Julep's shared service. For your own service account, base64 encode your JSON credentials file. + + + Use the following YAML configuration examples for different operations: + +### Read Values Example + +```yaml Read Values +name: Google Sheets Read Task + +tools: +- name: sheets_reader + type: integration + integration: + provider: google_sheets + method: read_values + setup: + # Option 1: Use your own service account + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + # Option 2: Use Julep's service (comment out service_account_json) + # use_julep_service: true + +main: +- tool: sheets_reader + arguments: + spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms" + range: "Sheet1!A1:C10" +``` + +### Write Values Example + +```yaml Write Values +name: Google Sheets Write Task + +tools: +- name: sheets_writer + type: integration + integration: + provider: google_sheets + method: write_values + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + +main: +- tool: sheets_writer + arguments: + spreadsheet_id: "YOUR_SPREADSHEET_ID" + range: "Sheet1!A1:B2" + values: + - ["Name", "Score"] + - ["Alice", 95] +``` + +### Append Values Example + +```yaml Append Values +name: Google Sheets Append Task + +tools: +- name: sheets_appender + type: integration + integration: + provider: google_sheets + method: append_values + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + +main: +- tool: sheets_appender + arguments: + spreadsheet_id: "YOUR_SPREADSHEET_ID" + range: "Sheet1!A:B" + values: + - ["Bob", 87] + - ["Charlie", 92] +``` + +### Clear Values Example + +```yaml Clear Values +name: Google Sheets Clear Task + +tools: +- name: sheets_clearer + type: integration + integration: + provider: google_sheets + method: clear_values + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + +main: +- tool: sheets_clearer + arguments: + spreadsheet_id: "YOUR_SPREADSHEET_ID" + range: "Sheet1!A2:B100" +``` + +### Batch Read Example + +```yaml Batch Read +name: Google Sheets Batch Read Task + +tools: +- name: sheets_batch_reader + type: integration + integration: + provider: google_sheets + method: batch_read + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + +main: +- tool: sheets_batch_reader + arguments: + spreadsheet_id: "YOUR_SPREADSHEET_ID" + ranges: + - "Sheet1!A1:C5" + - "Sheet2!D1:F10" + - "Summary!A1:B20" +``` + +### Batch Write Example + +```yaml Batch Write +name: Google Sheets Batch Write Task + +tools: +- name: sheets_batch_writer + type: integration + integration: + provider: google_sheets + method: batch_write + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + +main: +- tool: sheets_batch_writer + arguments: + spreadsheet_id: "YOUR_SPREADSHEET_ID" + data: + - range: "Sheet1!A1:B2" + values: + - ["Updated", "Data"] + - ["New", "Values"] + - range: "Sheet2!C1:D2" + values: + - ["More", "Updates"] + - ["Here", "Too"] +``` + + + +### YAML Explanation + + + + - **_name_**: A descriptive name for the task (e.g., "Google Sheets Read Task"). + - **_tools_**: This section lists the tools or integrations being used. Each tool has a unique name for reference. + + + + - **_type_**: Specifies the type of tool, which is `integration` in this context. + - **_integration_**: Details the provider and setup for the integration. + - **_provider_**: Always `google_sheets` for Google Sheets integration. + - **_method_**: The operation to perform. Available methods: + - `read_values`: Read data from a range + - `write_values`: Write or update data in a range + - `append_values`: Append new rows to a sheet + - `clear_values`: Clear data from a range + - `batch_read`: Read from multiple ranges at once + - `batch_write`: Write to multiple ranges at once + - **_setup_**: Authentication configuration (see Authentication Methods below). + + + + You have two options for authentication: + + **Option 1: Your Own Service Account (Recommended)** + ```yaml + setup: + service_account_json: "BASE64_ENCODED_SERVICE_ACCOUNT_JSON" + ``` + - Full control over permissions + + **Option 2: Julep's Shared Service (Testing Only)** + ```yaml + setup: + use_julep_service: true + ``` + - No setup required + - Limited to spreadsheets explicitly shared with Julep's service account + - **Recommended for testing only** - Use your own service account in production to manage Google API quotas and constraints + + + + **Common Arguments:** + - **_spreadsheet_id_**: The ID of the Google Sheets spreadsheet (found in the URL) + - **_range_**: The A1 notation range (e.g., "Sheet1!A1:C10") + + **Method-Specific Arguments:** + - **_values_** (write/append): 2D array of data to write + - **_ranges_** (batch_read): Array of ranges to read + - **_data_** (batch_write): Array of range-value pairs to write + + + +## Important Notes + + + - **Spreadsheet ID**: Found in the spreadsheet URL: `https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit` + - **Range Notation**: Use A1 notation like "Sheet1!A1:C10" or "A:A" for entire columns + - **Service Account Setup**: Your service account needs the Google Sheets API enabled in the Google Cloud Console + - **Sharing Requirements**: When using `use_julep_service`, share your spreadsheet with Julep's service account email: `julep-sheets-assistant@julep-471013.iam.gserviceaccount.com` + - **Base64 Encoding**: Encode your service account JSON with: `base64 -i service-account.json` + + +## Conclusion + +With the Google Sheets integration, you can efficiently manage spreadsheet data within your Julep workflows. +This integration provides robust data management capabilities, from simple reads and writes to complex batch operations, enhancing your workflow's ability to work with structured data. + + + For more information, please refer to: + - [Google Sheets API documentation](https://developers.google.com/sheets/api/reference/rest) + - [A1 notation guide](https://developers.google.com/sheets/api/guides/concepts#a1_notation) + - [Service account setup guide](https://cloud.google.com/iam/docs/service-accounts) + \ No newline at end of file diff --git a/documentation/integrations/contributing-integrations.mdx b/documentation/integrations/contributing-integrations.mdx index 160419f71..25e06c230 100644 --- a/documentation/integrations/contributing-integrations.mdx +++ b/documentation/integrations/contributing-integrations.mdx @@ -25,4 +25,4 @@ This guide provides instructions for contributing new integrations to the Julep ## Additional Resources -- [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) for more detailed instructions. \ No newline at end of file +- [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/.github/CONTRIBUTING.md) for more detailed instructions. \ No newline at end of file diff --git a/documentation/integrations/extensibility/mcp.mdx b/documentation/integrations/extensibility/mcp.mdx new file mode 100644 index 000000000..27c8785f9 --- /dev/null +++ b/documentation/integrations/extensibility/mcp.mdx @@ -0,0 +1,325 @@ +--- +title: 'MCP (Model Context Protocol)' +description: 'Learn how to use the MCP integration to connect Julep with any MCP-compatible server' +icon: 'plug' +--- + +## Overview + +Welcome to the MCP (Model Context Protocol) integration guide for Julep! This integration enables you to connect Julep agents with any MCP-compatible server, providing access to a vast ecosystem of tools and capabilities. MCP is a standardized protocol that allows language models to interact with external tools and services in a consistent, secure manner. + +The MCP integration is unique because instead of hardcoding specific tools, it dynamically discovers available capabilities from any MCP server. This makes Julep infinitely extensible - simply point it at a new MCP server and all its tools become available to your agents automatically. + +## Prerequisites + + + To use the MCP integration, you need access to an MCP-compatible server. The server can be: + - A public MCP server (e.g., DeepWiki, GitHub Copilot MCP) + - A private MCP server you've deployed + + Some servers may require authentication tokens or API keys. + + +## Supported Transports + +The MCP integration supports two transport types: + + + + Standard request-response pattern for tool execution. Works with servers that expose HTTP endpoints. + + + Server-Sent Events for streaming responses and real-time updates. Ideal for long-running operations. + + + +## How to Use the Integration + +To get started with the MCP integration, you need to define two types of tools: + + + + First, create a tool that discovers available capabilities from the MCP server using the `list_tools` method. + + + Then, create a tool that executes specific MCP tools using the `call_tool` method. + + + Use the discovered tools in your task workflow to interact with the MCP server. + + + +## Examples + +### Example 1: Basic HTTP Transport (DeepWiki) + +```yaml +name: Test DeepWiki with HTTP Transport + +tools: +- type: integration + name: mcp_fetch + integration: + provider: mcp + method: list_tools + setup: + transport: http + http_url: https://mcp.deepwiki.com/mcp + +- type: integration + name: mcp_call_tool + integration: + provider: mcp + method: call_tool + setup: + transport: http + http_url: https://mcp.deepwiki.com/mcp + +main: +- tool: mcp_fetch + +- tool: mcp_call_tool + arguments: + tool_name: read_wiki_structure + arguments: + repoName: facebook/react +``` + +### Example 2: SSE Transport with Headers + +```yaml +name: Test DeepWiki with SSE Transport + +tools: + - type: integration + name: mcp_sse + integration: + provider: mcp + method: call_tool + setup: + transport: sse + http_url: https://mcp.deepwiki.com/sse + http_headers: + Accept: "text/event-stream" + Cache-Control: "no-cache" + - type: integration + name: mcp_fetch + integration: + provider: mcp + method: list_tools + setup: + transport: sse + http_url: https://mcp.deepwiki.com/sse + +main: + - tool: mcp_fetch + + - tool: mcp_sse + arguments: + tool_name: "read_wiki_structure" + arguments: + repoName: "julep-ai/julep" +``` + +### Example 3: Authenticated MCP Server (GitHub) + +```yaml +name: Simple GitHub MCP Test (with authorization) + +tools: + - type: integration + name: github_mcp + integration: + provider: mcp + method: list_tools + setup: + transport: http + http_url: https://api.githubcopilot.com/mcp/ + http_headers: + Authorization: "Bearer {your_github_token}" + Accept: "application/json, text/event-stream" + Content-Type: "application/json" + + - type: integration + name: github_call + integration: + provider: mcp + method: call_tool + setup: + transport: http + http_url: https://api.githubcopilot.com/mcp/ + http_headers: + Authorization: "Bearer {your_github_token}" + Accept: "application/json, text/event-stream" + Content-Type: "application/json" + +main: + - tool: github_mcp + + - tool: github_call + arguments: + tool_name: "search_repositories" + arguments: + query: "julep language:python" + perPage: 3 + minimal_output: true +``` + +## YAML Configuration Explained + + + + - **_name_**: A descriptive name for the task + - **_tools_**: Lists the MCP integration tools being used + - **_type_**: Must be `integration` for MCP tools + + + + - **_provider_**: Must be `mcp` for MCP integration + - **_method_**: Either `list_tools` or `call_tool` + - `list_tools`: Discovers available tools from the MCP server + - `call_tool`: Executes a specific tool on the MCP server + - **_setup_**: Connection configuration + - **_transport_**: Either `http` or `sse` + - **_http_url_**: The MCP server endpoint URL + - **_http_headers_**: (Optional) HTTP headers for authentication or content negotiation + + + + For `call_tool` method: + - **_tool_name_**: The name of the MCP tool to execute + - **_arguments_**: (Optional) Arguments to pass to the MCP tool + - **_timeout_seconds_**: (Optional) Per-call timeout in seconds (default: 60) + + For `list_tools` method: + - No arguments required (empty object or omit entirely) + + + + +## Best Practices + + + **Tool Discovery**: Always call `list_tools` first to discover available capabilities before attempting to use specific tools. This ensures you're aware of what tools are available and their required parameters. + + + + **Authentication**: Never hardcode authentication tokens in your task definitions. Use Julep's secrets management to store sensitive credentials securely. + + + + - Different MCP servers expose different tools. Always check the server's documentation for available capabilities + - SSE transport is recommended for long-running operations or when you need real-time updates + - HTTP transport is simpler and works well for quick request-response operations + - Some servers may have rate limits - consider implementing retry logic in your tasks + + +## Advanced Features + +### Dynamic Tool Discovery + +The MCP integration's killer feature is dynamic tool discovery. Instead of defining tools statically, your agents can: +1. Connect to any MCP server +2. Discover available tools at runtime +3. Adapt their capabilities based on what's available + +This means you can: +- Switch between different MCP servers without changing your code +- Add new capabilities by simply deploying new MCP servers +- Build agents that adapt to their environment + +### Response Handling + +MCP tool responses are normalized into a consistent format: + +```json +{ + "text": "Concatenated text content if any", + "structured": { + // Any structured data returned by the tool + }, + "content": [ + // Raw content items as returned by the server + ], + "is_error": false +} +``` + +This allows you to handle responses consistently regardless of the underlying MCP server implementation. + +## Using MCP with Automatic Tool Execution + +One of the most powerful features of Julep is automatic tool execution, which works seamlessly with MCP integrations. This allows your agents to dynamically discover and use MCP tools without manual intervention. + +### How It Works + +When you combine MCP integration with Julep's `auto_run_tools` feature: + +1. **Tool Discovery**: The agent first calls `list_tools` to discover available capabilities from the MCP server +2. **Automatic Execution**: When the model determines an MCP tool is needed, it's executed automatically +3. **Result Integration**: Tool results are fed back to the model to continue processing +4. **Seamless Workflow**: Everything happens in a single call - no manual intervention required + +### Example: Autonomous MCP Agent in Tasks + +```yaml +name: Autonomous Documentation Assistant + +tools: + - type: integration + name: mcp_discover + integration: + provider: mcp + method: list_tools + setup: + transport: http + http_url: https://mcp.deepwiki.com/mcp + + - type: integration + name: mcp_execute + integration: + provider: mcp + method: call_tool + setup: + transport: http + http_url: https://mcp.deepwiki.com/mcp + +main: + # Step 1: Use discovered tools automatically to answer questions + - prompt: + - role: user + content: | + Using the available MCP tools, find information about the React repository structure + and provide a comprehensive overview of its main components. + auto_run_tools: true # MCP tools execute automatically when needed + +``` + +## Troubleshooting + + + + - Verify the MCP server URL is correct and accessible + - Check if authentication headers are required and properly formatted + - Ensure the transport type matches what the server expects + + + + - Use `list_tools` to verify the tool exists on the server + - Check the tool's input schema for required parameters + + + + - Ensure Bearer tokens include the "Bearer " prefix + - Verify API keys/tokens are valid and not expired + - Check if additional headers are required + + + +## Conclusion + +The MCP integration opens up unlimited possibilities for extending Julep agents with external capabilities. By following a standardized protocol, you can connect to any MCP-compatible server and instantly gain access to its tools, making your agents more powerful and adaptable. + + + For more information about the Model Context Protocol, visit the [official MCP documentation](https://modelcontextprotocol.io/). To explore available MCP servers, check out the [MCP server directory](https://github.com/modelcontextprotocol/servers). + \ No newline at end of file diff --git a/documentation/integrations/mediafile/cloudinary.mdx b/documentation/integrations/mediafile/cloudinary.mdx index 2fa22854b..927a4b2ea 100644 --- a/documentation/integrations/mediafile/cloudinary.mdx +++ b/documentation/integrations/mediafile/cloudinary.mdx @@ -25,7 +25,7 @@ To get started with the Cloudinary integration, follow these steps to configure Use the following YAML configuration to define your media processing task: -```yaml Cloudinary Example +```yaml Cloudinary Example [expandable] name: Cloudinary Task tools: diff --git a/documentation/integrations/mediafile/llamaparse.mdx b/documentation/integrations/mediafile/llamaparse.mdx index b4e698538..49778d916 100644 --- a/documentation/integrations/mediafile/llamaparse.mdx +++ b/documentation/integrations/mediafile/llamaparse.mdx @@ -25,7 +25,7 @@ To get started with the LlamaParse integration, follow these steps to configure Use the following YAML configuration to define your document parsing task: -```yaml LlamaParse Example +```yaml LlamaParse Example [expandable] name: LlamaParse Task tools: diff --git a/documentation/integrations/supported-integrations.mdx b/documentation/integrations/supported-integrations.mdx index 679d89657..d92c36348 100644 --- a/documentation/integrations/supported-integrations.mdx +++ b/documentation/integrations/supported-integrations.mdx @@ -4,10 +4,14 @@ description: 'List of supported integrations in Julep' icon: 'plug' --- +import { IntegrationsSlider } from "/snippets/integrations-slider.jsx" + ## Overview Julep supports a wide range of integrations to help you build powerful workflows. This page provides an overview of the supported integrations and their capabilities. + + ## Communication & Data Tools for sending messages and accessing real-time data feeds. @@ -15,6 +19,7 @@ Tools for sending messages and accessing real-time data feeds. | Integration | Description | |------------|-------------| | [Email](/integrations/communicationdata/email) | SMTP email sending and management | +| [Google Sheets](/integrations/communicationdata/google-sheets) | Spreadsheet data management and automation | | [Weather](/integrations/communicationdata/weather) | Real-time weather data access | ## Media & File Processing @@ -49,8 +54,16 @@ Tools for automated web interaction and data collection. | [Spider](/integrations/webbrowser/spider) | Web crawling and scraping | | [Remote Browser](/integrations/webbrowser/remote-browser) | Remote browser control | +## Extensibility + +Connect to external services and extend Julep's capabilities dynamically. + +| Integration | Description | +|------------|-------------| +| [MCP](/integrations/extensibility/mcp) | Model Context Protocol - Connect to any MCP-compatible server for unlimited extensibility | + ## Next Steps - [Getting Started](/introduction/quickstart) - [Tutorials](/tutorials) -- [Advanced Topics](/advanced) +- [Advanced Topics](/advanced) \ No newline at end of file diff --git a/documentation/integrations/supported-models.mdx b/documentation/integrations/supported-models.mdx index fb22af8c4..0f36ecb9f 100644 --- a/documentation/integrations/supported-models.mdx +++ b/documentation/integrations/supported-models.mdx @@ -26,101 +26,141 @@ Looking for top-notch quality? Our curated selection of models delivers excellen Here are the Anthropic models supported by Julep: -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| claude-3-opus | 200K tokens | Complex reasoning, analysis | -| claude-3-sonnet | 200K tokens | General purpose tasks | -| claude-3-haiku | 200K tokens | Quick responses | -| claude-3.5-haiku | 200K tokens | Improved reasoning | -| claude-3.5-sonnet | 200K tokens | Improved reasoning | -| claude-3.5-sonnet-20240620 | 200K tokens | Enhanced reasoning capabilities | -| claude-3.5-sonnet-20241022 | 200K tokens | Computer Use Capabilities and one of the latest models | -| claude-3.7-sonnet | 200K tokens | Reasoning abilities and the latest model from Anthropic | +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| claude-3-haiku | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Budget | +| claude-3-sonnet | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Premium | +| claude-3.5-haiku | 200K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard | +| claude-3.5-sonnet | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium | +| claude-3.5-sonnet-20240620 | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Premium | +| claude-3.5-sonnet-20241022 | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium | +| claude-3.7-sonnet | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium | +| claude-opus-4 | 200K tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| claude-opus-4-1 | 200K tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| claude-sonnet-4 | 200K tokens | 64K tokens | ✅ | ✅ | ❌ | ✅ | Premium | + ### Google Here are the Google models supported by Julep: -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| gemini-1.5-pro | 1M tokens | Complex tasks | -| gemini-1.5-pro-latest | 1M tokens | Cutting-edge performance | -| gemini-2.0-flash | 1M tokens | Next generation features, speed, thinking, realtime streaming, and multimodal generation | -| gemini-2.5-pro-preview-03-25 | 1M tokens | Enhanced thinking and reasoning, multimodal understanding, advanced coding, and more | +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| gemini-1.5-pro | 2M tokens | 8K tokens | ✅ | ✅ | ❌ | ❌ | Standard | +| gemini-1.5-pro-latest | 1M tokens | 8K tokens | ✅ | ✅ | ❌ | ❌ | Premium | +| gemini-2.0-flash | 1M tokens | 8K tokens | ✅ | ✅ | ✅ | ✅ | Budget | +| gemini-2.5-flash | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gemini-2.5-pro | 1M tokens | 65K tokens | ✅ | ✅ | ✅ | ✅ | Standard | +| gemini-2.5-pro-preview-03-25 | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Standard | +| gemini-2.5-pro-preview-06-05 | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Standard | + ### OpenAI Here are the OpenAI models supported by Julep: -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| gpt-4-turbo | 128K tokens | Advanced reasoning | -| gpt-4o-mini | 128K tokens | Balanced performance | -| gpt-4o | 128K tokens | Balanced performance | -| o1-mini | 200K tokens | Quick tasks | -| o1-preview | 200K tokens | Testing features | -| o1 | 200K tokens | General tasks | -| o3-mini | 200K tokens | Suited for reasoning tasks | +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| gpt-4-turbo | 128K tokens | 4K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| gpt-4.1 | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Premium | +| gpt-4.1-mini | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-4.1-nano | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-4o | 128K tokens | 16K tokens | ✅ | ✅ | ❌ | ✅ | Premium | +| gpt-4o-mini | 128K tokens | 16K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-5 | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Standard | +| gpt-5-2025-08-07 | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Standard | +| gpt-5-chat | 400K tokens | 128K tokens | ❌ | ✅ | ❌ | ✅ | Standard | +| gpt-5-chat-latest | 400K tokens | 128K tokens | ❌ | ✅ | ❌ | ✅ | Standard | +| gpt-5-mini | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-5-mini-2025-08-07 | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-5-nano | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| gpt-5-nano-2025-08-07 | 400K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget | +| o1 | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| o1-mini | 128K tokens | 65K tokens | ❌ | ✅ | ❌ | ✅ | Standard | +| o1-preview | 128K tokens | 32K tokens | ❌ | ✅ | ❌ | ✅ | Enterprise | +| o3-mini | 200K tokens | 100K tokens | ✅ | ❌ | ❌ | ✅ | Standard | +| o4-mini | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Standard | + ### Groq Here are the Groq models supported by Julep: -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| llama-3.1-70b | 8K tokens | Long-form content | -| llama-3.1-8b | 8K tokens | Quick processing | +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| deepseek-r1-distill-llama-70b | 128K tokens | 128K tokens | ✅ | ❌ | ❌ | ❌ | Standard | +| gemma2-9b-it | 8K tokens | 8K tokens | ❌ | ❌ | ❌ | ❌ | Budget | +| llama-3.1-8b | 128K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| llama-3.1-8b-instant | 128K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| llama-3.3-70b-versatile | 128K tokens | 32K tokens | ✅ | ❌ | ❌ | ❌ | Standard | +| meta-llama/Llama-Guard-4-12B | 163K tokens | 163K tokens | ❌ | ❌ | ❌ | ❌ | Budget | +| meta-llama/llama-4-maverick-17b-128e-instruct | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| meta-llama/llama-4-scout-17b-16e-instruct | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| qwen/qwen3-32b | 131K tokens | 131K tokens | ✅ | ❌ | ❌ | ❌ | Budget | + ### OpenRouter Here are the OpenRouter models supported by Julep: -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| mistral-large-2411 | 128K tokens | High performance | -| qwen-2.5-72b-instruct | 131K tokens | Complex instructions | -| eva-llama-3.33-70b | 128K tokens | Story writing and creative fiction | -| l3.1-euryale-70b | 128K tokens | Poetry and artistic writing | -| l3.3-euryale-70b | 128K tokens | Advanced creative writing and roleplay | -| magnum-v4-72b | 8K tokens | Content generation and brainstorming | -| eva-qwen-2.5-72b | 8K tokens | Creative problem solving and ideation | -| hermes-3-llama-3.1-70b | 8K tokens | Narrative design and worldbuilding | -| deepseek-chat | 32K tokens | Conversational AI | -| meta-llama/llama-4-scout | 10M tokens | General purpose tasks, long-context processing, code analysis | -| meta-llama/llama-4-scout:free | 10M tokens | Free tier usage, same capabilities as llama-4-scout | -| meta-llama/llama-4-maverick | 10M tokens | Advanced reasoning, coding, multilingual tasks, image understanding | -| meta-llama/llama-4-maverick:free | 10M tokens | Free tier usage, same capabilities as llama-4-maverick | - -### Cerebras - -Here are the Cerebras models supported by Julep: - -| Model Name | Context Window | Best For | -|------------|---------------|-----------| -| cerebras/llama-3.1-8b | 8K tokens | Quick creative writing and basic text generation | -| cerebras/llama-3.3-70b | 8K tokens | Complex creative writing, storytelling, and detailed content generation | -| llama-4-scout-17b-16e-instruct | 10M tokens | General purpose tasks, long-context processing, code analysis (Much faster than other deployements at over 2,600 token/sec) | +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| deepseek-chat | 65K tokens | 8K tokens | ❌ | ❌ | ❌ | ✅ | Budget | +| deepseek/deepseek-r1-distill-llama-70b | 65K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard | +| deepseek/deepseek-r1-distill-qwen-32b | 65K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard | +| eva-llama-3.33-70b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| eva-qwen-2.5-72b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| hermes-3-llama-3.1-70b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| l3.1-euryale-70b | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| l3.3-euryale-70b | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise | +| magnum-v4-72b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| meta-llama/llama-3.1-8b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| meta-llama/llama-3.3-70b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| meta-llama/llama-4-scout | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| mistral-large-2411 | 128K tokens | 128K tokens | ✅ | ❌ | ❌ | ❌ | Premium | +| openrouter/meta-llama/llama-4-maverick | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| openrouter/meta-llama/llama-4-maverick:free | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| openrouter/meta-llama/llama-4-scout | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget | +| openrouter/meta-llama/llama-4-scout:free | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| perplexity/sonar | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Standard | +| perplexity/sonar-deep-research | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Premium | +| perplexity/sonar-pro | 200K tokens | 8K tokens | ❌ | ❌ | ❌ | ❌ | Premium | +| perplexity/sonar-reasoning | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Standard | +| perplexity/sonar-reasoning-pro | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Premium | +| qwen-2.5-72b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | + + +### Amazon Nova + +Here are the Amazon Nova models supported by Julep: + +| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier | +|------------|----------------|------------|--------------|--------|-------|---------|----------| +| amazon/nova-lite-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| amazon/nova-micro-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | +| amazon/nova-pro-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown | + ### Embedding Here are the embedding models supported by Julep: -| Model Name | Embedding Dimensions | Best For | -|------------|---------------|-----------| -| text-embedding-3-large | 1024 | High-quality vectors | -| voyage-multilingual-2 | 1024 | Cross-language tasks | -| voyage-3 | 1024 | Advanced embeddings | -| Alibaba-NLP/gte-large-en-v1.5 | 1024 | Cost-effective solutions | -| BAAI/bge-m3 | 1024 | Cost-effective solutions | -| vertex_ai/text-embedding-004 | 1024 | Google Cloud integration | +| Model Name | Embedding Dimensions | +|------------|---------------------| +| Alibaba-NLP/gte-large-en-v1.5 | 1024 | +| BAAI/bge-m3 | 1024 | +| text-embedding-3-large | 1024 | +| vertex_ai/text-embedding-004 | 1024 | +| voyage-3 | 1024 | +| voyage-multilingual-2 | 1024 | -Though the models mention above support different embedding dimensions, Julep uses fixed 1024 dimensions for all embedding models for now. We plan to support different dimensions in the future. +Though the models mentioned above support different embedding dimensions, Julep uses fixed 1024 dimensions for all embedding models for now. We plan to support different dimensions in the future. ## Supported Parameters -Following are a list of different paramters that can be used to control the behavior of the models. +Following are a list of different parameters that can be used to control the behavior of the models. @@ -146,11 +186,14 @@ Following are a list of different paramters that can be used to control the beha | min_p | 0.0 - 1.0 | Minimum probability threshold compared to the highest token probability | | seed | integer | For deterministic generation. Set a specific seed for reproducible results | | stop | list[str] | Up to 4 sequences where generation should stop | + | response_format | object | Control output format: `{"type": "json_object"}` or `{"type": "json_schema", "json_schema": {...}}` | Not all parameters are supported by every model. Please refer to the [LiteLLM documentation](https://docs.litellm.ai/completion/input) for more details. + +**Response Format Support**: The `response_format` parameter is supported by OpenAI, Azure OpenAI, Google AI Studio (Gemini), Vertex AI, Bedrock, Anthropic, Groq, xAI (Grok-2+), Databricks, and Ollama. For the most up-to-date list, check the [LiteLLM JSON Mode documentation](https://docs.litellm.ai/docs/completion/json_mode). diff --git a/documentation/integrations/webbrowser/remote-browser.mdx b/documentation/integrations/webbrowser/remote-browser.mdx index 5f696d429..449e830e6 100644 --- a/documentation/integrations/webbrowser/remote-browser.mdx +++ b/documentation/integrations/webbrowser/remote-browser.mdx @@ -26,7 +26,7 @@ To get started with the Remote Browser integration, follow these steps to config Use the following YAML configuration to perform browser actions in your task definition: -```yaml Remote Browser Example +```yaml Remote Browser Example [expandable] name: Browser Automation Task tools: - name: browserbase_tool diff --git a/documentation/introduction/developer-orientation.mdx b/documentation/introduction/developer-orientation.mdx new file mode 100644 index 000000000..e5bca2b8a --- /dev/null +++ b/documentation/introduction/developer-orientation.mdx @@ -0,0 +1,49 @@ +--- +title: 'Developer Orientation' +description: 'Overview of the repository structure and key resources for Julep developers' +icon: 'info' +--- + +## Overview + +This page provides a high-level tour of the Julep repository so you know where to find key components and documentation. + +## Main Directories + +### `agents-api/` +Core FastAPI service that defines agents, tasks, sessions, and runs workflows. + +### `memory-store/` +PostgreSQL-based service used for vector storage and other persistent data. + +### `integrations-service/` +Houses adapters for external services and tools that agents can call. + +### `sdks/` +Submodules containing the Python and Node.js SDK implementations. + +## Developer Resources + +- **CLI Usage** – See the [CLI guide](/julepcli/introduction) and [Command Reference](/julepcli/commands). +- **TypeSpec Definitions** – API schemas live in the [`typespec/`](https://github.com/julep-ai/julep/tree/dev/typespec) directory. The generated OpenAPI spec is available at [`openapi.yaml`](https://github.com/julep-ai/julep/blob/dev/openapi.yaml). +- **SDK References** – Python and Node.js SDK docs are in the [SDK section](/sdks/index) of the documentation. + +## Learn More + +Refer to the [Quick Start](/introduction/quickstart) to try Julep right away and the [Installation Guide](/introduction/install) for setup instructions. + +## Next Steps for Learning + +- 📚 Explore more examples in our [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks) +- 🔧 Learn about [Tool Integration](https://docs.julep.ai/docs/tools/overview) +- 🧠 Understand [Agent Memory](https://docs.julep.ai/docs/agents/memory) +- 🔄 Dive into [Complex Workflows](https://docs.julep.ai/docs/tasks/workflows) + +> [!TIP] +> 💡 Checkout more tutorials in the [Tutorials](https://docs.julep.ai/docs/tutorials/) section of the documentation. +> +> 💡 If you are a beginner, we recommend starting with the [Quickstart Guide](https://docs.julep.ai/docs/introduction/quickstart). +> +> 💡 If you are looking for more ideas, check out the [Ideas](https://github.com/julep-ai/julep/blob/dev/cookbooks/IDEAS.md) section of the repository. +> +> 💡 If you are more into cookbook style recipes, check out the [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks) section of the repository. diff --git a/documentation/introduction/install.mdx b/documentation/introduction/install.mdx index 884c76ff4..5e4797715 100644 --- a/documentation/introduction/install.mdx +++ b/documentation/introduction/install.mdx @@ -145,6 +145,15 @@ To verify your installation: ```
        +### IDE Integration + +Enhance your development experience by accessing Julep documentation directly in your IDE through the [Context7 MCP server](https://context7.com/julep-ai/julep). This integration allows you to: + +- Access Julep documentation without leaving your IDE +- Get instant answers about Julep APIs and concepts +- View code examples and best practices inline + +To set up the integration, visit [Context7 Julep Documentation](https://context7.com/julep-ai/julep) and follow the instructions for your specific IDE. ### Troubleshooting Common installation issues and solutions: diff --git a/documentation/introduction/julep.mdx b/documentation/introduction/julep.mdx index 91e2d5e9a..9056af19c 100644 --- a/documentation/introduction/julep.mdx +++ b/documentation/introduction/julep.mdx @@ -3,20 +3,7 @@ title: 'Welcome to Julep' icon: 'eye' --- - - Julep Hero Light - Julep Hero Dark - +![Julep Simple Overview](/images/julep_overview.svg) Julep is a platform for creating AI agents that remember past interactions and can perform complex tasks. It offers long-term memory and manages multi-step processes. @@ -34,7 +21,7 @@ While many AI applications are limited to simple, linear chains of prompts and A Julep offers a comprehensive set of features designed to help you build sophisticated AI workflows. -

        Imagine you want to build an AI agent that can do more than just answer simple questions — it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs.

        +

        Imagine you want to build an AI agent that can do more than just answer simple questions — it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs.

        Now since you understand the problem Julep is solving, let's explore the key features that make Julep stand out. diff --git a/documentation/introduction/quickstart.mdx b/documentation/introduction/quickstart.mdx index c31b34dc2..576ecffdc 100644 --- a/documentation/introduction/quickstart.mdx +++ b/documentation/introduction/quickstart.mdx @@ -159,7 +159,7 @@ Now let's run the task with a specific topic: print(f"Error: {result.error}") ``` - ```javascript Node.js + ```javascript Node.js [expandable] const execution = await client.executions.create( task.id, { diff --git a/documentation/julepcli/commands.mdx b/documentation/julepcli/commands.mdx index bba15c664..7b2de4862 100644 --- a/documentation/julepcli/commands.mdx +++ b/documentation/julepcli/commands.mdx @@ -253,6 +253,10 @@ Following are the available commands. # Run task that doesn't require input (empty object) julep run --task "00000000-0000-0000-0000-000000000000" --input '{}' + + # Invalid task ID + julep run --task bad-id --input '{}' + # -> Error creating execution: Task not found ``` @@ -378,7 +382,7 @@ The commands in `julep agents` are used to manage your agents. **Examples:** - ```bash + ```bash [expandable] # Update agent name julep agents update --id "agent_abc123" --name "Enhanced Writer" @@ -741,23 +745,9 @@ The commands in `julep agents` are used to manage your agents. - {/* TODO: Enable the following section once (if ever) we'll have an endpoint to get a tool by id */} - - {/* - ```bash - julep tools get --id tool_id [--json] - ``` - - The `julep tools get` command is used to get details of a specific tool. - - - ID of the tool to retrieve - - - - Output in JSON format - - */} + + A future release will add a `julep tools get` command for retrieving a tool by ID. + ## Execution Management @@ -813,65 +803,9 @@ The commands in `julep agents` are used to manage your agents. -{/* TODO: Enable the following section once `julep assistant` gets implemented */} - -{/* ## Julep Assistant - - - - - ```bash - julep assistant - ``` - - `julep assistant` launches an interactive prompt (a "wizard" mode) that uses AI to interpret plain-English requests and transform them into valid `julep` CLI commands. Think of it as a chat-based REPL that helps you build and manage your Julep resources more intuitively. - - The assistant works as follows: - 1. Opens a session where you can type natural language instructions (e.g., *"Create a GPT-4 agent named MarketingBot"*). - 2. The assistant uses an LLM (Large Language Model) to suggest one or more CLI commands that match your request (e.g., `julep agents create --name "MarketingBot" --model "gpt-4"`). - 3. Displays the suggested command(s) and prompts for confirmation: - - **(Y)**: Run the command immediately, showing output in the same session. - - **(n)**: Skip or cancel the suggestion. - - **(edit)**: Manually revise the command prior to execution. - 4. Returns to the prompt for follow-up instructions, giving you a conversational workflow (e.g., *"Now list all my tasks"*, *"Delete the agent I just created"*, etc.). - - **Example Session:** - ```bash - $ julep assistant - - Welcome to Julep Assistant! - Type your request in plain English, or type 'exit' to quit. - - assistant> Create a GPT-4 agent named MarketingBot - Proposed command: - julep agents create --name "MarketingBot" --model "gpt-4" - - Execute? (Y/n/edit) - Y - [Running command...] - Agent created successfully (id: agent_654321) - - assistant> List all tasks - Proposed command: - julep tasks list - - Execute? (Y/n/edit) - Y - [Running command...] - [No tasks found] - - assistant> exit - ``` - - The idea is to make it easier to onboard new users and make it easier to manage projects. - - **Simplifies Onboarding**: Users can manage agents, tasks, and tools with minimal knowledge of CLI flags and syntax. - - **Conversational Guidance**: The assistant can ask clarifying questions if a request is ambiguous and recall recently created or updated resources. - - **Expandable**: Future enhancements might include richer multi-step workflows, advanced editing, and deeper project insights (e.g., referencing `julep-lock.json` state). - - This feature is particularly useful for new users or those who want a quick, conversational way to build out a project without memorizing every `julep` subcommand. Simply type what you want in natural language, confirm or edit the generated commands, and let the assistant handle the rest. - - - */} + + The CLI will soon include a `julep assistant` command that launches an interactive prompt for generating commands from plain language. This feature is still under development. + ## Miscellaneous diff --git a/documentation/llms.txt b/documentation/llms.txt new file mode 100644 index 000000000..a32b8076a --- /dev/null +++ b/documentation/llms.txt @@ -0,0 +1,128 @@ +# Welcome to Julep - Julep + +> Welcome to Julep + + +## Getting Started with Julep +- [Welcome to Julep - Julep](https://docs.julep.ai/): Welcome to Julep +- [Chat with an Agent - Julep](https://docs.julep.ai/guides/getting-started/chat-with-an-agent): Learn how to chat with your agent +- [Create & Execute a Julep Task - Julep](https://docs.julep.ai/guides/getting-started/create-and-execute-julep-task): Learn how to create and execute a Julep task +- [Tool Integration Demo - Julep](https://docs.julep.ai/guides/getting-started/tool-integration-demo): Learn how to integrate tools with your Julep agent + +## Julep Concepts +- [Agents - Julep](https://docs.julep.ai/concepts/agents): Understanding Julep Agents and their capabilities +- [Documents (RAG) - Julep](https://docs.julep.ai/concepts/docs): Working with documents in Julep +- [Executions - Julep](https://docs.julep.ai/concepts/execution): Understanding Task Executions and Their Lifecycle +- [Files - Julep](https://docs.julep.ai/concepts/files): Managing files and attachments in Julep +- [Projects - Julep](https://docs.julep.ai/concepts/projects): Organizational units for grouping related resources +- [Secrets - Julep](https://docs.julep.ai/concepts/secrets): Securely store and manage sensitive information for your LLM applications +- [Sessions - Julep](https://docs.julep.ai/concepts/sessions): Understanding Julep Sessions and state management +- [Tasks - Julep](https://docs.julep.ai/concepts/tasks): Understanding Julep Tasks and workflows +- [Tools - Julep](https://docs.julep.ai/concepts/tools): Understanding tools in Julep +- [Users - Julep](https://docs.julep.ai/concepts/users): Understanding and Managing Users in Julep + +## Advanced Features +- [Agentic Patterns - Julep](https://docs.julep.ai/advanced/agentic-patterns): Learn about common patterns and best practices for building Julep agents +- [Architecture Deep Dive - Julep](https://docs.julep.ai/advanced/architecture-deep-dive): Understand the core architecture and components of Julep +- [Chat Features in Julep - Julep](https://docs.julep.ai/advanced/chat): Learn about the robust chat system and its various features for dynamic interaction with agents +- [Files (Multimedia) - Julep](https://docs.julep.ai/advanced/files): Learn about file handling and management in Julep +- [Execution Lifecycle - Julep](https://docs.julep.ai/advanced/lifecycle): Understanding the Lifecycle of Task when executed in Julep +- [Local Setup - Julep](https://docs.julep.ai/advanced/localsetup): Learn how to run Julep locally +- [Multi-Agent Multi-User Sessions - Julep](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions): Learn how to manage complex multi-agent systems with multiple users +- [New Syntax (Important) - Julep](https://docs.julep.ai/advanced/new-syntax): Learn about the new workflow syntax and how to migrate your existing workflows +- [Python Expression - Julep](https://docs.julep.ai/advanced/python-expression): Learn how to use Python expressions in Julep task definitions +- [Render Endpoint in Julep - Julep](https://docs.julep.ai/advanced/render): Learn about the render endpoint for previewing chat inputs before sending them to the model +- [Secrets Management - Julep](https://docs.julep.ai/advanced/secrets-management): Advanced techniques for managing sensitive information in Julep +- [Types of Task Steps - Julep](https://docs.julep.ai/advanced/types-of-task-steps): Learn about different types of task steps and their use + +## API Reference - Agents +- [Create Agent - Julep](https://docs.julep.ai/api-reference/agents/create-agent): Create Agent +- [Create Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/create-agent-tool): Create Agent Tool +- [Create Or Update Agent - Julep](https://docs.julep.ai/api-reference/agents/create-or-update-agent): Create Or Update Agent +- [Delete Agent - Julep](https://docs.julep.ai/api-reference/agents/delete-agent): Delete Agent +- [Delete Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/delete-agent-tool): Delete Agent Tool +- [Get Agent Details - Julep](https://docs.julep.ai/api-reference/agents/get-agent-details): Get Agent Details +- [List Agent Tools - Julep](https://docs.julep.ai/api-reference/agents/list-agent-tools): List Agent Tools +- [List Agents - Julep](https://docs.julep.ai/api-reference/agents/list-agents): List Agents +- [List Models - Julep](https://docs.julep.ai/api-reference/agents/list-models): List all available models that can be used with agents. Returns: ListModelsResponse: A list of available models +- [Patch Agent - Julep](https://docs.julep.ai/api-reference/agents/patch-agent): Patch Agent +- [Patch Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/patch-agent-tool): Patch Agent Tool +- [Update Agent - Julep](https://docs.julep.ai/api-reference/agents/update-agent): Update Agent +- [Update Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/update-agent-tool): Update Agent Tool + +## API Reference - Documents +- [Bulk Delete Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/bulk-delete-agent-docs): Bulk delete documents owned by an agent based on metadata filter +- [Bulk Delete User Docs - Julep](https://docs.julep.ai/api-reference/docs/bulk-delete-user-docs): Bulk delete documents owned by a user based on metadata filter +- [Create Agent Doc - Julep](https://docs.julep.ai/api-reference/docs/create-agent-doc): Create Agent Doc +- [Create User Doc - Julep](https://docs.julep.ai/api-reference/docs/create-user-doc): Creates a new document for a user. Parameters: user_id (UUID): The unique identifier of the user associated with the document. data (CreateDocRequest): The data to create the document with. x_developer_id (UUID): The unique identifier of the developer associated with the document. Returns: Doc: The created document. +- [Delete Agent Doc - Julep](https://docs.julep.ai/api-reference/docs/delete-agent-doc): Delete Agent Doc +- [Delete User Doc - Julep](https://docs.julep.ai/api-reference/docs/delete-user-doc): Delete User Doc +- [Embed - Julep](https://docs.julep.ai/api-reference/docs/embed): Embed +- [Get Doc - Julep](https://docs.julep.ai/api-reference/docs/get-doc): Get Doc +- [List Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/list-agent-docs): List Agent Docs +- [List User Docs - Julep](https://docs.julep.ai/api-reference/docs/list-user-docs): List User Docs +- [Search Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/search-agent-docs): Searches for documents associated with a specific agent. Parameters: x_developer_id (UUID): The unique identifier of the developer associated with the agent. search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search. agent_id (UUID): The unique identifier of the agent associated with the documents. Returns: DocSearchResponse: The search results. +- [Search User Docs - Julep](https://docs.julep.ai/api-reference/docs/search-user-docs): Searches for documents associated with a specific user. Parameters: x_developer_id (UUID): The unique identifier of the developer associated with the user. search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search. user_id (UUID): The unique identifier of the user associated with the documents. Returns: DocSearchResponse: The search results. + +## API Reference - Executions +- [Create Task Execution - Julep](https://docs.julep.ai/api-reference/executions/create-task-execution): Create Task Execution +- [Get Execution Details - Julep](https://docs.julep.ai/api-reference/executions/get-execution-details): Get Execution Details +- [List Execution Transitions - Julep](https://docs.julep.ai/api-reference/executions/list-execution-transitions): List Execution Transitions +- [Stream Execution Status - Julep](https://docs.julep.ai/api-reference/executions/stream-execution-status): SSE endpoint that streams the status of a given execution_id by polling the latest_executions view. +- [Stream Transitions Events - Julep](https://docs.julep.ai/api-reference/executions/stream-transitions-events): Stream Transitions Events +- [Update Execution - Julep](https://docs.julep.ai/api-reference/executions/update-execution): Update Execution + +## API Reference - Files +- [Create File - Julep](https://docs.julep.ai/api-reference/files/create-file): Create File +- [Delete File - Julep](https://docs.julep.ai/api-reference/files/delete-file): Delete File +- [Get File - Julep](https://docs.julep.ai/api-reference/files/get-file): Get File +- [List Files - Julep](https://docs.julep.ai/api-reference/files/list-files): List Files + +## API Reference - Health +- [Check Health - Julep](https://docs.julep.ai/api-reference/healthz/check-health): Check Health + +## API Reference - Jobs +- [Get Job Status - Julep](https://docs.julep.ai/api-reference/jobs/get-job-status): Get Job Status + +## API Reference - Projects +- [Create Project - Julep](https://docs.julep.ai/api-reference/projects/create-project): Create Project +- [List Projects - Julep](https://docs.julep.ai/api-reference/projects/list-projects): List Projects + +## API Reference - Secrets +- [Create Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/create-developer-secret): Create a new secret for a developer. Args: developer_id: ID of the developer creating the secret secret: Secret to create Returns: The created secret Raises: HTTPException: If a secret with this name already exists (409 Conflict) +- [Delete Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/delete-developer-secret): Delete a secret. Args: secret_id: ID of the secret to delete x_developer_id: ID of the developer who owns the secret Returns: The deleted secret Raises: HTTPException: If the secret doesn't exist +- [List Developer Secrets - Julep](https://docs.julep.ai/api-reference/secrets/list-developer-secrets): List all secrets for a developer. Args: x_developer_id: ID of the developer whose secrets to list limit: Maximum number of secrets to return offset: Number of secrets to skip Returns: List of secrets +- [Update Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/update-developer-secret): Update a developer secret. Args: developer_id: ID of the developer who owns the secret secret_id: ID of the secret to update data: New secret data Returns: The updated secret Raises: HTTPException: If the secret doesn't exist or doesn't belong to the developer + +## API Reference - Sessions +- [Chat - Julep](https://docs.julep.ai/api-reference/sessions/chat): Initiates a chat session. Parameters: developer (Developer): The developer associated with the chat session. session_id (UUID): The unique identifier of the chat session. chat_input (ChatInput): The chat input data. background_tasks (BackgroundTasks): The background tasks to run. x_custom_api_key (Optional[str]): The custom API key. Returns: ChatResponse: The chat response. +- [Create Or Update Session - Julep](https://docs.julep.ai/api-reference/sessions/create-or-update-session): Create Or Update Session +- [Create Session - Julep](https://docs.julep.ai/api-reference/sessions/create-session): Create Session +- [Delete Session - Julep](https://docs.julep.ai/api-reference/sessions/delete-session): Delete Session +- [Get Session - Julep](https://docs.julep.ai/api-reference/sessions/get-session): Get Session +- [Get Session History - Julep](https://docs.julep.ai/api-reference/sessions/get-session-history): Get Session History +- [List Sessions - Julep](https://docs.julep.ai/api-reference/sessions/list-sessions): List Sessions +- [Patch Session - Julep](https://docs.julep.ai/api-reference/sessions/patch-session): Patch Session +- [Render - Julep](https://docs.julep.ai/api-reference/sessions/render): Renders a chat input. Parameters: developer (Developer): The developer associated with the chat session. session_id (UUID): The unique identifier of the chat session. chat_input (ChatInput): The chat input data. Returns: RenderResponse: The rendered chat input. +- [Update Session - Julep](https://docs.julep.ai/api-reference/sessions/update-session): Update Session + +## API Reference - Tasks +- [Create Or Update Task - Julep](https://docs.julep.ai/api-reference/tasks/create-or-update-task): Create Or Update Task +- [Create Task - Julep](https://docs.julep.ai/api-reference/tasks/create-task): Create Task +- [Get Execution Transition - Julep](https://docs.julep.ai/api-reference/tasks/get-execution-transition): Get Execution Transition +- [Get Task Details - Julep](https://docs.julep.ai/api-reference/tasks/get-task-details): Get Task Details +- [List Task Executions - Julep](https://docs.julep.ai/api-reference/tasks/list-task-executions): List Task Executions +- [List Tasks - Julep](https://docs.julep.ai/api-reference/tasks/list-tasks): List Tasks + +## Optional +- [Adding a Tool Integration - Julep](https://docs.julep.ai/guides/adding-tool-integration): Extend Julep with your own tool or API +- [Complex Workflows - Julep](https://docs.julep.ai/guides/advanced/complex-workflows): Creating advanced task workflows +- [Integration Patterns - Julep](https://docs.julep.ai/guides/advanced/integration-patterns): Common patterns for integrating with external services +- [Multi-Agent Systems - Julep](https://docs.julep.ai/guides/advanced/multi-agent-systems): Building complex multi-agent systems +- [Community Examples - Julep](https://docs.julep.ai/guides/cookbooks/community-examples): Examples from the Julep community +- [Quick Solutions - Julep](https://docs.julep.ai/guides/cookbooks/quick-solutions): Ready-to-use solutions for common use cases +- [Modifying Agent Workflow - Julep](https://docs.julep.ai/guides/modifying-agent-workflow): Customize how your agents process tasks + +--- + +*This llms.txt file was generated by [llmtxt.dev](https://llmtxt.dev)* diff --git a/documentation/responses/cli.mdx b/documentation/responses/cli.mdx index 401462843..72bdc8d5f 100644 --- a/documentation/responses/cli.mdx +++ b/documentation/responses/cli.mdx @@ -266,7 +266,7 @@ open-responses compose [args...] Available commands include: -```bash +```bash [expandable] # Start services with additional options: open-responses compose up [flags] diff --git a/documentation/responses/concepts.mdx b/documentation/responses/concepts.mdx index c57001b8a..5e285213d 100644 --- a/documentation/responses/concepts.mdx +++ b/documentation/responses/concepts.mdx @@ -140,7 +140,7 @@ The Responses API supports tool usage, allowing the model to perform actions lik } ``` -```json Sample Function Tool Call to get the weather +```json Sample Function Tool Call to get the weather [expandable] { "input": "What's the weather in San Francisco?", "tools": [ diff --git a/documentation/responses/examples.mdx b/documentation/responses/examples.mdx index 3191edbe3..7bd121e15 100644 --- a/documentation/responses/examples.mdx +++ b/documentation/responses/examples.mdx @@ -112,7 +112,7 @@ Below are practical examples showing how to use the Julep Open Responses API for Build a basic agent that can respond to user queries: - ```python + ```python [expandable] from agents import Agent, Runner # For Jupyter notebooks: @@ -145,7 +145,7 @@ Below are practical examples showing how to use the Julep Open Responses API for Create an agent with web search capabilities: - ```python + ```python [expandable] from agents import Agent, Runner, WebSearchTool # Create a research assistant with web search capability @@ -182,7 +182,7 @@ Below are practical examples showing how to use the Julep Open Responses API for Create an agent with a custom function tool: - ```python + ```python [expandable] import os import requests from datetime import datetime @@ -259,7 +259,7 @@ Below are practical examples showing how to use the Julep Open Responses API for Create an agent that uses the custom function tool: - ```python + ```python [expandable] # Create a weather assistant weather_assistant = Agent( name="Weather Assistant", diff --git a/documentation/responses/roadmap.mdx b/documentation/responses/roadmap.mdx index 9a39862e3..a386128a9 100644 --- a/documentation/responses/roadmap.mdx +++ b/documentation/responses/roadmap.mdx @@ -61,23 +61,23 @@ This section lists the features that are partially implemented. #### 2.1. File Search Tool - Basic file indexing -- *[TODO]* Content search capabilities -- *[TODO]* File type support -- *[TODO]* Search result ranking -- *[TODO]* Advanced filtering options -- *[TODO]* Full-text search optimization +- Full text search across indexed files +- Support for multiple file formats, including PDFs and office documents +- Relevance-based ranking of search results +- Filters by file type, date, and metadata +- Indexing improvements for faster queries #### 2.2. Reasoning Effort -- *[TODO]* Basic thinking budget allocation -- *[TODO]* Dynamic budget adjustment -- *[TODO]* Resource optimization +- Baseline reasoning budget allocation +- Dynamic budget adjustment based on request complexity +- Optimized compute usage for long running tasks - Performance monitoring #### 2.3. Annotations for Citations - Basic citation format -- *[TODO]* Source verification -- *[TODO]* Citation style customization -- *[TODO]* Automated citation generation +- Automatic source verification +- Customizable citation styles +- Auto-generation of citations from references ### 3. Planned Features 🔜 diff --git a/documentation/scripts/entelligence-chat.js b/documentation/scripts/entelligence-chat.js deleted file mode 100644 index eba508326..000000000 --- a/documentation/scripts/entelligence-chat.js +++ /dev/null @@ -1,61 +0,0 @@ -// scripts/entelligence-chat.js -function injectShadowStyles(interval) { - const container = document.getElementById("entelligence-chat-root"); - if (container && container.shadowRoot) { - const shadow = container.shadowRoot; - const widgetContainer = document.createElement("div"); - shadow.appendChild(widgetContainer); - - fetch("https://dujj2xy9pc7vi.cloudfront.net/entelligence-chat.css") - .then(r => r.text()) - .then(styles => { - const style = document.createElement("style"); - style.textContent = styles; - shadow.prepend(style); - document.head.prepend(style.cloneNode(true)); - }); - clearInterval(interval); - } -} - -function initEntelligence() { - const script = document.getElementById("entelligence-chat"); - - if (!script) { - const chatScript = document.createElement("script"); - chatScript.type = "module"; - chatScript.id = "entelligence-chat"; - chatScript.src = "https://dujj2xy9pc7vi.cloudfront.net/vanilla/entelligence-chat.es.js"; - chatScript.defer = true; - - const initScript = document.createElement("script"); - initScript.type = "module"; - initScript.textContent = ` - window.EntelligenceChat.init({ - analyticsData: { - repoName: "julep", - organization: "julep-ai", - apiKey: "-QPa1vq4X-2-KwLus5GxhDBE71g5BdXKwZs2M3iPh8U", - theme: 'dark', - companyName: "Julep AI" - } - }); - `; - - const head = document.getElementsByTagName("head")[0]; - head.appendChild(chatScript); - - chatScript.onload = () => { - document.head.appendChild(initScript); - const interval = setInterval(() => { - injectShadowStyles(interval); - }, 1000); - }; - } -} - -if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", initEntelligence); -} else { - initEntelligence(); -} \ No newline at end of file diff --git a/documentation/scripts/julep-chat-widget.js b/documentation/scripts/julep-chat-widget.js new file mode 100644 index 000000000..3a548e58f --- /dev/null +++ b/documentation/scripts/julep-chat-widget.js @@ -0,0 +1,810 @@ +// Julep Chat Widget with Streaming Support +(function() { + 'use strict'; + + console.log('[Julep Widget] Loading...'); + + // Configuration + const PROXY_URL = 'https://julep-chat-proxy.vercel.app/api/chat'; + + // State + let sessionId = null; + let isOpen = false; + + // Helper function to create element with attributes + function createElement(tag, attrs = {}, innerHTML = '') { + const el = document.createElement(tag); + Object.entries(attrs).forEach(([key, value]) => { + if (key === 'style') { + el.style.cssText = value; + } else if (key === 'className') { + el.className = value; + } else { + el.setAttribute(key, value); + } + }); + if (innerHTML) el.innerHTML = innerHTML; + return el; + } + + // Create and inject styles + const styles = createElement('style', {}, ` + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap'); + + /* CSS Variables for theming */ + :root { + --julep-bg-primary: #ffffff; + --julep-bg-secondary: #f8f9fb; + --julep-bg-tertiary: #f8fafb; + --julep-text-primary: #1a202c; + --julep-text-secondary: #4a5568; + --julep-border: #e2e8f0; + --julep-shadow: rgba(0,0,0,0.12); + --julep-input-bg: #ffffff; + --julep-code-bg: #1e293b; + --julep-code-text: #e2e8f0; + } + + /* Dark mode variables */ + #julep-chat-widget[data-theme="dark"] { + --julep-bg-primary: #1a1a1a; + --julep-bg-secondary: #0f0f0f; + --julep-bg-tertiary: #252525; + --julep-text-primary: #e2e8f0; + --julep-text-secondary: #a0aec0; + --julep-border: #2d3748; + --julep-shadow: rgba(0,0,0,0.4); + --julep-input-bg: #252525; + --julep-code-bg: #0f0f0f; + --julep-code-text: #e2e8f0; + } + + #julep-toggle-btn { + position: fixed !important; + bottom: 24px !important; + right: 24px !important; + width: 64px !important; + height: 64px !important; + background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important; + border: none !important; + border-radius: 50% !important; + cursor: pointer !important; + box-shadow: 0 4px 20px rgba(0, 78, 100, 0.3) !important; + z-index: 99999 !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transition: all 0.3s ease !important; + } + + #julep-toggle-btn:hover { + transform: translateY(-2px) !important; + box-shadow: 0 6px 30px rgba(0, 78, 100, 0.4) !important; + background: linear-gradient(135deg, #003847 0%, #0091b8 100%) !important; + } + + #julep-toggle-btn svg { + width: 28px !important; + height: 28px !important; + } + + #julep-chat-widget { + position: fixed !important; + bottom: 100px !important; + right: 24px !important; + width: 480px !important; + height: 680px !important; + background: var(--julep-bg-primary) !important; + border-radius: 16px !important; + box-shadow: 0 10px 40px var(--julep-shadow) !important; + z-index: 99998 !important; + display: none !important; + flex-direction: column !important; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important; + overflow: hidden !important; + transition: all 0.3s ease !important; + border: 1px solid var(--julep-border) !important; + } + + #julep-chat-widget.open { + display: flex !important; + } + + /* Expanded mode */ + #julep-chat-widget.expanded { + width: 600px !important; + height: 780px !important; + } + + @media (max-width: 768px) { + #julep-chat-widget { + width: calc(100vw - 40px) !important; + height: calc(100vh - 140px) !important; + right: 20px !important; + bottom: 80px !important; + } + + #julep-chat-widget.expanded { + width: calc(100vw - 40px) !important; + height: calc(100vh - 140px) !important; + } + } + + #julep-chat-header { + background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important; + color: white !important; + padding: 20px 24px !important; + display: flex !important; + justify-content: space-between !important; + align-items: center !important; + font-weight: 600 !important; + font-size: 17px !important; + letter-spacing: -0.02em !important; + } + + #julep-header-buttons { + display: flex !important; + align-items: center !important; + gap: 8px !important; + } + + #julep-close-btn { + background: rgba(255, 255, 255, 0.15) !important; + border: none !important; + color: white !important; + font-size: 24px !important; + cursor: pointer !important; + width: 34px !important; + height: 34px !important; + border-radius: 8px !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transition: all 0.2s ease !important; + } + + #julep-close-btn:hover { + background: rgba(255, 255, 255, 0.25) !important; + } + + /* Expand button styling */ + #julep-expand-btn { + background: rgba(255, 255, 255, 0.15) !important; + border: none !important; + color: white !important; + font-size: 18px !important; + cursor: pointer !important; + width: 34px !important; + height: 34px !important; + border-radius: 8px !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + transition: all 0.2s ease !important; + margin-right: 8px !important; + } + + #julep-expand-btn:hover { + background: rgba(255, 255, 255, 0.25) !important; + } + + #julep-messages { + flex: 1 !important; + overflow-y: auto !important; + padding: 24px !important; + background: var(--julep-bg-secondary) !important; + } + + .julep-message { + margin-bottom: 16px !important; + padding: 12px 16px !important; + border-radius: 12px !important; + max-width: 85% !important; + font-size: 14px !important; + line-height: 1.5 !important; + position: relative !important; + } + + .julep-message-copy { + position: absolute !important; + top: 8px !important; + right: 8px !important; + background: transparent !important; + border: none !important; + cursor: pointer !important; + opacity: 0 !important; + transition: opacity 0.2s ease !important; + padding: 4px !important; + border-radius: 4px !important; + } + + .julep-message:hover .julep-message-copy { + opacity: 0.6 !important; + } + + .julep-message-copy:hover { + opacity: 1 !important; + background: rgba(0, 0, 0, 0.1) !important; + } + + .julep-user .julep-message-copy { + color: white !important; + } + + .julep-assistant .julep-message-copy { + color: var(--julep-text-primary) !important; + } + + .julep-user { + background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important; + color: white !important; + margin-left: auto !important; + border-bottom-right-radius: 4px !important; + box-shadow: 0 2px 8px rgba(0, 78, 100, 0.2) !important; + } + + .julep-assistant { + background: var(--julep-bg-tertiary) !important; + color: var(--julep-text-primary) !important; + border: 1px solid var(--julep-border) !important; + box-shadow: 0 1px 3px var(--julep-shadow) !important; + } + + .julep-message pre { + background: var(--julep-code-bg) !important; + color: var(--julep-code-text) !important; + padding: 12px !important; + border-radius: 8px !important; + overflow-x: auto !important; + margin: 8px 0 !important; + border: 1px solid var(--julep-border) !important; + position: relative !important; + } + + .julep-code-copy { + position: absolute !important; + top: 8px !important; + right: 8px !important; + background: rgba(255, 255, 255, 0.1) !important; + border: 1px solid rgba(255, 255, 255, 0.2) !important; + border-radius: 6px !important; + padding: 4px 8px !important; + cursor: pointer !important; + font-size: 12px !important; + color: var(--julep-code-text) !important; + opacity: 0 !important; + transition: all 0.2s ease !important; + } + + .julep-message pre:hover .julep-code-copy { + opacity: 1 !important; + } + + .julep-code-copy:hover { + background: rgba(255, 255, 255, 0.2) !important; + } + + .julep-code-copy.copied { + background: #25A18E !important; + border-color: #25A18E !important; + } + + .julep-message code { + background: var(--julep-code-bg) !important; + color: #00A5CF !important; + padding: 2px 4px !important; + border-radius: 4px !important; + font-family: monospace !important; + } + + .julep-message pre code { + background: none !important; + color: inherit !important; + padding: 0 !important; + } + + .julep-message h1, + .julep-message h2, + .julep-message h3, + .julep-message h4, + .julep-message h5, + .julep-message h6 { + margin: 12px 0 8px 0 !important; + font-weight: 600 !important; + line-height: 1.4 !important; + } + + .julep-message h1 { font-size: 20px !important; } + .julep-message h2 { font-size: 18px !important; } + .julep-message h3 { font-size: 16px !important; } + .julep-message h4 { font-size: 15px !important; } + .julep-message h5 { font-size: 14px !important; } + .julep-message h6 { font-size: 13px !important; } + + .julep-message ul, + .julep-message ol { + margin: 8px 0 !important; + padding-left: 20px !important; + } + + .julep-message li { + margin: 4px 0 !important; + line-height: 1.5 !important; + } + + .julep-message a { + color: #00A5CF !important; + text-decoration: none !important; + border-bottom: 1px solid transparent !important; + transition: border-color 0.2s !important; + } + + .julep-message a:hover { + border-bottom-color: #00A5CF !important; + color: #0091b8 !important; + } + + #julep-input-container { + padding: 20px !important; + background: var(--julep-bg-primary) !important; + border-top: 1px solid var(--julep-border) !important; + display: flex !important; + gap: 12px !important; + } + + #julep-input { + flex: 1 !important; + padding: 13px 18px !important; + border: 2px solid var(--julep-border) !important; + border-radius: 12px !important; + font-size: 14px !important; + outline: none !important; + transition: all 0.2s ease !important; + background: var(--julep-input-bg) !important; + color: var(--julep-text-primary) !important; + } + + #julep-input:focus { + border-color: #00A5CF !important; + box-shadow: 0 0 0 3px rgba(0, 165, 207, 0.1) !important; + } + + #julep-input::placeholder { + color: var(--julep-text-secondary) !important; + } + + #julep-send-btn { + padding: 13px 24px !important; + background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important; + color: white !important; + border: none !important; + border-radius: 12px !important; + cursor: pointer !important; + font-size: 14px !important; + font-weight: 500 !important; + transition: all 0.2s ease !important; + box-shadow: 0 2px 8px rgba(0, 78, 100, 0.2) !important; + } + + #julep-send-btn:hover { + transform: translateY(-1px) !important; + box-shadow: 0 4px 12px rgba(0, 78, 100, 0.3) !important; + background: linear-gradient(135deg, #003847 0%, #0091b8 100%) !important; + } + + #julep-send-btn:active { + transform: translateY(0) !important; + } + + .julep-loading { + display: inline-flex !important; + gap: 4px !important; + } + + .julep-loading span { + width: 6px !important; + height: 6px !important; + background: #00A5CF !important; + border-radius: 50% !important; + animation: julep-bounce 1.4s ease-in-out infinite both !important; + } + + .julep-loading span:nth-child(2) { + animation-delay: 0.16s !important; + } + + .julep-loading span:nth-child(3) { + animation-delay: 0.32s !important; + } + + @keyframes julep-bounce { + 0%, 80%, 100% { + transform: scale(0.8); + opacity: 0.5; + } + 40% { + transform: scale(1); + opacity: 1; + } + } + `); + + // Create widget elements + const toggleBtn = createElement('button', { + id: 'julep-toggle-btn', + type: 'button' + }, ''); + + const widget = createElement('div', { id: 'julep-chat-widget' }); + + const header = createElement('div', { id: 'julep-chat-header' }); + const headerTitle = createElement('span', {}, 'Julep Assistant'); + const headerButtons = createElement('div', { id: 'julep-header-buttons' }); + const expandBtn = createElement('button', { id: 'julep-expand-btn', type: 'button' }, '⤢'); + const closeBtn = createElement('button', { id: 'julep-close-btn', type: 'button' }, '×'); + headerButtons.appendChild(expandBtn); + headerButtons.appendChild(closeBtn); + header.appendChild(headerTitle); + header.appendChild(headerButtons); + + const messagesDiv = createElement('div', { id: 'julep-messages' }); + + const inputContainer = createElement('div', { id: 'julep-input-container' }); + const input = createElement('input', { + id: 'julep-input', + type: 'text', + placeholder: 'Ask about Julep...' + }); + const sendBtn = createElement('button', { + id: 'julep-send-btn', + type: 'button' + }, 'Send'); + inputContainer.appendChild(input); + inputContainer.appendChild(sendBtn); + + widget.appendChild(header); + widget.appendChild(messagesDiv); + widget.appendChild(inputContainer); + + // Helper functions + function copyToClipboard(text) { + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(text).catch(err => { + console.error('[Julep Widget] Failed to copy:', err); + }); + } else { + // Fallback for older browsers + const textarea = document.createElement('textarea'); + textarea.value = text; + textarea.style.position = 'fixed'; + textarea.style.opacity = '0'; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + } + } + + // Global function for code copy buttons + window.copyJulepCode = function(codeId) { + const codeElement = document.getElementById(codeId); + if (codeElement) { + const code = codeElement.querySelector('code').textContent; + copyToClipboard(code); + + const copyBtn = codeElement.querySelector('.julep-code-copy'); + copyBtn.textContent = 'Copied!'; + copyBtn.classList.add('copied'); + + setTimeout(() => { + copyBtn.textContent = 'Copy'; + copyBtn.classList.remove('copied'); + }, 2000); + } + }; + + function parseMarkdown(text) { + // First, extract and store code blocks to protect them + const codeBlocks = []; + let html = text.replace(/```(\w+)?\n([\s\S]*?)```/g, (match, lang, code) => { + const index = codeBlocks.length; + codeBlocks.push({ lang: lang || 'plaintext', code: code.trim() }); + return `__CODEBLOCK_${index}__`; + }); + + // Extract inline code + const inlineCode = []; + html = html.replace(/`([^`]+)`/g, (match, code) => { + const index = inlineCode.length; + inlineCode.push(code); + return `__INLINECODE_${index}__`; + }); + + // Now escape HTML + html = html.replace(/[&<>"']/g, (m) => ({ + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + })[m]); + + // Process markdown + // Headers + html = html.replace(/^#{6}\s+(.+)$/gm, '
        $1
        '); + html = html.replace(/^#{5}\s+(.+)$/gm, '
        $1
        '); + html = html.replace(/^#{4}\s+(.+)$/gm, '

        $1

        '); + html = html.replace(/^#{3}\s+(.+)$/gm, '

        $1

        '); + html = html.replace(/^#{2}\s+(.+)$/gm, '

        $1

        '); + html = html.replace(/^#{1}\s+(.+)$/gm, '

        $1

        '); + + // Bold and italic + html = html.replace(/\*\*\*(.+?)\*\*\*/g, '$1'); + html = html.replace(/\*\*(.+?)\*\*/g, '$1'); + html = html.replace(/\*(.+?)\*/g, '$1'); + + // Lists + html = html.replace(/^\* (.+)$/gm, '
      • $1
      • '); + html = html.replace(/^\- (.+)$/gm, '
      • $1
      • '); + html = html.replace(/^\d+\. (.+)$/gm, '
      • $1
      • '); + + // Links + html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1'); + + // Line breaks + html = html.replace(/\n/g, '
        '); + + // Restore code blocks with proper escaping and copy button + codeBlocks.forEach((block, index) => { + const escapedCode = block.code.replace(/[&<>"']/g, (m) => ({ + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + })[m]); + const codeId = `code-${Date.now()}-${index}`; + html = html.replace(`__CODEBLOCK_${index}__`, + `
        ${escapedCode}
        ` + ); + }); + + // Restore inline code + inlineCode.forEach((code, index) => { + const escapedCode = code.replace(/[&<>"']/g, (m) => ({ + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + })[m]); + html = html.replace(`__INLINECODE_${index}__`, `${escapedCode}`); + }); + + // Clean up extra line breaks around block elements + html = html.replace(/
        (<[hpd])/g, '$1'); + html = html.replace(/(<\/[hpd][^>]*>)
        /g, '$1'); + + return html; + } + + function addMessage(text, sender) { + const messageDiv = createElement('div', { + className: 'julep-message julep-' + sender + }); + + // Add message content + messageDiv.innerHTML = parseMarkdown(text); + + // Add copy button for message + const copyBtn = createElement('button', { + className: 'julep-message-copy', + title: 'Copy message' + }, ` + + + `); + + copyBtn.onclick = function() { + copyToClipboard(text); + copyBtn.innerHTML = '✓'; + setTimeout(() => { + copyBtn.innerHTML = ` + + + `; + }, 2000); + }; + + messageDiv.appendChild(copyBtn); + messagesDiv.appendChild(messageDiv); + messagesDiv.scrollTop = messagesDiv.scrollHeight; + return messageDiv; + } + + async function createSession() { + try { + const response = await fetch(PROXY_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'createSession' }) + }); + + if (!response.ok) throw new Error('Failed to create session'); + + const data = await response.json(); + sessionId = data.id; + console.log('[Julep Widget] Session created:', sessionId); + } catch (error) { + console.error('[Julep Widget] Session creation failed:', error); + addMessage('Sorry, I could not connect to the service. Please try again later.', 'assistant'); + } + } + + async function sendMessage() { + const message = input.value.trim(); + if (!message) return; + + if (!sessionId) { + await createSession(); + if (!sessionId) return; + } + + addMessage(message, 'user'); + input.value = ''; + + const loadingDiv = document.createElement('div'); + loadingDiv.className = 'julep-message julep-assistant'; + loadingDiv.innerHTML = '
        '; + messagesDiv.appendChild(loadingDiv); + messagesDiv.scrollTop = messagesDiv.scrollHeight; + + try { + const response = await fetch(PROXY_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'sendMessage', + sessionId: sessionId, + message: message + }) + }); + + if (!response.ok) throw new Error('Failed to send message'); + + // Handle streaming + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let buffer = ''; + let fullContent = ''; + + loadingDiv.innerHTML = ''; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + const chunk = decoder.decode(value, { stream: true }); + buffer += chunk; + + const lines = buffer.split('\n'); + buffer = lines.pop() || ''; + + for (const line of lines) { + if (line.startsWith('data: ')) { + const data = line.slice(6); + if (data === '[DONE]') break; + + try { + const parsed = JSON.parse(data); + if (parsed.choices?.[0]?.delta?.content) { + fullContent += parsed.choices[0].delta.content; + loadingDiv.innerHTML = parseMarkdown(fullContent); + messagesDiv.scrollTop = messagesDiv.scrollHeight; + } + } catch (e) { + // Skip invalid JSON + } + } + } + } + + if (!fullContent) { + loadingDiv.innerHTML = 'Sorry, I received an empty response.'; + } + + } catch (error) { + console.error('[Julep Widget] Message send failed:', error); + loadingDiv.innerHTML = 'Sorry, I encountered an error. Please try again.'; + } + } + + // Event handlers + toggleBtn.onclick = async function() { + console.log('[Julep Widget] Toggle clicked'); + isOpen = !isOpen; + + if (isOpen) { + widget.classList.add('open'); + if (!sessionId) { + addMessage('Hello! I\'m here to help you with Julep. What would you like to know?', 'assistant'); + await createSession(); + } + } else { + widget.classList.remove('open'); + } + }; + + closeBtn.onclick = function() { + console.log('[Julep Widget] Close clicked'); + isOpen = false; + widget.classList.remove('open'); + }; + + expandBtn.onclick = function() { + console.log('[Julep Widget] Expand clicked'); + widget.classList.toggle('expanded'); + expandBtn.textContent = widget.classList.contains('expanded') ? '⤡' : '⤢'; + }; + + sendBtn.onclick = sendMessage; + + input.onkeypress = function(e) { + if (e.key === 'Enter') sendMessage(); + }; + + // Theme detection function + function detectTheme() { + // Check for Mintlify's theme - they use 'dark' class on html element + const htmlElement = document.documentElement; + const isDark = htmlElement.classList.contains('dark'); + + // Apply theme to widget + widget.setAttribute('data-theme', isDark ? 'dark' : 'light'); + console.log('[Julep Widget] Theme detected:', isDark ? 'dark' : 'light'); + + // Debug: log what we're checking + console.log('[Julep Widget] HTML classes:', htmlElement.className); + } + + // Initialize widget + function init() { + console.log('[Julep Widget] Initializing...'); + + // Inject styles + if (!document.getElementById('julep-widget-styles')) { + styles.id = 'julep-widget-styles'; + document.head.appendChild(styles); + } + + // Add elements to body + if (!document.getElementById('julep-toggle-btn')) { + document.body.appendChild(toggleBtn); + document.body.appendChild(widget); + console.log('[Julep Widget] Widget added to page'); + } + + // Detect initial theme + detectTheme(); + + // Watch for theme changes + const observer = new MutationObserver(() => { + detectTheme(); + }); + + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ['class', 'data-theme'] + }); + + // Also watch for system theme changes + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', detectTheme); + } + + // Wait for DOM + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + } else { + setTimeout(init, 100); + } +})(); \ No newline at end of file diff --git a/documentation/sdks/common/secrets.mdx b/documentation/sdks/common/secrets.mdx new file mode 100644 index 000000000..288b1c84b --- /dev/null +++ b/documentation/sdks/common/secrets.mdx @@ -0,0 +1,268 @@ +--- +title: 'Common Secrets Patterns' +description: 'Common patterns for working with secrets across SDKs' +--- + +# Common Secrets Patterns + +This guide covers common patterns and best practices for working with secrets that apply across all Julep SDKs. + +## Secret Management Lifecycle + +The typical lifecycle for secrets in Julep applications includes: + +1. **Creation**: Establishing new secrets +2. **Retrieval**: Accessing secret metadata (not values) +3. **Usage**: Referencing secrets in tasks and tools +4. **Update**: Rotating or changing secret values +5. **Deletion**: Removing secrets when no longer needed + +## Naming Conventions + +Consistent naming helps with secret organization: + +- Use snake_case formatting (e.g., `aws_access_key`) +- Be descriptive but concise +- Include service name as prefix (`stripe_secret_key` vs just `secret_key`) +- For multiple environments, include environment prefix (`dev_stripe_key`, `prod_stripe_key`) + +## Secret Reference Patterns + +When using secrets in tasks, you have several reference patterns available: + +### Direct Reference + +Reference a secret directly by name: + +```yaml +secret_name: openai_api_key +``` + +### Multiple Secrets + +For operations requiring multiple secrets: + +```yaml +secrets: + service_api_key: "api_key_secret_name" + service_auth_token: "auth_token_secret_name" +``` + +### Expression Reference + +Reference secrets within expressions: + +```yaml +arguments: + headers: + Authorization: "$ f'Bearer {secrets.api_token}'" +``` + +### LLM Provider Keys + +Store LLM API keys with standard names for automatic lookup: + +```python +# Python SDK +client.secrets.create( + name="OPENAI_API_KEY", + value="sk-..." +) + +# Node.js SDK +await julep.secrets.create({ + name: 'ANTHROPIC_API_KEY', + value: 'sk-ant-...' +}); +``` + +## Error Handling + +Common error scenarios when working with secrets: + +1. **Secret Not Found**: The referenced secret doesn't exist +2. **Permission Denied**: No access to the requested secret +3. **Validation Error**: Secret name doesn't match required format +4. **Duplicate Name**: Attempting to create a secret with a name that already exists + +Handle these consistently across your application: + +```python +# Python SDK +from julep.exceptions import SecretNotFoundError, ValidationError + +try: + secret = client.secrets.get(name="non_existent_secret") +except SecretNotFoundError: + # Handle missing secret + print("Secret not found, using default value") +except ValidationError as e: + # Handle validation error + print(f"Invalid secret name: {e}") +``` + +```javascript +// Node.js SDK +try { + const secret = await julep.secrets.get({ name: 'non_existent_secret' }); +} catch (error) { + if (error.code === 'not_found') { + // Handle missing secret + console.log('Secret not found, using default value'); + } else if (error.code === 'validation_error') { + // Handle validation error + console.log(`Invalid secret name: ${error.message}`); + } +} +``` + +## Testing with Secrets + +For testing applications that use secrets: + +1. Create a separate set of test secrets with appropriate prefixes +2. Use mocking in unit tests to avoid requiring real secrets +3. For integration tests, use dedicated test accounts and credentials +4. Never use production secrets in test environments + +Example of mocking secrets for testing: + +```python +# Python mock example +import pytest +from unittest.mock import patch + +@pytest.fixture +def mock_secrets(): + return { + "api_key": "mock-api-key-123", + "auth_token": "mock-token-456" + } + +@patch("julep.client.Secrets.get") +def test_with_mock_secrets(mock_get, mock_secrets): + mock_get.return_value = mock_secrets + # Test code that uses secrets +``` + +```javascript +// JavaScript mock example +jest.mock('@julep/sdk', () => { + return { + Julep: jest.fn().mockImplementation(() => { + return { + secrets: { + get: jest.fn().mockResolvedValue({ + name: 'api_key', + value: 'mock-api-key-123' + }) + } + }; + }) + }; +}); +``` + +## Migrating from Environment Variables + +When migrating from environment variables to Julep secrets: + +1. Create a list of all environment variables used in your application +2. Create corresponding secrets in Julep with the same names +3. Update your code to reference Julep secrets instead of environment variables +4. Validate functionality before removing the original environment variables + +Migration script example: + +```python [expandable] +import os +from julep import Julep + +client = Julep(api_key="your_api_key") + +# List of environment variables to migrate +env_vars_to_migrate = [ + "OPENAI_API_KEY", + "STRIPE_SECRET_KEY", + "DATABASE_URL", + "AUTH_TOKEN" +] + +# Migrate each environment variable to a Julep secret +for env_var in env_vars_to_migrate: + value = os.environ.get(env_var) + if value: + try: + client.secrets.create( + name=env_var.lower(), # Convert to snake_case + value=value, + description=f"Migrated from environment variable {env_var}" + ) + print(f"Successfully migrated {env_var} to Julep secret") + except Exception as e: + print(f"Failed to migrate {env_var}: {e}") + else: + print(f"Environment variable {env_var} not found") +``` + +## Integration with External Secret Managers + +For organizations using external secret managers, you can sync to Julep: + +```python [expandable] +# Example syncing AWS Secrets Manager to Julep +import boto3 +from julep import Julep + +# Initialize clients +julep_client = Julep(api_key="your_api_key") +aws_client = boto3.client('secretsmanager') + +# Get secrets from AWS +response = aws_client.list_secrets() +for secret in response['SecretList']: + # Get the secret value + secret_value = aws_client.get_secret_value(SecretId=secret['ARN']) + + # Create or update the secret in Julep + try: + julep_client.secrets.create( + name=f"aws_{secret['Name']}", + value=secret_value['SecretString'], + description=f"Synced from AWS Secrets Manager: {secret['Name']}", + metadata={ + "source": "aws", + "arn": secret['ARN'], + "sync_date": datetime.now().isoformat() + } + ) + print(f"Synced secret {secret['Name']}") + except Exception: + # Secret already exists, update it + julep_client.secrets.update( + name=f"aws_{secret['Name']}", + value=secret_value['SecretString'], + metadata={ + "source": "aws", + "arn": secret['ARN'], + "sync_date": datetime.now().isoformat() + } + ) + print(f"Updated secret {secret['Name']}") +``` + +## Security Best Practices + +1. Limit who has access to create and manage secrets +2. Never log secret values, even in debug environments +3. Rotate secrets regularly, especially for high-value credentials +4. Use the most specific scope possible for each secret +5. Audit secret usage and access patterns +6. Use metadata to track important information about secrets +7. Implement an encrypted backup strategy for critical secrets + +## Next Steps + +- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets +- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets +- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets \ No newline at end of file diff --git a/documentation/sdks/index.mdx b/documentation/sdks/index.mdx index 0fb37b0e7..c075f1b95 100644 --- a/documentation/sdks/index.mdx +++ b/documentation/sdks/index.mdx @@ -31,7 +31,7 @@ bun add @julep/sdk ## Basic Usage -```python Python +```python Python [expandable] from julep import Julep # Initialize the client @@ -63,7 +63,7 @@ task = client.tasks.create( execution = client.executions.create(task_id=task.id) ``` -```javascript Node.js +```javascript Node.js [expandable] const { Julep } = require('@julep/sdk'); // Initialize the client diff --git a/documentation/sdks/nodejs/advanced-usage.mdx b/documentation/sdks/nodejs/advanced-usage.mdx index 8cd84211a..63b0994c0 100644 --- a/documentation/sdks/nodejs/advanced-usage.mdx +++ b/documentation/sdks/nodejs/advanced-usage.mdx @@ -9,7 +9,7 @@ This guide covers advanced usage patterns and best practices for the Julep Node. Execute multiple tasks in parallel for better performance: -```javascript +```javascript [expandable] // Create multiple tasks const tasks = await Promise.all([ client.tasks.create(agentId, { @@ -44,7 +44,7 @@ const results = await Promise.all( Implement robust error handling with retries: -```javascript +```javascript [expandable] class RetryableError extends Error { constructor(message, retryAfter = 1000) { super(message); @@ -97,7 +97,7 @@ const createAgentWithRetry = async () => { Handle real-time updates from task executions: -```javascript +```javascript [expandable] const { EventEmitter } = require('events'); class ExecutionStream extends EventEmitter { @@ -158,7 +158,7 @@ stream.start(); Process large amounts of data efficiently: -```javascript +```javascript [expandable] async function processBatch(items, batchSize = 10) { const batches = []; for (let i = 0; i < items.length; i += batchSize) { @@ -197,7 +197,7 @@ const results = await processBatch(items, 5); Add custom middleware to task executions: -```javascript +```javascript [expandable] class TaskMiddleware { constructor(client) { this.client = client; @@ -249,7 +249,7 @@ const result = await middleware.execute(taskId, { data: 'test' }); Implement sophisticated session management: -```javascript +```javascript [expandable] class SessionManager { constructor(client) { this.client = client; diff --git a/documentation/sdks/nodejs/agents.mdx b/documentation/sdks/nodejs/agents.mdx index 46e1d428a..c380af934 100644 --- a/documentation/sdks/nodejs/agents.mdx +++ b/documentation/sdks/nodejs/agents.mdx @@ -89,7 +89,7 @@ await client.agents.docs.delete(agentId, documentId); Extend your agent's capabilities by adding tools: -```javascript +```javascript [expandable] // Add a web search tool const tool = await client.agents.tools.create(agentId, { name: 'web_search', @@ -98,7 +98,7 @@ const tool = await client.agents.tools.create(agentId, { provider: 'brave', method: 'search', setup: { - api_key: process.env.BRAVE_API_KEY + brave_api_key: process.env.BRAVE_API_KEY } } }); diff --git a/documentation/sdks/nodejs/secrets.mdx b/documentation/sdks/nodejs/secrets.mdx new file mode 100644 index 000000000..99253e18f --- /dev/null +++ b/documentation/sdks/nodejs/secrets.mdx @@ -0,0 +1,383 @@ +--- +title: 'Managing Secrets with Node.js SDK' +description: 'How to manage secrets using the Julep Node.js SDK' +--- + +# Managing Secrets with Node.js SDK + +This guide covers how to manage secrets using the Julep Node.js SDK. Secrets allow you to securely store and use sensitive information like API keys, passwords, and access tokens in your Julep applications. + +## Installation + +Ensure you have the latest version of the Node.js SDK: + +```bash +npm install @julep/sdk +# or +yarn add @julep/sdk +``` + +## Authentication + +Initialize the client with your API key: + +```javascript +import { Julep } from '@julep/sdk'; + +const julep = new Julep({ apiKey: 'your_api_key' }); +``` + +## Creating Secrets + +Create a new secret: + +```javascript +const secret = await julep.secrets.create({ + name: 'stripe_api_key', + value: 'sk_test_...', + description: 'Stripe API key for payment processing', + metadata: { environment: 'production', owner: 'payments-team' } +}); + +console.log(`Created secret: ${secret.name}`); +``` + +### Required Parameters + +- `name`: The name of the secret (must be a valid identifier) +- `value`: The secret value to encrypt and store + +### Optional Parameters + +- `description`: A description of what the secret is used for +- `metadata`: An object of metadata to associate with the secret + +## Listing Secrets + +List all available secrets: + +```javascript +// List all secrets +const secrets = await julep.secrets.list(); +secrets.items.forEach(secret => { + console.log(`${secret.name}: ${secret.description}`); +}); +``` + +### Pagination + +Use pagination to handle large numbers of secrets: + +```javascript +// List with pagination +const secretsPage1 = await julep.secrets.list({ limit: 10, offset: 0 }); +const secretsPage2 = await julep.secrets.list({ limit: 10, offset: 10 }); +``` + +### Filtering by Metadata + +Filter secrets based on metadata: + +```javascript +// Filter by metadata +const productionSecrets = await julep.secrets.list({ + metadata: { environment: 'production' } +}); + +// Filter by multiple metadata fields +const teamSecrets = await julep.secrets.list({ + metadata: { + environment: 'production', + owner: 'payments-team' + } +}); +``` + +## Retrieving Secrets + +Get a specific secret by name: + +```javascript +const secret = await julep.secrets.get({ name: 'stripe_api_key' }); +console.log(`Secret: ${secret.name}, Created: ${secret.createdAt}`); + +// Access the secret value +console.log(`Secret value: ${secret.value}`); +``` + +> **Note**: For security, when listing secrets, the `.value` field will always show "ENCRYPTED". The actual secret value is only returned when specifically requesting a single secret by name. + +## Updating Secrets + +Update an existing secret: + +```javascript +const updatedSecret = await julep.secrets.update({ + name: 'stripe_api_key', + value: 'sk_test_new_value...', + description: 'Updated Stripe API key', + metadata: { + environment: 'production', + owner: 'payments-team', + rotated: '2025-05-10' + } +}); + +console.log(`Updated secret: ${updatedSecret.name}`); +``` + +### Partial Updates + +You can update specific fields without changing others: + +```javascript +// Update only the description +const updatedSecret = await julep.secrets.update({ + name: 'stripe_api_key', + description: 'New description for Stripe API key' +}); + +// Update only the metadata +const updatedMetadata = await julep.secrets.update({ + name: 'stripe_api_key', + metadata: { lastRotated: '2025-05-10' } +}); +``` + +## Deleting Secrets + +Delete a secret when it's no longer needed: + +```javascript +await julep.secrets.delete({ name: 'stripe_api_key' }); +console.log('Secret deleted'); +``` + +## Using Secrets in Tasks + +Reference secrets when executing tasks: + +```javascript [expandable] +import { Julep } from '@julep/sdk'; + +const julep = new Julep({ apiKey: 'your_api_key' }); + +// Define a task that uses a secret +const taskDefinition = { + steps: [ + { + kind: 'tool_call', + tool: 'openai', + operation: 'chat', + arguments: { + model: 'gpt-4', + messages: [ + { role: 'user', content: 'What\'s the weather like?' } + ] + }, + secret_name: 'openai_api_key' + } + ] +}; + +// Create and execute the task +const task = await julep.tasks.create({ task: taskDefinition }); +const execution = await julep.tasks.execute({ taskId: task.id }); +``` + +### Using Secrets in Expressions + +You can reference secrets in expressions: + +```javascript +const taskDefinition = { + steps: [ + { + kind: 'transform', + expression: "$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'", + input: 'search query', + output: 'api_url' + } + ] +}; +``` + +### Using Multiple Secrets + +For tools that require multiple secrets: + +```javascript +const taskDefinition = { + steps: [ + { + kind: 'tool_call', + tool: 'database', + operation: 'query', + arguments: { + query: 'SELECT * FROM users', + connection: { + host: '$ secrets.db_host', + user: '$ secrets.db_username', + password: '$ secrets.db_password', + database: '$ secrets.db_name' + } + } + } + ] +}; +``` + +## Error Handling + +Handle common errors when working with secrets: + +```javascript [expandable] +try { + const secret = await julep.secrets.get({ name: 'non_existent_secret' }); +} catch (error) { + if (error.code === 'not_found') { + console.log('Secret not found'); + } else { + console.error('Error retrieving secret:', error); + } +} + +try { + // Attempt to create a secret with an invalid name + const secret = await julep.secrets.create({ name: 'invalid name', value: 'test' }); +} catch (error) { + if (error.code === 'validation_error') { + console.log(`Validation error: ${error.message}`); + } else { + console.error('Error creating secret:', error); + } +} + +try { + // Attempt to create a duplicate secret + const secret = await julep.secrets.create({ name: 'existing_secret', value: 'test' }); +} catch (error) { + if (error.code === 'conflict') { + console.log('Secret already exists'); + } else { + console.error('Error creating secret:', error); + } +} +``` + +## Secret Rotation Example + +Implement a secret rotation policy: + +```javascript [expandable] +import { v4 as uuidv4 } from 'uuid'; + +/** + * Safely rotate a secret by creating a new one and verifying it works + * before deleting the old one. + */ +async function rotateSecret(julep, secretName, newValue) { + // Create a temporary secret with a random suffix + const tempName = `${secretName}_rotation_${uuidv4().substring(0, 8)}`; + + // Create the new secret + await julep.secrets.create({ + name: tempName, + value: newValue, + description: `Temporary rotation for ${secretName}`, + metadata: { rotationDate: new Date().toISOString() } + }); + + // Here you would test that the new secret works + // ... + + // If tests pass, update metadata on the old secret + const oldSecret = await julep.secrets.get({ name: secretName }); + const oldMetadata = oldSecret.metadata || {}; + + await julep.secrets.update({ + name: secretName, + metadata: { + ...oldMetadata, + archived: 'true', + replacedBy: tempName, + archivedDate: new Date().toISOString() + } + }); + + // Rename the temporary secret to the standard name + await julep.secrets.delete({ name: secretName }); + await julep.secrets.update({ + name: tempName, + newName: secretName, + description: oldSecret.description, + metadata: { lastRotated: new Date().toISOString() } + }); + + return await julep.secrets.get({ name: secretName }); +} + +// Example usage +async function rotateStripeKey() { + const newKey = 'sk_test_new_value_after_rotation'; + try { + const rotatedSecret = await rotateSecret(julep, 'stripe_api_key', newKey); + console.log(`Rotated secret: ${rotatedSecret.name}`); + } catch (error) { + console.error('Error rotating secret:', error); + } +} +``` + +## Working with Async/Await + +All methods in the Node.js SDK return Promises, making them compatible with async/await: + +```javascript [expandable] +async function manageSecrets() { + try { + // Create a secret + const secret = await julep.secrets.create({ + name: 'database_password', + value: 'complex-password-123', + description: 'Production database password' + }); + + // List all secrets + const secrets = await julep.secrets.list(); + + // Create task using the secret + const task = await julep.tasks.create({ + steps: [ + { + kind: 'tool_call', + tool: 'database', + operation: 'query', + secret_name: 'database_password' + } + ] + }); + + return { secret, secrets, task }; + } catch (error) { + console.error('Error managing secrets:', error); + throw error; + } +} +``` + +## Best Practices + +1. Use a consistent naming convention for all secrets +2. Add detailed descriptions and metadata to make secrets discoverable +3. Implement a rotation policy for sensitive secrets +4. Log secret operations (creation, updates, deletions) but never log values +5. Use try/catch blocks to handle potential errors gracefully +6. Consider automating secret rotation for important credentials +7. Use metadata to track important dates and ownership information + +## Next Steps + +- [Common Secrets Patterns](/sdks/common/secrets) - Patterns that work across all SDKs +- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets +- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets \ No newline at end of file diff --git a/documentation/sdks/nodejs/tasks.mdx b/documentation/sdks/nodejs/tasks.mdx index 70cf63389..629882c2f 100644 --- a/documentation/sdks/nodejs/tasks.mdx +++ b/documentation/sdks/nodejs/tasks.mdx @@ -9,7 +9,7 @@ Tasks are multi-step workflows that agents can execute. They can include prompts Tasks can be created using either YAML or JavaScript objects: -```javascript +```javascript [expandable] // Using a JavaScript object const task = await client.tasks.create(agentId, { name: 'Customer Support Task', @@ -58,7 +58,7 @@ const task = await client.tasks.create(agentId, yaml.parse(taskYaml)); Tasks can include various types of steps: -```javascript +```javascript [expandable] const task = await client.tasks.create(agentId, { name: 'Complex Task', description: 'A task with multiple step types', diff --git a/documentation/sdks/nodejs/tools-integration.mdx b/documentation/sdks/nodejs/tools-integration.mdx index 2a179c7a0..904bb695d 100644 --- a/documentation/sdks/nodejs/tools-integration.mdx +++ b/documentation/sdks/nodejs/tools-integration.mdx @@ -16,7 +16,7 @@ Tools in Julep extend your agents' capabilities by allowing them to interact wit Create custom tools that your agents can use: -```javascript +```javascript [expandable] // Create a custom function tool const tool = await client.agents.tools.create(agentId, { name: 'calculate_discount', @@ -74,7 +74,7 @@ const braveSearch = await client.agents.tools.create(agentId, { provider: 'brave', method: 'search', setup: { - api_key: process.env.BRAVE_API_KEY + brave_api_key: process.env.BRAVE_API_KEY } } }); @@ -133,7 +133,7 @@ const wikiTool = await client.agents.tools.create(agentId, { Make direct HTTP requests to external APIs: ```javascript -// Add a direct API call tool +// Add a direct API call tool with params_schema const apiTool = await client.agents.tools.create(agentId, { name: 'github_stars', description: 'Get GitHub repository stars', @@ -143,6 +143,20 @@ const apiTool = await client.agents.tools.create(agentId, { url: 'https://api.github.com/repos/{{owner}}/{{repo}}', headers: { Authorization: 'Bearer {{github_token}}' + }, + params_schema: { + type: 'object', + properties: { + owner: { + type: 'string', + description: 'Repository owner (username or organization)' + }, + repo: { + type: 'string', + description: 'Repository name' + } + }, + required: ['owner', 'repo'] } } }); @@ -152,7 +166,7 @@ const apiTool = await client.agents.tools.create(agentId, { Once tools are added to an agent, they can be used in tasks: -```javascript +```javascript [expandable] const task = await client.tasks.create(agentId, { name: 'Research Task', description: 'Research a topic using multiple tools', @@ -213,7 +227,7 @@ try { integration: { provider: 'brave', setup: { - api_key: process.env.BRAVE_API_KEY + brave_api_key: process.env.BRAVE_API_KEY } } }); diff --git a/documentation/sdks/python/advanced-usage.mdx b/documentation/sdks/python/advanced-usage.mdx index f4e11eee3..4e47d559e 100644 --- a/documentation/sdks/python/advanced-usage.mdx +++ b/documentation/sdks/python/advanced-usage.mdx @@ -34,7 +34,7 @@ if __name__ == "__main__": Create sophisticated task workflows: -```yaml +```yaml [expandable] name: Advanced Workflow description: Complex task with multiple steps and error handling diff --git a/documentation/sdks/python/agents.mdx b/documentation/sdks/python/agents.mdx index 058b1f312..bec851448 100644 --- a/documentation/sdks/python/agents.mdx +++ b/documentation/sdks/python/agents.mdx @@ -56,7 +56,7 @@ client.agents.tools.create( integration={ "provider": "brave", "method": "search", - "setup": {"api_key": "your_brave_api_key"} + "setup": {"brave_api_key": "your_brave_api_key"} } ) @@ -74,7 +74,7 @@ client.agents.tools.delete( Manage documents associated with your agent: -```python +```python [expandable] # Add a document doc = client.agents.docs.create( agent_id=agent.id, diff --git a/documentation/sdks/python/secrets.mdx b/documentation/sdks/python/secrets.mdx new file mode 100644 index 000000000..887e7fc37 --- /dev/null +++ b/documentation/sdks/python/secrets.mdx @@ -0,0 +1,324 @@ +--- +title: 'Managing Secrets with Python SDK' +description: 'How to manage secrets using the Julep Python SDK' +--- + +# Managing Secrets with Python SDK + +This guide covers how to manage secrets using the Julep Python SDK. Secrets allow you to securely store and use sensitive information like API keys, passwords, and access tokens in your Julep applications. + +## Installation + +Ensure you have the latest version of the Python SDK: + +```bash +pip install julep +``` + +## Authentication + +Initialize the client with your API key: + +```python +from julep import Julep + +client = Julep(api_key="your_api_key") +``` + +## Creating Secrets + +Create a new secret: + +```python +secret = client.secrets.create( + name="stripe_api_key", + value="sk_test_...", + description="Stripe API key for payment processing", + metadata={"environment": "production", "owner": "payments-team"} +) + +print(f"Created secret: {secret.name}") +``` + +### Required Parameters + +- `name`: The name of the secret (must be a valid identifier) +- `value`: The secret value to encrypt and store + +### Optional Parameters + +- `description`: A description of what the secret is used for +- `metadata`: A dictionary of metadata to associate with the secret + +## Listing Secrets + +List all available secrets: + +```python +# List all secrets +secrets = client.secrets.list() +for secret in secrets.items: + print(f"{secret.name}: {secret.description}") +``` + +### Pagination + +Use pagination to handle large numbers of secrets: + +```python +# List with pagination +secrets_page_1 = client.secrets.list(limit=10, offset=0) +secrets_page_2 = client.secrets.list(limit=10, offset=10) +``` + +### Filtering by Metadata + +Filter secrets based on metadata: + +```python +# Filter by metadata +production_secrets = client.secrets.list( + metadata={"environment": "production"} +) + +# Filter by multiple metadata fields +team_secrets = client.secrets.list( + metadata={ + "environment": "production", + "owner": "payments-team" + } +) +``` + +## Retrieving Secrets + +Get a specific secret by name: + +```python +secret = client.secrets.get(name="stripe_api_key") +print(f"Secret: {secret.name}, Created: {secret.created_at}") + +# Access the secret value +print(f"Secret value: {secret.value}") +``` + +> **Note**: For security, when listing secrets, the `.value` field will always show "ENCRYPTED". The actual secret value is only returned when specifically requesting a single secret by name. + +## Updating Secrets + +Update an existing secret: + +```python +updated_secret = client.secrets.update( + name="stripe_api_key", + value="sk_test_new_value...", + description="Updated Stripe API key", + metadata={"environment": "production", "owner": "payments-team", "rotated": "2025-05-10"} +) + +print(f"Updated secret: {updated_secret.name}") +``` + +### Partial Updates + +You can update specific fields without changing others: + +```python +# Update only the description +updated_secret = client.secrets.update( + name="stripe_api_key", + description="New description for Stripe API key" +) + +# Update only the metadata +updated_secret = client.secrets.update( + name="stripe_api_key", + metadata={"last_rotated": "2025-05-10"} +) +``` + +## Deleting Secrets + +Delete a secret when it's no longer needed: + +```python +client.secrets.delete(name="stripe_api_key") +print("Secret deleted") +``` + +## Using Secrets in Tasks + +Reference secrets when executing tasks: + +```python [expandable] +from julep import Julep + +client = Julep(api_key="your_api_key") + +# Define a task that uses a secret +task_definition = { + "steps": [ + { + "kind": "tool_call", + "tool": "openai", + "operation": "chat", + "arguments": { + "model": "gpt-4", + "messages": [ + {"role": "user", "content": "What's the weather like?"} + ] + }, + "secret_name": "openai_api_key" + } + ] +} + +# Create and execute the task +task = client.tasks.create(task=task_definition) +execution = client.tasks.execute(task_id=task.id) +``` + +### Using Secrets in Expressions + +You can reference secrets in expressions: + +```python +task_definition = { + "steps": [ + { + "kind": "transform", + "expression": "$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'", + "input": "search query", + "output": "api_url" + } + ] +} +``` + +### Using Multiple Secrets + +For tools that require multiple secrets: + +```python +task_definition = { + "steps": [ + { + "kind": "tool_call", + "tool": "database", + "operation": "query", + "arguments": { + "query": "SELECT * FROM users", + "connection": { + "host": "$ secrets.db_host", + "user": "$ secrets.db_username", + "password": "$ secrets.db_password", + "database": "$ secrets.db_name" + } + } + } + ] +} +``` + +## Error Handling + +Handle common errors when working with secrets: + +```python [expandable] +from julep.exceptions import ( + SecretNotFoundError, + SecretAlreadyExistsError, + ValidationError +) + +try: + secret = client.secrets.get(name="non_existent_secret") +except SecretNotFoundError: + print("Secret not found") + +try: + # Attempt to create a secret with an invalid name + secret = client.secrets.create(name="invalid name", value="test") +except ValidationError as e: + print(f"Validation error: {e}") + +try: + # Attempt to create a duplicate secret + secret = client.secrets.create(name="existing_secret", value="test") +except SecretAlreadyExistsError: + print("Secret already exists") +``` + +## Secret Rotation Example + +Implement a secret rotation policy: + +```python [expandable] +import uuid +from datetime import datetime + +def rotate_secret(client, secret_name, new_value): + """ + Safely rotate a secret by creating a new one and verifying it works + before deleting the old one. + """ + # Create a temporary secret with a random suffix + temp_name = f"{secret_name}_rotation_{uuid.uuid4().hex[:8]}" + + # Create the new secret + client.secrets.create( + name=temp_name, + value=new_value, + description=f"Temporary rotation for {secret_name}", + metadata={"rotation_date": datetime.now().isoformat()} + ) + + # Here you would test that the new secret works + # ... + + # If tests pass, update metadata on the old secret + old_secret = client.secrets.get(name=secret_name) + old_metadata = old_secret.metadata or {} + old_metadata.update({ + "archived": "true", + "replaced_by": temp_name, + "archived_date": datetime.now().isoformat() + }) + + client.secrets.update( + name=secret_name, + metadata=old_metadata + ) + + # Rename the temporary secret to the standard name + client.secrets.delete(name=secret_name) + client.secrets.update( + name=temp_name, + new_name=secret_name, + description=old_secret.description, + metadata={"last_rotated": datetime.now().isoformat()} + ) + + return client.secrets.get(name=secret_name) + +# Example usage +new_key = "sk_test_new_value_after_rotation" +rotated_secret = rotate_secret(client, "stripe_api_key", new_key) +print(f"Rotated secret: {rotated_secret.name}") +``` + +## Best Practices + +1. Use a consistent naming convention for all secrets +2. Add detailed descriptions and metadata to make secrets discoverable +3. Implement a rotation policy for sensitive secrets +4. Log secret operations (creation, updates, deletions) but never log values +5. Use try/except blocks to handle potential errors gracefully +6. Consider automating secret rotation for important credentials +7. Use metadata to track important dates and ownership information + +## Next Steps + +- [Common Secrets Patterns](/sdks/common/secrets) - Patterns that work across all SDKs +- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets +- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets \ No newline at end of file diff --git a/documentation/sdks/python/sessions.mdx b/documentation/sdks/python/sessions.mdx index e6cfab156..5baa496ab 100644 --- a/documentation/sdks/python/sessions.mdx +++ b/documentation/sdks/python/sessions.mdx @@ -23,7 +23,7 @@ session = client.sessions.create( Interact with an agent through a session: -```python +```python [expandable] # Single message response = client.sessions.chat( session_id=session.id, diff --git a/documentation/sdks/python/tasks.mdx b/documentation/sdks/python/tasks.mdx index f01e442ed..00e0e51a8 100644 --- a/documentation/sdks/python/tasks.mdx +++ b/documentation/sdks/python/tasks.mdx @@ -7,7 +7,7 @@ description: 'Learn how to create and manage tasks using the Python SDK' Create a task with a specific workflow: -```python +```python [expandable] import yaml task_yaml = """ @@ -50,7 +50,7 @@ task = client.tasks.create( A task in Julep consists of several components: -```python +```python [expandable] task = client.tasks.create( agent_id=agent.id, name="Complex Task", @@ -125,7 +125,7 @@ client.executions.cancel(execution_id=execution.id) Julep supports various control flow operations in tasks: -```yaml +```yaml [expandable] main: # Conditional execution - if: _.score > 0.8 diff --git a/documentation/sdks/python/tools-integration.mdx b/documentation/sdks/python/tools-integration.mdx index e0f62000d..c9d5403c3 100644 --- a/documentation/sdks/python/tools-integration.mdx +++ b/documentation/sdks/python/tools-integration.mdx @@ -26,7 +26,7 @@ client.agents.tools.create( "provider": "brave", "method": "search", "setup": { - "api_key": "your_brave_api_key" + "brave_api_key": "your_brave_api_key" } } ) @@ -56,7 +56,7 @@ client.agents.tools.create( Create custom tools using function definitions: -```python +```python [expandable] # Define a custom tool client.agents.tools.create( agent_id=agent.id, @@ -105,7 +105,7 @@ client.agents.tools.create( Make direct API calls from your tasks: ```python -# Add external API integration +# Add external API integration with params_schema client.agents.tools.create( agent_id=agent.id, name="weather_api", @@ -115,6 +115,21 @@ client.agents.tools.create( "url": "https://api.weather.com/v1/current", "headers": { "Authorization": "Bearer {{env.WEATHER_API_KEY}}" + }, + "params_schema": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "City name or coordinates" + }, + "units": { + "type": "string", + "enum": ["metric", "imperial"], + "description": "Temperature units" + } + }, + "required": ["location"] } } ) @@ -124,7 +139,7 @@ client.agents.tools.create( Example of using tools in a task: -```yaml +```yaml [expandable] name: Research Assistant description: Research and summarize topics diff --git a/documentation/snippets/integrations-slider.jsx b/documentation/snippets/integrations-slider.jsx new file mode 100644 index 000000000..7e6ce24c1 --- /dev/null +++ b/documentation/snippets/integrations-slider.jsx @@ -0,0 +1,78 @@ +export const IntegrationsSlider = () => { + const [position, setPosition] = useState(0) + + const integrations = [ + { type: "image", content: "/integrations/assets/email.png", name: "Email" }, + { type: "image", content: "/integrations/assets/OWM.png", name: "Weather" }, + { type: "image", content: "/integrations/assets/llamacloud-black.svg", name: "LlamaParse" }, + { type: "image", content: "/integrations/assets/FFmpeg-Logo.svg", name: "FFmpeg" }, + { type: "image", content: "/integrations/assets/Cloudinary_logo.svg.png", name: "Cloudinary" }, + { type: "image", content: "/integrations/assets/unstructured-color.png", name: "Unstructured" }, + { type: "image", content: "/integrations/assets/ArXiv_logo_2022.svg.png", name: "Arxiv" }, + { type: "image", content: "/integrations/assets/Algolia_logo_full_blue.svg", name: "Algolia" }, + { type: "image", content: "/integrations/assets/Brave_logo.svg.png", name: "Brave" }, + { type: "image", content: "/integrations/assets/pngimg.com - wikipedia_PNG30.png", name: "Wikipedia" }, + { type: "image", content: "/integrations/assets/logo-full.svg", name: "BrowserBase" }, + { type: "image", content: "/integrations/assets/spider-logo-github-dark.png", name: "Spider" }, + { type: "image", content: "/integrations/assets/Playwright_Logo.svg.png", name: "Remote Browser" }, + ] + + const duplicatedIntegrations = useMemo( + () => [...integrations, ...integrations], + [] + ) + + useEffect(() => { + const interval = setInterval(() => { + setPosition((prev) => + prev >= integrations.length * 100 ? 0 : prev + 1 + ); + }, 30); + return () => clearInterval(interval); + }, [integrations.length]) + + return ( +
        +
        + {duplicatedIntegrations.map((integration, idx) => ( +
        + {integration.type === "emoji" ? ( + {integration.content} + ) : ( + {integration.name} + )} +
        + ))} +
        +
        + ) +} \ No newline at end of file diff --git a/documentation/style.css b/documentation/style.css new file mode 100644 index 000000000..fb498d1ff --- /dev/null +++ b/documentation/style.css @@ -0,0 +1,31 @@ +.topbar-cta-button, #topbar-cta-button, .topbar-cta-button a, #topbar-cta-button a { + background: linear-gradient(135deg, #25A18E 0%, #00A5CF 100%) !important; + color: #ffffff !important; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 0.32rem 1rem !important; + border-radius: 8px !important; + position: relative; + overflow: hidden; + transition: transform 0.15s ease-in-out; + box-shadow: 0 3px 8px rgba(0, 165, 207, 0.35); + animation: julep-cta-pulse 3.5s infinite; +} + +.topbar-cta-button:hover { + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 165, 207, 0.55); +} + +@keyframes julep-cta-pulse { + 0% { + box-shadow: 0 0 0 0 rgba(0, 165, 207, 0.5); + } + 70% { + box-shadow: 0 0 0 12px rgba(0, 165, 207, 0); + } + 100% { + box-shadow: 0 0 0 0 rgba(0, 165, 207, 0); + } +} \ No newline at end of file diff --git a/documentation/tutorials/browser-use.mdx b/documentation/tutorials/browser-use.mdx index 714894253..2784ae3b0 100644 --- a/documentation/tutorials/browser-use.mdx +++ b/documentation/tutorials/browser-use.mdx @@ -43,7 +43,7 @@ This schema specifies that our task expects a goal string describing what the br Next, we define the external tools our task will use: -```yaml +```yaml [expandable] tools: - name: create_browserbase_session type: integration @@ -51,7 +51,7 @@ tools: provider: browserbase method: create_session setup: - api_key: YOUR_BROWSERBASE_API_KEY + api_key: "YOUR_BROWSERBASE_API_KEY" project_id: YOUR_PROJECT_ID - name: get_session_view_urls @@ -230,7 +230,7 @@ The `run_browser` subworkflow is a crucial component that handles the interactiv -```yaml +```yaml [expandable] - evaluate: contents: >- $ [ \ @@ -295,8 +295,8 @@ This recursive pattern ensures that the browser automation continues until eithe - An error occurs that prevents further progress -```yaml YAML -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Browser Use Task description: A Julep agent that can use the computer tool to interact with the browser. @@ -512,7 +512,7 @@ Here's how to use this task with the Julep SDK: -```python Python +```python Python [expandable] from julep import Client import yaml import time @@ -557,7 +557,7 @@ else: print(f"Error: {result.error}") ``` -```js Node.js +```js Node.js [expandable] import { Julep } from '@julep/sdk'; import yaml from 'yaml'; import fs from 'fs'; @@ -622,5 +622,11 @@ if (result.status === 'succeeded') { ## Next Steps -- Try this task yourself, check out the full example, see the [browser-use cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/06-browser-use.ipynb). -- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. \ No newline at end of file +- Try this task yourself, check out the full example, see the [browser-use cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/06-browser-use.ipynb). + - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Tools](/concepts/tools) diff --git a/documentation/tutorials/hacker-news-newsletter.mdx b/documentation/tutorials/hacker-news-newsletter.mdx new file mode 100644 index 000000000..4c04a0428 --- /dev/null +++ b/documentation/tutorials/hacker-news-newsletter.mdx @@ -0,0 +1,708 @@ +--- +title: 'Hacker News Newsletter Generator' +description: 'Learn how to build a personalized newsletter generator that fetches top Hacker News stories, analyzes their relevance to user interests, and creates AI-powered summaries' +icon: 'newspaper' +--- + +## Overview + +This tutorial demonstrates how to: +- Fetch and filter top stories from Hacker News API +- Scrape full article content using web scraping integration +- Personalize content based on user preferences using AI +- Generate concise summaries for curated stories +- Process data in parallel for optimal performance + +## Task Structure + +Let's break down the task into its core components: + +### 1. Input Schema + +First, we define what inputs our task expects: + +```yaml +input_schema: + type: object + properties: + min_score: + type: integer + default: 50 + num_stories: + type: integer + default: 10 + description: Number of stories to include in newsletter + user_preferences: + type: array + items: + type: string + description: User's technology interests (e.g., ["AI/ML", "Python", "Startups"]) +``` + +This schema allows users to: +- Set a minimum HN score threshold for quality filtering +- Specify how many stories to include in the final newsletter +- Define their technology interests for personalization + +### 2. Tools Configuration + +Next, we define the external tools our task will use: + +```yaml +- name: fetch_hn_stories + type: api_call + api_call: + method: GET + url: https://hacker-news.firebaseio.com/v0/topstories.json + headers: + Content-Type: application/json + +- name: get_story_details + type: api_call + api_call: + method: GET + url: "https://example.com" + headers: + Content-Type: application/json + +- name: get_comment_details + type: api_call + api_call: + method: GET + url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json + +- name: spider_fetch + type: integration + integration: + provider: spider + setup: + spider_api_key: YOUR_SPIDER_API_KEY +``` + +We're using: +- Direct Hacker News API calls for stories and comments +- Spider integration for advanced web scraping capabilities + +### 3. Main Workflow Steps + + + + +```yaml +- tool: fetch_hn_stories + arguments: + url: "https://hacker-news.firebaseio.com/v0/topstories.json" + label: fetch_story_ids + +- evaluate: + story_ids: $ steps["fetch_story_ids"].output.json[:50] + message: $ f"Fetched {len(steps['fetch_story_ids'].output.json)} stories, processing top 50" + label: extract_ids +``` + + This step: + - Fetches the current top 500 story IDs from Hacker News + - Extracts the first 50 for processing + + + +```yaml +- over: $ steps["extract_ids"].output["story_ids"] + parallelism: 10 + map: + tool: get_story_details + arguments: + method: GET + url: $ f"https://hacker-news.firebaseio.com/v0/item/{_}.json" + label: all_stories + +- evaluate: + stories: $ [item["json"] for item in _ if item and "json" in item] + label: extract_stories +``` + + This step: + - Fetches full details for each story ID + - Processes 10 stories in parallel for efficiency + - Extracts successfully fetched story data + + + +```yaml +- evaluate: + filtered: $ [s for s in steps["extract_stories"]["output"]["stories"] + if "score" in s and s["score"] >= inputs.get("min_score", 50)] + label: filter_stories + +- evaluate: + sorted_stories: '$ steps["filter_stories"]["output"]["filtered"][:inputs.get("num_stories", 10)]' + label: sort_stories +``` + + This step: + - Filters stories by minimum score threshold + - Sorts by score and takes the top N stories + - Ensures quality content for the newsletter + + + +```yaml [expandable] +- over: $ steps["sort_stories"]["output"]["sorted_stories"] + parallelism: 4 + map: + tool: spider_fetch + arguments: + url: $ _['url'] + params: + request: smart_mode + return_format: markdown + proxy_enabled: $ True + filter_output_images: $ True + filter_output_svg: $ True + readability: $ True + limit: 1 + label: fetch_content + +- evaluate: + scraped_contents: '$ [item["result"][0]["content"] if item and "result" in item + and item["result"] and "content" in item["result"][0] else "" + for item in _]' + label: extract_scraped_content +``` + + + - **smart_mode**: Intelligently extracts main content + - **return_format: markdown**: Clean, parseable text format + - **proxy_enabled**: Avoids rate limiting and blocks + - **filter_output_images/svg**: Text-only content + - **readability**: Enhanced article parsing + - **parallelism: 4**: Balanced to avoid overwhelming target sites + + + This step: + - Scrapes full article content for each story + - Converts to clean markdown format + - Handles failed scrapes gracefully + + + +```yaml +- evaluate: + comment_pairs: '$ [{"story_id": story["id"], "story_index": idx, "comment_id": kid} + for idx, story in enumerate(steps["sort_stories"]["output"]["sorted_stories"]) + if "kids" in story for kid in story["kids"][:3]]' + label: prepare_comments + +- over: '$ steps["prepare_comments"]["output"]["comment_pairs"]' + parallelism: 15 + map: + tool: get_comment_details + arguments: + method: GET + url: '$ f"https://hacker-news.firebaseio.com/v0/item/{_["comment_id"]}.json"' + label: fetch_all_comments +``` + + This step: + - Prepares comment IDs (up to 3 per story) + - Fetches comment details with high parallelism + - Maintains story-comment relationships + + + +```yaml [expandable] +- evaluate: + stories_with_comments: '$ [dict(story, + content=steps["extract_scraped_content"]["output"]["scraped_contents"][i], + top_comments=[item[1] for item in steps["comments_with_index"]["output"]["comments_grouped"] + if item[0] == i]) + for i, story in enumerate(steps["sort_stories"]["output"]["sorted_stories"])]' + label: final_stories_with_comments + +- over: $ steps["final_stories_with_comments"]["output"]["stories_with_comments"] + parallelism: 10 + map: + prompt: + - role: system + content: |- + $ f''' + You are a content curator. Score this HN story's relevance to the user's interests. + User interests: {steps[0].input.user_preferences} + + Return only a JSON object with the relevance score (0-100). + Return ONLY raw JSON without markdown code blocks + ''' + - role: user + content: >- + $ f''' + Story to analyze: + Title: {_["title"]} + URL: {_["url"]} + Score: {_["score"]} + Content preview: {_["content"]} + Top comment: {_["top_comments"][0]["text"]} + + Return format: "relevance_score" from 0 to 100 + ''' + unwrap: true + label: score_stories + +- evaluate: + personalized_stories: $ [item for item in steps["combine_scores"]["output"]["scored_stories"] + if item["relevance_score"] >= 60] + label: filter_personalized +``` + + This step: + - Combines stories with their content and comments + - Uses AI to score relevance (0-100) based on user preferences + - Filters stories with relevance >= 60 for high personalization + + + +```yaml +- over: $ steps["filter_personalized"]["output"]["personalized_stories"] + parallelism: 10 + map: + prompt: + - role: system + content: | + Generate a concise, insightful summary (max 100 words) for this article. + Focus on key insights and why it matters. + - role: user + content: >- + $ f''' + Title: {_["story"]["title"]} + Content: {_["story"]["content"]} + Top comments: {_["story"]["top_comments"]} + ''' + unwrap: true + label: generate_summaries + +- evaluate: + final_output: | + $ [{ + "title": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"]["title"], + "url": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"]["url"], + "hn_url": f"https://news.ycombinator.com/item?id={steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}", + "comments_count": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"].get("descendants", 0), + "summary": steps["generate_summaries"]["output"][i] + } for i in range(len(steps["filter_personalized"]["output"]["personalized_stories"]))] + label: prepare_final_output +``` + + This step: + - Generates 100-word AI summaries for each story + - Formats the final newsletter with all relevant information + - Includes both article URL and HN discussion URL + + + + + +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json +name: HN Newsletter Generator +description: Fetch top Hacker News stories, personalize content +input_schema: + type: object + properties: + min_score: + type: integer + default: 50 + num_stories: + type: integer + default: 10 + description: Number of stories to include in newsletter + user_preferences: + type: array + items: + type: string + description: User's technology interests (e.g., ["AI/ML", "Python", "Startups"]) + +tools: +# Fetch top story IDs from Hacker News +- name: fetch_hn_stories + type: api_call + api_call: + method: GET + url: https://hacker-news.firebaseio.com/v0/topstories.json + headers: + Content-Type: application/json + +# Get detailed information for a specific story +- name: get_story_details + type: api_call + api_call: + method: GET + url: "https://example.com" + headers: + Content-Type: application/json + +# Fetch individual comment details +- name: get_comment_details + type: api_call + api_call: + method: GET + url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json + +# Spider web scraping integration +- name: spider_fetch + type: integration + integration: + provider: spider + setup: + spider_api_key: YOUR_SPIDER_API_KEY + +main: +# Step 0: Fetch top story IDs from Hacker News +- tool: fetch_hn_stories + arguments: + url: "https://hacker-news.firebaseio.com/v0/topstories.json" + label: fetch_story_ids + +# Step 1: Extract first 50 story IDs +- evaluate: + story_ids: $ steps["fetch_story_ids"].output.json[:50] + message: $ f"Fetched {len(steps['fetch_story_ids'].output.json)} stories, processing top 50" + label: extract_ids + +# Step 2: Fetch details for each story in parallel +- over: $ steps["extract_ids"].output["story_ids"] + parallelism: 10 + map: + tool: get_story_details + arguments: + method: GET + url: $ f"https://hacker-news.firebaseio.com/v0/item/{_}.json" + label: all_stories + +# Step 3: Extract successfully fetched story data +- evaluate: + stories: $ [item["json"] for item in _ if item and "json" in item] + label: extract_stories + +# Step 4: Filter by score +- evaluate: + filtered: $ [s for s in steps["extract_stories"]["output"]["stories"] if "score" in s and s["score"] >= inputs.get("min_score", 50)] + label: filter_stories + +# Step 5: Sort stories by score and limit +- evaluate: + sorted_stories: '$ steps["filter_stories"]["output"]["filtered"][:inputs.get("num_stories", 10)]' + label: sort_stories + +# Step 6: Fetch full article content using Spider +- over: $ steps["sort_stories"]["output"]["sorted_stories"] + parallelism: 4 + map: + tool: spider_fetch + arguments: + url: $ _['url'] + params: + request: smart_mode + return_format: markdown + proxy_enabled: $ True + filter_output_images: $ True + filter_output_svg: $ True + readability: $ True + limit: 1 + label: fetch_content + +# Step 7: Extract scraped content +- evaluate: + scraped_contents: '$ [item["result"][0]["content"] if item and "result" in item and item["result"] and "content" in item["result"][0] else "" for item in _]' + label: extract_scraped_content + +# Step 8: Prepare comment fetching +- evaluate: + comment_pairs: '$ [{"story_id": story["id"], "story_index": idx, "comment_id": kid} for idx, story in +enumerate(steps["sort_stories"]["output"]["sorted_stories"]) if "kids" in story for kid in story["kids"][:3]]' + label: prepare_comments + +# Step 9: Fetch all comment details +- over: '$ steps["prepare_comments"]["output"]["comment_pairs"]' + parallelism: 15 + map: + tool: get_comment_details + arguments: + method: GET + url: '$ f"https://hacker-news.firebaseio.com/v0/item/{_["comment_id"]}.json"' + label: fetch_all_comments + +# Step 10: Extract comment data +- evaluate: + comment_results: '$ [item["json"] for item in _ if item and "json" in item and item["json"]]' + label: extract_comments + +# Step 11: Group comments by story +- evaluate: + comments_grouped: '$ [[pair["story_index"], steps["extract_comments"]["output"]["comment_results"][i]] for i, pair in +enumerate(steps["prepare_comments"]["output"]["comment_pairs"])]' + label: comments_with_index + +# Step 12: Combine stories with content and comments +- evaluate: + stories_with_comments: '$ [dict(story, content=steps["extract_scraped_content"]["output"]["scraped_contents"][i], top_comments=[item[1] for item in +steps["comments_with_index"]["output"]["comments_grouped"] if item[0] == i]) for i, story in enumerate(steps["sort_stories"]["output"]["sorted_stories"])]' + label: final_stories_with_comments + +# Step 13: Score stories based on user preferences +- over: $ steps["final_stories_with_comments"]["output"]["stories_with_comments"] + parallelism: 10 + map: + prompt: + - role: system + content: |- + $ f''' + You are a content curator. Score this HN story's relevance to the user's interests. + User interests: $ {{ steps[0].input.user_preferences }} + + Return only a JSON object with the relevance score (0-100). + Return ONLY raw JSON without markdown code blocks + ''' + - role: user + content: >- + $ f''' + Story to analyze: + Title: $ {{ _["title"] }} + URL: $ {{ _["url"] }} + Score: $ {{ _["score"] }} + Content preview: $ {{ _["content"]}} + Top comment: $ {{ _["top_comments"][0]["text"] }} + + Return format: "relevance_score" from 0 to 100 + ''' + unwrap: true + label: score_stories + +# Step 14: Combine with scores +- evaluate: + scored_stories: '$ [{"story": steps["final_stories_with_comments"]["output"]["stories_with_comments"][i], "relevance_score": json.loads(steps["score_stories"]["output"][i])["relevance_score"]} for i in range(len(steps["score_stories"]["output"]))]' + label: combine_scores + +# Step 15: Filter by relevance +- evaluate: + personalized_stories: $ [item for item in steps["combine_scores"]["output"]["scored_stories"] if item["relevance_score"] >= 60] + label: filter_personalized + +# Step 16: Generate summaries +- over: $ steps["filter_personalized"]["output"]["personalized_stories"] + parallelism: 10 + map: + prompt: + - role: system + content: | + Generate a concise, insightful summary (max 100 words) for this article. + Focus on key insights and why it matters. + - role: user + content: >- + $ f''' + Title: {{ _["story"]["title"] }} + Content: {{ _["story"]["content"] }} + Top comments: {{ _["story"]["top_comments"] }} + ''' + unwrap: true + label: generate_summaries + +# Step 17: Prepare final output +- evaluate: + final_output: | + $ [{ + "title": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"]["title"], + "url": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"]["url"], + "hn_url": f"https://news.ycombinator.com/item?id={{steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}}", + "comments_count": steps["filter_personalized"]["output"]["personalized_stories"][i]["story"].get("descendants", 0), + "summary": steps["generate_summaries"]["output"][i] + } for i in range(len(steps["filter_personalized"]["output"]["personalized_stories"]))] + label: prepare_final_output +``` + + +## Usage + +Here's how to use this task with the Julep SDK: + + + +```python Python [expandable] +from julep import Client +import time +import yaml + +# Initialize the client +client = Client(api_key=JULEP_API_KEY) + +# Create the agent +agent = client.agents.create( + name="Hacker News Agent", + about="A hacker news agent that can fetch the top stories from Hacker News and summarize them.", + model="gpt-4o" +) + +# Load the task definition +with open('hn_newsletter_task.yaml', 'r') as file: + task_definition = yaml.safe_load(file) + +# Create the task +task = client.tasks.create( + agent_id=agent.id, + **task_definition +) + +# Create the execution +execution = client.executions.create( + task_id=task.id, + input={ + "min_score": 100, + "num_stories": 5, + "user_preferences": ["AI/ML", "Python", "DevOps", "Cloud Computing"] + } +) + +# Wait for the execution to complete +while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']: + print(result.status) + time.sleep(5) + +# Print the result +if result.status == "succeeded": + for story in result.output['final_output']: + print(f"Title: {story['title']}") + print(f"URL: {story['url']}") + print(f"HN Discussion: {story['hn_url']}") + print(f"Comments: {story['comments_count']}") + print(f"Summary: {story['summary']}") + print("-" * 80) +else: + print(f"Error: {result.error}") +``` + +```js Node.js [expandable] +import { Julep } from '@julep/sdk'; +import fs from 'fs'; +import yaml from 'yaml'; + +// Initialize the client +const client = new Julep({ + apiKey: 'your_julep_api_key' +}); + +// Create the agent +const agent = await client.agents.create({ + name: "Hacker News Agent", + about: "A hacker news agent that can fetch the top stories from Hacker News and summarize them.", + model: "gpt-4o" +}); + +// Load the task definition +const taskDefinition = yaml.parse(fs.readFileSync('hn_newsletter_task.yaml', 'utf8')); + +// Create the task +const task = await client.tasks.create( + agent.id, + taskDefinition +); + +// Create the execution +const execution = await client.executions.create( + task.id, + { + input: { + min_score: 100, + num_stories: 5, + user_preferences: ["AI/ML", "Python", "DevOps", "Cloud Computing"] + } + } +); + +// Wait for the execution to complete +let result; +while (true) { + result = await client.executions.get(execution.id); + if (result.status === 'succeeded' || result.status === 'failed') break; + console.log(result.status); + await new Promise(resolve => setTimeout(resolve, 5000)); +} + +// Print the result +if (result.status === 'succeeded') { + result.output.final_output.forEach(story => { + console.log(`Title: ${story.title}`); + console.log(`URL: ${story.url}`); + console.log(`HN Discussion: ${story.hn_url}`); + console.log(`Comments: ${story.comments_count}`); + console.log(`Summary: ${story.summary}`); + console.log('-'.repeat(80)); + }); +} else { + console.error(`Error: ${result.error}`); +} +``` + + + +## Example Output + +An example output when running this task with user preferences for AI/ML and Python: + + +**Title:** OpenAI Announces GPT-5 with Revolutionary Reasoning Capabilities +**URL:** https://openai.com/research/gpt-5 +**HN Discussion:** https://news.ycombinator.com/item?id=12345678 +**Comments:** 234 +**Summary:** OpenAI's GPT-5 demonstrates unprecedented reasoning abilities and multimodal understanding. The model shows significant improvements in code generation, mathematical reasoning, and real-world problem solving. Key breakthrough involves new architecture allowing dynamic computation allocation based on task complexity. Community discusses implications for AI safety and potential applications in scientific research. + +--- + +**Title:** Python 3.13 Released with Major Performance Improvements +**URL:** https://python.org/downloads/release/python-313 +**HN Discussion:** https://news.ycombinator.com/item?id=12345679 +**Comments:** 156 +**Summary:** Python 3.13 brings 40% performance improvements through adaptive bytecode specialization and improved memory management. New features include better error messages, enhanced typing support, and native WASM compilation. Developers report significant speedups in data processing workloads. Discussion highlights compatibility concerns with popular libraries and migration strategies for large codebases. + +--- + +**Title:** New ML Framework Achieves 10x Training Speed on Consumer GPUs +**URL:** https://github.com/fastML/framework +**HN Discussion:** https://news.ycombinator.com/item?id=12345680 +**Comments:** 189 +**Summary:** FastML framework enables training large language models on consumer hardware through innovative gradient compression and distributed computing techniques. Benchmarks show 10x speedup compared to PyTorch for specific workloads. Framework supports automatic mixed precision and memory-efficient attention mechanisms. Community excited about democratizing ML research but debates production readiness. + + +## Monitoring Execution + +Track the execution progress and debug issues: + +```python +# Get execution transitions +transitions = client.executions.transitions.list(execution.id).items + +for i, transition in enumerate(transitions): + print(f"Step {i}: {transition.type}") + if transition.type == "step": + print(f"Label: {transition.current.label}") + print(f"Status: {transition.status}") + if transition.status == "failed": + print(f"Error: {transition.error}") + print("-" * 40) +``` + +## Customization Ideas + +1. **Email Integration**: Add email sending to deliver newsletters automatically +2. **Scheduling**: Set up periodic execution for daily/weekly newsletters + +## Next Steps + +- Try this task yourself, check out the full example in the [Hacker News cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/11-hacker-news.ipynb) +- Learn more about the [Spider integration](/integrations/spider) for web scraping +- Explore [parallel processing patterns](/advanced/types-of-task-steps#parallel-execution) in Julep + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Tools](/concepts/tools) +- [Integrations](/integrations/supported-integrations) +- [Python Expressions](/advanced/python-expression) \ No newline at end of file diff --git a/documentation/tutorials/julep-assistant.mdx b/documentation/tutorials/julep-assistant.mdx new file mode 100644 index 000000000..88271150b --- /dev/null +++ b/documentation/tutorials/julep-assistant.mdx @@ -0,0 +1,560 @@ +--- +title: 'Building a RAG-powered AI Assistant with Julep' +description: 'Learn how to build an intelligent AI support assistant using Julep with document indexing, RAG capabilities, and a chat interface' +icon: 'robot' +--- + +## Overview + +This tutorial demonstrates how to build a production-ready AI assistant using Julep. We'll create an intelligent support assistant that can: + +- Crawl and index documentation automatically +- Answer questions using RAG (Retrieval-Augmented Generation) +- Provide contextual, accurate responses based on indexed content +- Offer an interactive chat interface with session management +- Collect and validate user feedback for continuous improvement + +## What You'll Learn + +By the end of this tutorial, you'll understand how to: + +1. Configure a Julep agent with specific instructions and capabilities +2. Create complex workflows for document processing and indexing +3. Implement RAG-powered conversations with hybrid search +4. Build an interactive chat interface using Chainlit +5. Deploy a production-ready AI assistant + +## Prerequisites + +- Python 3.8+ +- Julep API key (get one at [platform.julep.ai](https://platform.julep.ai)) +- Basic understanding of Julep concepts (agents, tasks, sessions) +- Spider API key for web crawling + +## Project Structure + +The Julep Assistant project is organized as follows: + +```bash +julep-assistant/ +├── agent.yaml # Agent configuration +├── task/ # Julep task definitions +│ ├── main.yaml # Main workflow task +│ ├── crawl.yaml # Web crawling sub-task +│ └── full_task.yaml # Complete task with all steps +├── scripts/ # Utility scripts +│ ├── crawler.py # Standalone web crawler +│ └── indexer.py # Document indexing utility +├── chainlit-ui/ # Web interface +│ ├── app.py # Main Chainlit application +│ ├── feedback/ # Feedback handling system +│ └── requirements.txt # Python dependencies +└── julep-assistant-notebook.ipynb # Interactive notebook demo +``` + +## Step 1: Agent Configuration + +First, let's understand how the agent is configured. The `agent.yaml` file defines the assistant's personality and capabilities: + +```yaml +name: Julep Support Assistant +about: >- + You are the official Julep AI support assistant. You help developers + understand and use the Julep platform effectively. + +model: claude-sonnet-4 + +instructions: |- + You are the official Julep AI support assistant. Your purpose is to help + developers build AI applications using the Julep platform. + + Your core responsibilities: + 1. **Workflow Assistance**: Help users write, debug, and optimize Julep workflows + 2. **Concept Explanation**: Clearly explain Julep concepts like agents, tasks, sessions, and tools + 3. **Code Examples**: Provide working code examples in Python, YAML, or JavaScript + 4. **API Guidance**: Help users understand and use Julep's API effectively + 5. **Best Practices**: Share proven patterns and architectural recommendations + + Guidelines: + - Always provide accurate, up-to-date information from the official documentation + - Include code examples whenever possible + - Use proper syntax highlighting for code blocks + - Explain the "why" behind recommendations, not just the "how" +``` + +Key points: +- The agent uses Claude Sonnet 4 for high-quality responses +- Instructions provide clear guidance on how to help users +- The agent is specialized for Julep-specific support + +## Step 2: Web Crawling and Document Indexing + +The assistant's knowledge base is built in two stages: first crawling documentation websites, then indexing the content for RAG retrieval. + +### Web Crawling with Spider Integration + +Before indexing documents, we need to crawl the target website. The `task/crawl.yaml` defines a reusable crawling workflow: + +```yaml +name: Julep Documentation Crawler Task +description: A Julep agent that can crawl the Julep documentation website and store the content in the document store with proper contextualization. + +input_schema: + type: object + properties: + url: + type: string + description: "The URL of the documentation page" + required: + - url + +tools: +- name: spider_crawler + type: integration + integration: + provider: spider + setup: + spider_api_key: {spider_api_key} + +main: +- tool: spider_crawler + arguments: + url: $ _['url'] + params: + request: smart_mode + return_format: markdown + proxy_enabled: $ True + filter_output_images: $ True + filter_output_svg: $ True + readability: $ True +``` + +### Complete Workflow: Crawl + Index + +The `task/full_task.yaml` combines both crawling and indexing into a single workflow: + +```yaml +main: +# Step 0: Crawl the Julep documentation using Spider (will crawl multiple pages) +- tool: spider_crawler + arguments: + url: $ _['url'] + params: + request: smart_mode + limit: 2 + return_format: markdown + proxy_enabled: $ True + filter_output_images: $ True + filter_output_svg: $ True + readability: $ True + +# Step 1: Process each crawled page individually +- over: $ [page for page in _.result if page.status == 200 and page.content] + parallelism: 5 + map: + workflow: process_single_page + arguments: + url: $ _.url + content: $ _.content +``` + +The key Spider crawler parameters: +- `smart_mode`: Intelligently navigates and extracts content +- `limit`: Number of pages to crawl (set to 2 for testing, increase for production) +- `return_format: markdown`: Returns clean markdown content +- `proxy_enabled`: Uses proxy for better reliability +- `filter_output_images/svg`: Removes images to focus on text content +- `readability`: Extracts main content, removing navigation and ads + +### Document Indexing Workflow + +After crawling, the main workflow in `task/main.yaml` processes and indexes the content: + +### Input Schema + +```yaml +input_schema: + type: object + properties: + url: + type: string + description: "The URL of the documentation page" + content: + type: string + description: "The markdown content of the documentation page" + required: + - url + - content +``` + +### Document Processing Steps + + + + The workflow starts by creating documentation-sized chunks: + + ```yaml + - evaluate: + chunks: | + $ [" ".join(_.content.strip().split()[i:i + 1500]) + for i in range(0, len(_.content.strip().split()), 1200)] + ``` + + This creates ~1500 word chunks with 300-word overlap to preserve context. + + + + Each page is analyzed to extract structured information: + + ```yaml + - prompt: + - role: system + content: |- + Analyze the documentation content and extract: + - primary_concepts: Which Julep concepts does this content cover? + - content_type: (tutorial, api_reference, concept_explanation, etc.) + - key_topics: Main topics discussed + - code_examples: Whether it contains code examples + - use_cases: Practical applications mentioned + ``` + + + + All code examples are extracted and categorized: + + ```yaml + - prompt: + - role: system + content: |- + Extract all code examples from the documentation content. + For each code example found, identify: + - language: The programming language + - code: The actual code content + - purpose: What this code demonstrates + - context: When to use this code + ``` + + + + For each chunk, the system generates questions and answers: + + ```yaml + - prompt: + - role: system + content: |- + Generate 3-5 relevant questions users might ask about this chunk + Provide clear, concise answers based on the content + Add contextual information to improve search retrieval + ``` + + + + Finally, enhanced content is stored as agent documents: + + ```yaml + - tool: create_agent_doc + arguments: + agent_id: $ str(agent.id) + data: + metadata: + source: "spider_crawler" + url: $ steps[0].input.page_url + content_type: $ steps[2].output.doc_analysis.get('content_type') + concepts: $ steps[2].output.doc_analysis.get('primary_concepts') + content: $ _["final_content"] + ``` + + + +## Step 3: Building the Chat Interface + +The chat interface is built with Chainlit, providing a smooth user experience. Here's how it works: + +### Session Initialization + +```python +@cl.on_chat_start +async def on_chat_start(): + """Initialize a new chat session""" + + # Create session with RAG search options + session = await julep_client.sessions.create( + agent=AGENT_UUID, + recall_options={ + "mode": "hybrid", # Uses both vector and text search + "confidence": 0.7, # Confidence threshold + "limit": 10, # Max number of results + "embed_text": True # Embed query for vector search + } + ) + + # Store session for later use + cl.user_session.set("session", session) +``` + +### Message Handling + +```python +@cl.on_message +async def on_message(message: cl.Message): + """Handle incoming user messages""" + + # Get the session + session = cl.user_session.get("session") + + # Send message to Julep and stream response + msg = cl.Message(content="") + + response = await julep_client.sessions.chat( + session_id=session.id, + message={ + "role": "user", + "content": message.content + }, + stream=True + ) + + # Stream tokens to user + async for chunk in response: + if chunk.choices[0].delta.content: + await msg.stream_token(chunk.choices[0].delta.content) + + await msg.send() +``` + +## Step 4: RAG Configuration + +The assistant uses hybrid search for optimal retrieval: + +```python +recall_options={ + "mode": "hybrid", # Combines vector and text search + "confidence": 0.7, # Minimum confidence score + "limit": 10, # Maximum results to retrieve + "embed_text": True # Enable embeddings for vector search +} +``` + +### Search Modes Explained + +- **Hybrid Mode**: Combines semantic vector search with keyword matching +- **Vector Mode**: Pure semantic search based on embeddings +- **Text Mode**: Traditional keyword-based search + +## Step 5: Dynamic Feedback System + +The assistant implements an innovative feedback system that dynamically improves the agent's behavior by updating its instructions in real-time based on validated user feedback. + +### How the Feedback System Works + +The feedback system validates and applies user feedback directly to the agent's instructions: + +```python +class FeedbackHandler: + async def process_feedback( + self, + feedback_text: str, + user_question: str, + agent_response: str, + session_id: str + ) -> Dict[str, Any]: + """Process user feedback and update agent instructions if valid""" + + # Get current agent details + agent = await self.client.agents.get(agent_id=self.agent_id) + + # Validate the feedback using AI + validation_result = await self.validator.validate_feedback( + feedback_text=feedback_text, + user_question=user_question, + agent_response=agent_response, + agent_instructions=current_instructions_str + ) + + # If feedback is valid with high confidence (>= 0.7) + if validation_result.get("is_valid") and validation_result.get("confidence", 0) >= 0.7: + updated_instructions = validation_result.get("updated_instructions") + + if updated_instructions: + # Update the agent with new instructions + await self.client.agents.create_or_update( + agent_id=self.agent_id, + name=agent.name, + instructions=updated_instructions, + ) +``` + +### Feedback Validation Process + +The system uses AI to validate feedback before applying it: + +```python +class FeedbackValidator: + async def validate_feedback(self, feedback_text, user_question, agent_response, agent_instructions): + """Validate feedback using AI to ensure it's constructive and applicable""" + + # AI validates if feedback is: + # 1. Constructive and specific + # 2. Relevant to improving the agent + # 3. Not contradicting core functionality + # 4. Actionable for instruction updates + + # Returns: + # - is_valid: boolean + # - confidence: 0-1 score + # - category: type of feedback + # - updated_instructions: new instructions if applicable +``` + +### Feedback Collection UI + +The system provides three feedback options: + +```python +def create_feedback_actions(self, message_id: str) -> list: + """Create Chainlit actions for feedback collection""" + return [ + cl.Action( + name="feedback_helpful", + payload={"value": "helpful"}, + label="👍 Helpful" + ), + cl.Action( + name="feedback_not_helpful", + payload={"value": "not_helpful"}, + label="👎 Not Helpful" + ), + cl.Action( + name="feedback_detailed", + payload={"value": "detailed"}, + label="💭 Give Detailed Feedback" + ) + ] +``` + +### Real-time Agent Improvement + +When valid feedback is received, the agent immediately adapts: + +1. **Positive Feedback**: Reinforces current behavior patterns +2. **Negative Feedback**: Prompts for specifics and adjusts instructions +3. **Detailed Feedback**: Allows comprehensive improvements + +Example of instruction evolution: +```python +# Original instruction +"Provide code examples when explaining concepts" + +# After user feedback: "The code examples are too basic" +"Provide comprehensive code examples with edge cases and best practices when explaining concepts" +``` + +### Benefits of Dynamic Feedback + +1. **Continuous Learning**: Agent improves with each interaction +2. **User-Driven Evolution**: Adapts to actual user needs +3. **Quality Control**: AI validation prevents harmful changes +4. **Immediate Impact**: Changes apply to next interaction + +This approach makes the assistant truly adaptive, learning from user interactions to provide increasingly better support over time. + +## Step 6: Running the Assistant + +### Installation + +1. Clone the repository and install dependencies: + +```bash +cd julep-assistant +pip install -r chainlit-ui/requirements.txt +``` + +2. Set up environment variables: + +```bash +# Create .env file +JULEP_API_KEY=your_julep_api_key_here +AGENT_UUID=your_agent_uuid # Or use the default +SPIDER_API_KEY=your_spider_api_key # Optional +``` + +### Running the Chat Interface + +```bash +cd chainlit-ui +chainlit run app.py +``` + +This starts the web interface at `http://localhost:8000`. + +### Using Scripts for Better Monitoring + +While the `full_task.yaml` can handle both crawling and indexing, using the separate scripts provides better visibility and control: + +**Web Crawler Script:** +```bash +python scripts/crawler.py --url https://docs.julep.ai --max-pages 100 +``` + +This script: +- Provides real-time progress updates +- Saves crawled content to JSON for inspection +- Allows you to verify content before indexing +- Handles rate limiting and retries + +**Document Indexer Script:** +```bash +python scripts/indexer.py +``` + +This script: +- Reads the crawled content from the crawler output +- Shows progress for each document being indexed +- Provides detailed error messages if indexing fails +- Generates a summary report of indexed documents + +**Monitoring Task Execution:** + +You can also monitor the full workflow execution: + +```python +# Execute the full crawl + index task +execution = await julep_client.tasks.execute( + task_id=TASK_ID, + input={ + "url": "https://docs.julep.ai", + "max_pages": 100 + } +) + +# Monitor execution status +while execution.status in ["pending", "running"]: + execution = await julep_client.executions.get(execution.id) + print(f"Status: {execution.status}") + + # Get execution steps for detailed progress + steps = await julep_client.executions.steps.list(execution.id) + for step in steps: + print(f" Step {step.name}: {step.status}") + + await asyncio.sleep(5) +``` + +## Resources + +- [Julep Assistant GitHub Repository](https://github.com/julep-ai/julep-assistant) - Complete source code and examples +- [Julep Documentation](https://docs.julep.ai) +- [API Reference](https://api.julep.ai/docs) +- [Discord Community](https://discord.com/invite/JTSBGRZrzj) + +## Summary + +You've learned how to build a production-ready AI assistant with Julep that features: +- Web crawling with Spider integration for content acquisition +- Automated documentation processing and indexing +- RAG-powered responses with hybrid search +- Interactive chat interface with session management +- Feedback collection and analysis using Julep documents +- Scalable architecture for production deployment + +This assistant demonstrates the power of Julep for building stateful, context-aware AI applications that can maintain conversations, access external knowledge, and provide accurate, helpful responses. \ No newline at end of file diff --git a/documentation/tutorials/rag-chatbot.mdx b/documentation/tutorials/rag-chatbot.mdx index 4874e0fd2..a7bd909e8 100644 --- a/documentation/tutorials/rag-chatbot.mdx +++ b/documentation/tutorials/rag-chatbot.mdx @@ -97,7 +97,7 @@ We're using two tools: -```yaml +```yaml [expandable] - evaluate: document: $ _.document chunks: | @@ -165,8 +165,8 @@ We're using two tools: -```yaml YAML -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Jina Crawler Task description: A Julep agent that can crawl a website and store the content in the document store. @@ -224,7 +224,7 @@ index_page: label: docs # Step #1 - Process each content chunk in parallel -- over: $ "[(steps[0].input.content, chunk) for chunk in _['documents']]" +- over: "$ [(steps[0].input.content, chunk) for chunk in _['chunks']]" parallelism: 3 map: prompt: @@ -251,7 +251,7 @@ index_page: - evaluate: final_chunks: | $ [ - NEWLINE.join([chunk, succint]) for chunk, succint in zip(steps[1].input.documents, _) + NEWLINE.join([chunk, succint]) for chunk, succint in zip(steps[1].input.chunks, _) ] # Step #3 - Create a new document and add it to the agent docs store @@ -260,7 +260,7 @@ index_page: map: tool: create_agent_doc arguments: - agent_id: "00000000-0000-0000-0000-000000000000" # <--- This is the agent id of the agent you want to add the document to + agent_id: "$ str(agent.id)" # <--- This is the agent id of the agent you want to add the document to data: metadata: source: "jina_crawler" @@ -277,7 +277,7 @@ main: # Step 0: Get the content of the product page - tool: get_page arguments: - url: $ "https://r.jina.ai/" + steps[0].input.url + url: $ "https://r.jina.ai/" + steps[0].input.url # Step 1: Chunk the content - evaluate: @@ -298,7 +298,7 @@ Start by creating an execution for the task. This execution will make the agent -```python Python +```python Python [expandable] from julep import Client import time import yaml @@ -338,7 +338,7 @@ else: print(f"Error: {result.error}") ``` -```js Node.js +```js Node.js [expandable] import { Julep } from '@julep/sdk'; import fs from 'fs'; import yaml from 'yaml'; @@ -496,5 +496,11 @@ For additional support or to learn more: ## Next Steps -- Try this task yourself, check out the full example, see the [RAG Chatbot cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/08-rag-chatbot.ipynb). -- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. \ No newline at end of file +- Try this task yourself, check out the full example, see the [RAG Chatbot cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/08-rag-chatbot.ipynb). + - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Tools](/concepts/tools) diff --git a/documentation/tutorials/trip-planning-input.mdx b/documentation/tutorials/trip-planning-input.mdx new file mode 100644 index 000000000..65587adaf --- /dev/null +++ b/documentation/tutorials/trip-planning-input.mdx @@ -0,0 +1,31 @@ +--- +title: 'Trip Planning - Input' +description: 'Define the input schema for the trip planning task' +icon: 'display' +--- + +### 1. Input Schema + +First, we define what inputs our task expects: + +```yaml +input_schema: + type: object + properties: + locations: + type: array + items: + type: string +``` + +This schema specifies that our task expects an array of location strings (e.g., `["New York", "London", "Paris"]`). + +## Next Step + +- [Tools Configuration](./trip-planning-tools) + +## Related Concepts + +- [Tasks](/concepts/tasks) + + diff --git a/documentation/tutorials/trip-planning-running.mdx b/documentation/tutorials/trip-planning-running.mdx new file mode 100644 index 000000000..aa6c6b980 --- /dev/null +++ b/documentation/tutorials/trip-planning-running.mdx @@ -0,0 +1,368 @@ +--- +title: 'Trip Planning - Running' +description: 'Execute the task and review the example output' +icon: 'display' +--- + +## Usage + +Here's how to use this task with the Julep SDK: + + + +```python Python +from julep import Client +import time +import yaml + +# Initialize the client +client = Client(api_key=JULEP_API_KEY) + +# Create the agent +agent = client.agents.create( + name="Julep Trip Planning Agent", + about="A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.", +) + +# Load the task definition +with open('trip_planning_task.yaml', 'r') as file: + task_definition = yaml.safe_load(file) + +# Create the task +task = client.tasks.create( + agent_id=AGENT_ID, + **task_definition +) + +# Create the execution +execution = client.executions.create( + task_id=task.id, + input={ + "locations": ["New York", "London", "Paris", "Tokyo", "Sydney"] + } +) + +# Wait for the execution to complete +while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']: + print(result.status) + time.sleep(1) + +# Print the result +if result.status == "succeeded": + print(result.output) +else: + print(f"Error: {result.error}") +``` + +```js Node.js +import { Julep } from '@julep/sdk'; +import fs from 'fs'; +import yaml from 'yaml'; + +// Initialize the client +const client = new Julep({ + apiKey: 'your_julep_api_key' +}); + +// Create the agent +const agent = await client.agents.create({ + name: "Julep Trip Planning Agent", + about: "A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.", +}); + +// Load the task definition +const taskDefinition = yaml.parse(fs.readFileSync('trip_planning_task.yaml', 'utf8')); + +// Create the task +const task = await client.tasks.create( + agent.id, + taskDefinition +); + +// Create the execution +const execution = await client.executions.create( + task.id, + { + input: { + "locations": ["New York", "London", "Paris", "Tokyo", "Sydney"] + } + } +); + +// Wait for the execution to complete +let result; +while (true) { + result = await client.executions.get(execution.id); + if (result.status === 'succeeded' || result.status === 'failed') break; + console.log(result.status); + await new Promise(resolve => setTimeout(resolve, 1000)); +} + +// Print the result +if (result.status === 'succeeded') { + console.log(result.output); +} else { + console.error(`Error: ${result.error}`); +} +``` + + + +## Example Output + +An example output when running this task with an input of `["New York", "London", "Paris", "Tokyo", "Sydney"]`: + + +Here's a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions. + +### Day 1: Iconic Landmarks and Observation Decks +- **Morning:** + - **Top of the Rock Observation Deck:** Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy. + - **Link for more info:** [Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html) + +- **Afternoon:** + - **St. Patrick’s Cathedral:** Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos. + - **Fifth Avenue:** Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks. + +- **Evening:** + - **Times Square:** Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights. + +### Day 2: Culture and History +- **Morning:** + - **The Museum of Modern Art (MoMA):** Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day. + +- **Afternoon:** + - **Central Park:** Head to Central Park for a refreshing walk. With 100% cloud cover, it's a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour. + +- **Evening:** + - **Broadway Show:** End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows. + +### Day 3: Historical and Educational +- **Morning:** + - **Statue of Liberty and Ellis Island:** Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos. + +- **Afternoon:** + - **9/11 Memorial and Museum:** Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits. + +- **Evening:** + - **Brooklyn Bridge:** Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions. + +### Additional Tips: +- **Clothing:** Wear layers to keep warm, as the temperature feels colder than it actually is. +- **Dining:** New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza. +- **Transportation:** Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available. + +For more details on attractions and guided tours, you can visit [USA Guided Tours](https://usaguidedtours.com/nyc/attraction/) and [I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/). + +Enjoy your trip to New York City! +--------------- +**Day 1: Exploring Iconic London Landmarks** + +**Morning:** +1. **Buckingham Palace** + - Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens. + - Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case. + +**Midday:** +2. **Westminster Abbey** + - Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring. + +3. **Lunch at Borough Market** + - Take a tube or walk to Borough Market for a variety of food options. It's a great place to warm up with some hot street food and explore the diverse culinary offerings. + +**Afternoon:** +4. **London Eye** + - After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel. + +**Evening:** +5. **The Globe Theatre** + - As the day winds down, visit Shakespeare's Globe Theatre. If there's a performance, consider attending or simply take a guided tour to learn about the history of this famous theater. + +**Day 2: Museums and Cultural Exploration** + +**Morning:** +1. **The British Museum** + - Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles. + +**Midday:** +2. **Lunch near Covent Garden** + - Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal. + +**Afternoon:** +3. **The Tower of London** + - After lunch, make your way to the Tower of London. Delve into England's rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit. + +**Evening:** +4. **Tower Bridge** + - Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening. + +**Day 3: Leisure and Local Experiences** + +**Morning:** +1. **Natural History Museum** + - Begin your last day at the Natural History Museum. It's a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale. + +**Midday:** +2. **Lunch at South Kensington** + - Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining. + +**Afternoon:** +3. **Hyde Park** + - Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you're interested in contemporary art. The park's natural beauty is a peaceful retreat amidst the city hustle. + +**Evening:** +4. **Dinner and a Show in the West End** + - End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows. + +**Additional Tips:** +- Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours. +- London’s public transport system is efficient; consider getting an Oyster card for convenient travel. +- Don't forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories. +--------------- +Here’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions: + +### Day 1: Embrace the Iconic Landmarks + +**Morning: Eiffel Tower** +- **Time:** 9:00 AM +- **Details:** Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes. +- **Link for more info:** [Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html) + +**Afternoon: Louvre Museum** +- **Time:** 1:00 PM +- **Details:** Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it's a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit. +- **Link for more info:** [U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/) + +**Evening: Seine River Cruise** +- **Time:** 6:00 PM +- **Details:** End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort. + +### Day 2: Explore Cultural and Historical Treasures + +**Morning: Notre-Dame Cathedral** +- **Time:** 9:30 AM +- **Details:** Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly. + +**Afternoon: Musée d'Orsay** +- **Time:** 1:30 PM +- **Details:** Head to the Musée d'Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art. + +**Evening: Montmartre and Sacré-Cœur** +- **Time:** 5:00 PM +- **Details:** Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre. + +### Day 3: Discover Hidden Gems and Local Flavors + +**Morning: Le Marais District** +- **Time:** 10:00 AM +- **Details:** Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs. + +**Afternoon: Palais Garnier (Opera House)** +- **Time:** 2:00 PM +- **Details:** Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it's snowy outside. + +**Evening: Moulin Rouge Show** +- **Time:** 8:00 PM +- **Details:** Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance. + +### Additional Tips: +- **Weather Preparation:** Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense. +- **Dining:** Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin. +- **Transport:** Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel. + +Enjoy your snowy adventure in Paris! +--------------- +**Tokyo Itinerary** + +**Day 1: Arrival and Exploration of Historical and Cultural Sites** + +- **Morning:** + - **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo's oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks. + +- **Afternoon:** + - **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture. + +- **Evening:** + - **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner. + +**Day 2: Modern Tokyo and Unique Experiences** + +- **Morning:** + - **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli's animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki. + +- **Afternoon:** + - **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street. + +- **Evening:** + - **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here. + +**Day 3: Relax and Explore Green Spaces** + +- **Morning:** + - **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo's largest and most beautiful parks. It's a perfect spot for relaxation and enjoying nature. + +- **Afternoon:** + - **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It's a serene place to learn about Shinto traditions and enjoy the tranquil setting. + +- **Evening:** + - **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It's an unforgettable way to see Tokyo illuminated at night. + +**Weather Considerations:** +- With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities. +- Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing. + +**Additional Tips:** +- Always check the opening hours of attractions and book tickets in advance where necessary. +- Use Tokyo’s efficient public transport to move around easily. +- Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates. +--------------- +Here's a detailed itinerary for exploring some of Sydney's top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it's a perfect day to explore the outdoors and enjoy what Sydney has to offer. + +### Morning + +**9:00 AM - Sydney Opera House** +- Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages. +- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions) + +**11:00 AM - Royal Botanic Garden Sydney** +- Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour. + +### Afternoon + +**12:30 PM - Lunch at Opera Bar** +- Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront. +- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions) + +**2:00 PM - Sydney Harbour Bridge** +- After lunch, take a scenic walk across the Sydney Harbour Bridge. If you're up for it, consider the BridgeClimb for breathtaking panoramic views of the city. + +**4:00 PM - The Rocks** +- Explore The Rocks, one of Sydney's most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café. + +### Evening + +**6:00 PM - Darling Harbour** +- Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront. + +**8:00 PM - Dinner at a Local Restaurant** +- Conclude your day with dinner at one of Darling Harbour's many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene. + +### Additional Suggestions + +- If you're interested in more unique experiences, consider visiting some of the attractions listed on [Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours. + +With clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney! + + + +## Next Steps + +- Try this task yourself, check out the full example, see the [trip-planning cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb). + - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Executions](/concepts/execution) + diff --git a/documentation/tutorials/trip-planning-tools.mdx b/documentation/tutorials/trip-planning-tools.mdx new file mode 100644 index 000000000..4bde56938 --- /dev/null +++ b/documentation/tutorials/trip-planning-tools.mdx @@ -0,0 +1,38 @@ +--- +title: 'Trip Planning - Tools' +description: 'Configure tools for fetching weather and attraction data' +icon: 'display' +--- + +### 2. Tools Configuration + +Next, we define the external tools our task will use: + +```yaml +- name: weather + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: YOUR_OPENWEATHERMAP_API_KEY + +- name: internet_search + type: integration + integration: + provider: brave + setup: + brave_api_key: "YOUR_BRAVE_API_KEY" +``` + +We're using two integrations: +- The `weather` integration to fetch current weather conditions +- The `brave` search integration to find tourist attractions + +## Next Step + +- [Workflow Steps](./trip-planning-workflow) + +## Related Concepts + +- [Tools](/concepts/tools) + diff --git a/documentation/tutorials/trip-planning-workflow.mdx b/documentation/tutorials/trip-planning-workflow.mdx new file mode 100644 index 000000000..66cb2bf59 --- /dev/null +++ b/documentation/tutorials/trip-planning-workflow.mdx @@ -0,0 +1,239 @@ +--- +title: 'Trip Planning - Workflow' +description: 'Learn the step-by-step workflow for generating itineraries' +icon: 'display' +--- + +### 3. Main Workflow Steps + + + + + +```yaml +- over: $ steps[0].input.locations + map: + tool: weather + arguments: + location: $ _ +``` + + + When used inside a `map` or a `foreach` step, the `_` variable is a reference to the current value in the iteration. + + For example: +```yaml +- over: $ ["Paris", "London"] + map: + tool: weather + arguments: + location: $ _ # _ will be "Paris", then "London" +``` + + + + This step: + - Iterates over each location in the input array + - Calls the weather API for each location + + + + +```yaml +- over: $ steps[0].input.locations + map: + tool: internet_search + arguments: + query: $ 'tourist attractions in ' + _ +``` + + + This step: + - Iterates over the locations again + - Searches for tourist attractions in each location + - Constructs a search query by concatenating "tourist attractions in " with the location + + + + +```yaml +- evaluate: + zipped: |- + $ list( + zip( + steps[0].input.locations, + [output['result'] for output in steps[0].output], + steps[1].output + ) + ) +``` + + + This step: + - Combines the data from previous steps into tuples + - Each tuple contains: (location, weather_data, attractions_data) + - Uses Python's `zip` function to align the data + + + + + +```yaml +- over: $ _['zipped'] + parallelism: 3 + # Inside the map step, each `_` represents the current element in the list + # which is a tuple of (location, weather, attractions) + map: + prompt: + - role: system + content: >- + $ f'''You are {agent.name}. Your task is to create a detailed itinerary + for visiting tourist attractions in some locations. + The user will give you the following information for each location: + + - The location + - The current weather condition + - The top tourist attractions''' + - role: user + content: >- + $ f'''Location: "{_[0]}" + Weather: "{_[1]}" + Attractions: "{_[2]}"''' + unwrap: true +``` + + + This step: + - Processes up to 3 locations in parallel + - For each location tuple: + - Sends a prompt to the AI model + - Includes location, weather, and attraction data + - Generates a personalized itinerary + + + + + +```yaml +- evaluate: + final_plan: |- + $ '\\n---------------\\n'.join(activity for activity in _) +``` + + + This step: + - Combines all itineraries into a single output + - Separates each itinerary with a divider + + + + + + +```yaml YAML +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json +name: Julep Trip Planning Task +description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. + +######################################################## +################### INPUT SCHEMA ####################### +######################################################## + +input_schema: + type: object + properties: + locations: + type: array + items: + type: string + description: The locations to search for. + +######################################################## +################### TOOLS ############################## +######################################################## + +tools: +- name: wikipedia + type: integration + integration: + provider: wikipedia + +- name: weather + type: integration + integration: + provider: weather + setup: + openweathermap_api_key: "YOUR_OPENWEATHERMAP_API_KEY" + +- name: internet_search + type: integration + integration: + provider: brave + setup: + brave_api_key: "YOUR_BRAVE_API_KEY" + +######################################################## +################### MAIN WORKFLOW ###################### +######################################################## + +main: +- over: $ steps[0].input.locations + map: + tool: weather + arguments: + location: $ _ + +- over: $ steps[0].input.locations + map: + tool: internet_search + arguments: + query: $ 'tourist attractions in ' + _ + +# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)] +- evaluate: + zipped: |- + $ list( + zip( + steps[0].input.locations, + [output['result'] for output in steps[0].output], + steps[1].output + ) + ) + + +- over: $ _['zipped'] + parallelism: 3 + # Inside the map step, each `_` represents the current element in the list + # which is a tuple of (location, weather, attractions) + map: + prompt: + - role: system + content: >- + $ f'''You are {agent.name}. Your task is to create a detailed itinerary + for visiting tourist attractions in some locations. + The user will give you the following information for each location: + + - The location + - The current weather condition + - The top tourist attractions''' + - role: user + content: >- + $ f'''Location: "{_[0]}" + Weather: "{_[1]}" + Attractions: "{_[2]}"''' + unwrap: true + +- evaluate: + final_plan: |- + $ '\\n---------------\\n'.join(activity for activity in _) +``` + + +## Next Step + +- [Running the Task](./trip-planning-running) + +## Related Concepts + +- [Tasks](/concepts/tasks) +- [Types of Task Steps](/advanced/types-of-task-steps) \ No newline at end of file diff --git a/documentation/tutorials/trip-planning.mdx b/documentation/tutorials/trip-planning.mdx index 14cb48a68..d7119d331 100644 --- a/documentation/tutorials/trip-planning.mdx +++ b/documentation/tutorials/trip-planning.mdx @@ -6,13 +6,13 @@ icon: 'display' ## Overview -The Tourist Plan task demonstrates how to: -- Execute Julep workflow-steps in parallel -- Integrate with external APIs ([Weather](/integrations/communicationdata/weather) and [Brave Search](/integrations/search/brave)) +The Trip Planning tutorial shows how to: +- Execute workflow steps in parallel +- Integrate with external APIs - Combine data from multiple sources - Generate personalized itineraries using AI -## Task Structure +Follow each step of the tutorial: Let's break down the task into its core components: @@ -50,7 +50,7 @@ Next, we define the external tools our task will use: integration: provider: brave setup: - api_key: YOUR_BRAVE_API_KEY + brave_api_key: YOUR_BRAVE_API_KEY ``` We're using two integrations: @@ -131,7 +131,7 @@ We're using two integrations: -```yaml +```yaml [expandable] - over: $ _['zipped'] parallelism: 3 # Inside the map step, each `_` represents the current element in the list @@ -183,8 +183,8 @@ We're using two integrations: -```yaml YAML -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Trip Planning Task description: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions. @@ -223,7 +223,7 @@ tools: integration: provider: brave setup: - api_key: "YOUR_BRAVE_API_KEY" + brave_api_key: "YOUR_BRAVE_API_KEY" ######################################################## ################### MAIN WORKFLOW ###################### @@ -288,7 +288,7 @@ Here's how to use this task with the Julep SDK: -```python Python +```python Python [expandable] from julep import Client import time import yaml @@ -332,7 +332,7 @@ else: print(f"Error: {result.error}") ``` -```js Node.js +```js Node.js [expandable] import { Julep } from '@julep/sdk'; import fs from 'fs'; import yaml from 'yaml'; @@ -635,5 +635,20 @@ With clear skies and mild temperatures, this itinerary offers a balanced mix of ## Next Steps -- Try this task yourself, check out the full example, see the [trip-planning cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/03-trip-planning-assistant.ipynb). -- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. \ No newline at end of file +- Try this task yourself, check out the full example, see the [trip-planning cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb). +- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. + +**Also See:** + +1. [Input Schema](./trip-planning-input) +2. [Tools Configuration](./trip-planning-tools) +3. [Workflow Steps](./trip-planning-workflow) +4. [Running the Task](./trip-planning-running) + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Tools](/concepts/tools) + + diff --git a/documentation/tutorials/video-processing.mdx b/documentation/tutorials/video-processing.mdx index 18f5d3b31..1a9b2db47 100644 --- a/documentation/tutorials/video-processing.mdx +++ b/documentation/tutorials/video-processing.mdx @@ -184,8 +184,8 @@ We're using three main integrations: -```yaml YAML -# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json +```yaml YAML [expandable] +# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json name: Julep Video Processing Task description: A Julep agent that can process and analyze videos using Cloudinary @@ -307,7 +307,7 @@ Here's how to use this task with the Julep SDK: -```python Python +```python Python [expandable] import time import yaml from julep import Client @@ -358,7 +358,7 @@ else: print(f"Error: {result.error}") ``` -```js Node.js +```js Node.js [expandable] import { Julep } from '@julep/sdk'; import yaml from 'yaml'; import fs from 'fs'; @@ -434,5 +434,11 @@ This is an example output when the task is run over the sample video input. ## Next Steps -- Try this task yourself, check out the full example, see the [video-processing-with-natural-language cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/05-video-processing-with-natural-language.ipynb). -- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. \ No newline at end of file +- Try this task yourself, check out the full example, see the [video-processing-with-natural-language cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/05-video-processing-with-natural-language.ipynb). +- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page. + +## Related Concepts + +- [Agents](/concepts/agents) +- [Tasks](/concepts/tasks) +- [Tools](/concepts/tools) diff --git a/integrations-service/integrations/autogen/Agents.py b/integrations-service/integrations/autogen/Agents.py deleted file mode 100644 index ab4c3523d..000000000 --- a/integrations-service/integrations/autogen/Agents.py +++ /dev/null @@ -1,249 +0,0 @@ -# generated by datamodel-codegen: -# filename: openapi-1.0.0.yaml - -from __future__ import annotations - -from typing import Annotated, Any -from uuid import UUID - -from pydantic import AwareDatetime, BaseModel, ConfigDict, Field - - -class Agent(BaseModel): - model_config = ConfigDict( - populate_by_name=True, - ) - id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] - metadata: dict[str, Any] | None = None - created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] - """ - When this resource was created as UTC date-time - """ - updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] - """ - When this resource was updated as UTC date-time - """ - name: Annotated[str, Field(max_length=255, min_length=1)] - """ - Name of the agent - """ - canonical_name: Annotated[ - str | None, - Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), - ] = None - """ - Canonical name of the agent - """ - about: str = "" - """ - About the agent - """ - model: str = "" - """ - Model name to use (gpt-4-turbo, gemini-nano etc) - """ - instructions: str | list[str] = [] - """ - Instructions for the agent - """ - default_settings: dict[str, Any] | None = None - """ - Default settings for all sessions created by this agent - """ - default_system_template: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' - """ - Default system template for all sessions created by this agent - """ - - -class CreateAgentRequest(BaseModel): - """ - Payload for creating a agent (and associated documents) - """ - - model_config = ConfigDict( - populate_by_name=True, - ) - metadata: dict[str, Any] | None = None - name: Annotated[str, Field(max_length=255, min_length=1)] - """ - Name of the agent - """ - canonical_name: Annotated[ - str | None, - Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), - ] = None - """ - Canonical name of the agent - """ - about: str = "" - """ - About the agent - """ - model: str = "" - """ - Model name to use (gpt-4-turbo, gemini-nano etc) - """ - instructions: str | list[str] = [] - """ - Instructions for the agent - """ - default_settings: dict[str, Any] | None = None - """ - Default settings for all sessions created by this agent - """ - default_system_template: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' - """ - Default system template for all sessions created by this agent - """ - - -class CreateOrUpdateAgentRequest(CreateAgentRequest): - model_config = ConfigDict( - populate_by_name=True, - ) - id: UUID - metadata: dict[str, Any] | None = None - name: Annotated[str, Field(max_length=255, min_length=1)] - """ - Name of the agent - """ - canonical_name: Annotated[ - str | None, - Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), - ] = None - """ - Canonical name of the agent - """ - about: str = "" - """ - About the agent - """ - model: str = "" - """ - Model name to use (gpt-4-turbo, gemini-nano etc) - """ - instructions: str | list[str] = [] - """ - Instructions for the agent - """ - default_settings: dict[str, Any] | None = None - """ - Default settings for all sessions created by this agent - """ - default_system_template: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' - """ - Default system template for all sessions created by this agent - """ - - -class ListModelsResponse(BaseModel): - """ - Response for the list models endpoint - """ - - model_config = ConfigDict( - populate_by_name=True, - ) - models: list[ModelInfo] - """ - List of available models - """ - - -class ModelInfo(BaseModel): - """ - Model information returned by the model list endpoint - """ - - model_config = ConfigDict( - populate_by_name=True, - ) - id: str - """ - The ID/name of the model - """ - - -class PatchAgentRequest(BaseModel): - """ - Payload for patching a agent - """ - - model_config = ConfigDict( - populate_by_name=True, - ) - metadata: dict[str, Any] | None = None - name: Annotated[str | None, Field(max_length=255, min_length=1)] = None - """ - Name of the agent - """ - canonical_name: Annotated[ - str | None, - Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), - ] = None - """ - Canonical name of the agent - """ - about: str = "" - """ - About the agent - """ - model: str = "" - """ - Model name to use (gpt-4-turbo, gemini-nano etc) - """ - instructions: str | list[str] = [] - """ - Instructions for the agent - """ - default_settings: dict[str, Any] | None = None - """ - Default settings for all sessions created by this agent - """ - default_system_template: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' - """ - Default system template for all sessions created by this agent - """ - - -class UpdateAgentRequest(BaseModel): - """ - Payload for updating a agent - """ - - model_config = ConfigDict( - populate_by_name=True, - ) - metadata: dict[str, Any] | None = None - name: Annotated[str, Field(max_length=255, min_length=1)] - """ - Name of the agent - """ - canonical_name: Annotated[ - str | None, - Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), - ] = None - """ - Canonical name of the agent - """ - about: str = "" - """ - About the agent - """ - model: str = "" - """ - Model name to use (gpt-4-turbo, gemini-nano etc) - """ - instructions: str | list[str] = [] - """ - Instructions for the agent - """ - default_settings: dict[str, Any] | None = None - """ - Default settings for all sessions created by this agent - """ - default_system_template: str = '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' - """ - Default system template for all sessions created by this agent - """ diff --git a/integrations-service/integrations/utils/integrations/email.py b/integrations-service/integrations/utils/integrations/email.py deleted file mode 100644 index d7967128f..000000000 --- a/integrations-service/integrations/utils/integrations/email.py +++ /dev/null @@ -1,36 +0,0 @@ -from email.message import EmailMessage -from smtplib import SMTP - -from beartype import beartype -from tenacity import retry, stop_after_attempt, wait_exponential - -from ...autogen.Tools import EmailArguments, EmailSetup -from ...env import mailgun_password # Import env to access environment variables -from ...models import EmailOutput - - -@beartype -@retry( - wait=wait_exponential(multiplier=1, min=4, max=10), - reraise=True, - stop=stop_after_attempt(4), -) -async def send(setup: EmailSetup, arguments: EmailArguments) -> EmailOutput: - """ - Sends an email with the provided details. - """ - - message = EmailMessage() - message.set_content(arguments.body) - message["Subject"] = arguments.subject - message["From"] = arguments.from_ - message["To"] = arguments.to - - if setup.password == "DEMO_PASSWORD": - setup.password = mailgun_password - - with SMTP(setup.host, setup.port) as server: - server.login(setup.user, setup.password) - server.send_message(message) - - return EmailOutput(success=True) diff --git a/integrations-service/integrations/utils/integrations/unstructured.py b/integrations-service/integrations/utils/integrations/unstructured.py deleted file mode 100644 index 3fbd2e4ac..000000000 --- a/integrations-service/integrations/utils/integrations/unstructured.py +++ /dev/null @@ -1,77 +0,0 @@ -import base64 -import uuid - -import unstructured_client -from beartype import beartype -from tenacity import retry, stop_after_attempt, wait_exponential -from unstructured_client.models import operations, shared - -from ...autogen.Tools import UnstructuredPartitionArguments, UnstructuredSetup -from ...env import ( - unstructured_api_key, # Import env to access environment variables -) -from ...models import UnstructuredParseOutput - - -@beartype -@retry( - wait=wait_exponential(multiplier=1, min=4, max=10), - reraise=True, - stop=stop_after_attempt(4), -) -async def parse( - setup: UnstructuredSetup, - arguments: UnstructuredPartitionArguments, -) -> UnstructuredParseOutput: - """ - Parse documents into structured elements using Unstructured.io. - """ - - # Use walrus operator to simplify assignment and condition - if (api_key := setup.unstructured_api_key) == "DEMO_API_KEY": - api_key = unstructured_api_key - - # Create a new client with all available parameters - client = unstructured_client.UnstructuredClient( - api_key_auth=api_key, - server_url=setup.server_url, - server=setup.server, - url_params=setup.url_params, - timeout_ms=setup.timeout_ms, - ) - - # Decode the base64 encoded file - try: - decoded_file = base64.b64decode(arguments.file) - except Exception as e: - msg = f"Failed to decode base64 encoded file: {e}" - raise RuntimeError(msg) - - # Process file - req = operations.PartitionRequest( - partition_parameters=shared.PartitionParameters( - files=shared.Files( - content=decoded_file, - file_name=arguments.filename or f"{uuid.uuid4()}.txt", - ), - **( - arguments.partition_params - if hasattr(arguments, "partition_params") and arguments.partition_params - else {} - ), - ) - ) - - try: - # Make the API call - result = await client.general.partition_async(request=req) - return UnstructuredParseOutput( - content_type=result.content_type, - status_code=result.status_code, - csv_elements=result.csv_elements or None, - content=result.elements or None, - ) - except Exception as e: - # Return error information instead of raising HTTP exception - msg = f"Error executing Unstructured method: {e}" - raise RuntimeError(msg) diff --git a/integrations-service/uv.lock b/integrations-service/uv.lock deleted file mode 100644 index 0ae343653..000000000 --- a/integrations-service/uv.lock +++ /dev/null @@ -1,2428 +0,0 @@ -version = 1 -revision = 1 -requires-python = "==3.12.*" -resolution-markers = [ - "python_full_version < '3.12.4'", - "python_full_version >= '3.12.4'", -] - -[[package]] -name = "aiofiles" -version = "24.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896 }, -] - -[[package]] -name = "aiohappyeyeballs" -version = "2.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/69/2f6d5a019bd02e920a3417689a89887b39ad1e350b562f9955693d900c40/aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586", size = 21809 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/d8/120cd0fe3e8530df0539e71ba9683eade12cae103dd7543e50d15f737917/aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572", size = 14742 }, -] - -[[package]] -name = "aiohttp" -version = "3.11.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohappyeyeballs" }, - { name = "aiosignal" }, - { name = "attrs" }, - { name = "frozenlist" }, - { name = "multidict" }, - { name = "propcache" }, - { name = "yarl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2c/e5/c7ad0689e8ab74c3ec9bf20e0f667e1278b3738ae19ae3fed21e6a0543ca/aiohttp-3.11.8.tar.gz", hash = "sha256:7bc9d64a2350cbb29a9732334e1a0743cbb6844de1731cbdf5949b235653f3fd", size = 7667904 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/74/bb/975dcefc5d2238f24815ef1df7358643108ae8efe7371d1c700efd1d813a/aiohttp-3.11.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0e3b5bfef913d6be270c81976fbc0cbf66625cd92663bbb7e03b3adbd6aa4ac6", size = 703595 }, - { url = "https://files.pythonhosted.org/packages/f4/f4/4480ffeca247026a89a828ff701f726a39029d63c20d0c3575c05cc21045/aiohttp-3.11.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cb51a81cb637b9a072c9cfae1839e35c6579638861eb3479eb5d6e6ce8bc6782", size = 462675 }, - { url = "https://files.pythonhosted.org/packages/9d/3a/34fb0a91f667eea7050c299c3d84993db953385b1d5c287173a5bdd7a2c0/aiohttp-3.11.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd2ca84e5f7a35f313a62eb7d6a50bac6760b60bafce34586750712731c0aeff", size = 455270 }, - { url = "https://files.pythonhosted.org/packages/80/b2/6b7b7728552700b8af03ce1370a4da65d8b7d769d6303c5d453968c7e335/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47c6663df9446aa848b478413219600da4b54bc0409e1ac4bc80fb1a81501363", size = 1679484 }, - { url = "https://files.pythonhosted.org/packages/86/ae/92cd1a78ab4a962dc57482006b770c436d0ddb30b20cea954279577baec0/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c665ed4b52256614858b20711bbbd2755b0e19ec86870f8ff1645acf9ae9e760", size = 1736045 }, - { url = "https://files.pythonhosted.org/packages/17/9d/37ebdcb0f7da1b8e902accc239592e2824d13d0f723acb36dd4a4201ecc4/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35d4545e7684da7a954ffc2dce495462cb16a902dffdebe98572408f6aaaee83", size = 1790952 }, - { url = "https://files.pythonhosted.org/packages/02/9e/d572035320752770c00e6b821f4641493a611976f4dec85012b86b49be8e/aiohttp-3.11.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85be3899e6860dd2cd3f4370ded6708e939d00d5ec922a8eb328d114db605a47", size = 1689079 }, - { url = "https://files.pythonhosted.org/packages/b3/f2/faff5fa14c51161a6f074ed56295562bc80b1c54f9933186c4cccabf6ded/aiohttp-3.11.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ed9f1f2697713c48efc9ec483ad5d062e4aa91854f090a3eba0b19c002851d", size = 1616554 }, - { url = "https://files.pythonhosted.org/packages/b3/ea/00412278060ea50c2d5c8a48e7f7f94e95e2170079b67c6772475d153927/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c0dbae99737badf3f5e862088a118e28d3b36f03eb608a6382eddfd68178e05b", size = 1643126 }, - { url = "https://files.pythonhosted.org/packages/1f/93/9cb3e20cb8f73f00b94f92864f7e1937fd2b33059b2536f6532a2afabe6a/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:beae08f900b2980af4353a0200eb162b39f276fd8a6e43079a540f83964671f4", size = 1649517 }, - { url = "https://files.pythonhosted.org/packages/e3/27/24e8dc49f4f524d728dcb757f74d9b3f5a652ecb5d20158e175b73186280/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d6f9e5fd1b3ecbaca3e04a15a02d1fa213248608caee99fd5bdddd4759959cf7", size = 1697243 }, - { url = "https://files.pythonhosted.org/packages/16/bf/480de7d40affc95a046c8580e54ff4875a73ac5e7b8cafca9877f0cf089a/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7def89a41fe32120d89cd4577f5efbab3c52234c5890066ced8a2f7202dff88", size = 1730902 }, - { url = "https://files.pythonhosted.org/packages/24/ce/74ed004d72a3d41933ac729765cd58aea8b61fd287fc870abc42f2d6b978/aiohttp-3.11.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:98f596cf59292e779bc387f22378a3d2c5e052c9fe2bf822ac4f547c6fe57758", size = 1696230 }, - { url = "https://files.pythonhosted.org/packages/a5/22/fdba63fc388ec880e99868609761671598b01bb402e063d69c338eaf8a27/aiohttp-3.11.8-cp312-cp312-win32.whl", hash = "sha256:b64fa6b76b35b695cd3e5c42a4e568cbea8d41c9e59165e2a43da00976e2027e", size = 410669 }, - { url = "https://files.pythonhosted.org/packages/7e/b8/37683614a4db2763b56376d4a532cceb0496b7984e1596e2da4b7c953166/aiohttp-3.11.8-cp312-cp312-win_amd64.whl", hash = "sha256:afba47981ff73b1794c00dce774334dcfe62664b3b4f78f278b77d21ce9daf43", size = 437086 }, -] - -[[package]] -name = "aiosignal" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frozenlist" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ae/67/0952ed97a9793b4958e5736f6d2b346b414a2cd63e82d05940032f45b32f/aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", size = 19422 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17", size = 7617 }, -] - -[[package]] -name = "algoliasearch" -version = "4.14.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "async-timeout" }, - { name = "pydantic" }, - { name = "python-dateutil" }, - { name = "requests" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/89/41c9d7317d84f38c2f26e33ad0cce069a772809aaa60a1edfd6c07e4d1fc/algoliasearch-4.14.0.tar.gz", hash = "sha256:3c3979019bdbe6fc7197032170936878b7baa7ee31b7511bc9f8772836ab586a", size = 338565 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/dd/a1d566a1c013fc8d574490dcf8ea124197924d84d3f92fdde81a0f6c12d4/algoliasearch-4.14.0-py3-none-any.whl", hash = "sha256:1ecd1f4d978fc7b733e87b954d9e7f66b343bbae49bde95bc3c619eb121d8516", size = 901979 }, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, -] - -[[package]] -name = "anyio" -version = "4.6.2.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/09/45b9b7a6d4e45c6bcb5bf61d19e3ab87df68e0601fa8c5293de3542546cc/anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c", size = 173422 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/f5/f2b75d2fc6f1a260f340f0e7c6a060f4dd2961cc16884ed851b0d18da06a/anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d", size = 90377 }, -] - -[[package]] -name = "argcomplete" -version = "3.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/39/27605e133e7f4bb0c8e48c9a6b87101515e3446003e0442761f6a02ac35e/argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4", size = 82280 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/be/a606a6701d491cfae75583c80a6583f8abe9c36c0b9666e867e7cdd62fe8/argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363", size = 43498 }, -] - -[[package]] -name = "arxiv" -version = "2.1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "feedparser" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fe/59/fe41f54bdfed776c2e9bcd6289e4c71349eb938241d89b4c97d0f33e8013/arxiv-2.1.3.tar.gz", hash = "sha256:32365221994d2cf05657c1fadf63a26efc8ccdec18590281ee03515bfef8bc4e", size = 16747 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/7b/7bf42178d227b26d3daf94cdd22a72a4ed5bf235548c4f5aea49c51c6458/arxiv-2.1.3-py3-none-any.whl", hash = "sha256:6f43673ab770a9e848d7d4fc1894824df55edeac3c3572ea280c9ba2e3c0f39f", size = 11478 }, -] - -[[package]] -name = "async-timeout" -version = "5.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, -] - -[[package]] -name = "attrs" -version = "24.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, -] - -[[package]] -name = "beartype" -version = "0.19.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/e1/00515b97afa3993b4a314e4bc168fbde0917fd5845435cb6f16a19770746/beartype-0.19.0.tar.gz", hash = "sha256:de42dfc1ba5c3710fde6c3002e3bd2cad236ed4d2aabe876345ab0b4234a6573", size = 1294480 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/69/f6db6e4cb2fe2f887dead40b76caa91af4844cb647dd2c7223bb010aa416/beartype-0.19.0-py3-none-any.whl", hash = "sha256:33b2694eda0daf052eb2aff623ed9a8a586703bbf0a90bbc475a83bbf427f699", size = 1039760 }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.12.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925 }, -] - -[[package]] -name = "black" -version = "24.10.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", size = 645813 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/04/bf74c71f592bcd761610bbf67e23e6a3cff824780761f536512437f1e655/black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", size = 1644256 }, - { url = "https://files.pythonhosted.org/packages/4c/ea/a77bab4cf1887f4b2e0bce5516ea0b3ff7d04ba96af21d65024629afedb6/black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", size = 1448534 }, - { url = "https://files.pythonhosted.org/packages/4e/3e/443ef8bc1fbda78e61f79157f303893f3fddf19ca3c8989b163eb3469a12/black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", size = 1761892 }, - { url = "https://files.pythonhosted.org/packages/52/93/eac95ff229049a6901bc84fec6908a5124b8a0b7c26ea766b3b8a5debd22/black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8", size = 1434796 }, - { url = "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", size = 206898 }, -] - -[[package]] -name = "blinker" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, -] - -[[package]] -name = "browserbase" -version = "1.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/67/683a5f67d01aff89ebb0d0c11141dd21d3c5d9d7513793f74e65cdf45fb3/browserbase-1.0.5.tar.gz", hash = "sha256:1c8256cb8f6d94838067b2f3cc173a3118c102746c68565b8d2fa4cb10a3e4a9", size = 114527 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/92/71db66c57076c067e2c0e5fcc71000e64e80e4e4d5166ad409377ac142ac/browserbase-1.0.5-py3-none-any.whl", hash = "sha256:72c4d8269bd830bedde539de894bc372db46d912b7f832952c6bdd77ae5e2387", size = 94218 }, -] - -[[package]] -name = "certifi" -version = "2024.8.30" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, -] - -[[package]] -name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, - { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, - { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, - { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, - { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, - { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, - { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, - { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, - { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, - { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, - { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, - { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, - { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, - { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, - { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, -] - -[[package]] -name = "click" -version = "8.1.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, -] - -[[package]] -name = "cloudinary" -version = "1.41.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "six" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/ca/2e47a67a08ef44860d0c69d4b4126c281333979c169645f4ebb08fa6631a/cloudinary-1.41.0.tar.gz", hash = "sha256:e189739a796a7d2ad15c19971741d33a9300816b16c0282b4b14ccf1dd2948c0", size = 177501 } - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "coverage" -version = "7.6.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/75/aecfd0a3adbec6e45753976bc2a9fed62b42cea9a206d10fd29244a77953/coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc", size = 801425 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/ce/3edf581c8fe429ed8ced6e6d9ac693c25975ef9093413276dab6ed68a80a/coverage-7.6.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee", size = 207285 }, - { url = "https://files.pythonhosted.org/packages/09/9c/cf102ab046c9cf8895c3f7aadcde6f489a4b2ec326757e8c6e6581829b5e/coverage-7.6.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a", size = 207522 }, - { url = "https://files.pythonhosted.org/packages/39/06/42aa6dd13dbfca72e1fd8ffccadbc921b6e75db34545ebab4d955d1e7ad3/coverage-7.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d", size = 240543 }, - { url = "https://files.pythonhosted.org/packages/a0/20/2932971dc215adeca8eeff446266a7fef17a0c238e881ffedebe7bfa0669/coverage-7.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb", size = 237577 }, - { url = "https://files.pythonhosted.org/packages/ac/85/4323ece0cd5452c9522f4b6e5cc461e6c7149a4b1887c9e7a8b1f4e51146/coverage-7.6.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649", size = 239646 }, - { url = "https://files.pythonhosted.org/packages/77/52/b2537487d8f36241e518e84db6f79e26bc3343b14844366e35b090fae0d4/coverage-7.6.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787", size = 239128 }, - { url = "https://files.pythonhosted.org/packages/7c/99/7f007762012186547d0ecc3d328da6b6f31a8c99f05dc1e13dcd929918cd/coverage-7.6.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c", size = 237434 }, - { url = "https://files.pythonhosted.org/packages/97/53/e9b5cf0682a1cab9352adfac73caae0d77ae1d65abc88975d510f7816389/coverage-7.6.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443", size = 239095 }, - { url = "https://files.pythonhosted.org/packages/0c/50/054f0b464fbae0483217186478eefa2e7df3a79917ed7f1d430b6da2cf0d/coverage-7.6.8-cp312-cp312-win32.whl", hash = "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad", size = 209895 }, - { url = "https://files.pythonhosted.org/packages/df/d0/09ba870360a27ecf09e177ca2ff59d4337fc7197b456f22ceff85cffcfa5/coverage-7.6.8-cp312-cp312-win_amd64.whl", hash = "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4", size = 210684 }, -] - -[[package]] -name = "cryptography" -version = "44.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, - { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, - { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, - { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, - { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, - { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, - { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, - { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, - { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, - { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, - { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, - { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, - { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, - { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, - { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, - { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, - { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, - { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, - { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, - { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, - { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, - { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, - { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, -] - -[[package]] -name = "dataclasses-json" -version = "0.6.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "marshmallow" }, - { name = "typing-inspect" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/64/a4/f71d9cf3a5ac257c993b5ca3f93df5f7fb395c725e7f1e6479d2514173c3/dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0", size = 32227 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686 }, -] - -[[package]] -name = "datamodel-code-generator" -version = "0.26.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argcomplete" }, - { name = "black" }, - { name = "genson" }, - { name = "inflect" }, - { name = "isort" }, - { name = "jinja2" }, - { name = "packaging" }, - { name = "pydantic", extra = ["email"] }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d3/96/5982e852cbae82d4ca2b827d5f53065570e20313b220acf7ab31b8ea9c76/datamodel_code_generator-0.26.3.tar.gz", hash = "sha256:b58e0800eb6448e1d1df02f4586207c1e3631c4a188531d154b00b3cf2f95fd8", size = 91286 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/86/22a5ca396e8a79c5001f91073a028a2e00cc803de023a664c4a0dd9b9e1f/datamodel_code_generator-0.26.3-py3-none-any.whl", hash = "sha256:f1f8f1cef14f138fa239f987d4640837bb68d53c5f08d8673a7bde275b929fd8", size = 113715 }, -] - -[[package]] -name = "deprecated" -version = "1.2.15" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/a3/53e7d78a6850ffdd394d7048a31a6f14e44900adedf190f9a165f6b69439/deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d", size = 2977612 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/8f/c7f227eb42cfeaddce3eb0c96c60cbca37797fa7b34f8e1aeadf6c5c0983/Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320", size = 9941 }, -] - -[[package]] -name = "dirtyjson" -version = "1.0.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/04/d24f6e645ad82ba0ef092fa17d9ef7a21953781663648a01c9371d9e8e98/dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd", size = 30782 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/69/1bcf70f81de1b4a9f21b3a62ec0c83bdff991c88d6cc2267d02408457e88/dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53", size = 25197 }, -] - -[[package]] -name = "distro" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277 }, -] - -[[package]] -name = "dnspython" -version = "2.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, -] - -[[package]] -name = "duckduckgo-search" -version = "6.2.13" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "primp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/55/2e/fe93c096b2b2bfcbd0a4f3a1de47d9a1c4b0dd4c7573d9f6c2b5c80ce6dc/duckduckgo_search-6.2.13.tar.gz", hash = "sha256:f89a9782f0f47d18c01a761c83453d0aef7a4335d1b6466fc47709652d5ca791", size = 33075 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/07/c0a6d0b1192790364ee9cf655c72c47ad13d68971570f19401f220cac50d/duckduckgo_search-6.2.13-py3-none-any.whl", hash = "sha256:a6618fb2744fa1d081b1bf2e47ef8051de993276a15c20f4e879a150726472de", size = 27468 }, -] - -[[package]] -name = "email-validator" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, -] - -[[package]] -name = "environs" -version = "11.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "marshmallow" }, - { name = "python-dotenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/77/08/2b7d9cacf2b27482c9218ee6762336aa47bdb9d07ee26a136d072a328297/environs-11.2.1.tar.gz", hash = "sha256:e068ae3174cef52ba4b95ead22e639056a02465f616e62323e04ae08e86a75a4", size = 27485 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/21/1e0d8de234e9d0c675ea8fd50f9e7ad66fae32c207bc982f1d14f7c0835b/environs-11.2.1-py3-none-any.whl", hash = "sha256:9d2080cf25807a26fc0d4301e2d7b62c64fbf547540f21e3a30cc02bc5fbe948", size = 12923 }, -] - -[[package]] -name = "eval-type-backport" -version = "0.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/ea/8b0ac4469d4c347c6a385ff09dc3c048c2d021696664e26c7ee6791631b5/eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1", size = 9079 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/31/55cd413eaccd39125368be33c46de24a1f639f2e12349b0361b4678f3915/eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a", size = 5830 }, -] - -[[package]] -name = "fastapi" -version = "0.115.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "starlette" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ae/29/f71316b9273b6552a263748e49cd7b83898dc9499a663d30c7b9cb853cb8/fastapi-0.115.5.tar.gz", hash = "sha256:0e7a4d0dc0d01c68df21887cce0945e72d3c48b9f4f79dfe7a7d53aa08fbb289", size = 301047 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/c4/148d5046a96c428464557264877ae5a9338a83bbe0df045088749ec89820/fastapi-0.115.5-py3-none-any.whl", hash = "sha256:596b95adbe1474da47049e802f9a65ab2ffa9c2b07e7efee70eb8a66c9f2f796", size = 94866 }, -] - -[[package]] -name = "feedparser" -version = "6.0.11" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sgmllib3k" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ff/aa/7af346ebeb42a76bf108027fe7f3328bb4e57a3a96e53e21fd9ef9dd6dd0/feedparser-6.0.11.tar.gz", hash = "sha256:c9d0407b64c6f2a065d0ebb292c2b35c01050cc0dc33757461aaabdc4c4184d5", size = 286197 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/d4/8c31aad9cc18f451c49f7f9cfb5799dadffc88177f7917bc90a66459b1d7/feedparser-6.0.11-py3-none-any.whl", hash = "sha256:0be7ee7b395572b19ebeb1d6aafb0028dee11169f1c934e0ed67d54992f4ad45", size = 81343 }, -] - -[[package]] -name = "filetype" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970 }, -] - -[[package]] -name = "fire" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, - { name = "termcolor" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1b/1b/84c63f592ecdfbb3d77d22a8d93c9b92791e4fa35677ad71a7d6449100f8/fire-0.6.0.tar.gz", hash = "sha256:54ec5b996ecdd3c0309c800324a0703d6da512241bc73b553db959d98de0aa66", size = 88439 } - -[[package]] -name = "flask" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "blinker" }, - { name = "click" }, - { name = "itsdangerous" }, - { name = "jinja2" }, - { name = "werkzeug" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/50/dff6380f1c7f84135484e176e0cac8690af72fa90e932ad2a0a60e28c69b/flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac", size = 680824 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, -] - -[[package]] -name = "frozenlist" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, - { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, - { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, - { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, - { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, - { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, - { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, - { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, - { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, - { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, - { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, - { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, - { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, - { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, - { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, - { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, -] - -[[package]] -name = "fsspec" -version = "2024.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a0/52/f16a068ebadae42526484c31f4398e62962504e5724a8ba5dc3409483df2/fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493", size = 286853 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 }, -] - -[[package]] -name = "genson" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c5/cf/2303c8ad276dcf5ee2ad6cf69c4338fd86ef0f471a5207b069adf7a393cf/genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37", size = 34919 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/5c/e226de133afd8bb267ec27eead9ae3d784b95b39a287ed404caab39a5f50/genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7", size = 21470 }, -] - -[[package]] -name = "geojson" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/8d/c42d3fe6f9b5e5bd6a55d9f03813d674d65d853cb12e6bc56f154a2ceca0/geojson-2.5.0.tar.gz", hash = "sha256:6e4bb7ace4226a45d9c8c8b1348b3fc43540658359f93c3f7e03efa9f15f658a", size = 23086 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/8d/9e28e9af95739e6d2d2f8d4bef0b3432da40b7c3588fbad4298c1be09e48/geojson-2.5.0-py2.py3-none-any.whl", hash = "sha256:ccbd13368dd728f4e4f13ffe6aaf725b6e802c692ba0dde628be475040c534ba", size = 14839 }, -] - -[[package]] -name = "greenlet" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, - { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, - { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, - { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, - { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, - { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, - { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, - { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, - { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, -] - -[[package]] -name = "gunicorn" -version = "23.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029 }, -] - -[[package]] -name = "h11" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, -] - -[[package]] -name = "httpcore" -version = "1.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 }, -] - -[[package]] -name = "httpx" -version = "0.27.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, - { name = "sniffio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395 }, -] - -[[package]] -name = "httpx-sse" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, -] - -[[package]] -name = "immutabledict" -version = "4.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/c5/4240186fbabc58fba41bbe17c5f0cd37ffd4c0b85a5029ab104f946df175/immutabledict-4.2.1.tar.gz", hash = "sha256:d91017248981c72eb66c8ff9834e99c2f53562346f23e7f51e7a5ebcf66a3bcc", size = 6228 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/56/25ca7b848164b7d93dbd5fc97dd7751700c93e324fe854afbeb562ee2f98/immutabledict-4.2.1-py3-none-any.whl", hash = "sha256:c56a26ced38c236f79e74af3ccce53772827cef5c3bce7cab33ff2060f756373", size = 4700 }, -] - -[[package]] -name = "importlab" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "networkx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/22/ab9494dccf1e237276f98364d53673bc0ab97ebe5cb671e960f18710457d/importlab-0.8.1.tar.gz", hash = "sha256:b3893853b1f6eb027da509c3b40e6787e95dd66b4b66f1b3613aad77556e1465", size = 28856 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/1e/cc7360b4259f283b1a2de153335ce15ac9e710d66145aa471cffefe4b394/importlab-0.8.1-py2.py3-none-any.whl", hash = "sha256:124cfa00e8a34fefe8aac1a5e94f56c781b178c9eb61a1d3f60f7e03b77338d3", size = 21671 }, -] - -[[package]] -name = "inflect" -version = "5.6.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/db/cae5d8524c4b5e574c281895b212062f3b06d0e14186904ed71c538b4e90/inflect-5.6.2.tar.gz", hash = "sha256:aadc7ed73928f5e014129794bbac03058cca35d0a973a5fc4eb45c7fa26005f9", size = 69378 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/d8/3e1a32d305215166f5c32652c473aa766bd7809cd10b34c544dbc31facb5/inflect-5.6.2-py3-none-any.whl", hash = "sha256:b45d91a4a28a4e617ff1821117439b06eaa86e2a4573154af0149e9be6687238", size = 33704 }, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, -] - -[[package]] -name = "integrations" -version = "1.0.0" -source = { virtual = "." } -dependencies = [ - { name = "algoliasearch" }, - { name = "arxiv" }, - { name = "beartype" }, - { name = "browserbase" }, - { name = "cloudinary" }, - { name = "duckduckgo-search" }, - { name = "environs" }, - { name = "fastapi" }, - { name = "fire" }, - { name = "gunicorn" }, - { name = "httpx" }, - { name = "langchain" }, - { name = "langchain-community" }, - { name = "llama-index" }, - { name = "llama-parse" }, - { name = "openai" }, - { name = "pillow" }, - { name = "playwright" }, - { name = "pydantic", extra = ["email"] }, - { name = "pyowm" }, - { name = "selenium" }, - { name = "sentry-sdk", extra = ["flask"] }, - { name = "setuptools" }, - { name = "spider-client" }, - { name = "tenacity" }, - { name = "tweepy" }, - { name = "unstructured-client" }, - { name = "uvicorn" }, - { name = "uvloop" }, - { name = "wikipedia" }, -] - -[package.dev-dependencies] -dev = [ - { name = "datamodel-code-generator" }, - { name = "poethepoet" }, - { name = "pyright" }, - { name = "pytest" }, - { name = "pytest-asyncio" }, - { name = "pytest-cov" }, - { name = "pytype" }, - { name = "ruff" }, -] - -[package.metadata] -requires-dist = [ - { name = "algoliasearch", specifier = ">=4.14.0" }, - { name = "arxiv", specifier = "~=2.1.3" }, - { name = "beartype", specifier = "~=0.19.0" }, - { name = "browserbase", specifier = ">=1.0.5" }, - { name = "cloudinary", specifier = "~=1.41.0" }, - { name = "duckduckgo-search", specifier = "~=6.2.13" }, - { name = "environs", specifier = "~=11.2.1" }, - { name = "fastapi", specifier = "~=0.115.0" }, - { name = "fire", specifier = "~=0.6.0" }, - { name = "gunicorn", specifier = "~=23.0.0" }, - { name = "httpx", specifier = "~=0.27.2" }, - { name = "langchain", specifier = "~=0.3.0" }, - { name = "langchain-community", specifier = "~=0.3.0" }, - { name = "llama-index", specifier = "~=0.11.22" }, - { name = "llama-parse", specifier = "~=0.5.13" }, - { name = "openai", specifier = "~=1.47.1" }, - { name = "pillow", specifier = "~=11.0.0" }, - { name = "playwright", specifier = "~=1.48.0" }, - { name = "pydantic", extras = ["email"], specifier = "~=2.9.2" }, - { name = "pyowm", specifier = "~=3.3.0" }, - { name = "selenium", specifier = "~=4.25.0" }, - { name = "sentry-sdk", extras = ["flask"], specifier = ">=2.19.0" }, - { name = "setuptools", specifier = "~=75.1.0" }, - { name = "spider-client", specifier = "~=0.0.70" }, - { name = "tenacity", specifier = ">=8.2.0,<8.4.0" }, - { name = "tweepy", specifier = "~=4.14.0" }, - { name = "unstructured-client", specifier = ">=0.28.1" }, - { name = "uvicorn", specifier = "~=0.30.6" }, - { name = "uvloop", specifier = "~=0.21.0" }, - { name = "wikipedia", specifier = "~=1.4.0" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "datamodel-code-generator", specifier = ">=0.26.3" }, - { name = "poethepoet", specifier = ">=0.31.1" }, - { name = "pyright", specifier = ">=1.1.389" }, - { name = "pytest", specifier = ">=8.3.3" }, - { name = "pytest-asyncio", specifier = ">=0.24.0" }, - { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "pytype", specifier = ">=2024.10.11" }, - { name = "ruff", specifier = ">=0.9.0" }, -] - -[[package]] -name = "isort" -version = "5.13.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/f9/c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5/isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", size = 175303 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310 }, -] - -[[package]] -name = "itsdangerous" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 }, -] - -[[package]] -name = "jinja2" -version = "3.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, -] - -[[package]] -name = "jiter" -version = "0.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/78/1e/3462be93c2443392a710ae1c2bba2239f44bbf0c826baea77da9f8311678/jiter-0.8.0.tar.gz", hash = "sha256:86fee98b569d4cc511ff2e3ec131354fafebd9348a487549c31ad371ae730310", size = 162953 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/63/93084c4079b30e7832e1fb907045f8eca146d5d9a67bc62d311332416ab8/jiter-0.8.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d91a52d8f49ada2672a4b808a0c5c25d28f320a2c9ca690e30ebd561eb5a1002", size = 304424 }, - { url = "https://files.pythonhosted.org/packages/d2/68/ae698958b4d7d27632056cbfeae70e9d7a89ca0954ac6d0ef486afe5d8da/jiter-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c38cf25cf7862f61410b7a49684d34eb3b5bcbd7ddaf4773eea40e0bd43de706", size = 309584 }, - { url = "https://files.pythonhosted.org/packages/05/b3/d04a1398644c5848339c201e81d1c0d5125097bfd84fd92ebebfe724659c/jiter-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6189beb5c4b3117624be6b2e84545cff7611f5855d02de2d06ff68e316182be", size = 333677 }, - { url = "https://files.pythonhosted.org/packages/41/cd/76869353a0f5a91cf544bef80a9529d090b7d4254835997507738220e133/jiter-0.8.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e13fa849c0e30643554add089983caa82f027d69fad8f50acadcb21c462244ab", size = 354157 }, - { url = "https://files.pythonhosted.org/packages/34/9e/64adbc6d578a80debf7a1e81871257266e2149eede59300de7641dcd1a5e/jiter-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7765ca159d0a58e8e0f8ca972cd6d26a33bc97b4480d0d2309856763807cd28", size = 380841 }, - { url = "https://files.pythonhosted.org/packages/9d/ef/4ae8f15859d4dae10bef6d1d4a7258fc450b1f9db635becd19403d906ba4/jiter-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b0befe7c6e9fc867d5bed21bab0131dfe27d1fa5cd52ba2bced67da33730b7d", size = 388714 }, - { url = "https://files.pythonhosted.org/packages/3d/dd/3e7e3cdacda1990c1f09d9d2abdf2f37e80f8a9abd17804d61a74d8403fd/jiter-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d6363d4c6f1052b1d8b494eb9a72667c3ef5f80ebacfe18712728e85327000", size = 341876 }, - { url = "https://files.pythonhosted.org/packages/44/5b/c9533eb01eee153fd6f936e76a35583f8e244d7a5db9c2b64b4451167368/jiter-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a873e57009863eeac3e3969e4653f07031d6270d037d6224415074ac17e5505c", size = 374683 }, - { url = "https://files.pythonhosted.org/packages/f8/2f/34696e31a79c1b0b30e430dfdcd7c6ee7b5fd0f5b0df4503c1b01ec9bcba/jiter-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2582912473c0d9940791479fe1bf2976a34f212eb8e0a82ee9e645ac275c5d16", size = 512132 }, - { url = "https://files.pythonhosted.org/packages/3b/b3/041d97047a30b529d5d99b3cc5d9d58fc71d9c73f106e827ba28a99058b9/jiter-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:646163201af42f55393ee6e8f6136b8df488253a6533f4230a64242ecbfe6048", size = 505039 }, - { url = "https://files.pythonhosted.org/packages/59/5b/630995b058aa26e8ba9b15731b121cec9fc0e105d5ae93d2ed754a0e44f5/jiter-0.8.0-cp312-none-win32.whl", hash = "sha256:96e75c9abfbf7387cba89a324d2356d86d8897ac58c956017d062ad510832dae", size = 205267 }, - { url = "https://files.pythonhosted.org/packages/1b/0e/1b79afa5616309d4e2e84980c62a3f73c4035e5b856ad7601aebbb5a7db0/jiter-0.8.0-cp312-none-win_amd64.whl", hash = "sha256:ed6074552b4a32e047b52dad5ab497223721efbd0e9efe68c67749f094a092f7", size = 206572 }, -] - -[[package]] -name = "joblib" -version = "1.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/64/33/60135848598c076ce4b231e1b1895170f45fbcaeaa2c9d5e38b04db70c35/joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e", size = 2116621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 }, -] - -[[package]] -name = "jsonpatch" -version = "1.33" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonpointer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898 }, -] - -[[package]] -name = "jsonpath-python" -version = "1.0.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/49/e582e50b0c54c1b47e714241c4a4767bf28758bf90212248aea8e1ce8516/jsonpath-python-1.0.6.tar.gz", hash = "sha256:dd5be4a72d8a2995c3f583cf82bf3cd1a9544cfdabf2d22595b67aff07349666", size = 18121 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/8a/d63959f4eff03893a00e6e63592e3a9f15b9266ed8e0275ab77f8c7dbc94/jsonpath_python-1.0.6-py3-none-any.whl", hash = "sha256:1e3b78df579f5efc23565293612decee04214609208a2335884b3ee3f786b575", size = 7552 }, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, -] - -[[package]] -name = "langchain" -version = "0.3.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "langchain-core" }, - { name = "langchain-text-splitters" }, - { name = "langsmith" }, - { name = "numpy" }, - { name = "pydantic" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "sqlalchemy" }, - { name = "tenacity" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/9e/7cf5c9653d545461b8e29d70cb2e029dbd5d10cd771968f342a35d324b8f/langchain-0.3.9.tar.gz", hash = "sha256:4950c4ad627d0aa95ce6bda7de453e22059b7e7836b562a8f781fb0b05d7294c", size = 419365 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/04/1990e724a3cc3cc858f48f524facabbcab6857b5690ddf1f747899e0baab/langchain-0.3.9-py3-none-any.whl", hash = "sha256:ade5a1fee2f94f2e976a6c387f97d62cc7f0b9f26cfe0132a41d2bda761e1045", size = 1008401 }, -] - -[[package]] -name = "langchain-community" -version = "0.3.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "dataclasses-json" }, - { name = "httpx-sse" }, - { name = "langchain" }, - { name = "langchain-core" }, - { name = "langsmith" }, - { name = "numpy" }, - { name = "pydantic-settings" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "sqlalchemy" }, - { name = "tenacity" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0b/d3/11870afbbe1e3bbf510b451a881d68481229f635f84d390d8bc26e7fa487/langchain_community-0.3.8.tar.gz", hash = "sha256:f7575a717d95208d0e969c090104622783c6a38a5527657aa5aa38776fadc835", size = 1667696 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/09/fe45363955df325fb0aba3757b6b5bb0c530b6de257481c445ba39492dbf/langchain_community-0.3.8-py3-none-any.whl", hash = "sha256:191b3fcdf6b2e92934f4daeba5f5d0ac684b03772b15ef9d3c3fbcd86bd6cd64", size = 2441029 }, -] - -[[package]] -name = "langchain-core" -version = "0.3.21" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonpatch" }, - { name = "langsmith" }, - { name = "packaging" }, - { name = "pydantic" }, - { name = "pyyaml" }, - { name = "tenacity" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/64/0c/9388d0959dff69fbca6e0f79076811cb1a494e06d04c8a880079228edded/langchain_core-0.3.21.tar.gz", hash = "sha256:561b52b258ffa50a9fb11d7a1940ebfd915654d1ec95b35e81dfd5ee84143411", size = 328597 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/50/e0bd90fc481d1cc8c2039ad6161b20fc8e396a7cba6064a4f1e8e5afea62/langchain_core-0.3.21-py3-none-any.whl", hash = "sha256:7e723dff80946a1198976c6876fea8326dc82566ef9bcb5f8d9188f738733665", size = 409467 }, -] - -[[package]] -name = "langchain-text-splitters" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "langchain-core" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/47/63/0f7dae88d87e924d819e6a6375043499e3bc9931e306edd48b396abb4e42/langchain_text_splitters-0.3.2.tar.gz", hash = "sha256:81e6515d9901d6dd8e35fb31ccd4f30f76d44b771890c789dc835ef9f16204df", size = 20229 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/c6/5ba25c8bad647e92a92b3066177ab10d78efbd16c0b9919948cdcd18b027/langchain_text_splitters-0.3.2-py3-none-any.whl", hash = "sha256:0db28c53f41d1bc024cdb3b1646741f6d46d5371e90f31e7e7c9fbe75d01c726", size = 25564 }, -] - -[[package]] -name = "langsmith" -version = "0.1.147" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "httpx" }, - { name = "orjson", marker = "platform_python_implementation != 'PyPy'" }, - { name = "pydantic" }, - { name = "requests" }, - { name = "requests-toolbelt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6c/56/201dd94d492ae47c1bf9b50cacc1985113dc2288d8f15857e1f4a6818376/langsmith-0.1.147.tar.gz", hash = "sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a", size = 300453 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/f0/63b06b99b730b9954f8709f6f7d9b8d076fa0a973e472efe278089bde42b/langsmith-0.1.147-py3-none-any.whl", hash = "sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15", size = 311812 }, -] - -[[package]] -name = "libcst" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/27/a6/a19b587108b15d3e0bfa8d0944265809581c8b8e161e22c9c9060afbbf4a/libcst-1.5.1.tar.gz", hash = "sha256:71cb294db84df9e410208009c732628e920111683c2f2b2e0c5b71b98464f365", size = 773387 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/0c/eac92358d05e75516f15654fb1550c9af165ce5a19f2b8adf44916ebebc4/libcst-1.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:666813950b8637af0c0e96b1ca46f5d5f183d2fe50bbac2186f5b283a99f3529", size = 2122234 }, - { url = "https://files.pythonhosted.org/packages/b3/26/6925af831f039e27eb380ba64448f33aea255ab6ecae6b5deec6ec637197/libcst-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7b58b36022ae77a5a00002854043ae95c03e92f6062ad08473eff326f32efa0", size = 2031324 }, - { url = "https://files.pythonhosted.org/packages/e0/87/1b593bdddcb0d38d2232dab96b1f92deb2481c72063394f0394f680ff5b3/libcst-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb13d7c598fe9a798a1d22eae56ab3d3d599b38b83436039bd6ae229fc854d7", size = 2172432 }, - { url = "https://files.pythonhosted.org/packages/88/27/966f9fe2652aa496a85503333559937e58979eef674f9803c995d6704c44/libcst-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5987daff8389b0df60b5c20499ff4fb73fc03cb3ae1f6a746eefd204ed08df85", size = 2263445 }, - { url = "https://files.pythonhosted.org/packages/ff/79/f172226edbdd5b3a31d3c270e4407b35e3f5b0c6e404967e42314f1b434e/libcst-1.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f3d2f32ee081bad3394546b0b9ac5e31686d3b5cfe4892d716d2ba65f9ec08", size = 2343044 }, - { url = "https://files.pythonhosted.org/packages/91/f2/664ae80583c66bcc3a2debcc8bab04e6843c3a6ac02e94050dddb5e5909c/libcst-1.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1ff21005c33b634957a98db438e882522febf1cacc62fa716f29e163a3f5871a", size = 2217129 }, - { url = "https://files.pythonhosted.org/packages/8b/df/b6b506d50f0a00a49d4e6217fd521c208cbf8693687cd0ac5880507ca6d1/libcst-1.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15697ea9f1edbb9a263364d966c72abda07195d1c1a6838eb79af057f1040770", size = 2322129 }, - { url = "https://files.pythonhosted.org/packages/eb/84/9c79a0aa5334f39a86844d32ef474491a817e9eefaa8f23fc81e7ad07d8b/libcst-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:cedd4c8336e01c51913113fbf5566b8f61a86d90f3d5cc5b1cb5049575622c5f", size = 2032278 }, -] - -[[package]] -name = "llama-cloud" -version = "0.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "httpx" }, - { name = "pydantic" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d4/87/60aff359d89419e06a87aaf79ef6d0fc640d6bd5f7ca6b83591cbb525003/llama_cloud-0.1.5.tar.gz", hash = "sha256:8ce1db36754a6a46c8511561dbc040a2e89ba4ca1cf4edfb6ce382a5240f6cb6", size = 70157 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/30/7b/5f7be1348b3efb0b60ad505d01060ed26faedb84f050651eb61233aaa60b/llama_cloud-0.1.5-py3-none-any.whl", hash = "sha256:15605022520d04bd6ef6a46c0cbde833f301d652286d34fca02b4c44e2a7a2aa", size = 188974 }, -] - -[[package]] -name = "llama-index" -version = "0.11.23" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-agent-openai" }, - { name = "llama-index-cli" }, - { name = "llama-index-core" }, - { name = "llama-index-embeddings-openai" }, - { name = "llama-index-indices-managed-llama-cloud" }, - { name = "llama-index-legacy" }, - { name = "llama-index-llms-openai" }, - { name = "llama-index-multi-modal-llms-openai" }, - { name = "llama-index-program-openai" }, - { name = "llama-index-question-gen-openai" }, - { name = "llama-index-readers-file" }, - { name = "llama-index-readers-llama-parse" }, - { name = "nltk" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/17/5131d4325a9da85e761249080f217d99478a28c9586a13b06aab4a692371/llama_index-0.11.23.tar.gz", hash = "sha256:e02118dfe060568cf40c9ed109c16d559911b2e19eac5e6babc04ed6b57ede02", size = 7803 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/73/57407a49da1bf6a3e441d7ceb84577a9e8c10295c810ab40a6952bcf599e/llama_index-0.11.23-py3-none-any.whl", hash = "sha256:08513b86fed8e4295b52dc204c193e7186a2e65fc09d581deeb6a74afaaf74fe", size = 6823 }, -] - -[[package]] -name = "llama-index-agent-openai" -version = "0.3.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "llama-index-llms-openai" }, - { name = "openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ef/b2/95121d8ea4da363dabdacca7b340dfae4353b099a6b6b910de948f9684af/llama_index_agent_openai-0.3.4.tar.gz", hash = "sha256:80e3408d97121bebca3fa3ffd14b51285870c1c3c73d4ee04d3d18cfe6040466", size = 10401 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/69/69857756c139897f209a2c372380509f718fb147170e2f2287cf4d77314a/llama_index_agent_openai-0.3.4-py3-none-any.whl", hash = "sha256:3720ce9bb12417a99a3fe84e52cce23e762b13f88a2dfc4292c76f4df9b26b4a", size = 13036 }, -] - -[[package]] -name = "llama-index-cli" -version = "0.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "llama-index-embeddings-openai" }, - { name = "llama-index-llms-openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/d2/5894ccc0f86c4e95d557c8c7ef0c15d19c67e0ad3d4628247684350c7363/llama_index_cli-0.3.1.tar.gz", hash = "sha256:1890dd687cf440f3651365a549e303363162c167b8efbd87a3aa10058d6d5c77", size = 24450 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/28/58/fb9d85d8f29d7379e953caf50278e095d302231a508d3e46dafd3a4bea1e/llama_index_cli-0.3.1-py3-none-any.whl", hash = "sha256:2111fbb6973f5b1eabce0d6cca3986499f0f2f625b13d7f48269a49c64c027d4", size = 27767 }, -] - -[[package]] -name = "llama-index-core" -version = "0.11.23" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "dataclasses-json" }, - { name = "deprecated" }, - { name = "dirtyjson" }, - { name = "filetype" }, - { name = "fsspec" }, - { name = "httpx" }, - { name = "nest-asyncio" }, - { name = "networkx" }, - { name = "nltk" }, - { name = "numpy" }, - { name = "pillow" }, - { name = "pydantic" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "sqlalchemy", extra = ["asyncio"] }, - { name = "tenacity" }, - { name = "tiktoken" }, - { name = "tqdm" }, - { name = "typing-extensions" }, - { name = "typing-inspect" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/4f/496d43c467ca2497f9c7632ac8ebd15049beb05115e9f0546de3e19ddddd/llama_index_core-0.11.23.tar.gz", hash = "sha256:e150859696a0eae169fe19323f46e9a31af2c12c3182012e4d0353ea8eb06d24", size = 1325843 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/67/96ed984ebf472fe085bd5d2847c4f284cfe416805c1d6e705682a559c9fc/llama_index_core-0.11.23-py3-none-any.whl", hash = "sha256:25a0cb4a055bfb348655ca4acd1b475529bd8537a7b81874ef14ed13f56e06c1", size = 1576555 }, -] - -[[package]] -name = "llama-index-embeddings-openai" -version = "0.2.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/06/35969946f229212c17133ca5aa446824381e309141f8ae952d0d40bfa8f5/llama_index_embeddings_openai-0.2.5.tar.gz", hash = "sha256:0047dd71d747068645ed728c29312aa91b65bbe4c6142180034c64dfc5c6f6e8", size = 5395 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/4e/2cabf16c4ef7dda74c233d14d017ba57e933c4dea8a9807b90d145177e88/llama_index_embeddings_openai-0.2.5-py3-none-any.whl", hash = "sha256:823c8311e556349ba19dda408a64a314fa3dafe0e5759709c54d33a0269aa6ba", size = 6089 }, -] - -[[package]] -name = "llama-index-indices-managed-llama-cloud" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-cloud" }, - { name = "llama-index-core" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/59/db/ac9dcd4e8993172c69b9c59430ca4b957c3a68c560ed6c57023c02231503/llama_index_indices_managed_llama_cloud-0.6.0.tar.gz", hash = "sha256:fe32aecb87ffd81eb824fc64509cc991c3cde574455e53e73a4dbe30961c4f21", size = 10564 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/04/382c7498d3d108d9dee77ece610075c71ef6e3762084d8f983b1fed040cc/llama_index_indices_managed_llama_cloud-0.6.0-py3-none-any.whl", hash = "sha256:18a3bbb386c4fbda8883cf40339bde402637e4cd5e06bcf3870d8c174b9baa3a", size = 11083 }, -] - -[[package]] -name = "llama-index-legacy" -version = "0.9.48.post4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "dataclasses-json" }, - { name = "deprecated" }, - { name = "dirtyjson" }, - { name = "fsspec" }, - { name = "httpx" }, - { name = "nest-asyncio" }, - { name = "networkx" }, - { name = "nltk" }, - { name = "numpy" }, - { name = "openai" }, - { name = "pandas" }, - { name = "requests" }, - { name = "sqlalchemy", extra = ["asyncio"] }, - { name = "tenacity" }, - { name = "tiktoken" }, - { name = "typing-extensions" }, - { name = "typing-inspect" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d6/18/9a276184d281876707ee257716eef5a80dab897624058eb1b539f7a678d0/llama_index_legacy-0.9.48.post4.tar.gz", hash = "sha256:f8a9764e7e134a52bfef5e53d2d62561bfc01fc09874c51cc001df6f5302ae30", size = 781650 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/47/ffb4a02d6d499a1207c89f0214e8a72f0437fb7da46ec4927d239ec10520/llama_index_legacy-0.9.48.post4-py3-none-any.whl", hash = "sha256:4b817d7c343fb5f7f00c4410eff519f320013b8d5f24c4fedcf270c471f92038", size = 1200763 }, -] - -[[package]] -name = "llama-index-llms-openai" -version = "0.2.16" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ba/e7/46f16e0f3ad25f49a050f1421a20b738ec312a5003bd07d749095eedb235/llama_index_llms_openai-0.2.16.tar.gz", hash = "sha256:7c666dd27056c278a079ff45d53f1fbfc8ed363764aa7baeee2e03df47f9072a", size = 13437 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/49/bae3a019eba473a0b9bf21ad911786f86941e86dd0dac3c3e909352eaf54/llama_index_llms_openai-0.2.16-py3-none-any.whl", hash = "sha256:413466acbb894bd81f8dab2037f595e92392d869eec6d8274a16d43123cac8b6", size = 13623 }, -] - -[[package]] -name = "llama-index-multi-modal-llms-openai" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "llama-index-llms-openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/03/26/298362f1c9531c637b46466847d8aad967aac3b8561c8a0dc859921f6feb/llama_index_multi_modal_llms_openai-0.2.3.tar.gz", hash = "sha256:8eb9b7f1ff3956ef0979e21bc83e6a885e40987b7199f195e46525d06e3ae402", size = 5098 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/e2/3e2b639880baf5fd5ca0f88abd68719d2ed7af4d5076698cb5aff612505c/llama_index_multi_modal_llms_openai-0.2.3-py3-none-any.whl", hash = "sha256:96b36beb2c3fca4faca80c59ecf7c6c6629ecdb96c288ef89777b592ec43f872", size = 5886 }, -] - -[[package]] -name = "llama-index-program-openai" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-agent-openai" }, - { name = "llama-index-core" }, - { name = "llama-index-llms-openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/c2/7a136b2f60c281767399149d6bec03f0df7a8a8455ead5da438745236d37/llama_index_program_openai-0.2.0.tar.gz", hash = "sha256:4139935541c011257fbfeb9662b3bf1237b729ef4b1c8f4ddf5b6789d2374ac4", size = 4870 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/67/45422d24aad29191f3a9eb621afa0feb491653f1cb012d51083824d36c7b/llama_index_program_openai-0.2.0-py3-none-any.whl", hash = "sha256:2e10d0c8f21af2e9443eb79e81bb31e7b73835b7c7bbd7ddf20e0a9c846cd368", size = 5295 }, -] - -[[package]] -name = "llama-index-question-gen-openai" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "llama-index-llms-openai" }, - { name = "llama-index-program-openai" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/20/fca16fb6914c2b94b79a1a6191698c489a2a11ade056fac3215624c3242b/llama_index_question_gen_openai-0.2.0.tar.gz", hash = "sha256:3dde1cecbd651000639c20031d7ea23334276aabb181cac40ff424f35e10465e", size = 2605 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/97/64691f3b3a5be2bea75102b189818276c7b2ddf688050e387954b176623a/llama_index_question_gen_openai-0.2.0-py3-none-any.whl", hash = "sha256:a16e68fc5434e9a793f1dfd0cc0354ee19afd167f1d499403b0085b11c5406c0", size = 2902 }, -] - -[[package]] -name = "llama-index-readers-file" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "llama-index-core" }, - { name = "pandas" }, - { name = "pypdf" }, - { name = "striprtf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ce/5f/f5f3fbd83f36f34d463c61d379865ae11ce15fc4d53fb82f9897cbd0def8/llama_index_readers_file-0.3.0.tar.gz", hash = "sha256:6c675fcd2f0599a131f89e1c5ed3521dde31338a9b724a7721f5dfd7243ea8d8", size = 21941 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/93/d07302de4886e2fa2d7406f7d7dde94376c2b27ab4808b9544cdbdeb8318/llama_index_readers_file-0.3.0-py3-none-any.whl", hash = "sha256:259ee195ea8285f8421b381ec3a64f5fae68de69435970ae64e544f07a4403ad", size = 38890 }, -] - -[[package]] -name = "llama-index-readers-llama-parse" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "llama-index-core" }, - { name = "llama-parse" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/04/33/dba0313ac42ca5082e2931a6d15ebfd2e0ffb34390da199639ef6ff378e3/llama_index_readers_llama_parse-0.3.0.tar.gz", hash = "sha256:a5feada0895714dcc41d65dd512c1c38cf70d8ae19947cff82b80d58e6aa367e", size = 2471 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/49/b2/174bb131b767f9873b9f95b6c216043ccde4cfbeb3bcaf01fa23594f810a/llama_index_readers_llama_parse-0.3.0-py3-none-any.whl", hash = "sha256:1973cc710dbd5e110c7500c9983ecb45787ad1ff92e6b2113f94a57cf48f3038", size = 2474 }, -] - -[[package]] -name = "llama-parse" -version = "0.5.15" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "llama-index-core" }, - { name = "pydantic" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/83/00/64bb0683fc70212c3d5005791afa90527eede5a2e2c38d928bf01b4f035d/llama_parse-0.5.15.tar.gz", hash = "sha256:ecb009f71c8b4c657085ca81808a922c80785810e38b10f3b46f03cfd29ba92a", size = 14053 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/87/6b4719bab8cb1c5fb913427afa1c91f76528ce48842c621e4098fa5a97da/llama_parse-0.5.15-py3-none-any.whl", hash = "sha256:7a3506c7d3ae5a8e68c70a457a7213d2698e26abcef1d7a989eb9771cd73ae60", size = 13524 }, -] - -[[package]] -name = "markupsafe" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, -] - -[[package]] -name = "marshmallow" -version = "3.23.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/30/14d8609f65c8aeddddd3181c06d2c9582da6278f063b27c910bbf9903441/marshmallow-3.23.1.tar.gz", hash = "sha256:3a8dfda6edd8dcdbf216c0ede1d1e78d230a6dc9c5a088f58c4083b974a0d468", size = 177488 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/a7/a78ff54e67ef92a3d12126b98eb98ab8abab3de4a8c46d240c87e514d6bb/marshmallow-3.23.1-py3-none-any.whl", hash = "sha256:fece2eb2c941180ea1b7fcbd4a83c51bfdd50093fdd3ad2585ee5e1df2508491", size = 49488 }, -] - -[[package]] -name = "msgspec" -version = "0.18.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/fb/42b1865063fddb14dbcbb6e74e0a366ecf1ba371c4948664dde0b0e10f95/msgspec-0.18.6.tar.gz", hash = "sha256:a59fc3b4fcdb972d09138cb516dbde600c99d07c38fd9372a6ef500d2d031b4e", size = 216757 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/b5/c8fbf1db814eb29eda402952374b594b2559419ba7ec6d0997a9e5687530/msgspec-0.18.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d86f5071fe33e19500920333c11e2267a31942d18fed4d9de5bc2fbab267d28c", size = 202109 }, - { url = "https://files.pythonhosted.org/packages/d7/9a/235d2dbab078a0b8e6f338205dc59be0b027ce000554ee6a9c41b19339e5/msgspec-0.18.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce13981bfa06f5eb126a3a5a38b1976bddb49a36e4f46d8e6edecf33ccf11df1", size = 190281 }, - { url = "https://files.pythonhosted.org/packages/0e/f2/f864ed36a8a62c26b57c3e08d212bd8f3d12a3ca3ef64600be5452aa3c82/msgspec-0.18.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97dec6932ad5e3ee1e3c14718638ba333befc45e0661caa57033cd4cc489466", size = 210305 }, - { url = "https://files.pythonhosted.org/packages/73/16/dfef780ced7d690dd5497846ed242ef3e27e319d59d1ddaae816a4f2c15e/msgspec-0.18.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad237100393f637b297926cae1868b0d500f764ccd2f0623a380e2bcfb2809ca", size = 212510 }, - { url = "https://files.pythonhosted.org/packages/c1/90/f5b3a788c4b3d92190e3345d1afa3dd107d5f16b8194e1f61b72582ee9bd/msgspec-0.18.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db1d8626748fa5d29bbd15da58b2d73af25b10aa98abf85aab8028119188ed57", size = 214844 }, - { url = "https://files.pythonhosted.org/packages/ce/0b/d4cc1b09f8dfcc6cc4cc9739c13a86e093fe70257b941ea9feb15df22996/msgspec-0.18.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d70cb3d00d9f4de14d0b31d38dfe60c88ae16f3182988246a9861259c6722af6", size = 217113 }, - { url = "https://files.pythonhosted.org/packages/3f/76/30d8f152299f65c85c46a2cbeaf95ad1d18516b5ce730acdaef696d4cfe6/msgspec-0.18.6-cp312-cp312-win_amd64.whl", hash = "sha256:1003c20bfe9c6114cc16ea5db9c5466e49fae3d7f5e2e59cb70693190ad34da0", size = 187184 }, -] - -[[package]] -name = "multidict" -version = "6.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, - { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, - { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, - { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, - { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, - { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, - { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, - { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, - { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, - { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, - { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, - { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, - { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, - { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, - { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, - { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, -] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, -] - -[[package]] -name = "networkx" -version = "3.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263 }, -] - -[[package]] -name = "ninja" -version = "1.11.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b4/49/4f1a79f99f4c3eb5d22f943bba14832923bb44423254d5089d38a9f6da63/ninja-1.11.1.2.tar.gz", hash = "sha256:4fbd07b2b4232543726abafdd350453a2fabef4527664ca0e491c578aee5f857", size = 129009 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/e6/097a441e1910399ed536d36258f6d1b5fce6c5caf6c4f0611b41e7a18c3e/ninja-1.11.1.2-py3-none-macosx_10_9_universal2.whl", hash = "sha256:1cfbb845095ea09da8c089375a8f999e75f4817d01506297c66181b533175647", size = 279133 }, - { url = "https://files.pythonhosted.org/packages/7b/87/d33b00c6168915b343fde8877a6852692ba6f7d3ebee07f251a2dc338563/ninja-1.11.1.2-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ab4068ff7ff1f895485ad604116165b05d6810c802170a7f22c09dd678d5587d", size = 472101 }, - { url = "https://files.pythonhosted.org/packages/62/54/787bb70e6af2f1b1853af9bab62a5e7cb35b957d72daf253b7f3c653c005/ninja-1.11.1.2-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:33d258809c8eda81f9d80e18a081a6eef3215e5fd1ba8902400d786641994e89", size = 422889 }, - { url = "https://files.pythonhosted.org/packages/27/9f/1a021b766134f4ea91346fbbf7653e17a483242929c9c579b769830bdcd6/ninja-1.11.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed25892c16e49e66383a8db6a67a9f33b41230fc485426094d7da51e2255ec2b", size = 157046 }, - { url = "https://files.pythonhosted.org/packages/a8/e3/e05286d374e69272bd0a00517f76effe026207cb07a9d269cc3abdfe4bdd/ninja-1.11.1.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:232767144401847db62e8392047866698bb3678158a1ae4400a97111110e90f2", size = 180014 }, - { url = "https://files.pythonhosted.org/packages/22/b4/0fb29155c05685a8a4d20489b90c340dd781db5c14b5586075fcbdf748e4/ninja-1.11.1.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9200247cf4c1643a67d079836b8dd31a362e34e618b50b5e3a5c0d0171efc442", size = 157099 }, - { url = "https://files.pythonhosted.org/packages/e7/85/d67805c3d47c902f7b1a1a5b75317f4d45af7bb7132c342adf47eafc66b8/ninja-1.11.1.2-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0c9c36f6e6f8946c7271b0ed14d98fc3ea467a0c0954fb73f5f656c42667d943", size = 130093 }, - { url = "https://files.pythonhosted.org/packages/eb/40/9a7fc0e417b1aab20f91be957418d2e5952db9f9b72f4396a8a097310964/ninja-1.11.1.2-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:3e815e4147832b17ec38417efcb31df51671ae273f083409304c7cc32a14dd1a", size = 372508 }, - { url = "https://files.pythonhosted.org/packages/0e/db/8c4843e8454e1ec2e6651b5caef31762e46fbaf3a71e6817e7d9cd28b5cb/ninja-1.11.1.2-py3-none-musllinux_1_1_i686.whl", hash = "sha256:ecf3df324b56fdfb0872990a71e706efdae286e010310816c72b6bf24431711b", size = 419368 }, - { url = "https://files.pythonhosted.org/packages/c3/e0/17ccb830c1638966d75a19a59e0ce55aadb4cf5c2cae5bcf97f74511c33e/ninja-1.11.1.2-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:cb6b476eb4e84c0efcfd3ab04f660dedce8adb854b56b043639312f3af176df6", size = 420305 }, - { url = "https://files.pythonhosted.org/packages/30/e4/7d02c7a633c36a9aa7433fb742931a62f0a3aa72b484ed23d73cc6415286/ninja-1.11.1.2-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:508fb93395a5c82a4d99d30fce0cbaf5cb2bd33e5c1dc9faaa080e199802dbc9", size = 416060 }, - { url = "https://files.pythonhosted.org/packages/0d/11/4dc053f20c64f5a340d72f948bbad22818d242afd54e826e0c95ca3779fe/ninja-1.11.1.2-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:52af7f45750c5c288d566fd0c927ed9bb0d8f2e50803709f582a42bcc4ec167b", size = 379729 }, - { url = "https://files.pythonhosted.org/packages/ab/57/adaa8052ae4854c5f8e228baa1a77aad68093bc1aedf32597fa5e7714118/ninja-1.11.1.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99fc4b87299242e10d7edd1c7737fdfb1269019e32f9f4267630887f6183a49e", size = 434886 }, - { url = "https://files.pythonhosted.org/packages/41/81/b80ab3c02a2e25f71334e821852856cfc32d1339ccd7fe0858c556d8af4f/ninja-1.11.1.2-py3-none-win32.whl", hash = "sha256:949e23cb2e79a33ea37d23a07d26846d2e75464e8e6940f8751fe964bc141dfa", size = 255983 }, - { url = "https://files.pythonhosted.org/packages/72/97/4109961b899ff2decfc0439de442cbe846c94210f263260a211cbee2b29d/ninja-1.11.1.2-py3-none-win_amd64.whl", hash = "sha256:0bca4179119426a3c3c9d5661c3b244d68781064e50907a1e066bc55edc18e06", size = 296510 }, - { url = "https://files.pythonhosted.org/packages/6d/cc/9deb2b6385c7188ad873ed17afdb5f25931e1c07c8a2e2c452e25cd288e1/ninja-1.11.1.2-py3-none-win_arm64.whl", hash = "sha256:ee7b1924c28e6cab5b866f7b229f07777d25d8cfccbbedf3da5ffb4f72f57877", size = 270558 }, -] - -[[package]] -name = "nltk" -version = "3.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "joblib" }, - { name = "regex" }, - { name = "tqdm" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3c/87/db8be88ad32c2d042420b6fd9ffd4a149f9a0d7f0e86b3f543be2eeeedd2/nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868", size = 2904691 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/66/7d9e26593edda06e8cb531874633f7c2372279c3b0f46235539fe546df8b/nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1", size = 1505442 }, -] - -[[package]] -name = "nodeenv" -version = "1.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, -] - -[[package]] -name = "numpy" -version = "1.26.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901 }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868 }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109 }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613 }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172 }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643 }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803 }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754 }, -] - -[[package]] -name = "oauthlib" -version = "3.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6d/fa/fbf4001037904031639e6bfbfc02badfc7e12f137a8afa254df6c4c8a670/oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918", size = 177352 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", size = 151688 }, -] - -[[package]] -name = "openai" -version = "1.47.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/2c/b26f179a15ddc1b9c6b986db9a71b121e77a11b82c5e9d3bb740edf95223/openai-1.47.1.tar.gz", hash = "sha256:62c8f5f478f82ffafc93b33040f8bb16a45948306198bd0cba2da2ecd9cf7323", size = 297985 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a1/601773020ad98d6d55f45c4482ea0c30af1351827eaab98cbc7d27b4716d/openai-1.47.1-py3-none-any.whl", hash = "sha256:34277583bf268bb2494bc03f48ac123788c5e2a914db1d5a23d5edc29d35c825", size = 375614 }, -] - -[[package]] -name = "orjson" -version = "3.10.12" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/04/bb9f72987e7f62fb591d6c880c0caaa16238e4e530cbc3bdc84a7372d75f/orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff", size = 5438647 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/2f/989adcafad49afb535da56b95d8f87d82e748548b2a86003ac129314079c/orjson-3.10.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53206d72eb656ca5ac7d3a7141e83c5bbd3ac30d5eccfe019409177a57634b0d", size = 248678 }, - { url = "https://files.pythonhosted.org/packages/69/b9/8c075e21a50c387649db262b618ebb7e4d40f4197b949c146fc225dd23da/orjson-3.10.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8010afc2150d417ebda810e8df08dd3f544e0dd2acab5370cfa6bcc0662f8f", size = 136763 }, - { url = "https://files.pythonhosted.org/packages/87/d3/78edf10b4ab14c19f6d918cf46a145818f4aca2b5a1773c894c5490d3a4c/orjson-3.10.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed459b46012ae950dd2e17150e838ab08215421487371fa79d0eced8d1461d70", size = 149137 }, - { url = "https://files.pythonhosted.org/packages/16/81/5db8852bdf990a0ddc997fa8f16b80895b8cc77c0fe3701569ed2b4b9e78/orjson-3.10.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dcb9673f108a93c1b52bfc51b0af422c2d08d4fc710ce9c839faad25020bb69", size = 140567 }, - { url = "https://files.pythonhosted.org/packages/fa/a6/9ce1e3e3db918512efadad489630c25841eb148513d21dab96f6b4157fa1/orjson-3.10.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22a51ae77680c5c4652ebc63a83d5255ac7d65582891d9424b566fb3b5375ee9", size = 156620 }, - { url = "https://files.pythonhosted.org/packages/47/d4/05133d6bea24e292d2f7628b1e19986554f7d97b6412b3e51d812e38db2d/orjson-3.10.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910fdf2ac0637b9a77d1aad65f803bac414f0b06f720073438a7bd8906298192", size = 131555 }, - { url = "https://files.pythonhosted.org/packages/b9/7a/b3fbffda8743135c7811e95dc2ab7cdbc5f04999b83c2957d046f1b3fac9/orjson-3.10.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:24ce85f7100160936bc2116c09d1a8492639418633119a2224114f67f63a4559", size = 139743 }, - { url = "https://files.pythonhosted.org/packages/b5/13/95bbcc9a6584aa083da5ce5004ce3d59ea362a542a0b0938d884fd8790b6/orjson-3.10.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a76ba5fc8dd9c913640292df27bff80a685bed3a3c990d59aa6ce24c352f8fc", size = 131733 }, - { url = "https://files.pythonhosted.org/packages/e8/29/dddbb2ea6e7af426fcc3da65a370618a88141de75c6603313d70768d1df1/orjson-3.10.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ff70ef093895fd53f4055ca75f93f047e088d1430888ca1229393a7c0521100f", size = 415788 }, - { url = "https://files.pythonhosted.org/packages/53/df/4aea59324ac539975919b4705ee086aced38e351a6eb3eea0f5071dd5661/orjson-3.10.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4244b7018b5753ecd10a6d324ec1f347da130c953a9c88432c7fbc8875d13be", size = 142347 }, - { url = "https://files.pythonhosted.org/packages/55/55/a52d83d7c49f8ff44e0daab10554490447d6c658771569e1c662aa7057fe/orjson-3.10.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16135ccca03445f37921fa4b585cff9a58aa8d81ebcb27622e69bfadd220b32c", size = 130829 }, - { url = "https://files.pythonhosted.org/packages/a1/8b/b1beb1624dd4adf7d72e2d9b73c4b529e7851c0c754f17858ea13e368b33/orjson-3.10.12-cp312-none-win32.whl", hash = "sha256:2d879c81172d583e34153d524fcba5d4adafbab8349a7b9f16ae511c2cee8708", size = 143659 }, - { url = "https://files.pythonhosted.org/packages/13/91/634c9cd0bfc6a857fc8fab9bf1a1bd9f7f3345e0d6ca5c3d4569ceb6dcfa/orjson-3.10.12-cp312-none-win_amd64.whl", hash = "sha256:fc23f691fa0f5c140576b8c365bc942d577d861a9ee1142e4db468e4e17094fb", size = 135221 }, -] - -[[package]] -name = "outcome" -version = "1.3.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/df/77698abfac98571e65ffeb0c1fba8ffd692ab8458d617a0eed7d9a8d38f2/outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8", size = 21060 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b", size = 10692 }, -] - -[[package]] -name = "packaging" -version = "24.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, -] - -[[package]] -name = "pandas" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "python-dateutil" }, - { name = "pytz" }, - { name = "tzdata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, - { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, - { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, - { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, - { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, - { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, -] - -[[package]] -name = "pastel" -version = "0.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955 }, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - -[[package]] -name = "pillow" -version = "11.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/a3/26e606ff0b2daaf120543e537311fa3ae2eb6bf061490e4fea51771540be/pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", size = 3147642 }, - { url = "https://files.pythonhosted.org/packages/4f/d5/1caabedd8863526a6cfa44ee7a833bd97f945dc1d56824d6d76e11731939/pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", size = 2978999 }, - { url = "https://files.pythonhosted.org/packages/d9/ff/5a45000826a1aa1ac6874b3ec5a856474821a1b59d838c4f6ce2ee518fe9/pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", size = 4196794 }, - { url = "https://files.pythonhosted.org/packages/9d/21/84c9f287d17180f26263b5f5c8fb201de0f88b1afddf8a2597a5c9fe787f/pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", size = 4300762 }, - { url = "https://files.pythonhosted.org/packages/84/39/63fb87cd07cc541438b448b1fed467c4d687ad18aa786a7f8e67b255d1aa/pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9", size = 4210468 }, - { url = "https://files.pythonhosted.org/packages/7f/42/6e0f2c2d5c60f499aa29be14f860dd4539de322cd8fb84ee01553493fb4d/pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", size = 4381824 }, - { url = "https://files.pythonhosted.org/packages/31/69/1ef0fb9d2f8d2d114db982b78ca4eeb9db9a29f7477821e160b8c1253f67/pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", size = 4296436 }, - { url = "https://files.pythonhosted.org/packages/44/ea/dad2818c675c44f6012289a7c4f46068c548768bc6c7f4e8c4ae5bbbc811/pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", size = 4429714 }, - { url = "https://files.pythonhosted.org/packages/af/3a/da80224a6eb15bba7a0dcb2346e2b686bb9bf98378c0b4353cd88e62b171/pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", size = 2249631 }, - { url = "https://files.pythonhosted.org/packages/57/97/73f756c338c1d86bb802ee88c3cab015ad7ce4b838f8a24f16b676b1ac7c/pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", size = 2567533 }, - { url = "https://files.pythonhosted.org/packages/0b/30/2b61876e2722374558b871dfbfcbe4e406626d63f4f6ed92e9c8e24cac37/pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", size = 2254890 }, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, -] - -[[package]] -name = "playwright" -version = "1.48.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "greenlet" }, - { name = "pyee" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/41/0166d58c3eeae72377cbcd4cbed84b36cddc551a2b094bf7984198aafb79/playwright-1.48.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:082bce2739f1078acc7d0734da8cc0e23eb91b7fae553f3316d733276f09a6b1", size = 34989519 }, - { url = "https://files.pythonhosted.org/packages/64/41/d77c47743800fbeb86657611e651e56a17cbb4ebfefa1da0318dc39092df/playwright-1.48.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7da2eb51a19c7f3b523e9faa9d98e7af92e52eb983a099979ea79c9668e3cbf7", size = 33302881 }, - { url = "https://files.pythonhosted.org/packages/b0/f2/f184f613e6f496ed78e7808ac729900257567d2c1a7930e61026f0e48a5f/playwright-1.48.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:115b988d1da322358b77bc3bf2d3cc90f8c881e691461538e7df91614c4833c9", size = 34989518 }, - { url = "https://files.pythonhosted.org/packages/f9/0c/8cde1a86a9a7449a0ba95197f42156198083be1749b717831fba16ab2b5f/playwright-1.48.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:8dabb80e62f667fe2640a8b694e26a7b884c0b4803f7514a3954fc849126227b", size = 38171658 }, - { url = "https://files.pythonhosted.org/packages/31/dc/121be574222fc74d12ac42921728fb6ba8ac17264a1fdab1993263389082/playwright-1.48.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff8303409ebed76bed4c3d655340320b768817d900ba208b394fdd7d7939a5c", size = 37919223 }, - { url = "https://files.pythonhosted.org/packages/3a/c5/ff02a780c76e9cf20296e2d1743bb42b1e81d62535802eb6d67b1b6b7b47/playwright-1.48.0-py3-none-win32.whl", hash = "sha256:85598c360c590076d4f435525be991246d74a905b654ac19d26eab7ed9b98b2d", size = 29983089 }, - { url = "https://files.pythonhosted.org/packages/45/88/b6459c93a8bc0b96e7a33b6744bbef2740a0b78b0534542a037d220427f0/playwright-1.48.0-py3-none-win_amd64.whl", hash = "sha256:e0e87b0c4dc8fce83c725dd851aec37bc4e882bb225ec8a96bd83cf32d4f1623", size = 29983099 }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, -] - -[[package]] -name = "poethepoet" -version = "0.31.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pastel" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/96/15bce512c8027696b20586b18ac4b239afe8d312dbaa2a0099e8fb8f8424/poethepoet-0.31.1.tar.gz", hash = "sha256:d6b66074edf85daf115bb916eae0afd6387d19e1562e1c9ef7d61d5c585696aa", size = 61520 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/e1/04f56c9d848d6135ca3328c5a2ca84d3303c358ad7828db290385e36a8cc/poethepoet-0.31.1-py3-none-any.whl", hash = "sha256:7fdfa0ac6074be9936723e7231b5bfaad2923e96c674a9857e81d326cf8ccdc2", size = 80238 }, -] - -[[package]] -name = "primp" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2b/03/6c19a1b1f52d89b1337b082f2443faa78d660a576fad894ac6fd5ef35501/primp-0.8.1.tar.gz", hash = "sha256:ddf05754a7b70d59df8a014a8585e418f9c04e0b69065bab6633f4a9b92bad93", size = 80352 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/57/4f309cc05fff3ddb99bf564b332b19a61286b7145ae3d523e17afcdfc065/primp-0.8.1-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8294db817701ad76b6a186c16e22cc49d36fac5986647a83657ad4a58ddeee42", size = 2887500 }, - { url = "https://files.pythonhosted.org/packages/f6/63/bfddbd5bef665869ddff9606190d01cc25a2825dec1bf5097e5635642eb8/primp-0.8.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:e8117531dcdb0dbcf9855fdbac73febdde5967ca0332a2c05b5961d2fbcfe749", size = 2690723 }, - { url = "https://files.pythonhosted.org/packages/5e/67/1c0910efb5a22dea57a01d7e05a40a70319262e8c717bebd18eaaf9b2dac/primp-0.8.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:993cc4284e8c5c858254748f078e872ba250c9339d64398dc000a8f9cffadda3", size = 2985886 }, - { url = "https://files.pythonhosted.org/packages/e1/85/93258249b124aacf818db131902da6228525a554f52ff4894a5592f9df1c/primp-0.8.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4a27ac642be5c616fc5f139a5ad391dcd0c5964ace56fe6cf31cbffb972a7480", size = 2890079 }, - { url = "https://files.pythonhosted.org/packages/0f/17/fc5237e5e7560131358c03cd078ea34e5cd4ae5bb402170029200b8e7d5d/primp-0.8.1-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:e8483b8d9eec9fc43d77bb448555466030f29cdd99d9375eb75155e9f832e5bd", size = 2693095 }, - { url = "https://files.pythonhosted.org/packages/d6/f4/37ab0b1ca98e176d8dc5ebfc24c0c314a140be73a632089f0adeaa1bcf42/primp-0.8.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:92f5f8267216252cfb27f2149811e14682bb64f0c5d37f00d218d1592e02f0b9", size = 3052300 }, - { url = "https://files.pythonhosted.org/packages/65/01/c0df6d0c93c7fde6dc0216f616f5054c1406b3d3ef49da256a1e0159d4c0/primp-0.8.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:98f7f3a9481c55c56e7eff9024f29e16379a87d5b0a1b683e145dd8fcbdcc46b", size = 3229310 }, - { url = "https://files.pythonhosted.org/packages/53/96/2ce2345ddd3eb9db57ac1f23803fd28c6602e5c115e4229f050d77d36f9b/primp-0.8.1-cp38-abi3-win_amd64.whl", hash = "sha256:6f0018a26be787431504e32548b296a278abbe85da43bcbaf2d4982ac3dcd332", size = 2915040 }, -] - -[[package]] -name = "propcache" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/4d/5e5a60b78dbc1d464f8a7bbaeb30957257afdc8512cbb9dfd5659304f5cd/propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70", size = 40951 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/46/a41ca1097769fc548fc9216ec4c1471b772cc39720eb47ed7e38ef0006a9/propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2", size = 80800 }, - { url = "https://files.pythonhosted.org/packages/75/4f/93df46aab9cc473498ff56be39b5f6ee1e33529223d7a4d8c0a6101a9ba2/propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7", size = 46443 }, - { url = "https://files.pythonhosted.org/packages/0b/17/308acc6aee65d0f9a8375e36c4807ac6605d1f38074b1581bd4042b9fb37/propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8", size = 45676 }, - { url = "https://files.pythonhosted.org/packages/65/44/626599d2854d6c1d4530b9a05e7ff2ee22b790358334b475ed7c89f7d625/propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793", size = 246191 }, - { url = "https://files.pythonhosted.org/packages/f2/df/5d996d7cb18df076debae7d76ac3da085c0575a9f2be6b1f707fe227b54c/propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09", size = 251791 }, - { url = "https://files.pythonhosted.org/packages/2e/6d/9f91e5dde8b1f662f6dd4dff36098ed22a1ef4e08e1316f05f4758f1576c/propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89", size = 253434 }, - { url = "https://files.pythonhosted.org/packages/3c/e9/1b54b7e26f50b3e0497cd13d3483d781d284452c2c50dd2a615a92a087a3/propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e", size = 248150 }, - { url = "https://files.pythonhosted.org/packages/a7/ef/a35bf191c8038fe3ce9a414b907371c81d102384eda5dbafe6f4dce0cf9b/propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9", size = 233568 }, - { url = "https://files.pythonhosted.org/packages/97/d9/d00bb9277a9165a5e6d60f2142cd1a38a750045c9c12e47ae087f686d781/propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4", size = 229874 }, - { url = "https://files.pythonhosted.org/packages/8e/78/c123cf22469bdc4b18efb78893e69c70a8b16de88e6160b69ca6bdd88b5d/propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c", size = 225857 }, - { url = "https://files.pythonhosted.org/packages/31/1b/fd6b2f1f36d028820d35475be78859d8c89c8f091ad30e377ac49fd66359/propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887", size = 227604 }, - { url = "https://files.pythonhosted.org/packages/99/36/b07be976edf77a07233ba712e53262937625af02154353171716894a86a6/propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57", size = 238430 }, - { url = "https://files.pythonhosted.org/packages/0d/64/5822f496c9010e3966e934a011ac08cac8734561842bc7c1f65586e0683c/propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23", size = 244814 }, - { url = "https://files.pythonhosted.org/packages/fd/bd/8657918a35d50b18a9e4d78a5df7b6c82a637a311ab20851eef4326305c1/propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348", size = 235922 }, - { url = "https://files.pythonhosted.org/packages/a8/6f/ec0095e1647b4727db945213a9f395b1103c442ef65e54c62e92a72a3f75/propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5", size = 40177 }, - { url = "https://files.pythonhosted.org/packages/20/a2/bd0896fdc4f4c1db46d9bc361c8c79a9bf08ccc08ba054a98e38e7ba1557/propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3", size = 44446 }, - { url = "https://files.pythonhosted.org/packages/3d/b6/e6d98278f2d49b22b4d033c9f792eda783b9ab2094b041f013fc69bcde87/propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036", size = 11603 }, -] - -[[package]] -name = "pycnite" -version = "2024.7.31" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/55/7f412c01675a8c77a9ace64a37d557faebe6740cf7fd619c9bda82b33341/pycnite-2024.7.31.tar.gz", hash = "sha256:5125f1c95aef4a23b9bec3b32fae76873dcd46324fa68e39c10fa852ecdea340", size = 24189 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/af/7ba371f966657f6e7b1c9876cae7e9f1c5d3635c3df1329636b99e615494/pycnite-2024.7.31-py3-none-any.whl", hash = "sha256:9ff9c09d35056435b867e14ebf79626ca94b6017923a0bf9935377fa90d4cbb3", size = 22939 }, -] - -[[package]] -name = "pycparser" -version = "2.22" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928 }, -] - -[package.optional-dependencies] -email = [ - { name = "email-validator" }, -] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/74/7b/8e315f80666194b354966ec84b7d567da77ad927ed6323db4006cf915f3f/pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231", size = 1856459 }, - { url = "https://files.pythonhosted.org/packages/14/de/866bdce10ed808323d437612aca1ec9971b981e1c52e5e42ad9b8e17a6f6/pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee", size = 1770007 }, - { url = "https://files.pythonhosted.org/packages/dc/69/8edd5c3cd48bb833a3f7ef9b81d7666ccddd3c9a635225214e044b6e8281/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87", size = 1790245 }, - { url = "https://files.pythonhosted.org/packages/80/33/9c24334e3af796ce80d2274940aae38dd4e5676298b4398eff103a79e02d/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8", size = 1801260 }, - { url = "https://files.pythonhosted.org/packages/a5/6f/e9567fd90104b79b101ca9d120219644d3314962caa7948dd8b965e9f83e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327", size = 1996872 }, - { url = "https://files.pythonhosted.org/packages/2d/ad/b5f0fe9e6cfee915dd144edbd10b6e9c9c9c9d7a56b69256d124b8ac682e/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2", size = 2661617 }, - { url = "https://files.pythonhosted.org/packages/06/c8/7d4b708f8d05a5cbfda3243aad468052c6e99de7d0937c9146c24d9f12e9/pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36", size = 2071831 }, - { url = "https://files.pythonhosted.org/packages/89/4d/3079d00c47f22c9a9a8220db088b309ad6e600a73d7a69473e3a8e5e3ea3/pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126", size = 1917453 }, - { url = "https://files.pythonhosted.org/packages/e9/88/9df5b7ce880a4703fcc2d76c8c2d8eb9f861f79d0c56f4b8f5f2607ccec8/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e", size = 1968793 }, - { url = "https://files.pythonhosted.org/packages/e3/b9/41f7efe80f6ce2ed3ee3c2dcfe10ab7adc1172f778cc9659509a79518c43/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", size = 2116872 }, - { url = "https://files.pythonhosted.org/packages/63/08/b59b7a92e03dd25554b0436554bf23e7c29abae7cce4b1c459cd92746811/pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", size = 1738535 }, - { url = "https://files.pythonhosted.org/packages/88/8d/479293e4d39ab409747926eec4329de5b7129beaedc3786eca070605d07f/pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", size = 1917992 }, -] - -[[package]] -name = "pydantic-settings" -version = "2.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "python-dotenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b5/d4/9dfbe238f45ad8b168f5c96ee49a3df0598ce18a0795a983b419949ce65b/pydantic_settings-2.6.1.tar.gz", hash = "sha256:e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0", size = 75646 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/f9/ff95fd7d760af42f647ea87f9b8a383d891cdb5e5dbd4613edaeb094252a/pydantic_settings-2.6.1-py3-none-any.whl", hash = "sha256:7fb0637c786a558d3103436278a7c4f1cfd29ba8973238a50c5bb9a55387da87", size = 28595 }, -] - -[[package]] -name = "pydot" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyparsing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/10/4e4da8c271540dc35914e927546cbb821397f0f9477f4079cd8732946699/pydot-3.0.2.tar.gz", hash = "sha256:9180da540b51b3aa09fbf81140b3edfbe2315d778e8589a7d0a4a69c41332bae", size = 167979 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/e4/463fd46922e0b0b369305662f85f1c70dcc1cde1584906cf8defed8308a3/pydot-3.0.2-py3-none-any.whl", hash = "sha256:99cedaa55d04abb0b2bc56d9981a6da781053dd5ac75c428e8dd53db53f90b14", size = 35773 }, -] - -[[package]] -name = "pyee" -version = "12.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d2/a7/8faaa62a488a2a1e0d56969757f087cbd2729e9bcfa508c230299f366b4c/pyee-12.0.0.tar.gz", hash = "sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145", size = 29675 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/0d/95993c08c721ec68892547f2117e8f9dfbcef2ca71e098533541b4a54d5f/pyee-12.0.0-py3-none-any.whl", hash = "sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990", size = 14831 }, -] - -[[package]] -name = "pyowm" -version = "3.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "geojson" }, - { name = "pysocks" }, - { name = "requests", extra = ["socks"] }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/5a/0f44ccc4b81d23b9c84c821532e269727a64f3335c4231c9c16702809719/pyowm-3.3.0.tar.gz", hash = "sha256:8196f77c91eac680676ed5ee484aae8a165408055e3e2b28025cbf60b8681e03", size = 4516988 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/88/1279817aa7f5988a2ff42a6755fd371f3c1806aca377cb63b3d16684b174/pyowm-3.3.0-py3-none-any.whl", hash = "sha256:86463108e7613171531ba306040b43c972b3fc0b0acf73b12c50910cdd2107ab", size = 4547201 }, -] - -[[package]] -name = "pyparsing" -version = "3.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/d5/e5aeee5387091148a19e1145f63606619cb5f20b83fccb63efae6474e7b2/pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c", size = 920984 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/be/ec/2eb3cd785efd67806c46c13a17339708ddc346cbb684eade7a6e6f79536a/pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84", size = 106921 }, -] - -[[package]] -name = "pypdf" -version = "5.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/9a/72d74f05f64895ebf1c7f6646cf7fe6dd124398c5c49240093f92d6f0fdd/pypdf-5.1.0.tar.gz", hash = "sha256:425a129abb1614183fd1aca6982f650b47f8026867c0ce7c4b9f281c443d2740", size = 5011381 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/fc/6f52588ac1cb4400a7804ef88d0d4e00cfe57a7ac6793ec3b00de5a8758b/pypdf-5.1.0-py3-none-any.whl", hash = "sha256:3bd4f503f4ebc58bae40d81e81a9176c400cbbac2ba2d877367595fb524dfdfc", size = 297976 }, -] - -[[package]] -name = "pyright" -version = "1.1.389" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "nodeenv" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/72/4e/9a5ab8745e7606b88c2c7ca223449ac9d82a71fd5e31df47b453f2cb39a1/pyright-1.1.389.tar.gz", hash = "sha256:716bf8cc174ab8b4dcf6828c3298cac05c5ed775dda9910106a5dcfe4c7fe220", size = 21940 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/26/c288cabf8cfc5a27e1aa9e5029b7682c0f920b8074f45d22bf844314d66a/pyright-1.1.389-py3-none-any.whl", hash = "sha256:41e9620bba9254406dc1f621a88ceab5a88af4c826feb4f614d95691ed243a60", size = 18581 }, -] - -[[package]] -name = "pysocks" -version = "1.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", size = 284429 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", size = 16725 }, -] - -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/c6cf50ce320cf8611df7a1254d86233b3df7cc07f9b5f5cbcb82e08aa534/pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276", size = 49855 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/31/6607dab48616902f76885dfcf62c08d929796fc3b2d2318faf9fd54dbed9/pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b", size = 18024 }, -] - -[[package]] -name = "pytest-cov" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "coverage" }, - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, -] - -[[package]] -name = "python-dotenv" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }, -] - -[[package]] -name = "pytype" -version = "2024.10.11" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "immutabledict" }, - { name = "importlab" }, - { name = "jinja2" }, - { name = "libcst" }, - { name = "msgspec" }, - { name = "networkx" }, - { name = "ninja" }, - { name = "pycnite" }, - { name = "pydot" }, - { name = "tabulate" }, - { name = "toml" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9c/7a/6fd33673f9c7b9e5f4f8107028c323b1c72acc0f909f1b9b3391a31ea604/pytype-2024.10.11.tar.gz", hash = "sha256:ae5ff82f0b07d5ad68d4ec32a3e8de44fad6ed565a821a76aca50a14df382274", size = 2789497 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/a2/cf47d02d846f6d837e1023b2c19588127c4d9dfc577b8eceb4870def32f4/pytype-2024.10.11-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:cdc881cce9541a475ec48989a5ab889e6274a85afbf6da0e30266d0823f66d42", size = 4709678 }, - { url = "https://files.pythonhosted.org/packages/04/51/5925fe8992f02adab358ce9e8068defdae1e58393bfd767e035509da9872/pytype-2024.10.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13327d0d17b981fe2660dd3a69f97bf09a526f93debc40bb44b240628e0b55c1", size = 4682184 }, - { url = "https://files.pythonhosted.org/packages/20/10/52422fdb5a6b4a04938f47a76c655325775b7dd8cc71bd3557aae87b40e1/pytype-2024.10.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb98711679e631b01b09b09185504fbf38d60f119280918e244a602cf843b0fe", size = 4695132 }, -] - -[[package]] -name = "pytz" -version = "2024.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002 }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, -] - -[[package]] -name = "regex" -version = "2024.11.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, - { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, - { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, - { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, - { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, - { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, - { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, - { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, - { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, - { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, - { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, - { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, - { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, - { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, - { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, -] - -[[package]] -name = "requests" -version = "2.32.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, -] - -[package.optional-dependencies] -socks = [ - { name = "pysocks" }, -] - -[[package]] -name = "requests-oauthlib" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "oauthlib" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/52/531ef197b426646f26b53815a7d2a67cb7a331ef098bb276db26a68ac49f/requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a", size = 52027 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/bb/5deac77a9af870143c684ab46a7934038a53eb4aa975bc0687ed6ca2c610/requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5", size = 23892 }, -] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, -] - -[[package]] -name = "ruff" -version = "0.9.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 }, - { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 }, - { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 }, - { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 }, - { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 }, - { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 }, - { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 }, - { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 }, - { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 }, - { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 }, - { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 }, - { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 }, - { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 }, - { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 }, - { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 }, - { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 }, -] - -[[package]] -name = "selenium" -version = "4.25.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "trio" }, - { name = "trio-websocket" }, - { name = "typing-extensions" }, - { name = "urllib3", extra = ["socks"] }, - { name = "websocket-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0e/5a/d3735b189b91715fd0f5a9b8d55e2605061309849470e96ab830f02cba40/selenium-4.25.0.tar.gz", hash = "sha256:95d08d3b82fb353f3c474895154516604c7f0e6a9a565ae6498ef36c9bac6921", size = 957765 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/85/fa44f23dd5d5066a72f7c4304cce4b5ff9a6e7fd92431a48b2c63fbf63ec/selenium-4.25.0-py3-none-any.whl", hash = "sha256:3798d2d12b4a570bc5790163ba57fef10b2afee958bf1d80f2a3cf07c4141f33", size = 9693127 }, -] - -[[package]] -name = "sentry-sdk" -version = "2.19.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a2/0e/cc0e60f0e0cfd5a9e42622ff5a227301c6475a56bcfa82e8e893bc209f20/sentry_sdk-2.19.0.tar.gz", hash = "sha256:ee4a4d2ae8bfe3cac012dcf3e4607975904c137e1738116549fc3dbbb6ff0e36", size = 298045 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/6b/191ca63f05d3ecc7600b5b3abd493a4c1b8468289c9737a7735ade1fedca/sentry_sdk-2.19.0-py2.py3-none-any.whl", hash = "sha256:7b0b3b709dee051337244a09a30dbf6e95afe0d34a1f8b430d45e0982a7c125b", size = 322158 }, -] - -[package.optional-dependencies] -flask = [ - { name = "blinker" }, - { name = "flask" }, - { name = "markupsafe" }, -] - -[[package]] -name = "setuptools" -version = "75.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/27/b8/f21073fde99492b33ca357876430822e4800cdf522011f18041351dfa74b/setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538", size = 1348057 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/ae/f19306b5a221f6a436d8f2238d5b80925004093fa3edea59835b514d9057/setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2", size = 1248506 }, -] - -[[package]] -name = "sgmllib3k" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/bd/3704a8c3e0942d711c1299ebf7b9091930adae6675d7c8f476a7ce48653c/sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9", size = 5750 } - -[[package]] -name = "six" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, -] - -[[package]] -name = "sortedcontainers" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, -] - -[[package]] -name = "soupsieve" -version = "2.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, -] - -[[package]] -name = "spider-client" -version = "0.0.72" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/31/dfb821404df6a6b8671fbabfce7ca5ae3de830e57b58599fdd5582ce1be8/spider-client-0.0.72.tar.gz", hash = "sha256:efdb605371d926e1026d51ee4ee366baaa9eef6207694a09771773c1b35394ec", size = 15248 } - -[[package]] -name = "sqlalchemy" -version = "2.0.35" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/36/48/4f190a83525f5cefefa44f6adc9e6386c4de5218d686c27eda92eb1f5424/sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f", size = 9562798 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/2b/fff87e6db0da31212c98bbc445f83fb608ea92b96bda3f3f10e373bac76c/SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2", size = 2089790 }, - { url = "https://files.pythonhosted.org/packages/68/92/4bb761bd82764d5827bf6b6095168c40fb5dbbd23670203aef2f96ba6bc6/SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468", size = 2080266 }, - { url = "https://files.pythonhosted.org/packages/22/46/068a65db6dc253c6f25a7598d99e0a1d60b14f661f9d09ef6c73c718fa4e/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d", size = 3229760 }, - { url = "https://files.pythonhosted.org/packages/6e/36/59830dafe40dda592304debd4cd86e583f63472f3a62c9e2695a5795e786/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db", size = 3240649 }, - { url = "https://files.pythonhosted.org/packages/00/50/844c50c6996f9c7f000c959dd1a7436a6c94e449ee113046a1d19e470089/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c", size = 3176138 }, - { url = "https://files.pythonhosted.org/packages/df/d2/336b18cac68eecb67de474fc15c85f13be4e615c6f5bae87ea38c6734ce0/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8", size = 3202753 }, - { url = "https://files.pythonhosted.org/packages/f0/f3/ee1e62fabdc10910b5ef720ae08e59bc785f26652876af3a50b89b97b412/SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf", size = 2060113 }, - { url = "https://files.pythonhosted.org/packages/60/63/a3cef44a52979169d884f3583d0640e64b3c28122c096474a1d7cfcaf1f3/SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc", size = 2085839 }, - { url = "https://files.pythonhosted.org/packages/0e/c6/33c706449cdd92b1b6d756b247761e27d32230fd6b2de5f44c4c3e5632b2/SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1", size = 1881276 }, -] - -[package.optional-dependencies] -asyncio = [ - { name = "greenlet" }, -] - -[[package]] -name = "starlette" -version = "0.41.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1a/4c/9b5764bd22eec91c4039ef4c55334e9187085da2d8a2df7bd570869aae18/starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835", size = 2574159 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/00/2b325970b3060c7cecebab6d295afe763365822b1306a12eeab198f74323/starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7", size = 73225 }, -] - -[[package]] -name = "striprtf" -version = "0.0.26" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/25/20/3d419008265346452d09e5dadfd5d045b64b40d8fc31af40588e6c76997a/striprtf-0.0.26.tar.gz", hash = "sha256:fdb2bba7ac440072d1c41eab50d8d74ae88f60a8b6575c6e2c7805dc462093aa", size = 6258 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/cf/0fea4f4ba3fc2772ac2419278aa9f6964124d4302117d61bc055758e000c/striprtf-0.0.26-py3-none-any.whl", hash = "sha256:8c8f9d32083cdc2e8bfb149455aa1cc5a4e0a035893bedc75db8b73becb3a1bb", size = 6914 }, -] - -[[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, -] - -[[package]] -name = "tenacity" -version = "8.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/32/6c/57df6196ce52c464cf8556e8f697fec5d3469bb8cd319c1685c0a090e0b4/tenacity-8.3.0.tar.gz", hash = "sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2", size = 43608 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/a1/6bb0cbebefb23641f068bb58a2bc56da9beb2b1c550242e3c540b37698f3/tenacity-8.3.0-py3-none-any.whl", hash = "sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185", size = 25934 }, -] - -[[package]] -name = "termcolor" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/72/88311445fd44c455c7d553e61f95412cf89054308a1aa2434ab835075fc5/termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f", size = 13057 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, -] - -[[package]] -name = "tiktoken" -version = "0.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "regex" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/37/02/576ff3a6639e755c4f70997b2d315f56d6d71e0d046f4fb64cb81a3fb099/tiktoken-0.8.0.tar.gz", hash = "sha256:9ccbb2740f24542534369c5635cfd9b2b3c2490754a78ac8831d99f89f94eeb2", size = 35107 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/22/34b2e136a6f4af186b6640cbfd6f93400783c9ef6cd550d9eab80628d9de/tiktoken-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:881839cfeae051b3628d9823b2e56b5cc93a9e2efb435f4cf15f17dc45f21586", size = 1039357 }, - { url = "https://files.pythonhosted.org/packages/04/d2/c793cf49c20f5855fd6ce05d080c0537d7418f22c58e71f392d5e8c8dbf7/tiktoken-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fe9399bdc3f29d428f16a2f86c3c8ec20be3eac5f53693ce4980371c3245729b", size = 982616 }, - { url = "https://files.pythonhosted.org/packages/b3/a1/79846e5ef911cd5d75c844de3fa496a10c91b4b5f550aad695c5df153d72/tiktoken-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a58deb7075d5b69237a3ff4bb51a726670419db6ea62bdcd8bd80c78497d7ab", size = 1144011 }, - { url = "https://files.pythonhosted.org/packages/26/32/e0e3a859136e95c85a572e4806dc58bf1ddf651108ae8b97d5f3ebe1a244/tiktoken-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2908c0d043a7d03ebd80347266b0e58440bdef5564f84f4d29fb235b5df3b04", size = 1175432 }, - { url = "https://files.pythonhosted.org/packages/c7/89/926b66e9025b97e9fbabeaa59048a736fe3c3e4530a204109571104f921c/tiktoken-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:294440d21a2a51e12d4238e68a5972095534fe9878be57d905c476017bff99fc", size = 1236576 }, - { url = "https://files.pythonhosted.org/packages/45/e2/39d4aa02a52bba73b2cd21ba4533c84425ff8786cc63c511d68c8897376e/tiktoken-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:d8f3192733ac4d77977432947d563d7e1b310b96497acd3c196c9bddb36ed9db", size = 883824 }, -] - -[[package]] -name = "toml" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, -] - -[[package]] -name = "trio" -version = "0.27.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "cffi", marker = "implementation_name != 'pypy' and os_name == 'nt'" }, - { name = "idna" }, - { name = "outcome" }, - { name = "sniffio" }, - { name = "sortedcontainers" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/d1/a83dee5be404da7afe5a71783a33b8907bacb935a6dc8c69ab785e4a3eed/trio-0.27.0.tar.gz", hash = "sha256:1dcc95ab1726b2da054afea8fd761af74bad79bd52381b84eae408e983c76831", size = 568064 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/83/ec3196c360afffbc5b342ead48d1eb7393dd74fa70bca75d33905a86f211/trio-0.27.0-py3-none-any.whl", hash = "sha256:68eabbcf8f457d925df62da780eff15ff5dc68fd6b367e2dde59f7aaf2a0b884", size = 481734 }, -] - -[[package]] -name = "trio-websocket" -version = "0.11.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "trio" }, - { name = "wsproto" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dd/36/abad2385853077424a11b818d9fd8350d249d9e31d583cb9c11cd4c85eda/trio-websocket-0.11.1.tar.gz", hash = "sha256:18c11793647703c158b1f6e62de638acada927344d534e3c7628eedcb746839f", size = 26511 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/be/a9ae5f50cad5b6f85bd2574c2c923730098530096e170c1ce7452394d7aa/trio_websocket-0.11.1-py3-none-any.whl", hash = "sha256:520d046b0d030cf970b8b2b2e00c4c2245b3807853ecd44214acd33d74581638", size = 17408 }, -] - -[[package]] -name = "tweepy" -version = "4.14.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "oauthlib" }, - { name = "requests" }, - { name = "requests-oauthlib" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/75/1c/0db8c3cf9d31bf63853ff612d201060ae78e6db03468a70e063bef0eda62/tweepy-4.14.0.tar.gz", hash = "sha256:1f9f1707d6972de6cff6c5fd90dfe6a449cd2e0d70bd40043ffab01e07a06c8c", size = 88623 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/78/ba0065d5636bbf4a35b78c4f81b74e7858b609cdf69e629d6da5c91b9d92/tweepy-4.14.0-py3-none-any.whl", hash = "sha256:db6d3844ccc0c6d27f339f12ba8acc89912a961da513c1ae50fa2be502a56afb", size = 98520 }, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, -] - -[[package]] -name = "typing-inspect" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827 }, -] - -[[package]] -name = "tzdata" -version = "2024.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/34/943888654477a574a86a98e9896bae89c7aa15078ec29f490fef2f1e5384/tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", size = 193282 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 }, -] - -[[package]] -name = "unstructured-client" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiofiles" }, - { name = "cryptography" }, - { name = "eval-type-backport" }, - { name = "httpx" }, - { name = "jsonpath-python" }, - { name = "nest-asyncio" }, - { name = "pydantic" }, - { name = "pypdf" }, - { name = "python-dateutil" }, - { name = "requests-toolbelt" }, - { name = "typing-inspect" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/a1/8b0bf11e8c092aeb704b579f5855b5cfb0d5278a6c542312cddad5a8097e/unstructured_client-0.28.1.tar.gz", hash = "sha256:aac11fe5dd6b8dfdbc15aad3205fe791a3834dac29bb9f499fd515643554f709", size = 48607 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/09/69/38e51f6ce07f2a454f53a364f6ef9acdbfc73841fe736d9c7cd152525048/unstructured_client-0.28.1-py3-none-any.whl", hash = "sha256:0112688908f544681a67abf314e0d2023dfa120c8e5d9fa6d31390b914a06d72", size = 62865 }, -] - -[[package]] -name = "urllib3" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, -] - -[package.optional-dependencies] -socks = [ - { name = "pysocks" }, -] - -[[package]] -name = "uvicorn" -version = "0.30.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/01/5e637e7aa9dd031be5376b9fb749ec20b86f5a5b6a49b87fabd374d5fa9f/uvicorn-0.30.6.tar.gz", hash = "sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788", size = 42825 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl", hash = "sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5", size = 62835 }, -] - -[[package]] -name = "uvloop" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, -] - -[[package]] -name = "werkzeug" -version = "3.1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, -] - -[[package]] -name = "wikipedia" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/35/25e68fbc99e672127cc6fbb14b8ec1ba3dfef035bf1e4c90f78f24a80b7d/wikipedia-1.4.0.tar.gz", hash = "sha256:db0fad1829fdd441b1852306e9856398204dc0786d2996dd2e0c8bb8e26133b2", size = 27748 } - -[[package]] -name = "wrapt" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/82/518605474beafff11f1a34759f6410ab429abff9f7881858a447e0d20712/wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569", size = 38904 }, - { url = "https://files.pythonhosted.org/packages/80/6c/17c3b2fed28edfd96d8417c865ef0b4c955dc52c4e375d86f459f14340f1/wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504", size = 88622 }, - { url = "https://files.pythonhosted.org/packages/4a/11/60ecdf3b0fd3dca18978d89acb5d095a05f23299216e925fcd2717c81d93/wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451", size = 80920 }, - { url = "https://files.pythonhosted.org/packages/d2/50/dbef1a651578a3520d4534c1e434989e3620380c1ad97e309576b47f0ada/wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1", size = 89170 }, - { url = "https://files.pythonhosted.org/packages/44/a2/78c5956bf39955288c9e0dd62e807b308c3aa15a0f611fbff52aa8d6b5ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106", size = 86748 }, - { url = "https://files.pythonhosted.org/packages/99/49/2ee413c78fc0bdfebe5bee590bf3becdc1fab0096a7a9c3b5c9666b2415f/wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada", size = 79734 }, - { url = "https://files.pythonhosted.org/packages/c0/8c/4221b7b270e36be90f0930fe15a4755a6ea24093f90b510166e9ed7861ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4", size = 87552 }, - { url = "https://files.pythonhosted.org/packages/4c/6b/1aaccf3efe58eb95e10ce8e77c8909b7a6b0da93449a92c4e6d6d10b3a3d/wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635", size = 36647 }, - { url = "https://files.pythonhosted.org/packages/b3/4f/243f88ac49df005b9129194c6511b3642818b3e6271ddea47a15e2ee4934/wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7", size = 38830 }, - { url = "https://files.pythonhosted.org/packages/4b/d9/a8ba5e9507a9af1917285d118388c5eb7a81834873f45df213a6fe923774/wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371", size = 23592 }, -] - -[[package]] -name = "wsproto" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/4a/44d3c295350d776427904d73c189e10aeae66d7f555bb2feee16d1e4ba5a/wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065", size = 53425 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226 }, -] - -[[package]] -name = "yarl" -version = "1.18.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "multidict" }, - { name = "propcache" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5e/4b/53db4ecad4d54535aff3dfda1f00d6363d79455f62b11b8ca97b82746bd2/yarl-1.18.0.tar.gz", hash = "sha256:20d95535e7d833889982bfe7cc321b7f63bf8879788fee982c76ae2b24cfb715", size = 180098 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/36/c579b80a5c76c0d41c8e08baddb3e6940dfc20569db579a5691392c52afa/yarl-1.18.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1ece25e2251c28bab737bdf0519c88189b3dd9492dc086a1d77336d940c28ced", size = 142376 }, - { url = "https://files.pythonhosted.org/packages/0c/5f/e247dc7c0607a0c505fea6c839721844bee55686dfb183c7d7b8ef8a9cb1/yarl-1.18.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:454902dc1830d935c90b5b53c863ba2a98dcde0fbaa31ca2ed1ad33b2a7171c6", size = 94692 }, - { url = "https://files.pythonhosted.org/packages/eb/e1/3081b578a6f21961711b9a1c49c2947abb3b0d0dd9537378fb06777ce8ee/yarl-1.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01be8688fc211dc237e628fcc209dda412d35de7642453059a0553747018d075", size = 92527 }, - { url = "https://files.pythonhosted.org/packages/2f/fa/d9e1b9fbafa4cc82cd3980b5314741b33c2fe16308d725449a23aed32021/yarl-1.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d26f1fa9fa2167bb238f6f4b20218eb4e88dd3ef21bb8f97439fa6b5313e30d", size = 332096 }, - { url = "https://files.pythonhosted.org/packages/93/b6/dd27165114317875838e216214fb86338dc63d2e50855a8f2a12de2a7fe5/yarl-1.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b234a4a9248a9f000b7a5dfe84b8cb6210ee5120ae70eb72a4dcbdb4c528f72f", size = 342047 }, - { url = "https://files.pythonhosted.org/packages/fc/9f/bad434b5279ae7a356844e14dc771c3d29eb928140bbc01621af811c8a27/yarl-1.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe94d1de77c4cd8caff1bd5480e22342dbd54c93929f5943495d9c1e8abe9f42", size = 341712 }, - { url = "https://files.pythonhosted.org/packages/9a/9f/63864f43d131ba8c8cdf1bde5dd3f02f0eff8a7c883a5d7fad32f204fda5/yarl-1.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b4c90c5363c6b0a54188122b61edb919c2cd1119684999d08cd5e538813a28e", size = 336654 }, - { url = "https://files.pythonhosted.org/packages/20/30/b4542bbd9be73de155213207eec019f6fe6495885f7dd59aa1ff705a041b/yarl-1.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a98ecadc5a241c9ba06de08127ee4796e1009555efd791bac514207862b43d", size = 325484 }, - { url = "https://files.pythonhosted.org/packages/69/bc/e2a9808ec26989cf0d1b98fe7b3cc45c1c6506b5ea4fe43ece5991f28f34/yarl-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9106025c7f261f9f5144f9aa7681d43867eed06349a7cfb297a1bc804de2f0d1", size = 344213 }, - { url = "https://files.pythonhosted.org/packages/e2/17/0ee5a68886aca1a8071b0d24a1e1c0fd9970dead2ef2d5e26e027fb7ce88/yarl-1.18.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:f275ede6199d0f1ed4ea5d55a7b7573ccd40d97aee7808559e1298fe6efc8dbd", size = 340517 }, - { url = "https://files.pythonhosted.org/packages/fd/db/1fe4ef38ee852bff5ec8f5367d718b3a7dac7520f344b8e50306f68a2940/yarl-1.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f7edeb1dcc7f50a2c8e08b9dc13a413903b7817e72273f00878cb70e766bdb3b", size = 346234 }, - { url = "https://files.pythonhosted.org/packages/b4/ee/5e5bccdb821eb9949ba66abb4d19e3299eee00282e37b42f65236120e892/yarl-1.18.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c083f6dd6951b86e484ebfc9c3524b49bcaa9c420cb4b2a78ef9f7a512bfcc85", size = 359625 }, - { url = "https://files.pythonhosted.org/packages/3f/43/95a64d9e7ab4aa1c34fc5ea0edb35b581bc6ad33fd960a8ae34c2040b319/yarl-1.18.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:80741ec5b471fbdfb997821b2842c59660a1c930ceb42f8a84ba8ca0f25a66aa", size = 364239 }, - { url = "https://files.pythonhosted.org/packages/40/19/09ce976c624c9d3cc898f0be5035ddef0c0759d85b2313321cfe77b69915/yarl-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1a3297b9cad594e1ff0c040d2881d7d3a74124a3c73e00c3c71526a1234a9f7", size = 357599 }, - { url = "https://files.pythonhosted.org/packages/7d/35/6f33fd29791af2ec161aebe8abe63e788c2b74a6c7e8f29c92e5f5e96849/yarl-1.18.0-cp312-cp312-win32.whl", hash = "sha256:cd6ab7d6776c186f544f893b45ee0c883542b35e8a493db74665d2e594d3ca75", size = 83832 }, - { url = "https://files.pythonhosted.org/packages/4e/8e/cdb40ef98597be107de67b11e2f1f23f911e0f1416b938885d17a338e304/yarl-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:039c299a0864d1f43c3e31570045635034ea7021db41bf4842693a72aca8df3a", size = 90132 }, - { url = "https://files.pythonhosted.org/packages/30/9c/3f7ab894a37b1520291247cbc9ea6756228d098dae5b37eec848d404a204/yarl-1.18.0-py3-none-any.whl", hash = "sha256:dbf53db46f7cf176ee01d8d98c39381440776fcda13779d269a8ba664f69bec0", size = 44840 }, -] diff --git a/llm-proxy/litellm-config.yaml b/llm-proxy/litellm-config.yaml deleted file mode 100644 index 111c63573..000000000 --- a/llm-proxy/litellm-config.yaml +++ /dev/null @@ -1,310 +0,0 @@ -environment_variables: - NO_DOCS: "true" - -model_list: -# -*= Paid models =*- -# ------------------- - -# Gemini models - -- model_name: gemini-1.5-pro - litellm_params: - model: gemini/gemini-1.5-pro - api_key: os.environ/GEMINI_API_KEY - tags: ["paid"] - -- model_name: gemini-1.5-pro-latest - litellm_params: - model: gemini/gemini-1.5-pro-latest - api_key: os.environ/GEMINI_API_KEY - tags: ["paid"] - -- model_name: gemini-2.0-flash - litellm_params: - model: gemini/gemini-2.0-flash - api_key: os.environ/GEMINI_API_KEY - tags: ["paid"] - -- model_name: gemini-2.5-pro-preview-03-25 - litellm_params: - model: gemini/gemini-2.5-pro-preview-03-25 - api_key: os.environ/GEMINI_API_KEY - tags: ["paid"] - -# OpenAI models -- model_name: "gpt-4-turbo" - litellm_params: - model: "openai/gpt-4-turbo" - tags: ["paid"] - api_key: os.environ/OPENAI_API_KEY - -- model_name: "gpt-4o" - litellm_params: - model: "openai/gpt-4o" - tags: ["paid"] - api_key: os.environ/OPENAI_API_KEY - -- model_name: o1-mini - litellm_params: - model: openai/o1-mini - api_key: os.environ/OPENAI_API_KEY - tags: ["paid"] - -- model_name: o1-preview - litellm_params: - model: openai/o1-preview - api_key: os.environ/OPENAI_API_KEY - tags: ["paid"] - -- model_name: o1 - litellm_params: - model: openai/o1 - api_key: os.environ/OPENAI_API_KEY - tags: ["paid"] - -- model_name: o3-mini - litellm_params: - model: openai/o3-mini - api_key: os.environ/OPENAI_API_KEY - tags: ["paid"] - -# Anthropic models -- model_name: "claude-3.5-sonnet-20240620" - litellm_params: - model: "claude-3-5-sonnet-20240620" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3.5-sonnet" - litellm_params: - model: "claude-3-5-sonnet-20241022" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3.5-sonnet-20241022" - litellm_params: - model: "claude-3-5-sonnet-20241022" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3-opus" - litellm_params: - model: "claude-3-opus-20240229" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3-sonnet" - litellm_params: - model: "claude-3-sonnet-20240229" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3-haiku" - litellm_params: - model: "claude-3-haiku-20240307" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3.5-haiku" - litellm_params: - model: "claude-3-5-haiku-20241022" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -- model_name: "claude-3.7-sonnet" - litellm_params: - model: "claude-3-7-sonnet-20250219" - tags: ["paid"] - api_key: os.environ/ANTHROPIC_API_KEY - -# Groq models -- model_name: "llama-3.1-70b" - litellm_params: - model: "groq/llama-3.1-70b-versatile" - tags: ["paid"] - api_key: os.environ/GROQ_API_KEY - -- model_name: "llama-3.1-8b" - litellm_params: - model: "groq/llama-3.1-8b-instant" - tags: ["paid"] - api_key: os.environ/GROQ_API_KEY - -# OpenRouter models -- model_name: "mistral-large-2411" - litellm_params: - model: "openrouter/mistralai/mistral-large-2411" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "qwen-2.5-72b-instruct" - litellm_params: - model: "openrouter/qwen/qwen-2.5-72b-instruct" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "eva-llama-3.33-70b" - litellm_params: - model: "openrouter/eva-unit-01/eva-llama-3.33-70b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "l3.1-euryale-70b" - litellm_params: - model: "openrouter/sao10k/l3.1-euryale-70b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "l3.3-euryale-70b" - litellm_params: - model: "openrouter/sao10k/l3.3-euryale-70b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "magnum-v4-72b" - litellm_params: - model: "openrouter/anthracite-org/magnum-v4-72b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "eva-qwen-2.5-72b" - litellm_params: - model: "openrouter/eva-unit-01/eva-qwen-2.5-72b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "hermes-3-llama-3.1-70b" - litellm_params: - model: "openrouter/nousresearch/hermes-3-llama-3.1-70b" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "deepseek-chat" - litellm_params: - model: "openrouter/deepseek/deepseek-chat" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "openrouter/meta-llama/llama-4-scout" - litellm_params: - model: "openrouter/meta-llama/llama-4-scout" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "openrouter/meta-llama/llama-4-scout:free" - litellm_params: - model: "openrouter/meta-llama/llama-4-scout:free" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["free"] - -- model_name: "openrouter/meta-llama/llama-4-maverick" - litellm_params: - model: "openrouter/meta-llama/llama-4-maverick" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["paid"] - -- model_name: "openrouter/meta-llama/llama-4-maverick:free" - litellm_params: - model: "openrouter/meta-llama/llama-4-maverick:free" - api_key: os.environ/OPENROUTER_API_KEY - tags: ["free"] - - -# Cerebras Models -- model_name: "cerebras/llama-3.1-8b" - litellm_params: - model: "cerebras/llama3.1-8b" - api_key: os.environ/CEREBRAS_API_KEY - tags: ["paid"] - -- model_name: "cerebras/llama-3.3-70b" - litellm_params: - model: "cerebras/llama-3.3-70b" - api_key: os.environ/CEREBRAS_API_KEY - tags: ["paid"] - -- model_name: "cerebras/llama-4-scout-17b-16e-instruct" - litellm_params: - model: "cerebras/llama-4-scout-17b-16e-instruct" - api_key: os.environ/CEREBRAS_API_KEY - tags: ["paid"] - -# -*= Embedding models =*- -# ------------------------ - -- model_name: text-embedding-3-large - litellm_params: - model: "openai/text-embedding-3-large" - api_key: os.environ/OPENAI_API_KEY - tags: ["paid"] - -- model_name: voyage-multilingual-2 - litellm_params: - model: "voyage/voyage-multilingual-2" - api_key: os.environ/VOYAGE_API_KEY - tags: ["paid"] - -- model_name: voyage-3 - litellm_params: - model: "voyage/voyage-3" - api_key: os.environ/VOYAGE_API_KEY - tags: ["paid"] - -- model_name: Alibaba-NLP/gte-large-en-v1.5 - litellm_params: - model: openai/Alibaba-NLP/gte-large-en-v1.5 - api_base: http://text-embeddings-inference - tags: ["free"] - -- model_name: BAAI/bge-m3 - litellm_params: - model: openai/BAAI/bge-m3 - api_base: http://text-embeddings-inference - tags: ["free"] - -- model_name: vertex_ai/text-embedding-004 - litellm_params: - model: vertex_ai/text-embedding-004 - # vertex_project: os.environ/GOOGLE_PROJECT_ID - # vertex_location: os.environ/VERTEX_LOCATION - - -# -*= Free models =*- -# ------------------- - -- model_name: gpt-4o-mini - litellm_params: - model: openai/gpt-4o-mini - api_key: os.environ/OPENAI_API_KEY - tags: ["free"] - - -# https://github.com/BerriAI/litellm/blob/main/litellm/__init__.py -litellm_settings: - num_retries: 3 - request_timeout: 180 - allowed_fails: 3 - cooldown_time: 30 - drop_params: true - modify_params: true - telemetry: false - retry: true - add_function_to_prompt: true - - set_verbose: false - cache: true - cache_params: # set cache params for redis - type: redis - namespace: "litellm_caching" - host: os.environ/LITELLM_REDIS_HOST - port: os.environ/LITELLM_REDIS_PORT - password: os.environ/LITELLM_REDIS_PASSWORD - -router_settings: - routing_strategy: simple-shuffle - num_retries: 3 - -general_settings: - master_key: os.environ/LITELLM_MASTER_KEY - database_url: os.environ/LITELLM_DATABASE_URL - enforce_user_param: true diff --git a/llms.txt b/llms.txt new file mode 120000 index 000000000..2cc7980dc --- /dev/null +++ b/llms.txt @@ -0,0 +1 @@ +documentation/llms.txt \ No newline at end of file diff --git a/ruff.toml b/ruff.toml index 832e03a37..0dda426ca 100644 --- a/ruff.toml +++ b/ruff.toml @@ -61,6 +61,8 @@ ignore = [ "E501", # line-too-long "E722", # bare-except "RUF001", # ambiguous-unicode-character-string + "RUF002", # + "RUF003", # "RUF029", # unused-async "ASYNC230", # blocking-open-in-async "ASYNC109", # disallow-async-fns-with-timeout-param diff --git a/agents-api/.dockerignore b/src/agents-api/.dockerignore similarity index 100% rename from agents-api/.dockerignore rename to src/agents-api/.dockerignore diff --git a/agents-api/.gitignore b/src/agents-api/.gitignore similarity index 100% rename from agents-api/.gitignore rename to src/agents-api/.gitignore diff --git a/agents-api/.python-version b/src/agents-api/.python-version similarity index 100% rename from agents-api/.python-version rename to src/agents-api/.python-version diff --git a/agents-api/.tool-versions b/src/agents-api/.tool-versions similarity index 100% rename from agents-api/.tool-versions rename to src/agents-api/.tool-versions diff --git a/src/agents-api/AGENTS.md b/src/agents-api/AGENTS.md new file mode 100644 index 000000000..7a769fdd6 --- /dev/null +++ b/src/agents-api/AGENTS.md @@ -0,0 +1,77 @@ +# AGENTS.md - agents-api + +This directory hosts the `agents-api` FastAPI service and Temporal workflows for agent definitions and task execution. + +Key Uses +- Bash commands: + - cd agents-api + - source .venv/bin/activate + - poe format + - poe lint + - poe typecheck + - ty check [PATH]… # Extremely fast Python type checker (default: project root) + - ty server # Start the ty language server for editor integration + - ty version # Display ty's version + - poe test + - poe check + - bash scripts/generate_openapi_code.sh +- Core files and utilities: + - `agents_api/` contains routers, activities, workflows. + - `agents_api/common/` for exceptions, protocol, and utils. +- Code style guidelines: + - Follows root `AGENTS.md` Python standards (FastAPI, async/await, ruff formatting). +- Testing instructions: + - Tests live under `agents-api/tests/` using `ward`. + - Run specific tests: `poe test --search "pattern" --fail-limit 1`. +- Repository etiquette: + - Tag AI-generated commits with `[AI]`. +- Developer environment: + - Ensure `PYTHONPATH=$PWD` and correct CWD in `agents-api/`. +- Unexpected behaviors: + - Remember to regenerate autogen code after TypeSpec changes. + +# Julep Agents API + +## Service Overview +- FastAPI-based service for orchestrating agent workflows +- Handles tasks, executions, sessions, and tools +- Temporal-based workflow engine for task execution +- PostgreSQL for data storage +- S3 for remote object storage + +## Architecture +- REST API (defined in routers/) +- Database queries (queries/) +- Workflow definitions (workflows/) +- Task activities (activities/) +- Background worker processing (worker/) +- Common utilities and protocol definitions (common/) +- Dependencies for authentication and middleware (dependencies/) +- Recursive summarization for message history (rec_sum/) +- Metrics collection and monitoring (metrics/) + +## Key Concepts +- Projects: Organizational units for grouping related resources +- Tasks: Workflow specifications with steps and tools +- Executions: Running instances of tasks +- Sessions: User interaction contexts +- Agents: LLM-based interfaces for users +- Tools: Integrations and capabilities usable by agents + +## Runtime Flow +- User defines tasks with step definitions +- Task execution creates workflow in Temporal +- Activities run individual steps (prompt, tool calls, etc.) +- Transitions track execution state +- Results stored in database, retrievable via API + +## Expression Evaluation +- Task steps use Python expressions for logic/data flow +- Expressions prefixed with '$' executed in sandbox +- Backward compatibility: '{{variable}}' → '${variable}' +- Input context: '_' holds current input, 'inputs' and 'outputs' for history + +## Validation +- Expression validation checks syntax, undefined names, unsafe operations +- Task validation checks all expressions in workflow steps +- Security: Sandbox with limited function/module access diff --git a/src/agents-api/CLAUDE.md b/src/agents-api/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/Dockerfile b/src/agents-api/Dockerfile similarity index 100% rename from agents-api/Dockerfile rename to src/agents-api/Dockerfile diff --git a/agents-api/Dockerfile.worker b/src/agents-api/Dockerfile.worker similarity index 100% rename from agents-api/Dockerfile.worker rename to src/agents-api/Dockerfile.worker diff --git a/agents-api/README.md b/src/agents-api/README.md similarity index 100% rename from agents-api/README.md rename to src/agents-api/README.md diff --git a/agents-api/agents_api/__init__.py b/src/agents-api/agents_api/__init__.py similarity index 100% rename from agents-api/agents_api/__init__.py rename to src/agents-api/agents_api/__init__.py diff --git a/agents-api/agents_api/activities/CLAUDE.md b/src/agents-api/agents_api/activities/AGENTS.md similarity index 70% rename from agents-api/agents_api/activities/CLAUDE.md rename to src/agents-api/agents_api/activities/AGENTS.md index c27fcfb2d..9c530972a 100644 --- a/agents-api/agents_api/activities/CLAUDE.md +++ b/src/agents-api/agents_api/activities/AGENTS.md @@ -1,3 +1,15 @@ +# AGENTS.md - activities + +This folder contains Temporal activity implementations for task steps in `agents-api`. + +Guidelines +- Define activities as async functions with the `@activity` decorator. +- Validate Python expressions using `validate_py_expression` from `base_evaluate`. +- Follow root error-handling patterns with typed exceptions. +- Document activity behavior with Google-style docstrings. +- Register activities in the worker (`agents_api/worker`). +- See parent AGENTS.md for component-level commands and tests. + # Activities ## Purpose @@ -34,4 +46,4 @@ - Current cursor position (workflow, step, scope) - Input data for the step - Previous inputs/outputs in the workflow - - Agent configuration and tools \ No newline at end of file + - Agent configuration and tools diff --git a/src/agents-api/agents_api/activities/CLAUDE.md b/src/agents-api/agents_api/activities/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/activities/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/activities/__init__.py b/src/agents-api/agents_api/activities/__init__.py similarity index 100% rename from agents-api/agents_api/activities/__init__.py rename to src/agents-api/agents_api/activities/__init__.py diff --git a/agents-api/agents_api/activities/demo.py b/src/agents-api/agents_api/activities/demo.py similarity index 100% rename from agents-api/agents_api/activities/demo.py rename to src/agents-api/agents_api/activities/demo.py diff --git a/agents-api/agents_api/activities/execute_api_call.py b/src/agents-api/agents_api/activities/execute_api_call.py similarity index 100% rename from agents-api/agents_api/activities/execute_api_call.py rename to src/agents-api/agents_api/activities/execute_api_call.py diff --git a/agents-api/agents_api/activities/execute_integration.py b/src/agents-api/agents_api/activities/execute_integration.py similarity index 63% rename from agents-api/agents_api/activities/execute_integration.py rename to src/agents-api/agents_api/activities/execute_integration.py index e2993cced..b7d0e8f53 100644 --- a/agents-api/agents_api/activities/execute_integration.py +++ b/src/agents-api/agents_api/activities/execute_integration.py @@ -1,58 +1,83 @@ import json from typing import Any +from uuid import UUID from beartype import beartype +from pydantic import AnyUrl, BaseModel from temporalio import activity from ..app import app from ..autogen.openapi_model import BaseIntegrationDef from ..clients import integrations from ..common.exceptions.tools import IntegrationExecutionException -from ..common.protocol.tasks import ExecutionInput, StepContext from ..env import testing from ..queries import tools +def serialize_pydantic_objects(obj: Any) -> Any: + """Recursively convert Pydantic types to JSON-serializable formats.""" + if isinstance(obj, BaseModel): + return obj.model_dump(mode="json") + if isinstance(obj, AnyUrl): + return str(obj) + if isinstance(obj, dict): + return {k: serialize_pydantic_objects(v) for k, v in obj.items()} + if isinstance(obj, list): + return [serialize_pydantic_objects(item) for item in obj] + return obj + + @beartype async def execute_integration( - context: StepContext, + developer_id: UUID, + agent_id: UUID, + task_id: UUID | None, + session_id: UUID | None, tool_name: str, integration: BaseIntegrationDef, arguments: dict[str, Any], setup: dict[str, Any] = {}, + connection_pool=None, ) -> Any: - if not isinstance(context.execution_input, ExecutionInput): - msg = "Expected ExecutionInput type for context.execution_input" - raise TypeError(msg) - - developer_id = context.execution_input.developer_id - agent_id = context.execution_input.agent.id - - if context.execution_input.task is None: - msg = "Task cannot be None in execution_input" + # AIDEV-NOTE: task_id or session_id must be provided (one for task execution, one for chat) + if task_id is None and session_id is None: + msg = "Either task_id or session_id must be provided" raise ValueError(msg) - task_id = context.execution_input.task.id + if connection_pool is None: + connection_pool = getattr(app.state, "postgres_pool", None) merged_tool_args = await tools.get_tool_args_from_metadata( developer_id=developer_id, agent_id=agent_id, task_id=task_id, + session_id=session_id, arg_type="args", - connection_pool=app.state.postgres_pool, + connection_pool=connection_pool, ) merged_tool_setup = await tools.get_tool_args_from_metadata( developer_id=developer_id, agent_id=agent_id, task_id=task_id, + session_id=session_id, arg_type="setup", - connection_pool=app.state.postgres_pool, + connection_pool=connection_pool, ) - arguments = merged_tool_args.get(tool_name, {}) | (integration.arguments or {}) | arguments + arguments = arguments | (integration.arguments or {}) | merged_tool_args.get(tool_name, {}) + + # Convert integration.setup to dict and ensure all Pydantic types are serialized + integration_setup = {} + if integration.setup: + # Use our helper to recursively serialize any Pydantic objects + integration_setup = serialize_pydantic_objects(integration.setup) - setup = merged_tool_setup.get(tool_name, {}) | (integration.setup or {}) | setup + # Serialize both setup and arguments to ensure no Pydantic objects remain + setup = serialize_pydantic_objects( + setup | integration_setup | merged_tool_setup.get(tool_name, {}) + ) + arguments = serialize_pydantic_objects(arguments) try: # Handle dummy provider as a special case diff --git a/agents-api/agents_api/activities/execute_system.py b/src/agents-api/agents_api/activities/execute_system.py similarity index 79% rename from agents-api/agents_api/activities/execute_system.py rename to src/agents-api/agents_api/activities/execute_system.py index 1ee5fee1e..0c2e8940f 100644 --- a/agents-api/agents_api/activities/execute_system.py +++ b/src/agents-api/agents_api/activities/execute_system.py @@ -19,28 +19,25 @@ UpdateUserRequest, VectorDocSearchRequest, ) -from ..common.protocol.tasks import ExecutionInput, StepContext +from ..common.utils.evaluator import get_handler from ..env import testing from ..queries import developers -from .utils import get_handler @beartype async def execute_system( - context: StepContext, + developer_id: UUID, system: SystemDef, + connection_pool=None, ) -> Any: """Execute a system call with the appropriate handler and transformed arguments.""" arguments: dict[str, Any] = system.arguments or {} - connection_pool = getattr(app.state, "postgres_pool", None) + if connection_pool is None: + connection_pool = getattr(app.state, "postgres_pool", None) - if not isinstance(context.execution_input, ExecutionInput): - msg = "Expected ExecutionInput type for context.execution_input" - raise TypeError(msg) - - arguments["developer_id"] = context.execution_input.developer_id + arguments["developer_id"] = developer_id # Unbox all the arguments for key, value in arguments.items(): @@ -50,9 +47,17 @@ async def execute_system( arguments[key] = value.to_list() # Convert all UUIDs to UUID objects - uuid_fields = ["agent_id", "user_id", "task_id", "session_id", "doc_id"] + uuid_fields = [ + "agent_id", + "user_id", + "task_id", + "session_id", + "doc_id", + "owner_id", + "developer_id", + ] for field in uuid_fields: - if field in arguments: + if field in arguments and not isinstance(arguments[field], UUID): arguments[field] = UUID(arguments[field]) try: @@ -143,7 +148,6 @@ async def execute_system( user_id=user_id, data=update_user_request, ) - return await handler(**arguments) except BaseException as e: if activity.in_activity(): @@ -153,27 +157,28 @@ async def execute_system( def _create_search_request(arguments: dict) -> Any: """Create appropriate search request based on available parameters.""" - if "text" in arguments and "vector" in arguments: + search_params = arguments | arguments.pop("search_params", {}) + if "text" in search_params and "vector" in search_params: return HybridDocSearchRequest( - text=arguments.pop("text"), - mmr_strength=arguments.pop("mmr_strength", 0), - vector=arguments.pop("vector"), - alpha=arguments.pop("alpha", 0.75), - confidence=arguments.pop("confidence", 0.5), - limit=arguments.get("limit", 10), + text=search_params.pop("text"), + mmr_strength=search_params.pop("mmr_strength", 0), + vector=search_params.pop("vector"), + alpha=search_params.pop("alpha", 0.75), + confidence=search_params.pop("confidence", 0.5), + limit=search_params.get("limit", 10), ) - if "text" in arguments: + if "text" in search_params: return TextOnlyDocSearchRequest( - text=arguments.pop("text"), - mmr_strength=arguments.pop("mmr_strength", 0), - limit=arguments.get("limit", 10), + text=search_params.pop("text"), + mmr_strength=search_params.pop("mmr_strength", 0), + limit=search_params.get("limit", 10), ) - if "vector" in arguments: + if "vector" in search_params: return VectorDocSearchRequest( - vector=arguments.pop("vector"), - mmr_strength=arguments.pop("mmr_strength", 0), - confidence=arguments.pop("confidence", 0.7), - limit=arguments.get("limit", 10), + vector=search_params.pop("vector"), + mmr_strength=search_params.pop("mmr_strength", 0), + confidence=search_params.pop("confidence", 0.7), + limit=search_params.get("limit", 10), ) return None diff --git a/agents-api/agents_api/activities/logger.py b/src/agents-api/agents_api/activities/logger.py similarity index 100% rename from agents-api/agents_api/activities/logger.py rename to src/agents-api/agents_api/activities/logger.py diff --git a/src/agents-api/agents_api/activities/pg_query_step.py b/src/agents-api/agents_api/activities/pg_query_step.py new file mode 100644 index 000000000..7172183a5 --- /dev/null +++ b/src/agents-api/agents_api/activities/pg_query_step.py @@ -0,0 +1,29 @@ +from typing import Any + +from beartype import beartype +from temporalio import activity + +from .. import queries +from ..env import testing + + +@beartype +async def pg_query_step( + query_name: str, + file_name: str, + values: dict[str, Any], +) -> Any: + (module_name, name) = file_name.split(".") + + module = getattr(queries, module_name) + query_module = getattr(module, name) + query = getattr(query_module, query_name) + + return await query(**values) + + +mock_pg_query_step = pg_query_step + +pg_query_step = activity.defn(name="pg_query_step")( + pg_query_step if not testing else mock_pg_query_step, +) diff --git a/agents-api/agents_api/activities/sync_items_remote.py b/src/agents-api/agents_api/activities/sync_items_remote.py similarity index 100% rename from agents-api/agents_api/activities/sync_items_remote.py rename to src/agents-api/agents_api/activities/sync_items_remote.py diff --git a/agents-api/agents_api/activities/task_steps/__init__.py b/src/agents-api/agents_api/activities/task_steps/__init__.py similarity index 87% rename from agents-api/agents_api/activities/task_steps/__init__.py rename to src/agents-api/agents_api/activities/task_steps/__init__.py index 701961ecb..0af718bbb 100644 --- a/agents-api/agents_api/activities/task_steps/__init__.py +++ b/src/agents-api/agents_api/activities/task_steps/__init__.py @@ -1,4 +1,4 @@ -# ruff: noqa: F401, F403, F405 +# ruff: noqa: F401 from .base_evaluate import base_evaluate from .get_value_step import get_value_step diff --git a/src/agents-api/agents_api/activities/task_steps/base_evaluate.py b/src/agents-api/agents_api/activities/task_steps/base_evaluate.py new file mode 100644 index 000000000..1e0251377 --- /dev/null +++ b/src/agents-api/agents_api/activities/task_steps/base_evaluate.py @@ -0,0 +1,67 @@ +# AIDEV-NOTE: This module provides the activity for evaluating Python expressions within the task execution context. +from typing import Any + +from beartype import beartype +from simpleeval import SimpleEval +from temporalio import activity + +from ...common.exceptions.executions import EvaluateError +from ...common.protocol.tasks import StepContext +from ...common.utils.expressions import evaluate_expressions +from ...common.utils.task_validation import backwards_compatibility + + +# AIDEV-NOTE: Recursively evaluates expressions, handling different data types (strings, lists, dicts) and PyExpression objects. +# It prepares the expression for evaluation by the simpleeval library. +def _recursive_evaluate(expr, evaluator: SimpleEval): + # Handle PyExpression type from the model + if hasattr(expr, "root") and isinstance(expr.root, str): + # Extract the string from the RootModel + expr = expr.root + + if isinstance(expr, str): + try: + expr = backwards_compatibility(expr) + expr = expr.strip() + if isinstance(expr, str) and expr.startswith("$ "): + # Remove $ and any space after it + expr = expr[1:].strip() + else: + expr = f"f'''{expr}'''" + return evaluator.eval(expr) + except Exception as e: + evaluate_error = EvaluateError(e, expr, evaluator.names) + if activity.in_activity(): + activity.logger.error(f"Error in base_evaluate: {evaluate_error}\n") + raise evaluate_error from e + elif isinstance(expr, int | bool | float): + return expr + elif isinstance(expr, list): + return [_recursive_evaluate(e, evaluator) for e in expr] + elif isinstance(expr, dict): + return {k: _recursive_evaluate(v, evaluator) for k, v in expr.items()} + else: + msg = f"Invalid expression: {expr}" + raise ValueError(msg) + + +# AIDEV-NOTE: Main activity function for evaluating expressions. +# Sets up the evaluation environment with context values and extra functions, then calls the recursive evaluator. +@activity.defn +@beartype +async def base_evaluate( + exprs: Any, + context: StepContext | None = None, + values: dict[str, Any] | None = None, + extra_lambda_strs: dict[str, str] | None = None, +) -> Any | list[Any] | dict[str, Any]: + if context is None and values is None: + msg = "Either context or values must be provided" + raise ValueError(msg) + + values = values or {} + if context: + # NOTE: We limit the number of inputs to 50 to avoid excessive memory usage + values.update(await context.prepare_for_step(limit=50)) + + return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs) diff --git a/agents-api/agents_api/activities/task_steps/get_value_step.py b/src/agents-api/agents_api/activities/task_steps/get_value_step.py similarity index 100% rename from agents-api/agents_api/activities/task_steps/get_value_step.py rename to src/agents-api/agents_api/activities/task_steps/get_value_step.py diff --git a/agents-api/agents_api/activities/task_steps/prompt_step.py b/src/agents-api/agents_api/activities/task_steps/prompt_step.py similarity index 63% rename from agents-api/agents_api/activities/task_steps/prompt_step.py rename to src/agents-api/agents_api/activities/task_steps/prompt_step.py index 0797a116e..5e0fa99e1 100644 --- a/agents-api/agents_api/activities/task_steps/prompt_step.py +++ b/src/agents-api/agents_api/activities/task_steps/prompt_step.py @@ -1,3 +1,6 @@ +# AIDEV-NOTE: This module contains the activity for executing a prompt step, which interacts with the language model. +import functools + from beartype import beartype from litellm.types.utils import ModelResponse from temporalio import activity @@ -8,54 +11,23 @@ litellm, # We dont directly import `acompletion` so we can mock it ) from ...common.protocol.tasks import ExecutionInput, StepContext, StepOutcome +from ...common.utils.feature_flags import get_feature_flag_value +from ...common.utils.llm_providers import get_api_key_env_var_name +from ...common.utils.model_validation import ( + ModelNotAvailableError, + ensure_model_available, +) +from ...common.utils.tool_runner import format_tool, run_context_tool, run_llm_with_tools from ...env import debug from .base_evaluate import base_evaluate COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" -def format_tool(tool: Tool) -> dict: - if tool.type == "function": - return { - "type": "function", - "function": { - "name": tool.name, - "description": tool.description, - "parameters": tool.function and tool.function.parameters, - }, - } - - # For other tool types, we need to translate them to the OpenAI function tool format - return { - "type": "function", - "function": {"name": tool.name, "description": tool.description}, - } - - # FIXME: Implement system tools - # if tool.type == "system": - # handler: Callable = get_handler_with_filtered_params(tool.system) - - # lc_tool: BaseTool = tool_decorator(handler) - - # json_schema: dict = lc_tool.get_input_jsonschema() - - # formatted["function"]["description"] = formatted["function"][ - # "description" - # ] or json_schema.get("description") - - # formatted["function"]["parameters"] = json_schema - - # # FIXME: Implement integration tools - # elif tool.type == "integration": - # raise NotImplementedError("Integration tools are not supported") - - # # FIXME: Implement API call tools - # elif tool.type == "api_call": - # raise NotImplementedError("API call tools are not supported") - - @activity.defn @beartype +# AIDEV-NOTE: Executes the prompt step by interacting with the language model via LiteLLM. +# Handles prompt evaluation, tool formatting, model calling, and response processing. async def prompt_step(context: StepContext) -> StepOutcome: # Get context data prompt: str | list[dict] = context.current_step.model_dump()["prompt"] @@ -81,6 +53,9 @@ async def prompt_step(context: StepContext) -> StepOutcome: context.execution_input.agent.model if context.execution_input.agent.model else "gpt-4o" ) + if get_api_key_env_var_name(agent_model) != "OPENAI_API_KEY": + prompt = [{k: v for k, v in message.items() if k != "name"} for message in prompt] + excluded_keys = [ "prompt", "kind_", @@ -99,27 +74,81 @@ async def prompt_step(context: StepContext) -> StepOutcome: passed_settings.update(passed_settings.pop("settings", {}) or {}) passed_settings["user"] = str(context.execution_input.developer_id) + passed_settings = await base_evaluate(passed_settings, context) + + override_model = passed_settings.get("model") + if override_model is not None: + try: + await ensure_model_available(override_model) + except ModelNotAvailableError as exc: + raise ApplicationError(str(exc), non_retryable=True) from exc + + if get_feature_flag_value( + "auto_tool_calls_prompt_step", developer_id=str(context.execution_input.developer_id) + ): + if not passed_settings.get("tools"): + passed_settings.pop("tool_choice", None) + + all_tools = await context.tools() + + passed_settings = {k: v for k, v in passed_settings.items() if v is not None} + + completion_data: dict = { + "model": agent_model, + **agent_default_settings, + **passed_settings, + } + + # AIDEV-NOTE: When auto_run_tools=False, pass empty tools list to prevent + # model from making tool calls that won't be executed. This simplifies the + # flow as the model will always return a regular completion instead of tool calls. + tools_to_use = all_tools if context.current_step.auto_run_tools else [] + + responses: list[dict] = await run_llm_with_tools( + messages=prompt, + tools=tools_to_use, + settings=completion_data, + run_tool_call=functools.partial(run_context_tool, context), + ) + + if context.current_step.unwrap: + response = responses[-1] + + # TODO: Allow unwrapping of function tool calls + if response["tool_calls"] is not None: + msg = "Function tool calls unwrapping is not supported yet" + raise ApplicationError(msg) + + return StepOutcome( + output=response["content"], + next=None, + ) + + return StepOutcome( + output=responses, + next=None, + ) if not passed_settings.get("tools"): passed_settings.pop("tool_choice", None) # Format tools for litellm - formatted_tools = [format_tool(tool) for tool in context.tools] + formatted_tools = [await format_tool(tool) for tool in await context.tools()] # Map tools to their original objects tools_mapping: dict[str, Tool] = { fmt_tool.get("name") or fmt_tool.get("function", {}).get("name"): orig_tool - for fmt_tool, orig_tool in zip(formatted_tools, context.tools) + for fmt_tool, orig_tool in zip(formatted_tools, await context.tools()) } # Check if using Claude model and has specific tool types is_claude_model = agent_model.lower().startswith("claude-3.5") - # FIXME: Hack to make the computer use tools compatible with litellm + # AIDEV-FIXME: Hack to make the computer use tools compatible with litellm. # Issue was: litellm expects type to be `computer_20241022` and spec to be # `function` (see: https://docs.litellm.ai/docs/providers/anthropic#computer-tools) # but we don't allow that (spec should match type). formatted_tools = [] - for i, tool in enumerate(context.tools): + for i, tool in enumerate(await context.tools()): if tool.type == "computer_20241022" and tool.computer_20241022: function = tool.computer_20241022 tool = { @@ -135,12 +164,16 @@ async def prompt_step(context: StepContext) -> StepOutcome: } formatted_tools.append(tool) # For non-Claude models, we don't need to send tools + # AIDEV-TODO: Enable formatted_tools once format-tools PR is merged. # FIXME: Enable formatted_tools once format-tools PR is merged. if not is_claude_model: formatted_tools = None + # AIDEV-HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages. + # AIDEV-FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format. # HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages # FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format + # AIDEV-TODO: Enable formatted_tools once format-tools PR is merged. # FIXME: Enable formatted_tools once format-tools PR is merged. is_groq_model = agent_model.lower().startswith("llama-3.1") if is_groq_model: @@ -189,6 +222,7 @@ async def prompt_step(context: StepContext) -> StepOutcome: next=None, ) + # AIDEV-NOTE: Re-convert tool-calls from LLM response back to internal integration/system call format if needed. # Re-convert tool-calls to integration/system calls if needed response_as_dict = response.model_dump() diff --git a/agents-api/agents_api/activities/task_steps/raise_complete_async.py b/src/agents-api/agents_api/activities/task_steps/raise_complete_async.py similarity index 100% rename from agents-api/agents_api/activities/task_steps/raise_complete_async.py rename to src/agents-api/agents_api/activities/task_steps/raise_complete_async.py diff --git a/agents-api/agents_api/activities/task_steps/tool_call_step.py b/src/agents-api/agents_api/activities/task_steps/tool_call_step.py similarity index 71% rename from agents-api/agents_api/activities/task_steps/tool_call_step.py rename to src/agents-api/agents_api/activities/task_steps/tool_call_step.py index d206c80eb..9cb7e4d4a 100644 --- a/agents-api/agents_api/activities/task_steps/tool_call_step.py +++ b/src/agents-api/agents_api/activities/task_steps/tool_call_step.py @@ -1,11 +1,13 @@ +# AIDEV-NOTE: This module provides helper functions for generating tool call IDs and constructing tool call objects. import base64 import secrets from ...autogen.openapi_model import CreateToolRequest, Tool +# AIDEV-TODO: This function for generating call IDs should be moved to a more appropriate location. # FIXME: This shouldn't be here. -def generate_call_id(): +def generate_call_id() -> str: # Generate 18 random bytes (which will result in 24 base64 characters) random_bytes = secrets.token_bytes(18) # Encode to base64 and remove padding @@ -14,7 +16,9 @@ def generate_call_id(): return f"call_{base64_string}" +# AIDEV-TODO: Refactor this function for constructing tool calls and move it to a more appropriate location. # FIXME: This shouldn't be here, and shouldn't be done this way. Should be refactored. +# AIDEV-NOTE: Constructs a dictionary representing a tool call based on the tool definition and arguments. def construct_tool_call(tool: CreateToolRequest | Tool, arguments: dict, call_id: str) -> dict: return { tool.type: { diff --git a/agents-api/agents_api/activities/task_steps/transition_step.py b/src/agents-api/agents_api/activities/task_steps/transition_step.py similarity index 92% rename from agents-api/agents_api/activities/task_steps/transition_step.py rename to src/agents-api/agents_api/activities/task_steps/transition_step.py index f7912175c..81c7bcf62 100644 --- a/agents-api/agents_api/activities/task_steps/transition_step.py +++ b/src/agents-api/agents_api/activities/task_steps/transition_step.py @@ -41,12 +41,15 @@ async def transition_step( if not context.execution_input.execution: msg = "Execution is required in execution_input" raise ValueError(msg) + # AIDEV-NOTE: assert that execution is not None for type checker + execution = context.execution_input.execution + assert execution is not None # Create transition try: transition = await create_execution_transition( developer_id=context.execution_input.developer_id, - execution_id=context.execution_input.execution.id, + execution_id=execution.id, data=transition_info, task_token=transition_info.task_token, connection_pool=app.state.postgres_pool, diff --git a/agents-api/agents_api/activities/tool_executor.py b/src/agents-api/agents_api/activities/tool_executor.py similarity index 90% rename from agents-api/agents_api/activities/tool_executor.py rename to src/agents-api/agents_api/activities/tool_executor.py index d9c7e4548..42be3141d 100644 --- a/agents-api/agents_api/activities/tool_executor.py +++ b/src/agents-api/agents_api/activities/tool_executor.py @@ -1,4 +1,5 @@ import json +import logging from typing import Any from temporalio import activity @@ -10,6 +11,8 @@ from ..clients.integrations import run_integration_service from ..env import brave_api_key +logger = logging.getLogger(__name__) + async def execute_web_search_tool(tool_call: WebPreviewToolCall) -> ToolExecutionResult: """ @@ -184,8 +187,18 @@ def format_tool_results_for_llm(result: ToolExecutionResult) -> dict[str, Any]: if result.error: formatted_result["content"] = json.dumps({"error": result.error}) else: - formatted_result["content"] = ( - json.dumps(result.output) if isinstance(result.output, dict) else str(result.output) - ) + # Handle serialization with custom JSON encoder + try: + if isinstance(result.output, dict): + formatted_result["content"] = json.dumps( + result.output, default=lambda o: str(o) + ) + else: + formatted_result["content"] = str(result.output) + except Exception as e: + formatted_result["content"] = json.dumps({ + "error": f"Failed to serialize tool output: {e!s}" + }) + logger.error(f"Failed to serialize tool output: {e!s}") return formatted_result diff --git a/agents-api/agents_api/app.py b/src/agents-api/agents_api/app.py similarity index 100% rename from agents-api/agents_api/app.py rename to src/agents-api/agents_api/app.py diff --git a/src/agents-api/agents_api/autogen/.ignore b/src/agents-api/agents_api/autogen/.ignore new file mode 100644 index 000000000..7bf481d30 --- /dev/null +++ b/src/agents-api/agents_api/autogen/.ignore @@ -0,0 +1,2 @@ +*.py +!openapi_model.py diff --git a/agents-api/agents_api/autogen/CLAUDE.md b/src/agents-api/agents_api/autogen/AGENTS.md similarity index 71% rename from agents-api/agents_api/autogen/CLAUDE.md rename to src/agents-api/agents_api/autogen/AGENTS.md index 4efd45e74..ca7fe006c 100644 --- a/agents-api/agents_api/autogen/CLAUDE.md +++ b/src/agents-api/agents_api/autogen/AGENTS.md @@ -1,4 +1,12 @@ -# Autogen +# AGENTS.md - autogen + +This folder contains auto-generated code in `agents-api` from TypeSpec and OpenAPI. + +Key Points +- Do NOT edit files here manually; they are overwritten on regeneration. +- Regenerate via `bash scripts/generate_openapi_code.sh` from the project root. +- Source-of-truth TypeSpec definitions reside in the `typespec/` directory. +- Ensure version compatibility between TypeSpec plugin and codegen scripts. ## Purpose - Auto-generated API client code from OpenAPI specifications @@ -37,4 +45,4 @@ - `TaskSpecDef`: Complete task specification for execution - `WorkflowStep`: Individual step in a workflow - `ApiCallDef`, `PromptDef`: Tool type definitions -- `ExecutionStatus`: State machine status values \ No newline at end of file +- `ExecutionStatus`: State machine status values diff --git a/src/agents-api/agents_api/autogen/Agents.py b/src/agents-api/agents_api/autogen/Agents.py new file mode 100644 index 000000000..177e2a57f --- /dev/null +++ b/src/agents-api/agents_api/autogen/Agents.py @@ -0,0 +1,294 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class Agent(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Name of the agent + """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: dict[str, Any] | None = None + """ + Default settings for all sessions created by this agent + """ + default_system_template: str = ( + '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + ) + """ + Default system template for all sessions created by this agent + """ + + +class CreateAgentRequest(BaseModel): + """ + Payload for creating a agent (and associated documents) + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Name of the agent + """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: dict[str, Any] | None = None + """ + Default settings for all sessions created by this agent + """ + default_system_template: str = ( + '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + ) + """ + Default system template for all sessions created by this agent + """ + + +class CreateOrUpdateAgentRequest(CreateAgentRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + metadata: dict[str, Any] | None = None + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Name of the agent + """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: dict[str, Any] | None = None + """ + Default settings for all sessions created by this agent + """ + default_system_template: str = ( + '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + ) + """ + Default system template for all sessions created by this agent + """ + + +class ListModelsResponse(BaseModel): + """ + Response for the list models endpoint + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + models: list[ModelInfo] + """ + List of available models + """ + + +class ModelInfo(BaseModel): + """ + Model information returned by the model list endpoint + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: str + """ + The ID/name of the model + """ + + +class PatchAgentRequest(BaseModel): + """ + Payload for patching a agent + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[str | None, Field(max_length=255, min_length=1)] = None + """ + Name of the agent + """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: dict[str, Any] | None = None + """ + Default settings for all sessions created by this agent + """ + default_system_template: str = ( + '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + ) + """ + Default system template for all sessions created by this agent + """ + + +class UpdateAgentRequest(BaseModel): + """ + Payload for updating a agent + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Name of the agent + """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the agent + """ + about: str = "" + """ + About the agent + """ + model: str = "" + """ + Model name to use (gpt-4-turbo, gemini-nano etc) + """ + instructions: str | list[str] = [] + """ + Instructions for the agent + """ + default_settings: dict[str, Any] | None = None + """ + Default settings for all sessions created by this agent + """ + default_system_template: str = ( + '{%- if agent.name -%}\nYou are {{agent.name}}.{{" "}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{" "}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n {%- if user.name -%}{{" "}} and their name is {{user.name}}\n {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n {%- if agent.instructions is string -%}\n {{agent.instructions}}{{NEWLINE}}\n {%- else -%}\n {%- for instruction in agent.instructions -%}\n - {{instruction}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n {%- for doc in docs -%}\n {{doc.title}}{{NEWLINE}}\n {%- if doc.content is string -%}\n {{doc.content}}{{NEWLINE}}\n {%- else -%}\n {%- for snippet in doc.content -%}\n {{snippet}}{{NEWLINE}}\n {%- endfor -%}\n {%- endif -%}\n {{"---"}}\n {%- endfor -%}\n{%- endif -%}' + ) + """ + Default system template for all sessions created by this agent + """ diff --git a/src/agents-api/agents_api/autogen/CLAUDE.md b/src/agents-api/agents_api/autogen/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/autogen/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/autogen/Chat.py b/src/agents-api/agents_api/autogen/Chat.py similarity index 94% rename from agents-api/agents_api/autogen/Chat.py rename to src/agents-api/agents_api/autogen/Chat.py index 3143e8a00..53cd07641 100644 --- a/agents-api/agents_api/autogen/Chat.py +++ b/src/agents-api/agents_api/autogen/Chat.py @@ -59,7 +59,9 @@ class BaseChatResponse(BaseModel): """ Background job IDs that may have been spawned from this interaction. """ - docs: Annotated[list[DocReference], Field(json_schema_extra={"readOnly": True})] = [] + docs: Annotated[list[DocReference], Field(json_schema_extra={"readOnly": True})] = ( + [] + ) """ Documents referenced for this request (for citation purposes). """ @@ -132,15 +134,21 @@ class CompletionUsage(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - completion_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = None + completion_tokens: Annotated[ + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Number of tokens in the generated completion """ - prompt_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = None + prompt_tokens: Annotated[ + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Number of tokens in the prompt """ - total_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = None + total_tokens: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = ( + None + ) """ Total number of tokens used in the request (prompt + completion) """ @@ -295,10 +303,6 @@ class Delta(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -361,10 +365,6 @@ class Message(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -421,9 +421,9 @@ class MessageModel(BaseModel): """ Tool calls generated by the model. """ - created_at: Annotated[AwareDatetime | None, Field(json_schema_extra={"readOnly": True})] = ( - None - ) + created_at: Annotated[ + AwareDatetime | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ When this resource was created as UTC date-time """ @@ -447,7 +447,9 @@ class RenderResponse(ChatInputData): model_config = ConfigDict( populate_by_name=True, ) - docs: Annotated[list[DocReference], Field(json_schema_extra={"readOnly": True})] = [] + docs: Annotated[list[DocReference], Field(json_schema_extra={"readOnly": True})] = ( + [] + ) """ Documents referenced for this request (for citation purposes). """ @@ -556,9 +558,9 @@ class ChatInput(ChatInputData): """ Modify the likelihood of specified tokens appearing in the completion """ - response_format: SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None = ( - None - ) + response_format: ( + SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None + ) = None """ Response format (set to `json_object` to restrict output to JSON) """ @@ -594,3 +596,12 @@ class ChatInput(ChatInputData): """ Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. """ + metadata: dict[str, Any] | None = None + auto_run_tools: StrictBool = False + """ + Whether to automatically run tools and send the results back to the model (requires tools or agents with tools). + """ + recall_tools: StrictBool = True + """ + Whether to include tool requests and responses when recalling messages. + """ diff --git a/integrations-service/integrations/autogen/Common.py b/src/agents-api/agents_api/autogen/Common.py similarity index 90% rename from integrations-service/integrations/autogen/Common.py rename to src/agents-api/agents_api/autogen/Common.py index 16123e07a..f378474f3 100644 --- a/integrations-service/integrations/autogen/Common.py +++ b/src/agents-api/agents_api/autogen/Common.py @@ -9,6 +9,16 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel +class Content(RootModel[str]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Annotated[str, Field(max_length=30000)] + """ + Contents of a document + """ + + class JinjaTemplate(RootModel[str]): model_config = ConfigDict( populate_by_name=True, diff --git a/integrations-service/integrations/autogen/Docs.py b/src/agents-api/agents_api/autogen/Docs.py similarity index 72% rename from integrations-service/integrations/autogen/Docs.py rename to src/agents-api/agents_api/autogen/Docs.py index 9e5507357..1ba3bc295 100644 --- a/integrations-service/integrations/autogen/Docs.py +++ b/src/agents-api/agents_api/autogen/Docs.py @@ -8,23 +8,7 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool - -class BaseDocSearchRequest(BaseModel): - model_config = ConfigDict( - populate_by_name=True, - ) - limit: Annotated[int, Field(ge=1, le=50)] = 10 - """ - The limit of documents to return - """ - lang: str = "en-US" - """ - The language to be used for text-only search. Support for other languages coming soon. - """ - metadata_filter: dict[str, Any] = {} - """ - Metadata filter to apply to the search - """ +from .Common import Content class BulkDeleteDocsRequest(BaseModel): @@ -54,9 +38,9 @@ class CreateDocRequest(BaseModel): """ Title describing what this document contains """ - content: str | list[str] + content: Content | list[Content] """ - Contents of the document + Contents of the document. Each string is limited to 30k characters. """ embed_instruction: str | None = None """ @@ -97,13 +81,15 @@ class Doc(BaseModel): """ Language of the document """ - embedding_model: Annotated[str | None, Field(json_schema_extra={"readOnly": True})] = None + embedding_model: Annotated[ + str | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Embedding model used for the document """ - embedding_dimensions: Annotated[int | None, Field(json_schema_extra={"readOnly": True})] = ( - None - ) + embedding_dimensions: Annotated[ + int | None, Field(json_schema_extra={"readOnly": True}) + ] = None """ Dimensions of the embedding model """ @@ -159,37 +145,53 @@ class EmbedQueryResponse(BaseModel): """ -class HybridDocSearchRequest(BaseDocSearchRequest): +class HybridDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + limit: Annotated[int, Field(ge=1, le=50)] = 10 """ - The confidence cutoff level + The limit of documents to return """ - alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + metadata_filter: dict[str, Any] = {} """ - The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response """ text: str """ - Text to use in the search. In `hybrid` search mode, either `text` or both `text` and `vector` fields are required. + Text to use in the search + """ + lang: str = "en-US" + """ + The language to be used for text search. Support for other languages coming soon. + """ + trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. """ vector: list[float] """ Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. """ + confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5 """ MMR Strength (mmr_strength = 1 - mmr_lambda) """ - trigram_similarity_threshold: Annotated[float, Field(ge=0.0, le=1.0)] = 0.6 + alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 """ - The trigram_similarity_threshold cutoff level + The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; """ - k_multiplier: Annotated[int, Field(ge=0)] = 7 + k_multiplier: Annotated[int, Field(ge=1, le=10)] = 5 """ - The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring + The k_multiplier to control how many intermediate results to fetch before final scoring """ @@ -230,32 +232,60 @@ class Snippet(BaseModel): embedding: list[float] | None = None -class TextOnlyDocSearchRequest(BaseDocSearchRequest): +class TextOnlyDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) + limit: Annotated[int, Field(ge=1, le=50)] = 10 + """ + The limit of documents to return + """ + metadata_filter: dict[str, Any] = {} + """ + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response + """ text: str """ - Text to use in the search. + Text to use in the search """ - trigram_similarity_threshold: Annotated[float, Field(ge=0.0, le=1.0)] = 0.6 + lang: str = "en-US" + """ + The language to be used for text search. Support for other languages coming soon. + """ + trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ - The trigram_similarity_threshold cutoff level + Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. """ -class VectorDocSearchRequest(BaseDocSearchRequest): +class VectorDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + limit: Annotated[int, Field(ge=1, le=50)] = 10 """ - The confidence cutoff level + The limit of documents to return + """ + metadata_filter: dict[str, Any] = {} + """ + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response """ vector: list[float] """ Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. """ + confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5 """ MMR Strength (mmr_strength = 1 - mmr_lambda) diff --git a/integrations-service/integrations/autogen/Entries.py b/src/agents-api/agents_api/autogen/Entries.py similarity index 96% rename from integrations-service/integrations/autogen/Entries.py rename to src/agents-api/agents_api/autogen/Entries.py index 164a37b28..cf7b5a10e 100644 --- a/integrations-service/integrations/autogen/Entries.py +++ b/src/agents-api/agents_api/autogen/Entries.py @@ -48,7 +48,13 @@ class BaseEntry(BaseModel): ] ) source: Literal[ - "api_request", "api_response", "tool_response", "internal", "summarizer", "meta" + "api_request", + "api_response", + "tool_request", + "tool_response", + "internal", + "summarizer", + "meta", ] tokenizer: str token_count: int diff --git a/integrations-service/integrations/autogen/Executions.py b/src/agents-api/agents_api/autogen/Executions.py similarity index 98% rename from integrations-service/integrations/autogen/Executions.py rename to src/agents-api/agents_api/autogen/Executions.py index 6989af1dd..88053194b 100644 --- a/integrations-service/integrations/autogen/Executions.py +++ b/src/agents-api/agents_api/autogen/Executions.py @@ -190,7 +190,9 @@ class Transition(TransitionEvent): ) execution_id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] current: Annotated[TransitionTarget, Field(json_schema_extra={"readOnly": True})] - next: Annotated[TransitionTarget | None, Field(json_schema_extra={"readOnly": True})] + next: Annotated[ + TransitionTarget | None, Field(json_schema_extra={"readOnly": True}) + ] step_label: Annotated[ str | None, Field( diff --git a/agents-api/agents_api/autogen/Files.py b/src/agents-api/agents_api/autogen/Files.py similarity index 83% rename from agents-api/agents_api/autogen/Files.py rename to src/agents-api/agents_api/autogen/Files.py index b7640f8bc..5c1814699 100644 --- a/agents-api/agents_api/autogen/Files.py +++ b/src/agents-api/agents_api/autogen/Files.py @@ -39,6 +39,13 @@ class CreateFileRequest(BaseModel): """ Base64 encoded content of the file """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the file + """ class File(BaseModel): @@ -72,6 +79,13 @@ class File(BaseModel): """ Base64 encoded content of the file """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the file + """ size: Annotated[int, Field(ge=1, json_schema_extra={"readOnly": True})] """ Size of the file in bytes diff --git a/agents-api/agents_api/autogen/Jobs.py b/src/agents-api/agents_api/autogen/Jobs.py similarity index 100% rename from agents-api/agents_api/autogen/Jobs.py rename to src/agents-api/agents_api/autogen/Jobs.py diff --git a/src/agents-api/agents_api/autogen/Projects.py b/src/agents-api/agents_api/autogen/Projects.py new file mode 100644 index 000000000..2f6066a6a --- /dev/null +++ b/src/agents-api/agents_api/autogen/Projects.py @@ -0,0 +1,125 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateProjectRequest(BaseModel): + """ + Payload for creating a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class PatchProjectRequest(BaseModel): + """ + Payload for patching a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str | None, Field(max_length=255, min_length=1)] = None + """ + Display name of the project + """ + + +class Project(BaseModel): + """ + Project model + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class UpdateProjectRequest(BaseModel): + """ + Payload for updating a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class CreateOrUpdateProjectRequest(CreateProjectRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ diff --git a/integrations-service/integrations/autogen/Responses.py b/src/agents-api/agents_api/autogen/Responses.py similarity index 98% rename from integrations-service/integrations/autogen/Responses.py rename to src/agents-api/agents_api/autogen/Responses.py index f29dba192..ced6bfee8 100644 --- a/integrations-service/integrations/autogen/Responses.py +++ b/src/agents-api/agents_api/autogen/Responses.py @@ -93,7 +93,9 @@ class ComputerToolCall(BaseModel): """ An identifier used when responding to the tool call with output. """ - action: Click | DoubleClick | Drag | KeyPress | Move | Screenshot | Scroll | Type | Wait + action: ( + Click | DoubleClick | Drag | KeyPress | Move | Screenshot | Scroll | Type | Wait + ) """ The action to perform. """ @@ -226,7 +228,9 @@ class CreateResponse(BaseModel): reasoning: Reasoning | None = None text: Text | None = None tool_choice: Literal["auto", "none"] | ToolChoice | None = None - tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool] | None = None + tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool] | None = ( + None + ) truncation: Literal["disabled", "auto"] | None = None metadata: dict[str, Any] | None = None @@ -713,7 +717,9 @@ class Response(BaseModel): store: StrictBool = True temperature: float = 1 text: Text | None = None - tool_choice: ToolChoiceTypes | ToolChoiceFunction | Literal["auto", "none", "required"] + tool_choice: ( + ToolChoiceTypes | ToolChoiceFunction | Literal["auto", "none", "required"] + ) tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool] top_p: float = 1 truncation: Literal["disabled", "auto"] @@ -922,7 +928,7 @@ class ToolChoiceTypes(BaseModel): Allowed values are: - `file_search` - - `web_search_preview` + - `web_search_preview` - `computer_use_preview` """ diff --git a/src/agents-api/agents_api/autogen/Secrets.py b/src/agents-api/agents_api/autogen/Secrets.py new file mode 100644 index 000000000..557bcc583 --- /dev/null +++ b/src/agents-api/agents_api/autogen/Secrets.py @@ -0,0 +1,64 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateSecretRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: str + """ + Name of the secret + """ + description: str | None = None + """ + Description of what the secret is used for + """ + value: str + """ + The decrypted secret value + """ + + +class Secret(BaseModel): + """ + A secret that can be used in tasks and sessions + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + metadata: dict[str, Any] | None = None + name: str + """ + Name of the secret + """ + description: str | None = None + """ + Description of what the secret is used for + """ + value: str + """ + The decrypted secret value + """ + + +class UpdateSecretRequest(CreateSecretRequest): + pass diff --git a/agents-api/agents_api/autogen/Sessions.py b/src/agents-api/agents_api/autogen/Sessions.py similarity index 99% rename from agents-api/agents_api/autogen/Sessions.py rename to src/agents-api/agents_api/autogen/Sessions.py index 1937624db..18ef48c12 100644 --- a/agents-api/agents_api/autogen/Sessions.py +++ b/src/agents-api/agents_api/autogen/Sessions.py @@ -33,6 +33,10 @@ class BaseDocSearch(BaseModel): """ The maximum query length to use for the search. """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response + """ class BaseDocSearchUpdate(BaseDocSearch): diff --git a/integrations-service/integrations/autogen/Tasks.py b/src/agents-api/agents_api/autogen/Tasks.py similarity index 85% rename from integrations-service/integrations/autogen/Tasks.py rename to src/agents-api/agents_api/autogen/Tasks.py index 19f7da507..a1481a6ee 100644 --- a/integrations-service/integrations/autogen/Tasks.py +++ b/src/agents-api/agents_api/autogen/Tasks.py @@ -8,6 +8,7 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool +from .Common import JinjaTemplate from .Tools import ( ChosenBash20241022, ChosenComputer20241022, @@ -222,15 +223,15 @@ class Else(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["map_reduce"], Field(json_schema_extra={"readOnly": True})] = ( - "map_reduce" - ) + kind_: Annotated[ + Literal["map_reduce"], Field(json_schema_extra={"readOnly": True}) + ] = "map_reduce" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -238,7 +239,15 @@ class Else(BaseModel): """ The variable to iterate over """ - map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep + map: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ) """ The steps to run for each iteration """ @@ -266,9 +275,9 @@ class ElseModel(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -312,13 +321,15 @@ class ErrorWorkflowStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["error"], Field(json_schema_extra={"readOnly": True})] = "error" + kind_: Annotated[Literal["error"], Field(json_schema_extra={"readOnly": True})] = ( + "error" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -332,15 +343,15 @@ class EvaluateStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["evaluate"], Field(json_schema_extra={"readOnly": True})] = ( - "evaluate" - ) + kind_: Annotated[ + Literal["evaluate"], Field(json_schema_extra={"readOnly": True}) + ] = "evaluate" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -402,15 +413,15 @@ class ForeachStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["foreach"], Field(json_schema_extra={"readOnly": True})] = ( - "foreach" - ) + kind_: Annotated[ + Literal["foreach"], Field(json_schema_extra={"readOnly": True}) + ] = "foreach" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -424,9 +435,9 @@ class ForeachStepUpdateItem(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -444,13 +455,15 @@ class GetStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["get"], Field(json_schema_extra={"readOnly": True})] = "get" + kind_: Annotated[Literal["get"], Field(json_schema_extra={"readOnly": True})] = ( + "get" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -464,15 +477,15 @@ class IfElseWorkflowStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["if_else"], Field(json_schema_extra={"readOnly": True})] = ( - "if_else" - ) + kind_: Annotated[ + Literal["if_else"], Field(json_schema_extra={"readOnly": True}) + ] = "if_else" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -530,9 +543,9 @@ class IfElseWorkflowStepUpdateItem(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -612,13 +625,15 @@ class LogStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["log"], Field(json_schema_extra={"readOnly": True})] = "log" + kind_: Annotated[Literal["log"], Field(json_schema_extra={"readOnly": True})] = ( + "log" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -632,15 +647,15 @@ class Main(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["map_reduce"], Field(json_schema_extra={"readOnly": True})] = ( - "map_reduce" - ) + kind_: Annotated[ + Literal["map_reduce"], Field(json_schema_extra={"readOnly": True}) + ] = "map_reduce" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -648,7 +663,15 @@ class Main(BaseModel): """ The variable to iterate over """ - map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep + map: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ) """ The steps to run for each iteration """ @@ -672,9 +695,9 @@ class MainModel(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -718,21 +741,27 @@ class ParallelStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["parallel"], Field(json_schema_extra={"readOnly": True})] = ( - "parallel" - ) + kind_: Annotated[ + Literal["parallel"], Field(json_schema_extra={"readOnly": True}) + ] = "parallel" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ parallel: Annotated[ list[ - EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep ], Field(max_length=100), ] @@ -745,9 +774,9 @@ class ParallelStepUpdateItem(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -855,10 +884,6 @@ class PromptItem(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -877,13 +902,15 @@ class PromptStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["prompt"], Field(json_schema_extra={"readOnly": True})] = "prompt" + kind_: Annotated[Literal["prompt"], Field(json_schema_extra={"readOnly": True})] = ( + "prompt" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -907,10 +934,10 @@ class PromptStep(BaseModel): """ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` """ - auto_run_tools: StrictBool = True + auto_run_tools: StrictBool = False """ Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. @@ -925,9 +952,9 @@ class PromptStepUpdateItem(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -955,10 +982,10 @@ class PromptStepUpdateItem(BaseModel): """ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` """ - auto_run_tools: StrictBool = True + auto_run_tools: StrictBool = False """ Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. @@ -973,13 +1000,15 @@ class ReturnStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["return"], Field(json_schema_extra={"readOnly": True})] = "return" + kind_: Annotated[Literal["return"], Field(json_schema_extra={"readOnly": True})] = ( + "return" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -996,13 +1025,15 @@ class SetStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["set"], Field(json_schema_extra={"readOnly": True})] = "set" + kind_: Annotated[Literal["set"], Field(json_schema_extra={"readOnly": True})] = ( + "set" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1038,13 +1069,15 @@ class SleepStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["sleep"], Field(json_schema_extra={"readOnly": True})] = "sleep" + kind_: Annotated[Literal["sleep"], Field(json_schema_extra={"readOnly": True})] = ( + "sleep" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1070,13 +1103,15 @@ class SwitchStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["switch"], Field(json_schema_extra={"readOnly": True})] = "switch" + kind_: Annotated[Literal["switch"], Field(json_schema_extra={"readOnly": True})] = ( + "switch" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1090,9 +1125,9 @@ class SwitchStepUpdateItem(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1181,7 +1216,9 @@ class TaskTool(CreateToolRequest): model_config = ConfigDict( populate_by_name=True, ) - inherited: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = False + inherited: Annotated[StrictBool, Field(json_schema_extra={"readOnly": True})] = ( + False + ) """ Read-only: Whether the tool was inherited or not. Only applies within tasks. """ @@ -1195,15 +1232,15 @@ class Then(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["map_reduce"], Field(json_schema_extra={"readOnly": True})] = ( - "map_reduce" - ) + kind_: Annotated[ + Literal["map_reduce"], Field(json_schema_extra={"readOnly": True}) + ] = "map_reduce" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1211,7 +1248,15 @@ class Then(BaseModel): """ The variable to iterate over """ - map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep + map: ( + EvaluateStep + | ToolCallStep + | PromptStep + | GetStep + | SetStep + | LogStep + | YieldStep + ) """ The steps to run for each iteration """ @@ -1239,9 +1284,9 @@ class ThenModel(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1285,15 +1330,15 @@ class ToolCallStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["tool_call"], Field(json_schema_extra={"readOnly": True})] = ( - "tool_call" - ) + kind_: Annotated[ + Literal["tool_call"], Field(json_schema_extra={"readOnly": True}) + ] = "tool_call" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1429,15 +1474,15 @@ class WaitForInputStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["wait_for_input"], Field(json_schema_extra={"readOnly": True})] = ( - "wait_for_input" - ) + kind_: Annotated[ + Literal["wait_for_input"], Field(json_schema_extra={"readOnly": True}) + ] = "wait_for_input" """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1451,13 +1496,15 @@ class YieldStep(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - kind_: Annotated[Literal["yield"], Field(json_schema_extra={"readOnly": True})] = "yield" + kind_: Annotated[Literal["yield"], Field(json_schema_extra={"readOnly": True})] = ( + "yield" + ) """ The kind of step """ - label: Annotated[str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$")] = ( - None - ) + label: Annotated[ + str | None, Field(max_length=120, pattern="^[^0-9]|^[0-9]+[^0-9].*$") + ] = None """ The label of this step for referencing it from other steps """ @@ -1467,7 +1514,8 @@ class YieldStep(BaseModel): VALIDATION: Should resolve to a defined subworkflow. """ arguments: ( - dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str] | Literal["_"] + dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str] + | Literal["_"] ) = "_" """ The input parameters for the subworkflow (defaults to last step output) diff --git a/integrations-service/integrations/autogen/Tools.py b/src/agents-api/agents_api/autogen/Tools.py similarity index 76% rename from integrations-service/integrations/autogen/Tools.py rename to src/agents-api/agents_api/autogen/Tools.py index 3afe3e097..dbf5457a5 100644 --- a/integrations-service/integrations/autogen/Tools.py +++ b/src/agents-api/agents_api/autogen/Tools.py @@ -12,6 +12,7 @@ BaseModel, ConfigDict, Field, + RootModel, StrictBool, ) @@ -130,6 +131,10 @@ class ApiCallDef(BaseModel): """ The headers to send with the request """ + secrets: dict[str, SecretRef] | None = None + """ + Secret references to use in templates (available only at setup time, not during execution) + """ content: str | None = None """ The content as base64 to send with the request @@ -154,6 +159,10 @@ class ApiCallDef(BaseModel): """ The parameters to send with the request """ + params_schema: ParameterSchema | None = None + """ + The schema of the parameters + """ follow_redirects: StrictBool | None = None """ Follow redirects @@ -205,6 +214,10 @@ class ApiCallDefUpdate(BaseModel): """ The headers to send with the request """ + secrets: dict[str, SecretRefUpdate] | None = None + """ + Secret references to use in templates (available only at setup time, not during execution) + """ content: str | None = None """ The content as base64 to send with the request @@ -229,6 +242,10 @@ class ApiCallDefUpdate(BaseModel): """ The parameters to send with the request """ + params_schema: ParameterSchemaUpdate | None = None + """ + The schema of the parameters + """ follow_redirects: StrictBool | None = None """ Follow redirects @@ -368,6 +385,8 @@ class BaseIntegrationDef(BaseModel): "arxiv", "unstructured", "algolia", + "mcp", + "google_sheets", ] """ The provider of the integration @@ -411,6 +430,8 @@ class BaseIntegrationDefUpdate(BaseModel): "arxiv", "unstructured", "algolia", + "mcp", + "google_sheets", ] | None ) = None @@ -663,7 +684,9 @@ class BrowserbaseGetSessionLiveUrlsArguments(BrowserbaseGetSessionArguments): pass -class BrowserbaseGetSessionLiveUrlsArgumentsUpdate(BrowserbaseGetSessionArgumentsUpdate): +class BrowserbaseGetSessionLiveUrlsArgumentsUpdate( + BrowserbaseGetSessionArgumentsUpdate +): pass @@ -1049,6 +1072,8 @@ class CreateToolRequest(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -1284,83 +1309,603 @@ class FfmpegIntegrationDefUpdate(BaseIntegrationDefUpdate): """ setup: Any | None = None """ - The setup parameters for Ffmpeg + The setup parameters for Ffmpeg + """ + arguments: FfmpegSearchArgumentsUpdate | None = None + """ + The arguments for Ffmpeg Search + """ + + +class FfmpegSearchArguments(BaseModel): + """ + Arguments for Ffmpeg CMD + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + cmd: str + """ + The bash command string + """ + file: str | list[str] | None = None + """ + The base64 string of the file + """ + + +class FfmpegSearchArgumentsUpdate(BaseModel): + """ + Arguments for Ffmpeg CMD + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + cmd: str | None = None + """ + The bash command string + """ + file: str | list[str] | None = None + """ + The base64 string of the file + """ + + +class FunctionCallOption(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the function + """ + arguments: str | None = None + """ + The parameters to pass to the function + """ + + +class FunctionDef(BaseModel): + """ + Function definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Any | None = None + """ + DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + """ + description: Any | None = None + """ + DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + """ + parameters: dict[str, Any] | None = None + """ + The parameters the function accepts + """ + + +class GoogleSheetsAppendArguments(BaseModel): + """ + Arguments for appending values to a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to append to + """ + range: str + """ + The A1 notation of the range to start appending from + """ + values: list[list] + """ + The values to append (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "INSERT_ROWS" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsAppendArgumentsUpdate(BaseModel): + """ + Arguments for appending values to a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to append to + """ + range: str | None = None + """ + The A1 notation of the range to start appending from + """ + values: list[list] | None = None + """ + The values to append (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "INSERT_ROWS" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsBatchReadArguments(BaseModel): + """ + Arguments for batch reading values from multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to read from + """ + ranges: list[str] + """ + The A1 notation of the ranges to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = ( + "FORMATTED_STRING" + ) + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsBatchReadArgumentsUpdate(BaseModel): + """ + Arguments for batch reading values from multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to read from + """ + ranges: list[str] | None = None + """ + The A1 notation of the ranges to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = ( + "FORMATTED_STRING" + ) + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsBatchWriteArguments(BaseModel): + """ + Arguments for batch updating values in multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to write to + """ + data: list[GoogleSheetsValueRange] + """ + The data to write to each range + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsBatchWriteArgumentsUpdate(BaseModel): + """ + Arguments for batch updating values in multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to write to + """ + data: list[GoogleSheetsValueRange] | None = None + """ + The data to write to each range + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsClearArguments(BaseModel): + """ + Arguments for clearing values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to clear values from + """ + range: str + """ + The A1 notation of the range to clear + """ + + +class GoogleSheetsClearArgumentsUpdate(BaseModel): + """ + Arguments for clearing values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to clear values from + """ + range: str | None = None + """ + The A1 notation of the range to clear + """ + + +class GoogleSheetsIntegrationDef(BaseIntegrationDef): + """ + Google Sheets integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["google_sheets"] = "google_sheets" + """ + The provider must be "google_sheets" + """ + method: ( + Literal[ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write", + ] + | None + ) = None + """ + The specific method of the integration to call + """ + setup: GoogleSheetsSetup | None = None + """ + The setup parameters for Google Sheets + """ + arguments: ( + GoogleSheetsReadArguments + | GoogleSheetsWriteArguments + | GoogleSheetsAppendArguments + | GoogleSheetsClearArguments + | GoogleSheetsBatchReadArguments + | GoogleSheetsBatchWriteArguments + | None + ) = None + """ + The arguments for the method + """ + + +class GoogleSheetsIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Google Sheets integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["google_sheets"] = "google_sheets" + """ + The provider must be "google_sheets" + """ + method: ( + Literal[ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write", + ] + | None + ) = None + """ + The specific method of the integration to call + """ + setup: GoogleSheetsSetupUpdate | None = None + """ + The setup parameters for Google Sheets + """ + arguments: ( + GoogleSheetsReadArgumentsUpdate + | GoogleSheetsWriteArgumentsUpdate + | GoogleSheetsAppendArgumentsUpdate + | GoogleSheetsClearArgumentsUpdate + | GoogleSheetsBatchReadArgumentsUpdate + | GoogleSheetsBatchWriteArgumentsUpdate + | None + ) = None + """ + The arguments for the method + """ + + +class GoogleSheetsReadArguments(BaseModel): + """ + Arguments for reading values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to read from + """ + range: str + """ + The A1 notation of the range to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = ( + "FORMATTED_STRING" + ) + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsReadArgumentsUpdate(BaseModel): + """ + Arguments for reading values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to read from + """ + range: str | None = None + """ + The A1 notation of the range to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = ( + "FORMATTED_STRING" + ) + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsSetup(BaseModel): + """ + Setup parameters for Google Sheets integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + use_julep_service: StrictBool + """ + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. + """ + service_account_json: str | None = None + """ + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. """ - arguments: FfmpegSearchArgumentsUpdate | None = None + default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3 """ - The arguments for Ffmpeg Search + Default number of retry attempts for API calls """ -class FfmpegSearchArguments(BaseModel): +class GoogleSheetsSetupUpdate(BaseModel): """ - Arguments for Ffmpeg CMD + Setup parameters for Google Sheets integration """ model_config = ConfigDict( populate_by_name=True, ) - cmd: str + use_julep_service: StrictBool | None = None """ - The bash command string + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. """ - file: str | list[str] | None = None + service_account_json: str | None = None """ - The base64 string of the file + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. + """ + default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3 + """ + Default number of retry attempts for API calls """ -class FfmpegSearchArgumentsUpdate(BaseModel): +class GoogleSheetsValueRange(BaseModel): """ - Arguments for Ffmpeg CMD + Represents a range of values to write """ model_config = ConfigDict( populate_by_name=True, ) - cmd: str | None = None + range: str """ - The bash command string + The A1 notation of the range """ - file: str | list[str] | None = None + values: list[list] """ - The base64 string of the file + The values for the range (2D array) + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension of the values """ -class FunctionCallOption(BaseModel): +class GoogleSheetsWriteArguments(BaseModel): + """ + Arguments for writing values to a spreadsheet + """ + model_config = ConfigDict( populate_by_name=True, ) - name: str + spreadsheet_id: str """ - The name of the function + The ID of the spreadsheet to write to """ - arguments: str | None = None + range: str """ - The parameters to pass to the function + The A1 notation of the range to write to + """ + values: list[list] + """ + The values to write (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "OVERWRITE" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response """ -class FunctionDef(BaseModel): +class GoogleSheetsWriteArgumentsUpdate(BaseModel): """ - Function definition + Arguments for writing values to a spreadsheet """ model_config = ConfigDict( populate_by_name=True, ) - name: Any | None = None + spreadsheet_id: str | None = None """ - DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + The ID of the spreadsheet to write to """ - description: Any | None = None + range: str | None = None """ - DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + The A1 notation of the range to write to """ - parameters: dict[str, Any] | None = None + values: list[list] | None = None """ - The parameters the function accepts + The values to write (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "OVERWRITE" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response """ @@ -1652,6 +2197,195 @@ class MailgunSetupUpdate(BaseModel): """ +class McpCallToolArguments(BaseModel): + """ + Arguments to call a named tool on the MCP server + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + tool_name: str + """ + The MCP tool name to invoke + """ + arguments: dict[str, Any] = {} + """ + JSON-serializable arguments to pass to the MCP tool + """ + timeout_seconds: int = 60 + """ + Optional per-call timeout in seconds + """ + + +class McpCallToolArgumentsUpdate(BaseModel): + """ + Arguments to call a named tool on the MCP server + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + tool_name: str | None = None + """ + The MCP tool name to invoke + """ + arguments: dict[str, Any] = {} + """ + JSON-serializable arguments to pass to the MCP tool + """ + timeout_seconds: int = 60 + """ + Optional per-call timeout in seconds + """ + + +class McpIntegrationDef(BaseIntegrationDef): + """ + MCP integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["mcp"] = "mcp" + """ + The provider must be "mcp" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: McpSetup | None = None + """ + The setup parameters for MCP + """ + arguments: McpCallToolArguments | McpListToolsArguments | None = None + """ + The arguments for MCP methods + """ + + +class McpIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + MCP integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["mcp"] = "mcp" + """ + The provider must be "mcp" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: McpSetupUpdate | None = None + """ + The setup parameters for MCP + """ + arguments: McpCallToolArgumentsUpdate | McpListToolsArgumentsUpdate | None = None + """ + The arguments for MCP methods + """ + + +class McpListToolsArguments(BaseModel): + """ + Arguments to list available tools + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + dummy: str = "dummy" + + +class McpListToolsArgumentsUpdate(McpListToolsArguments): + """ + Arguments to list available tools + """ + + +class McpSetup(BaseModel): + """ + Setup parameters for MCP integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + transport: Literal["sse", "http"] + """ + Transport used to connect to the MCP server + """ + command: str | None = None + """ + (stdio) Executable or command to launch the server + """ + args: list[str] = [] + """ + (stdio) Arguments for the server command + """ + cwd: str | None = None + """ + (stdio) Working directory for the server process + """ + env: dict[str, str] = {} + """ + (stdio) Environment variables for the server process + """ + http_url: AnyUrl | None = None + """ + (http) Base URL for the MCP server (usually ends with /mcp) + """ + http_headers: dict[str, str] = {} + """ + (http) Optional HTTP headers to include (e.g., Authorization) + """ + + +class McpSetupUpdate(BaseModel): + """ + Setup parameters for MCP integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + transport: Literal["sse", "http"] | None = None + """ + Transport used to connect to the MCP server + """ + command: str | None = None + """ + (stdio) Executable or command to launch the server + """ + args: list[str] = [] + """ + (stdio) Arguments for the server command + """ + cwd: str | None = None + """ + (stdio) Working directory for the server process + """ + env: dict[str, str] = {} + """ + (stdio) Environment variables for the server process + """ + http_url: AnyUrl | None = None + """ + (http) Base URL for the MCP server (usually ends with /mcp) + """ + http_headers: dict[str, str] = {} + """ + (http) Optional HTTP headers to include (e.g., Authorization) + """ + + class NamedToolChoice(BaseModel): model_config = ConfigDict( populate_by_name=True, @@ -1659,6 +2393,62 @@ class NamedToolChoice(BaseModel): function: FunctionCallOption | None = None +class ParameterSchema(BaseModel): + """ + JSON Schema for API call parameters + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str = "object" + """ + Schema type (usually 'object') + """ + properties: dict[str, PropertyDefinition] + """ + Properties definition for parameters + """ + required: list[str] = [] + """ + List of required property names + """ + additional_properties: Annotated[ + StrictBool | None, Field(alias="additionalProperties") + ] = None + """ + Whether to allow additional properties + """ + + +class ParameterSchemaUpdate(BaseModel): + """ + JSON Schema for API call parameters + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str = "object" + """ + Schema type (usually 'object') + """ + properties: dict[str, PropertyDefinitionUpdate] | None = None + """ + Properties definition for parameters + """ + required: list[str] = [] + """ + List of required property names + """ + additional_properties: Annotated[ + StrictBool | None, Field(alias="additionalProperties") + ] = None + """ + Whether to allow additional properties + """ + + class PatchToolRequest(BaseModel): """ Payload for patching a tool @@ -1717,6 +2507,8 @@ class PatchToolRequest(BaseModel): | ArxivIntegrationDefUpdate | UnstructuredIntegrationDefUpdate | AlgoliaIntegrationDefUpdate + | McpIntegrationDefUpdate + | GoogleSheetsIntegrationDefUpdate | None ) = None """ @@ -1738,6 +2530,58 @@ class PatchToolRequest(BaseModel): bash_20241022: Bash20241022DefUpdate | None = None +class PropertyDefinition(BaseModel): + """ + Property definition for parameter schema + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str + """ + Type of the property + """ + description: str | None = None + """ + Description of the property + """ + enum: list[str] | None = None + """ + Enum values if applicable + """ + items: PropertyDefinition | None = None + """ + Items definition for array types + """ + + +class PropertyDefinitionUpdate(BaseModel): + """ + Property definition for parameter schema + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str | None = None + """ + Type of the property + """ + description: str | None = None + """ + Description of the property + """ + enum: list[str] | None = None + """ + Enum values if applicable + """ + items: PropertyDefinitionUpdate | None = None + """ + Items definition for array types + """ + + class RemoteBrowserArguments(BaseModel): """ The arguments for the remote browser @@ -1869,6 +2713,26 @@ class RemoteBrowserSetup(BaseModel): """ +class SecretRef(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the secret to reference + """ + + +class SecretRefUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str | None = None + """ + The name of the secret to reference + """ + + class SpiderFetchArguments(BaseModel): """ Arguments for Spider integration @@ -2048,9 +2912,9 @@ class SystemDefUpdate(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - resource: Literal["agent", "user", "task", "execution", "doc", "session", "job"] | None = ( - None - ) + resource: ( + Literal["agent", "user", "task", "execution", "doc", "session", "job"] | None + ) = None """ Resource is the name of the resource to use """ @@ -2151,6 +3015,8 @@ class Tool(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -2411,6 +3277,8 @@ class UpdateToolRequest(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -2828,7 +3696,9 @@ class BrowserbaseCompleteSessionIntegrationDef(BaseBrowserbaseIntegrationDef): arguments: BrowserbaseCompleteSessionArguments | None = None -class BrowserbaseCompleteSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): +class BrowserbaseCompleteSessionIntegrationDefUpdate( + BaseBrowserbaseIntegrationDefUpdate +): """ browserbase complete session integration definition """ @@ -2978,7 +3848,9 @@ class BrowserbaseGetSessionLiveUrlsIntegrationDef(BaseBrowserbaseIntegrationDef) arguments: BrowserbaseGetSessionLiveUrlsArguments | None = None -class BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate): +class BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate( + BaseBrowserbaseIntegrationDefUpdate +): """ browserbase get session live urls integration definition """ @@ -3072,3 +3944,7 @@ class CloudinaryUploadIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate): ) method: Literal["media_upload"] = "media_upload" arguments: CloudinaryUploadArgumentsUpdate | None = None + + +PropertyDefinition.model_rebuild() +PropertyDefinitionUpdate.model_rebuild() diff --git a/integrations-service/integrations/autogen/Users.py b/src/agents-api/agents_api/autogen/Users.py similarity index 79% rename from integrations-service/integrations/autogen/Users.py rename to src/agents-api/agents_api/autogen/Users.py index 720e21846..68ffa4175 100644 --- a/integrations-service/integrations/autogen/Users.py +++ b/src/agents-api/agents_api/autogen/Users.py @@ -32,6 +32,13 @@ class CreateUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class PatchUserRequest(BaseModel): @@ -57,6 +64,13 @@ class PatchUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class UpdateUserRequest(BaseModel): @@ -82,6 +96,13 @@ class UpdateUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class User(BaseModel): @@ -112,6 +133,13 @@ class User(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class CreateOrUpdateUserRequest(CreateUserRequest): diff --git a/agents-api/agents_api/autogen/__init__.py b/src/agents-api/agents_api/autogen/__init__.py similarity index 100% rename from agents-api/agents_api/autogen/__init__.py rename to src/agents-api/agents_api/autogen/__init__.py diff --git a/agents-api/agents_api/autogen/openapi_model.py b/src/agents-api/agents_api/autogen/openapi_model.py similarity index 94% rename from agents-api/agents_api/autogen/openapi_model.py rename to src/agents-api/agents_api/autogen/openapi_model.py index 0134c2571..36e577e2b 100644 --- a/agents-api/agents_api/autogen/openapi_model.py +++ b/src/agents-api/agents_api/autogen/openapi_model.py @@ -23,7 +23,9 @@ from .Executions import * from .Files import * from .Jobs import * +from .Projects import * from .Responses import * +from .Secrets import * from .Sessions import * from .Tasks import * from .Tools import * @@ -377,7 +379,7 @@ class ToolExecutionResult(BaseModel): id: str name: str | None = None - output: dict[str, Any] + output: dict[str, Any] | list[Any] | str error: str | None = None @@ -542,3 +544,20 @@ class UpdateTaskRequest(_UpdateTaskRequest): "message.input_image.image_url", "computer_call_output.output.image_url", ] + + +# Manually implemented ExecutionStatusEvent model. Rationale: +# ---------------------------------------------------------- +# The Typespec ExecutionStatusEvent model is not generated correctly by +# the OpenAPI generator, as it is used in the `/executions/{id}/status.stream` +# SSE endpoint, which is not natively supported by OpenAPI. See: +# https://www.speakeasy.com/openapi/content/server-sent-events +class ExecutionStatusEvent(BaseModel): + """Represents a status update event for an execution.""" + + execution_id: UUID + status: ExecutionStatus # type: ignore + updated_at: AwareDatetime + error: str | None = None + transition_count: int | None = None + metadata: dict[str, Any] diff --git a/agents-api/agents_api/clients/CLAUDE.md b/src/agents-api/agents_api/clients/AGENTS.md similarity index 66% rename from agents-api/agents_api/clients/CLAUDE.md rename to src/agents-api/agents_api/clients/AGENTS.md index 5ffd6a1f9..067dc4f4b 100644 --- a/agents-api/agents_api/clients/CLAUDE.md +++ b/src/agents-api/agents_api/clients/AGENTS.md @@ -1,3 +1,14 @@ +# AGENTS.md - clients + +This folder contains API client wrappers for external services used by `agents-api`. + +Key Points +- Implement async HTTP clients using `httpx`. +- Obtain and refresh auth tokens via `common/utils/auth.py`. +- Handle HTTP errors with typed exceptions from `common/exceptions`. +- Write unit tests under `agents-api/tests/`. +- Configure endpoints and credentials via environment variables. + # Clients ## Purpose @@ -35,4 +46,4 @@ - Clients initialized during application startup - Connection pooling for efficiency - Error handling and retry logic -- Async-first approach with proper cleanup \ No newline at end of file +- Async-first approach with proper cleanup diff --git a/src/agents-api/agents_api/clients/CLAUDE.md b/src/agents-api/agents_api/clients/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/clients/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/clients/__init__.py b/src/agents-api/agents_api/clients/__init__.py similarity index 81% rename from agents-api/agents_api/clients/__init__.py rename to src/agents-api/agents_api/clients/__init__.py index 1d2ac2cdb..6e87c36c5 100644 --- a/agents-api/agents_api/clients/__init__.py +++ b/src/agents-api/agents_api/clients/__init__.py @@ -3,4 +3,5 @@ - `pg.py`: Handles communication with the PostgreSQL service, facilitating operations such as retrieving product information. - `temporal.py`: Provides functionality for connecting to Temporal workflows, enabling asynchronous task execution and management. +- `feature_flags.py`: Provides feature flag management through Unleash integration for controlled feature rollouts. """ diff --git a/agents-api/agents_api/clients/async_s3.py b/src/agents-api/agents_api/clients/async_s3.py similarity index 88% rename from agents-api/agents_api/clients/async_s3.py rename to src/agents-api/agents_api/clients/async_s3.py index 2d3f027d6..465270b6d 100644 --- a/agents-api/agents_api/clients/async_s3.py +++ b/src/agents-api/agents_api/clients/async_s3.py @@ -23,7 +23,11 @@ async def setup() -> AioBaseClient: await client.head_bucket(Bucket=blob_store_bucket) except botocore.exceptions.ClientError as e: if e.response["Error"]["Code"] == "404": - await client.create_bucket(Bucket=blob_store_bucket) + try: + await client.create_bucket(Bucket=blob_store_bucket) + except botocore.exceptions.ClientError as create_err: + if create_err.response["Error"]["Code"] != "BucketAlreadyExists": + raise create_err else: raise e diff --git a/src/agents-api/agents_api/clients/feature_flags.py b/src/agents-api/agents_api/clients/feature_flags.py new file mode 100644 index 000000000..c619d119a --- /dev/null +++ b/src/agents-api/agents_api/clients/feature_flags.py @@ -0,0 +1,356 @@ +""" +Feature flags client for Julep agents-api. +Provides OpenFeature integration with a custom Unleash provider for vendor independence. +""" + +import logging +import threading +from typing import TypedDict + +from openfeature import api +from openfeature.evaluation_context import EvaluationContext +from openfeature.flag_evaluation import FlagResolutionDetails, Reason +from openfeature.provider import AbstractProvider, Metadata + +from agents_api.env import testing, unleash_api_token, unleash_app_name, unleash_url + +logger = logging.getLogger(__name__) + + +class FeatureFlagContext(TypedDict, total=False): + """Type definition for feature flag context.""" + + developer_id: str + environment: str + + +class UnleashProvider(AbstractProvider): + """OpenFeature provider for Unleash - maintains vendor independence.""" + + def __init__(self): + self._unleash_client = None + self._initialized = False + + def get_metadata(self) -> Metadata: + """Return provider metadata.""" + return Metadata(name="unleash-provider") + + def _ensure_initialized(self): + """Ensure the Unleash client is initialized.""" + if not self._initialized: + self._initialize_unleash() + self._initialized = True + + def _initialize_unleash(self): + """Initialize the underlying Unleash client.""" + # Skip Unleash initialization in testing mode + if testing: + logger.info("⚠️ Testing mode detected, skipping Unleash initialization") + self._unleash_client = None + return + + try: + from UnleashClient import UnleashClient + + # Prepare custom headers for authentication + custom_headers = {} + if unleash_api_token: + # Unleash expects the token without "Bearer" prefix in custom headers + custom_headers["Authorization"] = unleash_api_token + + self._unleash_client = UnleashClient( + url=unleash_url, app_name=unleash_app_name, custom_headers=custom_headers + ) + + # Initialize the client + self._unleash_client.initialize_client() + + logger.info(f"✅ Initialized Unleash client with URL: {unleash_url}") + + except ImportError: + logger.warning( + "⚠️ UnleashClient not available, feature flags will use default values" + ) + self._unleash_client = None + except Exception as e: + logger.error(f"❌ Failed to initialize Unleash client: {e}") + logger.warning("⚠️ Feature flags will use default values") + self._unleash_client = None + + def _build_unleash_context(self, evaluation_context: EvaluationContext | None) -> dict: + """Convert OpenFeature evaluation context to Unleash context.""" + if not evaluation_context: + return {} + + unleash_context = {} + + # Map targeting key to userId + if evaluation_context.targeting_key: + # Convert UUID to string if necessary + targeting_key = evaluation_context.targeting_key + if hasattr(targeting_key, "__str__"): + targeting_key = str(targeting_key) + unleash_context["userId"] = targeting_key + + # Add all attributes, converting UUIDs to strings + if evaluation_context.attributes: + for key, value in evaluation_context.attributes.items(): + # Convert UUID objects to strings for JSON serialization + if hasattr(value, "__str__") and hasattr(value, "hex"): # UUID-like object + unleash_context[key] = str(value) + else: + unleash_context[key] = value + + return unleash_context + + def resolve_boolean_details( + self, + flag_key: str, + default_value: bool, + evaluation_context: EvaluationContext | None = None, + ) -> FlagResolutionDetails[bool]: + """Resolve a boolean feature flag.""" + self._ensure_initialized() + + if not self._unleash_client: + return FlagResolutionDetails( + value=default_value, + reason=Reason.ERROR, + error_message="Unleash client not available", + ) + + try: + unleash_context = self._build_unleash_context(evaluation_context) + result = self._unleash_client.is_enabled(flag_key, unleash_context) + + logger.debug(f"Feature flag '{flag_key}' evaluated to: {result}") + + return FlagResolutionDetails( + value=result, reason=Reason.TARGETING_MATCH if result else Reason.DEFAULT + ) + + except Exception as e: + logger.error(f"❌ Error evaluating feature flag '{flag_key}': {e}") + return FlagResolutionDetails( + value=default_value, reason=Reason.ERROR, error_message=str(e) + ) + + def resolve_string_details( + self, + flag_key: str, + default_value: str, + evaluation_context: EvaluationContext | None = None, + ) -> FlagResolutionDetails[str]: + """Resolve a string feature flag.""" + self._ensure_initialized() + + if not self._unleash_client: + return FlagResolutionDetails( + value=default_value, + reason=Reason.ERROR, + error_message="Unleash client not available", + ) + + try: + self._build_unleash_context(evaluation_context) + # Unleash primarily supports boolean flags, so we return default for string flags + # In a real implementation, you might use variants or custom logic + logger.debug( + f"String feature flag '{flag_key}' returning default value: {default_value}" + ) + + return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT) + + except Exception as e: + logger.error(f"❌ Error evaluating string feature flag '{flag_key}': {e}") + return FlagResolutionDetails( + value=default_value, reason=Reason.ERROR, error_message=str(e) + ) + + def resolve_integer_details( + self, + flag_key: str, + default_value: int, + evaluation_context: EvaluationContext | None = None, + ) -> FlagResolutionDetails[int]: + """Resolve an integer feature flag.""" + self._ensure_initialized() + + if not self._unleash_client: + return FlagResolutionDetails( + value=default_value, + reason=Reason.ERROR, + error_message="Unleash client not available", + ) + + try: + self._build_unleash_context(evaluation_context) + # Unleash primarily supports boolean flags, so we return default for integer flags + # In a real implementation, you might use variants or custom logic + logger.debug( + f"Integer feature flag '{flag_key}' returning default value: {default_value}" + ) + + return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT) + + except Exception as e: + logger.error(f"❌ Error evaluating integer feature flag '{flag_key}': {e}") + return FlagResolutionDetails( + value=default_value, reason=Reason.ERROR, error_message=str(e) + ) + + def resolve_float_details( + self, + flag_key: str, + default_value: float, + evaluation_context: EvaluationContext | None = None, + ) -> FlagResolutionDetails[float]: + """Resolve a float feature flag.""" + self._ensure_initialized() + + if not self._unleash_client: + return FlagResolutionDetails( + value=default_value, + reason=Reason.ERROR, + error_message="Unleash client not available", + ) + + try: + self._build_unleash_context(evaluation_context) + # Unleash primarily supports boolean flags, so we return default for float flags + # In a real implementation, you might use variants or custom logic + logger.debug( + f"Float feature flag '{flag_key}' returning default value: {default_value}" + ) + + return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT) + + except Exception as e: + logger.error(f"❌ Error evaluating float feature flag '{flag_key}': {e}") + return FlagResolutionDetails( + value=default_value, reason=Reason.ERROR, error_message=str(e) + ) + + def resolve_object_details( + self, + flag_key: str, + default_value: dict | list, + evaluation_context: EvaluationContext | None = None, + ) -> FlagResolutionDetails[dict | list]: + """Resolve an object feature flag.""" + self._ensure_initialized() + + if not self._unleash_client: + return FlagResolutionDetails( + value=default_value, + reason=Reason.ERROR, + error_message="Unleash client not available", + ) + + try: + self._build_unleash_context(evaluation_context) + # Unleash primarily supports boolean flags, so we return default for object flags + # In a real implementation, you might use variants or custom logic + logger.debug( + f"Object feature flag '{flag_key}' returning default value: {default_value}" + ) + + return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT) + + except Exception as e: + logger.error(f"❌ Error evaluating object feature flag '{flag_key}': {e}") + return FlagResolutionDetails( + value=default_value, reason=Reason.ERROR, error_message=str(e) + ) + + +class FeatureFlagClient: + """Feature flag client wrapper for OpenFeature with Unleash provider.""" + + _instance = None + _lock = threading.Lock() + + def __new__(cls): + if not cls._instance: + with cls._lock: + if not cls._instance: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + if not hasattr(self, "_client_initialized"): + self._client = None + self._provider_initialized = False + self._client_initialized = True + + def _ensure_initialized(self): + """Ensure the OpenFeature client is initialized.""" + if not self._provider_initialized: + self._initialize_provider() + self._client = api.get_client("agents-api") + self._provider_initialized = True + + def _initialize_provider(self): + """Initialize the OpenFeature provider.""" + try: + provider = UnleashProvider() + api.set_provider(provider) + + if not testing: + logger.info("✅ Initialized OpenFeature with Unleash provider") + + except Exception as e: + logger.error(f"❌ Failed to initialize OpenFeature provider: {e}") + logger.warning("⚠️ Falling back to no-op provider") + from openfeature.provider.no_op_provider import NoOpProvider + + api.set_provider(NoOpProvider()) + + def is_enabled( + self, + flag_name: str, + default_value: bool | None = None, + context: FeatureFlagContext | None = None, + ) -> bool: + """ + Check if a feature flag is enabled. + + Args: + flag_name: Name of the feature flag + default_value: Default value if flag evaluation fails (uses DEFAULT_FLAGS if None) + context: Evaluation context (developer_id, environment, etc.) + + Returns: + Boolean indicating if the feature is enabled + """ + + self._ensure_initialized() + + try: + evaluation_context = None + if context: + evaluation_context = EvaluationContext( + targeting_key=context.get("developer_id"), attributes=context + ) + + if self._client is None: + return default_value if default_value is not None else False + + result = self._client.get_boolean_value( + flag_key=flag_name, + default_value=default_value if default_value is not None else False, + evaluation_context=evaluation_context, + ) + + logger.debug(f"Feature flag '{flag_name}' evaluated to: {result}") + return result + + except Exception as e: + logger.error(f"❌ Error evaluating feature flag '{flag_name}': {e}") + return default_value if default_value is not None else False + + +# Global feature flag client instance +def get_feature_flag_client() -> FeatureFlagClient: + """Get the global feature flag client instance.""" + return FeatureFlagClient() diff --git a/agents-api/agents_api/clients/integrations.py b/src/agents-api/agents_api/clients/integrations.py similarity index 63% rename from agents-api/agents_api/clients/integrations.py rename to src/agents-api/agents_api/clients/integrations.py index aa33bd25f..41affa829 100644 --- a/agents-api/agents_api/clients/integrations.py +++ b/src/agents-api/agents_api/clients/integrations.py @@ -29,3 +29,21 @@ async def run_integration_service( response.raise_for_status() return response.json() + + +@beartype +async def convert_to_openai_tool( + *, + provider: str, + method: str | None = None, +) -> Any: + slug = f"{provider}/{method}" if method else provider + url = f"{integration_service_url}/integrations/{slug}/tool" + + async with AsyncClient(timeout=600) as client: + response = await client.get( + url, + ) + response.raise_for_status() + + return response.json() diff --git a/agents-api/agents_api/clients/litellm.py b/src/agents-api/agents_api/clients/litellm.py similarity index 68% rename from agents-api/agents_api/clients/litellm.py rename to src/agents-api/agents_api/clients/litellm.py index 8a0b86605..c0fdb8add 100644 --- a/agents-api/agents_api/clients/litellm.py +++ b/src/agents-api/agents_api/clients/litellm.py @@ -1,3 +1,4 @@ +import contextlib from functools import wraps from typing import Literal from uuid import UUID @@ -9,6 +10,15 @@ from litellm import get_supported_openai_params from litellm.utils import CustomStreamWrapper, ModelResponse, get_valid_models +from ..common.exceptions.secrets import ( + SecretNotFoundError, # AIDEV-NOTE: catch missing secrets in LLM client +) +from ..common.utils.llm_providers import ( + get_api_key_env_var_name, + get_litellm_model_name, + tools_free_models, +) +from ..common.utils.secrets import get_secret_by_name from ..common.utils.usage import track_embedding_usage, track_usage from ..env import ( embedding_dimensions, @@ -51,13 +61,38 @@ async def acompletion( custom_api_key: str | None = None, **kwargs, ) -> ModelResponse | CustomStreamWrapper: - if not custom_api_key and litellm_url: - model = f"openai/{model}" # This is needed for litellm + api_user = kwargs.get("user") + + # Check if user has a custom API key in secrets + api_key_env_var_name = get_api_key_env_var_name(model) + secret = None + + if api_user is not None and api_key_env_var_name: + developer_id: UUID = UUID(api_user) + + with contextlib.suppress(SecretNotFoundError): + secret = await get_secret_by_name( + developer_id=developer_id, + name=api_key_env_var_name, + decrypt=True, + ) + + # Determine if we have a custom API key (either provided or from secrets) + has_custom_key = custom_api_key or (secret and secret.value) + + if has_custom_key: + # User has their own API key - convert model name and use direct provider + if not custom_api_key and secret: + custom_api_key = secret.value + model = get_litellm_model_name(model) + else: + # No custom key - use our proxy with openai/ prefix + model = f"openai/{model}" supported_params: list[str] = ( get_supported_openai_params(model) or [] ) # Supported params returns Optional[list[str]] - supported_params += ["user"] + supported_params += ["user", "mock_response", "stream_options"] settings = {k: v for k, v in kwargs.items() if k in supported_params} # NOTE: This is a fix for Mistral API, which expects a different message format @@ -69,12 +104,15 @@ async def acompletion( for message in messages: if "tool_calls" in message and message["tool_calls"] == []: message.pop("tool_calls") + if model in tools_free_models: + settings.pop("tools", None) + kwargs.pop("tools", None) model_response = await _acompletion( model=model, messages=messages, **settings, - base_url=None if custom_api_key else litellm_url, + base_url=None if has_custom_key else litellm_url, api_key=custom_api_key or litellm_master_key, ) @@ -112,8 +150,32 @@ async def aembedding( custom_api_key: str | None = None, **settings, ) -> list[list[float]]: - if not custom_api_key: - model = f"openai/{model}" # This is needed for litellm + # Check if user has a custom API key in secrets + api_user = settings.get("user") + api_key_env_var_name = get_api_key_env_var_name(model) + secret = None + + if api_user is not None and api_key_env_var_name: + developer_id: UUID = UUID(api_user) + + with contextlib.suppress(SecretNotFoundError): + secret = await get_secret_by_name( + developer_id=developer_id, + name=api_key_env_var_name, + decrypt=True, + ) + + # Determine if we have a custom API key (either provided or from secrets) + has_custom_key = custom_api_key or (secret and secret.value) + + if has_custom_key: + # User has their own API key - convert model name and use direct provider + if not custom_api_key and secret: + custom_api_key = secret.value + model = get_litellm_model_name(model) + else: + # No custom key - use our proxy with openai/ prefix + model = f"openai/{model}" input = ( [inputs] @@ -129,7 +191,7 @@ async def aembedding( response = await _aembedding( model=model, input=input, - api_base=None if custom_api_key else litellm_url, + api_base=None if has_custom_key else litellm_url, api_key=custom_api_key or litellm_master_key, drop_params=True, **settings, diff --git a/agents-api/agents_api/clients/pg.py b/src/agents-api/agents_api/clients/pg.py similarity index 92% rename from agents-api/agents_api/clients/pg.py rename to src/agents-api/agents_api/clients/pg.py index 1f23ed94b..c234fa15b 100644 --- a/agents-api/agents_api/clients/pg.py +++ b/src/agents-api/agents_api/clients/pg.py @@ -5,7 +5,7 @@ from ..env import pg_dsn -async def _init_conn(conn): +async def _init_conn(conn) -> None: for datatype in ["json", "jsonb"]: await conn.set_type_codec( datatype, diff --git a/agents-api/agents_api/clients/sync_s3.py b/src/agents-api/agents_api/clients/sync_s3.py similarity index 89% rename from agents-api/agents_api/clients/sync_s3.py rename to src/agents-api/agents_api/clients/sync_s3.py index d90ad8061..2b07b0e80 100644 --- a/agents-api/agents_api/clients/sync_s3.py +++ b/src/agents-api/agents_api/clients/sync_s3.py @@ -31,7 +31,11 @@ def setup(): client.head_bucket(Bucket=blob_store_bucket) except botocore.exceptions.ClientError as e: if e.response["Error"]["Code"] == "404": - client.create_bucket(Bucket=blob_store_bucket) + try: + client.create_bucket(Bucket=blob_store_bucket) + except botocore.exceptions.ClientError as create_err: + if create_err.response["Error"]["Code"] != "BucketAlreadyExists": + raise create_err else: raise e diff --git a/agents-api/agents_api/clients/temporal.py b/src/agents-api/agents_api/clients/temporal.py similarity index 100% rename from agents-api/agents_api/clients/temporal.py rename to src/agents-api/agents_api/clients/temporal.py diff --git a/agents-api/agents_api/common/CLAUDE.md b/src/agents-api/agents_api/common/AGENTS.md similarity index 71% rename from agents-api/agents_api/common/CLAUDE.md rename to src/agents-api/agents_api/common/AGENTS.md index 104b61785..021c97ef6 100644 --- a/agents-api/agents_api/common/CLAUDE.md +++ b/src/agents-api/agents_api/common/AGENTS.md @@ -1,4 +1,13 @@ -# Common +# AGENTS.md - common + +This folder contains shared utilities, protocol definitions, and exceptions for `agents-api`. + +Key Points +- Exceptions defined in `exceptions/`; always use typed exception classes. +- Pydantic models in `protocol/` for request/response schemas. +- Utilities in `utils/` leverage context managers for resource handling. +- Use `AIDEV-NOTE:` anchors in complex utilities to aid future AI/developer context. +- Follow root coding standards for formatting and naming. ## Purpose - Shared utilities, protocols, and type definitions @@ -36,4 +45,4 @@ ## State Machine - Defined in `tasks.py` with valid transition mappings - Execution progresses through states: queued → starting → running → succeeded/failed -- Transitions trigger API state updates and execution logging \ No newline at end of file +- Transitions trigger API state updates and execution logging diff --git a/src/agents-api/agents_api/common/CLAUDE.md b/src/agents-api/agents_api/common/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/common/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/common/__init__.py b/src/agents-api/agents_api/common/__init__.py similarity index 100% rename from agents-api/agents_api/common/__init__.py rename to src/agents-api/agents_api/common/__init__.py diff --git a/agents-api/agents_api/common/exceptions/__init__.py b/src/agents-api/agents_api/common/exceptions/__init__.py similarity index 100% rename from agents-api/agents_api/common/exceptions/__init__.py rename to src/agents-api/agents_api/common/exceptions/__init__.py diff --git a/agents-api/agents_api/common/exceptions/agents.py b/src/agents-api/agents_api/common/exceptions/agents.py similarity index 76% rename from agents-api/agents_api/common/exceptions/agents.py rename to src/agents-api/agents_api/common/exceptions/agents.py index 042b34ee0..658eb0fe6 100644 --- a/agents-api/agents_api/common/exceptions/agents.py +++ b/src/agents-api/agents_api/common/exceptions/agents.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for agent-related operations. """Defines custom exceptions for agent-related operations in the agents API.""" from uuid import UUID @@ -5,10 +6,12 @@ from . import BaseCommonException +# AIDEV-NOTE: Base exception class for all agent-related exceptions, inheriting from BaseCommonException. class BaseAgentException(BaseCommonException): """Base exception class for all agent-related exceptions.""" +# AIDEV-NOTE: Exception raised when a requested agent cannot be found. class AgentNotFoundError(BaseAgentException): """ Exception raised when a requested agent cannot be found. @@ -17,7 +20,7 @@ class AgentNotFoundError(BaseAgentException): agent_id (UUID | str): The ID of the agent that was not found. """ - def __init__(self, developer_id: UUID | str, agent_id: UUID | str): + def __init__(self, developer_id: UUID | str, agent_id: UUID | str) -> None: # Initialize the exception with a message indicating the missing agent and developer ID. super().__init__( f"Agent {agent_id!s} not found for developer {developer_id!s}", @@ -25,6 +28,7 @@ def __init__(self, developer_id: UUID | str, agent_id: UUID | str): ) +# AIDEV-NOTE: Exception raised when a requested tool associated with an agent cannot be found. class AgentToolNotFoundError(BaseAgentException): """ Exception raised when a requested tool associated with an agent cannot be found. @@ -33,11 +37,12 @@ class AgentToolNotFoundError(BaseAgentException): tool_id (UUID | str): The ID of the tool that was not found. """ - def __init__(self, agent_id: UUID | str, tool_id: UUID | str): + def __init__(self, agent_id: UUID | str, tool_id: UUID | str) -> None: # Initialize the exception with a message indicating the missing tool and agent ID. super().__init__(f"Tool {tool_id!s} not found for agent {agent_id!s}", http_code=404) +# AIDEV-NOTE: Exception raised when a requested document associated with an agent cannot be found. class AgentDocNotFoundError(BaseAgentException): """ Exception raised when a requested document associated with an agent cannot be found. @@ -46,15 +51,16 @@ class AgentDocNotFoundError(BaseAgentException): doc_id (UUID | str): The ID of the document that was not found. """ - def __init__(self, agent_id: UUID | str, doc_id: UUID | str): + def __init__(self, agent_id: UUID | str, doc_id: UUID | str) -> None: # Initialize the exception with a message indicating the missing document and agent ID. super().__init__(f"Doc {doc_id!s} not found for agent {agent_id!s}", http_code=404) +# AIDEV-NOTE: Exception raised when a requested agent model is not recognized or valid. class AgentModelNotValid(BaseAgentException): """Exception raised when requested model is not recognized.""" - def __init__(self, model: str, all_models: list[str]): + def __init__(self, model: str, all_models: list[str]) -> None: super().__init__( f"Unknown model: {model}. Please provide a valid model name." "Available models: " + ", ".join(all_models), @@ -62,10 +68,11 @@ def __init__(self, model: str, all_models: list[str]): ) +# AIDEV-NOTE: Exception raised when the API key for a requested model is missing in the configuration. class MissingAgentModelAPIKeyError(BaseAgentException): """Exception raised when API key for requested model is missing.""" - def __init__(self, model: str): + def __init__(self, model: str) -> None: super().__init__( f"API key missing for model: {model}. Please provide a valid API key in the configuration", http_code=400, diff --git a/agents-api/agents_api/common/exceptions/executions.py b/src/agents-api/agents_api/common/exceptions/executions.py similarity index 70% rename from agents-api/agents_api/common/exceptions/executions.py rename to src/agents-api/agents_api/common/exceptions/executions.py index 5853d3580..91bbe18cf 100644 --- a/agents-api/agents_api/common/exceptions/executions.py +++ b/src/agents-api/agents_api/common/exceptions/executions.py @@ -1,9 +1,12 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for task execution operations. from simpleeval import NameNotDefined from thefuzz import fuzz +# AIDEV-NOTE: Exception raised during the evaluation of Python expressions within a task step. +# Provides suggestions for common errors like Jinja templating syntax or misspelled variable names. class EvaluateError(Exception): - def __init__(self, error, expression, values): + def __init__(self, error, expression, values) -> None: error_message = error.message if hasattr(error, "message") else str(error) message = error_message diff --git a/src/agents-api/agents_api/common/exceptions/secrets.py b/src/agents-api/agents_api/common/exceptions/secrets.py new file mode 100644 index 000000000..54016538f --- /dev/null +++ b/src/agents-api/agents_api/common/exceptions/secrets.py @@ -0,0 +1,14 @@ +"""Custom exceptions for secrets management.""" + +from uuid import UUID + +from . import BaseCommonException + + +class SecretNotFoundError(BaseCommonException): + """Exception raised when a requested secret cannot be found.""" + + def __init__(self, developer_id: UUID | str, name: str) -> None: + super().__init__( + f"Secret {name!s} not found for developer {developer_id!s}", http_code=404 + ) diff --git a/agents-api/agents_api/common/exceptions/sessions.py b/src/agents-api/agents_api/common/exceptions/sessions.py similarity index 80% rename from agents-api/agents_api/common/exceptions/sessions.py rename to src/agents-api/agents_api/common/exceptions/sessions.py index 6df811c77..f6a374c68 100644 --- a/agents-api/agents_api/common/exceptions/sessions.py +++ b/src/agents-api/agents_api/common/exceptions/sessions.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for session-related operations. """ Defines session-related exceptions for the agents API. @@ -9,6 +10,7 @@ from . import BaseCommonException +# AIDEV-NOTE: Base exception class for all session-related exceptions, inheriting from BaseCommonException. class BaseSessionException(BaseCommonException): """ Base exception class for session-related errors. @@ -17,6 +19,7 @@ class BaseSessionException(BaseCommonException): """ +# AIDEV-NOTE: Exception raised when a requested session cannot be found. class SessionNotFoundError(BaseSessionException): """ Exception raised when a session cannot be found. @@ -28,7 +31,7 @@ class SessionNotFoundError(BaseSessionException): session_id (UUID | str): The unique identifier of the session that was not found. """ - def __init__(self, developer_id: UUID | str, session_id: UUID | str): + def __init__(self, developer_id: UUID | str, session_id: UUID | str) -> None: super().__init__( f"Session {session_id!s} not found for developer {developer_id!s}", http_code=404, diff --git a/agents-api/agents_api/common/exceptions/tasks.py b/src/agents-api/agents_api/common/exceptions/tasks.py similarity index 92% rename from agents-api/agents_api/common/exceptions/tasks.py rename to src/agents-api/agents_api/common/exceptions/tasks.py index bf788db8e..733cb35f3 100644 --- a/agents-api/agents_api/common/exceptions/tasks.py +++ b/src/agents-api/agents_api/common/exceptions/tasks.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines which exceptions are retryable during task execution and provides a function to determine retryability. """ 🎯 Error Handling: The Art of Knowing When to Try Again @@ -28,6 +29,7 @@ from .tools import IntegrationExecutionException +# AIDEV-NOTE: Tuple of exception types that are considered non-retryable during task execution. # 🚫 The "No Second Chances" Club - errors that we won't retry # Because sometimes, no means no! NON_RETRYABLE_ERROR_TYPES = ( @@ -107,6 +109,7 @@ litellm.exceptions.OpenAIError, ) +# AIDEV-NOTE: Tuple of exception types that are considered retryable during task execution. # 🔄 The "Try Again" Club - errors that deserve another shot # Because everyone deserves a second chance... or third... or fourth... RETRYABLE_ERROR_TYPES = ( @@ -141,6 +144,7 @@ IntegrationExecutionException, ) +# AIDEV-NOTE: Tuple of HTTP status codes that are considered retryable. # HTTP status codes that say "maybe try again later?" RETRYABLE_HTTP_STATUS_CODES = ( 408, # Request Timeout (server needs a coffee break) @@ -151,6 +155,7 @@ ) +# AIDEV-NOTE: Determines if a given exception is retryable based on defined non-retryable, retryable, and HTTP status code lists. def is_retryable_error(error: BaseException) -> bool: """ The Great Error Judge: Decides if an error deserves another chance at life. diff --git a/agents-api/agents_api/common/exceptions/tools.py b/src/agents-api/agents_api/common/exceptions/tools.py similarity index 69% rename from agents-api/agents_api/common/exceptions/tools.py rename to src/agents-api/agents_api/common/exceptions/tools.py index 118a4355c..2250ac93e 100644 --- a/agents-api/agents_api/common/exceptions/tools.py +++ b/src/agents-api/agents_api/common/exceptions/tools.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for tool-related operations. """ Defines tools-related exceptions for the agents API. """ @@ -6,14 +7,16 @@ from . import BaseCommonException +# AIDEV-NOTE: Base exception class for all tool-related errors, inheriting from BaseCommonException. class BaseToolsException(BaseCommonException): """Base exception for tools-related errors.""" +# AIDEV-NOTE: Exception raised when an error occurs during the execution of an integration tool. class IntegrationExecutionException(BaseToolsException): """Exception raised when an error occurs during an integration execution.""" - def __init__(self, integration: BaseIntegrationDef, error: str): + def __init__(self, integration: BaseIntegrationDef, error: str) -> None: integration_str = integration.provider + ( "." + integration.method if integration.method else "" ) diff --git a/agents-api/agents_api/common/exceptions/users.py b/src/agents-api/agents_api/common/exceptions/users.py similarity index 76% rename from agents-api/agents_api/common/exceptions/users.py rename to src/agents-api/agents_api/common/exceptions/users.py index 2be87aea2..a87fb839f 100644 --- a/agents-api/agents_api/common/exceptions/users.py +++ b/src/agents-api/agents_api/common/exceptions/users.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for user-related operations. """This module defines custom exceptions related to user operations in the agents-api.""" from uuid import UUID @@ -5,6 +6,7 @@ from . import BaseCommonException +# AIDEV-NOTE: Base exception class for all user-related errors, inheriting from BaseCommonException. class BaseUserException(BaseCommonException): """ Base exception class for user-related errors. @@ -13,6 +15,7 @@ class BaseUserException(BaseCommonException): """ +# AIDEV-NOTE: Exception raised when a requested user cannot be found. class UserNotFoundError(BaseUserException): """ Exception raised when a requested user cannot be found. @@ -21,7 +24,7 @@ class UserNotFoundError(BaseUserException): user_id (UUID | str): The ID of the user that was not found. """ - def __init__(self, developer_id: UUID | str, user_id: UUID | str): + def __init__(self, developer_id: UUID | str, user_id: UUID | str) -> None: # Construct an error message indicating the user and developer involved in the error. super().__init__( f"User {user_id!s} not found for developer {developer_id!s}", @@ -29,6 +32,7 @@ def __init__(self, developer_id: UUID | str, user_id: UUID | str): ) +# AIDEV-NOTE: Exception raised when a specific document related to a user cannot be found. class UserDocNotFoundError(BaseUserException): """ Exception raised when a specific document related to a user cannot be found. @@ -37,6 +41,6 @@ class UserDocNotFoundError(BaseUserException): doc_id (UUID | str): The ID of the document that was not found. """ - def __init__(self, user_id: UUID | str, doc_id: UUID | str): + def __init__(self, user_id: UUID | str, doc_id: UUID | str) -> None: # Construct an error message indicating the document and user involved in the error. super().__init__(f"Doc {doc_id!s} not found for user {user_id!s}", http_code=404) diff --git a/agents-api/agents_api/common/exceptions/validation.py b/src/agents-api/agents_api/common/exceptions/validation.py similarity index 50% rename from agents-api/agents_api/common/exceptions/validation.py rename to src/agents-api/agents_api/common/exceptions/validation.py index 2c563a2a4..db4b10614 100644 --- a/agents-api/agents_api/common/exceptions/validation.py +++ b/src/agents-api/agents_api/common/exceptions/validation.py @@ -1,8 +1,10 @@ +# AIDEV-NOTE: This module defines custom exceptions specifically for validation errors. from . import BaseCommonException +# AIDEV-NOTE: Exception raised for validation errors in query parameters. class QueryParamsValidationError(BaseCommonException): """Exception raised for validation errors in query parameters.""" - def __init__(self, message: str): + def __init__(self, message: str) -> None: super().__init__(message, http_code=400) diff --git a/agents-api/agents_api/common/interceptors.py b/src/agents-api/agents_api/common/interceptors.py similarity index 96% rename from agents-api/agents_api/common/interceptors.py rename to src/agents-api/agents_api/common/interceptors.py index f8a5f94dd..3010e59bc 100644 --- a/agents-api/agents_api/common/interceptors.py +++ b/src/agents-api/agents_api/common/interceptors.py @@ -118,7 +118,9 @@ def offload_if_large[T](result: T) -> T | RemoteObject: def offload_to_blob_store[S, T]( func: Callable[[S, ExecuteActivityInput | ExecuteWorkflowInput], Awaitable[T]], -) -> Callable[[S, ExecuteActivityInput | ExecuteWorkflowInput], Awaitable[T | RemoteObject]]: +) -> Callable[ + [S, ExecuteActivityInput | ExecuteWorkflowInput], T | RemoteObject +]: # AIDEV-NOTE: return type adjusted to cover both async and sync wrappers @wraps(func) async def wrapper( self, @@ -151,7 +153,8 @@ def wrapper_sync( result = func(self, input) # Save the result to the blob store if necessary - return offload_if_large(result) + # AIDEV-NOTE: wrapper_sync sees func() returns Awaitable; ignore for typing + return offload_if_large(result) # type: ignore[invalid-return-type] if inspect.iscoroutinefunction(func): return wrapper diff --git a/agents-api/agents_api/common/nlp.py b/src/agents-api/agents_api/common/nlp.py similarity index 100% rename from agents-api/agents_api/common/nlp.py rename to src/agents-api/agents_api/common/nlp.py diff --git a/agents-api/agents_api/common/protocol/__init__.py b/src/agents-api/agents_api/common/protocol/__init__.py similarity index 100% rename from agents-api/agents_api/common/protocol/__init__.py rename to src/agents-api/agents_api/common/protocol/__init__.py diff --git a/agents-api/agents_api/common/protocol/agents.py b/src/agents-api/agents_api/common/protocol/agents.py similarity index 100% rename from agents-api/agents_api/common/protocol/agents.py rename to src/agents-api/agents_api/common/protocol/agents.py diff --git a/agents-api/agents_api/common/protocol/developers.py b/src/agents-api/agents_api/common/protocol/developers.py similarity index 100% rename from agents-api/agents_api/common/protocol/developers.py rename to src/agents-api/agents_api/common/protocol/developers.py diff --git a/agents-api/agents_api/common/protocol/models.py b/src/agents-api/agents_api/common/protocol/models.py similarity index 84% rename from agents-api/agents_api/common/protocol/models.py rename to src/agents-api/agents_api/common/protocol/models.py index e7f331314..a70908e36 100644 --- a/agents-api/agents_api/common/protocol/models.py +++ b/src/agents-api/agents_api/common/protocol/models.py @@ -27,6 +27,8 @@ from ...worker.codec import RemoteObject +# AIDEV-NOTE: Data model representing the input provided to a task execution workflow. +# Includes details about the developer, execution, task, agent, tools, and arguments. class ExecutionInput(BaseModel): loaded: bool = False developer_id: UUID @@ -36,6 +38,7 @@ class ExecutionInput(BaseModel): agent_tools: list[Tool | CreateToolRequest] arguments: dict[str, Any] | RemoteObject + # AIDEV-TODO: Convert fields to only arguments (remote object only), execution_id, developer_id. # TODO: Convert fields to only arguments (remote object only), execution_id, developer_id # Not used at the moment @@ -49,6 +52,8 @@ def load_arguments(self) -> None: @beartype +# AIDEV-NOTE: Converts a Task or task request model into a TaskSpecDef, which is used internally for workflow execution. +# Includes important notes on the conversion process and field renaming. def task_to_spec( task: Task | CreateTaskRequest | UpdateTaskRequest | PatchTaskRequest, **model_opts, @@ -103,6 +108,7 @@ def task_to_spec( ) +# AIDEV-NOTE: Converts a TaskSpec dictionary back into a format suitable for Task or CreateTaskRequest models. def spec_to_task_data(spec: dict) -> dict: task_id = spec.pop("task_id", None) @@ -120,6 +126,7 @@ def spec_to_task_data(spec: dict) -> dict: } +# AIDEV-NOTE: Converts a TaskSpec dictionary or arguments into a Task or CreateTaskRequest Pydantic model. def spec_to_task(**spec) -> Task | CreateTaskRequest: if not spec.get("id"): spec["id"] = spec.pop("task_id", None) diff --git a/agents-api/agents_api/common/protocol/sessions.py b/src/agents-api/agents_api/common/protocol/sessions.py similarity index 100% rename from agents-api/agents_api/common/protocol/sessions.py rename to src/agents-api/agents_api/common/protocol/sessions.py diff --git a/agents-api/agents_api/common/protocol/state_machine.py b/src/agents-api/agents_api/common/protocol/state_machine.py similarity index 99% rename from agents-api/agents_api/common/protocol/state_machine.py rename to src/agents-api/agents_api/common/protocol/state_machine.py index ac3636456..b8a961ddb 100644 --- a/agents-api/agents_api/common/protocol/state_machine.py +++ b/src/agents-api/agents_api/common/protocol/state_machine.py @@ -137,7 +137,7 @@ class ExecutionStateMachine: Uses context managers for safe state transitions. """ - def __init__(self, execution_id: UUID): + def __init__(self, execution_id: UUID) -> None: """Initialize the state machine with QUEUED status.""" self.state = ExecutionState( status=ExecutionStatus.QUEUED, diff --git a/agents-api/agents_api/common/protocol/tasks.py b/src/agents-api/agents_api/common/protocol/tasks.py similarity index 72% rename from agents-api/agents_api/common/protocol/tasks.py rename to src/agents-api/agents_api/common/protocol/tasks.py index 69b22c808..a335ab8a2 100644 --- a/agents-api/agents_api/common/protocol/tasks.py +++ b/src/agents-api/agents_api/common/protocol/tasks.py @@ -19,16 +19,21 @@ Workflow, WorkflowStep, ) + from ...common.utils.expressions import evaluate_expressions + from ...common.utils.secrets import get_secrets_list from ...worker.codec import RemoteObject from ...env import max_steps_accessible_in_tasks -from ...queries.executions import list_execution_transitions +from ...queries.executions import ( + list_execution_inputs_data, + list_execution_state_data, +) from ...queries.utils import serialize_model_data from .models import ExecutionInput -# TODO: Maybe we should use a library for this +# AIDEV-TODO: Maybe we should use a library for this state machine logic. -# State Machine +# AIDEV-NOTE: Defines the valid state transitions for task executions. # # init -> wait | error | step | cancelled | init_branch | finish # init_branch -> wait | error | step | cancelled | finish_branch @@ -110,6 +115,7 @@ ], } # type: ignore +# AIDEV-NOTE: Maps valid previous execution statuses for each current status. valid_previous_statuses: dict[ExecutionStatus, list[ExecutionStatus]] = { "running": ["starting", "awaiting_input", "running"], "starting": ["queued"], @@ -120,6 +126,7 @@ "failed": ["starting", "running"], } # type: ignore +# AIDEV-NOTE: Maps transition types to corresponding execution statuses. transition_to_execution_status: dict[TransitionType | None, ExecutionStatus] = { None: "queued", "init": "starting", @@ -134,10 +141,12 @@ } # type: ignore +# AIDEV-NOTE: Represents a partial state transition during task execution. class PartialTransition(create_partial_model(CreateTransitionRequest)): user_state: dict[str, Any] = Field(default_factory=dict) +# AIDEV-NOTE: Represents the result and metadata of a workflow execution. class WorkflowResult(BaseModel): """ Represents the result of a workflow execution, including metadata about how it was completed. @@ -150,6 +159,7 @@ class WorkflowResult(BaseModel): metadata: dict[str, Any] = Field(default_factory=dict) +# AIDEV-NOTE: Provides context for the current step execution, including execution input, cursor, and current input. class StepContext(BaseModel): loaded: bool = False execution_input: ExecutionInput @@ -164,12 +174,12 @@ def load_inputs(self) -> None: self.loaded = True - @computed_field - @property - def tools(self) -> list[Tool | CreateToolRequest]: + # AIDEV-NOTE: To get the tools available for the current step, considering agent and task tools. + async def tools(self) -> list[Tool | CreateToolRequest]: execution_input = self.execution_input task = execution_input.task agent_tools = execution_input.agent_tools + secrets = {} step_tools: Literal["all"] | list[ToolRef | CreateToolRequest] = getattr( self.current_step, @@ -186,48 +196,64 @@ def tools(self) -> list[Tool | CreateToolRequest]: # Need to convert task.tools (list[TaskToolDef]) to list[Tool] task_tools = [] - for tool in task.tools: + tools = task.tools if task else [] + inherit_tools = task.inherit_tools if task else False + secrets_query_result = await get_secrets_list(self.execution_input.developer_id, True) + + if tools: + secrets = {secret.name: secret.value for secret in secrets_query_result} + for tool in tools: tool_def = tool.model_dump() + spec = tool_def.pop("spec", {}) or {} + evaluated_spec = ( + evaluate_expressions(spec, values={"secrets": secrets}) if spec else {} + ) task_tools.append( - CreateToolRequest(**{tool_def["type"]: tool_def.pop("spec"), **tool_def}), + CreateToolRequest(**{tool_def["type"]: evaluated_spec, **tool_def}), ) - if not task.inherit_tools: + if not inherit_tools: return task_tools # Remove duplicates from agent_tools - filtered_tools = [t for t in agent_tools if t.name not in (x.name for x in task.tools)] + filtered_tools = [t for t in agent_tools if t.name not in (x.name for x in tools)] return filtered_tools + task_tools @computed_field @property + # AIDEV-NOTE: Computed property to get the current workflow based on the cursor. def current_workflow(self) -> Annotated[Workflow, Field(exclude=True)]: workflows: list[Workflow] = self.execution_input.task.workflows return next(wf for wf in workflows if wf.name == self.cursor.workflow) @computed_field @property + # AIDEV-NOTE: Computed property to get the current step definition based on the cursor. def current_step(self) -> Annotated[WorkflowStep, Field(exclude=True)]: return self.current_workflow.steps[self.cursor.step] @computed_field @property + # AIDEV-NOTE: Computed property to get the current scope ID from the cursor. def current_scope_id(self) -> Annotated[UUID, Field(exclude=True)]: return self.cursor.scope_id @computed_field @property + # AIDEV-NOTE: Computed property to check if the current step is the last step in the workflow. def is_last_step(self) -> Annotated[bool, Field(exclude=True)]: return (self.cursor.step + 1) == len(self.current_workflow.steps) @computed_field @property + # AIDEV-NOTE: Computed property to check if the current step is the first step in the workflow. def is_first_step(self) -> Annotated[bool, Field(exclude=True)]: return self.cursor.step == 0 @computed_field @property + # AIDEV-NOTE: Computed property to check if the current workflow is the main workflow. def is_main(self) -> Annotated[bool, Field(exclude=True)]: return self.cursor.workflow == "main" @@ -237,6 +263,7 @@ def model_dump(self, *args, **kwargs) -> dict[str, Any]: return dump | execution_input + # AIDEV-NOTE: Retrieves historical inputs, labels, and state for the current execution scope. async def get_inputs( self, limit: int = 50 ) -> tuple[list[Any], list[str | None], dict[str, Any]]: @@ -248,26 +275,30 @@ async def get_inputs( state = {} scope_id = self.current_scope_id - transitions = await list_execution_transitions( + transitions = await list_execution_inputs_data( execution_id=self.execution_input.execution.id, - limit=limit, direction="asc", scope_id=scope_id, ) # type: ignore[not-callable] assert len(transitions) > 0, "No transitions found" for transition in transitions: - # NOTE: The length hack should be refactored in case we want to implement multi-step control steps - if transition.next and transition.next.step >= len(inputs): - inputs.append(transition.output) - labels.append(transition.step_label) - if transition.metadata and transition.metadata.get("step_type") == "SetStep": - state.update(transition.output) + inputs.append(transition.output) + labels.append(transition.step_label) + + transitions = await list_execution_state_data( + execution_id=self.execution_input.execution.id, + direction="asc", + scope_id=scope_id, + ) # type: ignore[not-callable] + for transition in transitions: + state.update(transition.output) return inputs, labels, state + # AIDEV-NOTE: Prepares the step context by loading inputs and retrieving historical data for expression evaluation. async def prepare_for_step( - self, limit: int = max_steps_accessible_in_tasks, *args, **kwargs + self, limit: int = max_steps_accessible_in_tasks, connection_pool=None, *args, **kwargs ) -> dict[str, Any]: current_input = self.current_input @@ -292,13 +323,20 @@ async def prepare_for_step( steps[i] = step + secrets_query_result = await get_secrets_list( + self.execution_input.developer_id, True, connection_pool=connection_pool + ) + secrets = {secret.name: secret.value for secret in secrets_query_result} + dump["state"] = state dump["steps"] = steps dump["inputs"] = {i: step["input"] for i, step in steps.items()} dump["outputs"] = {i: step["output"] for i, step in steps.items() if "output" in step} + dump["secrets"] = secrets return dump | {"_": current_input} +# AIDEV-NOTE: Represents the outcome of executing a single task step. class StepOutcome(BaseModel): error: str | None = None output: Any diff --git a/agents-api/agents_api/common/retry_policies.py b/src/agents-api/agents_api/common/retry_policies.py similarity index 100% rename from agents-api/agents_api/common/retry_policies.py rename to src/agents-api/agents_api/common/retry_policies.py diff --git a/agents-api/agents_api/common/utils/__init__.py b/src/agents-api/agents_api/common/utils/__init__.py similarity index 100% rename from agents-api/agents_api/common/utils/__init__.py rename to src/agents-api/agents_api/common/utils/__init__.py diff --git a/agents-api/agents_api/common/utils/checks.py b/src/agents-api/agents_api/common/utils/checks.py similarity index 100% rename from agents-api/agents_api/common/utils/checks.py rename to src/agents-api/agents_api/common/utils/checks.py diff --git a/agents-api/agents_api/common/utils/datetime.py b/src/agents-api/agents_api/common/utils/datetime.py similarity index 100% rename from agents-api/agents_api/common/utils/datetime.py rename to src/agents-api/agents_api/common/utils/datetime.py diff --git a/agents-api/agents_api/common/utils/db_exceptions.py b/src/agents-api/agents_api/common/utils/db_exceptions.py similarity index 95% rename from agents-api/agents_api/common/utils/db_exceptions.py rename to src/agents-api/agents_api/common/utils/db_exceptions.py index 70e9a7de7..65acd71b0 100644 --- a/agents-api/agents_api/common/utils/db_exceptions.py +++ b/src/agents-api/agents_api/common/utils/db_exceptions.py @@ -76,6 +76,15 @@ def _invalid_reference_error(e: BaseException) -> HTTPException: ), lambda e: isinstance(e, asyncpg.RaiseError) and invalid_ref_re.match(str(e)): _invalid_reference_error, + # Invalid participant ID error + lambda e: isinstance(e, asyncpg.RaiseError) + and "Invalid participant_id:" in str(e): partialclass( + HTTPException, + status_code=400, + detail=get_operation_message( + "The specified participant ID is invalid for the given participant type" + ), + ), # Foreign key violations - usually means a referenced resource doesn't exist asyncpg.ForeignKeyViolationError: partialclass( HTTPException, diff --git a/agents-api/agents_api/activities/utils.py b/src/agents-api/agents_api/common/utils/evaluator.py similarity index 88% rename from agents-api/agents_api/activities/utils.py rename to src/agents-api/agents_api/common/utils/evaluator.py index d9071e567..35d4079ef 100644 --- a/agents-api/agents_api/activities/utils.py +++ b/src/agents-api/agents_api/common/utils/evaluator.py @@ -11,11 +11,11 @@ import time import urllib.parse from collections import deque -from collections.abc import Callable +from collections.abc import Callable, Sequence from dataclasses import dataclass from functools import reduce from threading import Lock as ThreadLock -from typing import Any, ParamSpec, TypeVar +from typing import Any, Literal, ParamSpec, TypeVar, cast import markdown2 import markdownify @@ -23,9 +23,9 @@ from beartype import beartype from simpleeval import EvalWithCompoundTypes, SimpleEval -from ..autogen.openapi_model import SystemDef -from ..common.nlp import nlp -from ..common.utils import yaml +from ...autogen.openapi_model import SystemDef +from ...common.nlp import nlp +from . import yaml from .humanization_utils import humanize_paragraph, reassemble_markdown, split_with_langchain # Security limits @@ -179,7 +179,8 @@ def safe_random_sample(population: list[T] | tuple[T, ...] | str, k: int) -> lis if k > len(population): msg = "Sample size cannot exceed population size" raise ValueError(msg) - return random.sample(population, k) + # AIDEV-NOTE: cast random.sample's return to list[T] for type-checker + return cast(list[T], random.sample(population, k)) @beartype @@ -358,14 +359,14 @@ def html_to_markdown(html_text: str) -> str: def csv_reader( data: str, - dialect="excel", + dialect: str = "excel", delimiter: str = ",", quotechar: str | None = '"', escapechar: str | None = None, doublequote: bool = True, skipinitialspace: bool = False, lineterminator: str = "\r\n", - quoting=0, + quoting: int = 0, strict: bool = False, ): return csv.reader( @@ -384,14 +385,14 @@ def csv_reader( def csv_writer( data: str, - dialect="excel", + dialect: str = "excel", delimiter: str = ",", quotechar: str | None = '"', escapechar: str | None = None, doublequote: bool = True, skipinitialspace: bool = False, lineterminator: str = "\r\n", - quoting=0, + quoting: int = 0, strict: bool = False, ): return csv.writer( @@ -410,10 +411,10 @@ def csv_writer( def csv_dictreader( data: str, - fieldnames=None, + fieldnames: Sequence[str] | None = None, restkey=None, restval=None, - dialect="excel", + dialect: str = "excel", *args, **kwds, ): @@ -430,10 +431,10 @@ def csv_dictreader( def csv_dictwriter( data: str, - fieldnames, - restval="", - extrasaction="raise", - dialect="excel", + fieldnames: Sequence[str], + restval: str = "", + extrasaction: Literal["raise", "ignore"] = "raise", + dialect: str = "excel", *args, **kwds, ): @@ -694,36 +695,36 @@ def get_handler(system: SystemDef) -> Callable: The base handler function. """ - from ..queries.agents.create_agent import create_agent as create_agent_query - from ..queries.agents.delete_agent import delete_agent as delete_agent_query - from ..queries.agents.get_agent import get_agent as get_agent_query - from ..queries.agents.list_agents import list_agents as list_agents_query - from ..queries.agents.update_agent import update_agent as update_agent_query - from ..queries.docs.delete_doc import delete_doc as delete_doc_query - from ..queries.docs.list_docs import list_docs as list_docs_query - from ..queries.entries.get_history import get_history as get_history_query - from ..queries.sessions.create_or_update_session import ( + from ...queries.agents.create_agent import create_agent as create_agent_query + from ...queries.agents.delete_agent import delete_agent as delete_agent_query + from ...queries.agents.get_agent import get_agent as get_agent_query + from ...queries.agents.list_agents import list_agents as list_agents_query + from ...queries.agents.update_agent import update_agent as update_agent_query + from ...queries.docs.delete_doc import delete_doc as delete_doc_query + from ...queries.docs.list_docs import list_docs as list_docs_query + from ...queries.entries.get_history import get_history as get_history_query + from ...queries.sessions.create_or_update_session import ( create_or_update_session as create_or_update_session_query, ) - from ..queries.sessions.create_session import create_session as create_session_query - from ..queries.sessions.get_session import get_session as get_session_query - from ..queries.sessions.list_sessions import list_sessions as list_sessions_query - from ..queries.sessions.update_session import update_session as update_session_query - from ..queries.tasks.create_task import create_task as create_task_query - from ..queries.tasks.delete_task import delete_task as delete_task_query - from ..queries.tasks.get_task import get_task as get_task_query - from ..queries.tasks.list_tasks import list_tasks as list_tasks_query - from ..queries.tasks.update_task import update_task as update_task_query - from ..queries.users.create_user import create_user as create_user_query - from ..queries.users.delete_user import delete_user as delete_user_query - from ..queries.users.get_user import get_user as get_user_query - from ..queries.users.list_users import list_users as list_users_query - from ..queries.users.update_user import update_user as update_user_query + from ...queries.sessions.create_session import create_session as create_session_query + from ...queries.sessions.get_session import get_session as get_session_query + from ...queries.sessions.list_sessions import list_sessions as list_sessions_query + from ...queries.sessions.update_session import update_session as update_session_query + from ...queries.tasks.create_task import create_task as create_task_query + from ...queries.tasks.delete_task import delete_task as delete_task_query + from ...queries.tasks.get_task import get_task as get_task_query + from ...queries.tasks.list_tasks import list_tasks as list_tasks_query + from ...queries.tasks.update_task import update_task as update_task_query + from ...queries.users.create_user import create_user as create_user_query + from ...queries.users.delete_user import delete_user as delete_user_query + from ...queries.users.get_user import get_user as get_user_query + from ...queries.users.list_users import list_users as list_users_query + from ...queries.users.update_user import update_user as update_user_query # FIXME: Do not use routes directly; - from ..routers.docs.create_doc import create_agent_doc, create_user_doc - from ..routers.docs.search_docs import search_agent_docs, search_user_docs - from ..routers.sessions.chat import chat + from ...routers.docs.create_doc import create_agent_doc, create_user_doc + from ...routers.docs.search_docs import search_agent_docs, search_user_docs + from ...routers.sessions.chat import chat match (system.resource, system.subresource, system.operation): # AGENTS @@ -804,17 +805,17 @@ class RateLimiter: max_requests: int # Maximum requests per minute window_size: int = 60 # Window size in seconds (1 minute) - def __post_init__(self): + def __post_init__(self) -> None: self._requests = deque() self._lock = ThreadLock() # Thread-safe lock self._async_lock = asyncio.Lock() # Async-safe lock - def _clean_old_requests(self): + def _clean_old_requests(self) -> None: now = time.time() while self._requests and now - self._requests[0] > self.window_size: self._requests.popleft() - async def acquire(self): + async def acquire(self) -> bool: async with self._async_lock: with self._lock: now = time.time() diff --git a/agents-api/agents_api/activities/task_steps/base_evaluate.py b/src/agents-api/agents_api/common/utils/expressions.py similarity index 80% rename from agents-api/agents_api/activities/task_steps/base_evaluate.py rename to src/agents-api/agents_api/common/utils/expressions.py index 1a1c2ef3d..cdc701d86 100644 --- a/agents-api/agents_api/activities/task_steps/base_evaluate.py +++ b/src/agents-api/agents_api/common/utils/expressions.py @@ -9,13 +9,14 @@ # Increase the max string length to 2048000 simpleeval.MAX_STRING_LENGTH = 2048000 +MAX_COLLECTION_SIZE = 1000 # Maximum number of variables allowed in evaluator + from simpleeval import SimpleEval from temporalio import activity -from ...common.exceptions.executions import EvaluateError -from ...common.protocol.tasks import StepContext -from ...common.utils.task_validation import backwards_compatibility -from ..utils import get_evaluator +from ..exceptions.executions import EvaluateError +from ..utils.task_validation import backwards_compatibility +from .evaluator import get_evaluator # Recursive evaluation helper function @@ -40,34 +41,29 @@ def _recursive_evaluate(expr, evaluator: SimpleEval): if activity.in_activity(): activity.logger.error(f"Error in base_evaluate: {evaluate_error}\n") raise evaluate_error from e - elif isinstance(expr, int | bool | float): + elif isinstance(expr, int | bool | float) or expr is None: return expr elif isinstance(expr, list): return [_recursive_evaluate(e, evaluator) for e in expr] elif isinstance(expr, dict): return {k: _recursive_evaluate(v, evaluator) for k, v in expr.items()} else: - msg = f"Invalid expression: {expr}" - raise ValueError(msg) + try: + str_expr = str(expr) + return _recursive_evaluate(str_expr, evaluator) + except Exception: + msg = f"Invalid expression: {expr}" + raise ValueError(msg) -@activity.defn @beartype -async def base_evaluate( +def evaluate_expressions( exprs: Any, - context: StepContext | None = None, values: dict[str, Any] | None = None, extra_lambda_strs: dict[str, str] | None = None, ) -> Any | list[Any] | dict[str, Any]: - if context is None and values is None: - msg = "Either context or values must be provided" - raise ValueError(msg) - - values = values or {} - if context: - # NOTE: We limit the number of inputs to 50 to avoid excessive memory usage - values.update(await context.prepare_for_step(limit=50)) - + if values is None: + values = {} # Handle PyExpression objects and strings similarly if isinstance(exprs, str) or (hasattr(exprs, "root") and isinstance(exprs.root, str)): input_len = 1 diff --git a/src/agents-api/agents_api/common/utils/feature_flags.py b/src/agents-api/agents_api/common/utils/feature_flags.py new file mode 100644 index 000000000..bcc6898b7 --- /dev/null +++ b/src/agents-api/agents_api/common/utils/feature_flags.py @@ -0,0 +1,36 @@ +""" +Feature flags utility module for Julep agents-api. +Provides convenience functions for feature flag management. +""" + +from agents_api.clients.feature_flags import FeatureFlagContext, get_feature_flag_client + + +def get_environment() -> str: + """Get current environment for feature flag context.""" + return "development" + + +def get_feature_flag_value( + flag_name: str, + default_value: bool = False, + developer_id: str | None = None, + **additional_context, +) -> bool: + """ + Generic function to get any boolean feature flag value. + + Args: + flag_name: Name of the feature flag + default_value: Default value if flag evaluation fails + developer_id: Developer ID for targeting (optional) + **additional_context: Additional context attributes + + Returns: + The feature flag value + """ + context: FeatureFlagContext = {"environment": get_environment(), **additional_context} + if developer_id: + context["developer_id"] = developer_id + + return get_feature_flag_client().is_enabled(flag_name, default_value, context) diff --git a/agents-api/agents_api/common/utils/get_doc_search.py b/src/agents-api/agents_api/common/utils/get_doc_search.py similarity index 79% rename from agents-api/agents_api/common/utils/get_doc_search.py rename to src/agents-api/agents_api/common/utils/get_doc_search.py index a4acf6571..4af81c5b2 100644 --- a/agents-api/agents_api/common/utils/get_doc_search.py +++ b/src/agents-api/agents_api/common/utils/get_doc_search.py @@ -5,6 +5,7 @@ from langcodes import Language from ...autogen.openapi_model import ( + DocReference, HybridDocSearchRequest, TextOnlyDocSearchRequest, VectorDocSearchRequest, @@ -47,8 +48,12 @@ def get_search_fn_and_params( search_params, *, extract_keywords: bool = False, -) -> tuple[Any, dict[str, float | int | str | dict[str, float] | list[float]] | None]: - search_fn, params = None, None +) -> tuple[ + Any, + dict[str, float | int | str | dict[str, float] | list[float]] | None, + dict[str, bool] | None, +]: + search_fn, params, post_processing = None, None, None match search_params: case TextOnlyDocSearchRequest( @@ -57,6 +62,7 @@ def get_search_fn_and_params( lang=lang, metadata_filter=metadata_filter, trigram_similarity_threshold=trigram_similarity_threshold, + include_embeddings=include_embeddings, ): search_language = get_language(lang) search_fn = search_docs_by_text @@ -68,12 +74,16 @@ def get_search_fn_and_params( "trigram_similarity_threshold": trigram_similarity_threshold, "extract_keywords": extract_keywords, } + post_processing = { + "include_embeddings": include_embeddings, + } case VectorDocSearchRequest( vector=embedding, limit=k, confidence=confidence, metadata_filter=metadata_filter, + include_embeddings=include_embeddings, ): search_fn = search_docs_by_embedding params = { @@ -82,6 +92,9 @@ def get_search_fn_and_params( "confidence": confidence, "metadata_filter": metadata_filter, } + post_processing = { + "include_embeddings": include_embeddings, + } case HybridDocSearchRequest( text=query, @@ -93,6 +106,7 @@ def get_search_fn_and_params( metadata_filter=metadata_filter, trigram_similarity_threshold=trigram_similarity_threshold, k_multiplier=k_multiplier, + include_embeddings=include_embeddings, ): search_language = get_language(lang) search_fn = search_docs_hybrid @@ -108,6 +122,20 @@ def get_search_fn_and_params( "trigram_similarity_threshold": trigram_similarity_threshold, "k_multiplier": k_multiplier, } + post_processing = { + "include_embeddings": include_embeddings, + } # Note: connection_pool will be passed separately by the caller - return search_fn, params + return search_fn, params, post_processing + + +@beartype +def strip_embeddings( + docs: list[DocReference] | DocReference, +) -> list[DocReference] | DocReference: + if isinstance(docs, list): + docs = [strip_embeddings(doc) for doc in docs] + else: + docs.snippet.embedding = None + return docs diff --git a/agents-api/agents_api/activities/humanization_utils.py b/src/agents-api/agents_api/common/utils/humanization_utils.py similarity index 94% rename from agents-api/agents_api/activities/humanization_utils.py rename to src/agents-api/agents_api/common/utils/humanization_utils.py index 7333d0d7a..2fd297539 100644 --- a/agents-api/agents_api/activities/humanization_utils.py +++ b/src/agents-api/agents_api/common/utils/humanization_utils.py @@ -8,7 +8,7 @@ from langchain_core.documents import Document from langchain_text_splitters import MarkdownHeaderTextSplitter -from ..env import ( +from ...env import ( desklib_url, litellm_master_key, litellm_url, @@ -48,14 +48,14 @@ } -def text_translate(text, src_lang, target_lang): +def text_translate(text: str, src_lang, target_lang): try: return GoogleTranslator(source=src_lang, target=target_lang).translate(text=text) except Exception: return text -def mix_translate(text, src_lang, target_lang): +def mix_translate(text: str, src_lang, target_lang): """ Translate the given text from src_lang to target_lang and back to src_lang using googletrans. """ @@ -85,7 +85,7 @@ def humanize_llm(text: str) -> str: raise Exception(msg) from e -def grammar(text): +def grammar(text: str): try: response = litellm.completion( model=HUMANIZATION["model"], @@ -127,7 +127,7 @@ def is_human_desklib(text: str) -> float: raise Exception(msg) from e -def is_human_sapling(text): +def is_human_sapling(text: str): try: payload = { "text": text, @@ -143,7 +143,7 @@ def is_human_sapling(text): raise Exception(msg) from e -def is_human_zerogpt(input_text, max_tries=3): +def is_human_zerogpt(input_text, max_tries: int = 3): if max_tries < 0: return None @@ -187,7 +187,7 @@ def is_human_zerogpt(input_text, max_tries=3): return None -def replace_with_homoglyphs(text, max_replacements=2): +def replace_with_homoglyphs(text: str, max_replacements: int = 2): homoglyphs = { # Whitelisted " ": " ", @@ -248,7 +248,9 @@ def replace_with_homoglyphs(text, max_replacements=2): } # Convert text to list for single pass replacement - text_chars = list(text) + text_chars: list[str] = list( + text + ) # AIDEV-NOTE: annotate to list[str] so indexing is recognized by type checker text_len = len(text_chars) for original, homoglyph in homoglyphs.items(): @@ -259,8 +261,8 @@ def replace_with_homoglyphs(text, max_replacements=2): # Get random positions for replacements positions = random.sample(range(text_len), min(count, text_len)) for pos in positions: - if text_chars[pos] == original: - text_chars[pos] = homoglyph + if text_chars[pos] == original: # type: ignore[call-non-callable] # AIDEV-NOTE: suppress false-positive on indexing + text_chars[pos] = homoglyph # type: ignore[call-non-callable] return "".join(text_chars) diff --git a/agents-api/agents_api/common/utils/json.py b/src/agents-api/agents_api/common/utils/json.py similarity index 97% rename from agents-api/agents_api/common/utils/json.py rename to src/agents-api/agents_api/common/utils/json.py index 797a33479..b2c8ada27 100644 --- a/agents-api/agents_api/common/utils/json.py +++ b/src/agents-api/agents_api/common/utils/json.py @@ -52,7 +52,7 @@ def default(self, obj) -> Any: return obj -def dumps(obj: Any, default_empty_value="", cls=None) -> str: +def dumps(obj: Any, default_empty_value: str = "", cls=None) -> str: """ Serializes an object to a JSON formatted string using the custom JSON encoder. Parameters: diff --git a/src/agents-api/agents_api/common/utils/llm_providers.py b/src/agents-api/agents_api/common/utils/llm_providers.py new file mode 100644 index 000000000..ce1680fb4 --- /dev/null +++ b/src/agents-api/agents_api/common/utils/llm_providers.py @@ -0,0 +1,62 @@ +from pathlib import Path + +import yaml + +config_path = Path("/app/litellm-config.yaml") + +_config = None + + +def get_config(): + global _config + if _config is None: + if not config_path.exists(): + print(f"Warning: LiteLLM config file not found at {config_path}") + return {} + + try: + with open(config_path) as f: + _config = yaml.safe_load(f) + except Exception as e: + print(f"Error loading LiteLLM config: {e}") + return {} + + return _config + + +def get_api_key_env_var_name(model: str) -> str | None: + config = get_config() + + for model_config in config.get("model_list", []): + if model_config.get("model_name") == model: + api_key = model_config.get("litellm_params", {}).get("api_key") + if api_key: + return api_key.split("/", 1)[1] + + return None + + +def get_litellm_model_name(model: str) -> str: + """ + Convert a model name to its LiteLLM equivalent by looking it up in the config. + Returns the litellm_params.model value if found, otherwise returns the original model name. + + Examples: + "gpt-4o" -> "openai/gpt-4o" + "gemini-1.5-pro" -> "gemini/gemini-1.5-pro" + "claude-3.5-sonnet" -> "claude-3-5-sonnet-20241022" + """ + config = get_config() + + for model_config in config.get("model_list", []): + if model_config.get("model_name") == model: + litellm_model = model_config.get("litellm_params", {}).get("model") + if litellm_model: + return litellm_model + + # AIDEV-NOTE: If model not found in config, return original name + return model + + +# Models that do not support tools param +tools_free_models: set[str] = {"openai/gpt-5-chat-latest"} diff --git a/agents-api/agents_api/common/utils/memory.py b/src/agents-api/agents_api/common/utils/memory.py similarity index 100% rename from agents-api/agents_api/common/utils/memory.py rename to src/agents-api/agents_api/common/utils/memory.py diff --git a/agents-api/agents_api/common/utils/messages.py b/src/agents-api/agents_api/common/utils/messages.py similarity index 100% rename from agents-api/agents_api/common/utils/messages.py rename to src/agents-api/agents_api/common/utils/messages.py diff --git a/agents-api/agents_api/common/utils/mmr.py b/src/agents-api/agents_api/common/utils/mmr.py similarity index 93% rename from agents-api/agents_api/common/utils/mmr.py rename to src/agents-api/agents_api/common/utils/mmr.py index 67cb606cf..2c185195a 100644 --- a/agents-api/agents_api/common/utils/mmr.py +++ b/src/agents-api/agents_api/common/utils/mmr.py @@ -143,7 +143,15 @@ def apply_mmr_to_docs( k=min(limit, len(docs_with_embeddings)), lambda_mult=1 - mmr_strength, ) - return [doc for i, doc in enumerate(docs_with_embeddings) if i in set(indices)] + # Deduplicate indices while preserving their order + unique_indices: list[int] = [] + seen: set[int] = set() + for idx in indices: + if idx not in seen: + seen.add(idx) + unique_indices.append(idx) + + return [docs_with_embeddings[i] for i in unique_indices] # If docs are present but no embeddings are present for any of the docs, return the top k docs return docs[:limit] diff --git a/src/agents-api/agents_api/common/utils/model_validation.py b/src/agents-api/agents_api/common/utils/model_validation.py new file mode 100644 index 000000000..020dd0014 --- /dev/null +++ b/src/agents-api/agents_api/common/utils/model_validation.py @@ -0,0 +1,33 @@ +"""Shared helpers for validating model identifiers against LiteLLM.""" + +from __future__ import annotations + +from collections.abc import Sequence + +from ...clients.litellm import get_model_list + + +class ModelNotAvailableError(ValueError): + """Raised when a requested model identifier is not present in the catalog.""" + + def __init__(self, model_name: str | None, available_models: Sequence[str]) -> None: + self.requested_model = model_name + self.available_models = list(available_models) + message = f"Model {model_name} not available. Available models: {self.available_models}" + super().__init__(message) + + +async def ensure_model_available( + model_name: str | None, + *, + custom_api_key: str | None = None, +) -> Sequence[str]: + """Ensure ``model_name`` exists in LiteLLM's configured catalog.""" + + models = await get_model_list(custom_api_key=custom_api_key) + available_models = [model["id"] for model in models] + + if model_name not in available_models: + raise ModelNotAvailableError(model_name, available_models) + + return available_models diff --git a/src/agents-api/agents_api/common/utils/secrets.py b/src/agents-api/agents_api/common/utils/secrets.py new file mode 100644 index 000000000..63cc221e7 --- /dev/null +++ b/src/agents-api/agents_api/common/utils/secrets.py @@ -0,0 +1,71 @@ +from datetime import timedelta +from uuid import UUID + +from async_lru import alru_cache +from temporalio import workflow +from temporalio.workflow import _NotInWorkflowEventLoopError + +from ...activities.pg_query_step import pg_query_step +from ...autogen.openapi_model import Secret +from ...env import secrets_cache_ttl, temporal_heartbeat_timeout +from ...queries.secrets import get_secret_by_name as get_secret_by_name_query +from ...queries.secrets.list import list_secrets_query +from ..exceptions.secrets import ( + SecretNotFoundError, # AIDEV-NOTE: use domain exception for missing secrets +) +from ..retry_policies import DEFAULT_RETRY_POLICY + + +@alru_cache(ttl=secrets_cache_ttl) +async def get_secret_by_name(developer_id: UUID, name: str, decrypt: bool = False) -> Secret: + # FIXME: Should use workflow.in_workflow() instead ? + try: + secret = await workflow.execute_activity( + pg_query_step, + args=[ + "get_secret_by_name", + "secrets.get_by_name", + {"developer_id": developer_id, "name": name, "decrypt": decrypt}, + ], + schedule_to_close_timeout=timedelta(days=31), + retry_policy=DEFAULT_RETRY_POLICY, + heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout), + ) + except _NotInWorkflowEventLoopError: + secret = await get_secret_by_name_query( + developer_id=developer_id, + name=name, + decrypt=decrypt, + ) + + # AIDEV-NOTE: use domain-specific exception instead of HTTPException + if secret is None: + raise SecretNotFoundError(developer_id, name) + + return secret + + +@alru_cache(ttl=secrets_cache_ttl) +async def get_secrets_list( + developer_id: UUID, decrypt: bool = False, connection_pool=None +) -> list[Secret]: + try: + secrets_query_result = await workflow.execute_activity( + pg_query_step, + args=[ + "list_secrets_query", + "secrets.list", + {"developer_id": developer_id, "decrypt": decrypt}, + ], + schedule_to_close_timeout=timedelta(days=31), + retry_policy=DEFAULT_RETRY_POLICY, + heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout), + ) + except _NotInWorkflowEventLoopError: + secrets_query_result = await list_secrets_query( + developer_id=developer_id, + decrypt=decrypt, + connection_pool=connection_pool, + ) + + return secrets_query_result diff --git a/agents-api/agents_api/common/utils/task_validation.py b/src/agents-api/agents_api/common/utils/task_validation.py similarity index 99% rename from agents-api/agents_api/common/utils/task_validation.py rename to src/agents-api/agents_api/common/utils/task_validation.py index dfa84027a..a173d4c54 100644 --- a/agents-api/agents_api/common/utils/task_validation.py +++ b/src/agents-api/agents_api/common/utils/task_validation.py @@ -3,9 +3,9 @@ from pydantic import BaseModel, ValidationError -from ...activities.utils import ALLOWED_FUNCTIONS, stdlib from ...autogen.openapi_model import CreateTaskRequest, PatchTaskRequest, UpdateTaskRequest from ...common.protocol.models import task_to_spec +from ...common.utils.evaluator import ALLOWED_FUNCTIONS, stdlib from ...env import enable_backwards_compatibility_for_syntax diff --git a/agents-api/agents_api/common/utils/template.py b/src/agents-api/agents_api/common/utils/template.py similarity index 97% rename from agents-api/agents_api/common/utils/template.py rename to src/agents-api/agents_api/common/utils/template.py index c27eafd7b..01ca587a6 100644 --- a/agents-api/agents_api/common/utils/template.py +++ b/src/agents-api/agents_api/common/utils/template.py @@ -7,7 +7,7 @@ from jinja2schema import infer, to_json_schema from jsonschema import validate -from ...activities.utils import ALLOWED_FUNCTIONS, constants, stdlib +from ...common.utils.evaluator import ALLOWED_FUNCTIONS, constants, stdlib __all__: list[str] = [ "render_template", diff --git a/src/agents-api/agents_api/common/utils/tool_runner.py b/src/agents-api/agents_api/common/utils/tool_runner.py new file mode 100644 index 000000000..1cc26bae3 --- /dev/null +++ b/src/agents-api/agents_api/common/utils/tool_runner.py @@ -0,0 +1,259 @@ +from __future__ import annotations + +import inspect +import json +from collections.abc import Awaitable, Callable, Sequence +from typing import Any +from uuid import UUID + +from beartype import beartype +from litellm.types.utils import ChatCompletionMessageToolCall +from litellm.utils import ModelResponse +from pydantic import create_model + +from ...activities.execute_api_call import execute_api_call +from ...activities.execute_integration import execute_integration +from ...activities.execute_system import execute_system +from ...activities.tool_executor import format_tool_results_for_llm +from ...autogen.openapi_model import ( + BaseChosenToolCall, + CreateToolRequest, + SystemDef, + Tool, + ToolExecutionResult, +) +from ...clients import integrations, litellm +from ...common.protocol.tasks import StepContext +from ...common.utils.evaluator import get_handler_with_filtered_params + + +# AIDEV-NOTE: Formats internal Tool definitions into the structure expected by the LLM (currently focused on OpenAI function tools and integrations). +@beartype +async def format_tool(tool: Tool | CreateToolRequest) -> dict: + """Format a Tool or CreateToolRequest for the LLM.""" + + if tool.type == "function": + return { + "type": "function", + "function": { + "name": tool.name, + "description": tool.description, + "parameters": tool.function and tool.function.parameters, + }, + } + if tool.type == "integration" and tool.integration is not None: + return await integrations.convert_to_openai_tool( + provider=tool.integration.provider, + method=tool.integration.method, + ) + if tool.type == "api_call" and tool.api_call is not None: + params = {} + if tool.api_call.params_schema is not None: + params = tool.api_call.params_schema.model_dump(exclude_none=True) + return { + "type": "function", + "function": { + "name": tool.name, + "description": tool.description, + "parameters": params, + }, + } + if tool.type == "system" and tool.system is not None: + handler = get_handler_with_filtered_params(tool.system) + sig = inspect.signature(handler) + fields = { + name: ( + param.annotation, + ... if param.default is inspect.Signature.empty else param.default, + ) + for name, param in sig.parameters.items() + } + Model = create_model(f"{handler.__name__.title()}Params", **fields) + + return { + "type": "function", + "function": { + "name": tool.name, + "description": tool.description or inspect.getdoc(handler), + "parameters": Model.model_json_schema(), + }, + } + return { + "type": "function", + "function": { + "name": tool.name, + "description": tool.description, + "parameters": tool.function.parameters if tool.function else {}, + }, + } + + +# AIDEV-NOTE: Context-free tool execution function that can be used from chat endpoint or other contexts +@beartype +async def run_tool_call( + *, + developer_id: UUID, + agent_id: UUID, + task_id: UUID | None = None, + session_id: UUID | None = None, + tool: Tool | CreateToolRequest, + call: BaseChosenToolCall, + connection_pool=None, +) -> ToolExecutionResult: + """Execute a tool call with explicit parameters (no context required).""" + + call_spec = call.model_dump() + arguments = call_spec[f"{call.type}"]["arguments"] + setup = call_spec[f"{call.type}"]["setup"] + + if tool.type == "integration" and tool.integration: + output = await execute_integration( + developer_id=developer_id, + agent_id=agent_id, + task_id=task_id, + session_id=session_id, + tool_name=tool.name, + integration=tool.integration, + arguments=arguments, + setup=setup, + connection_pool=connection_pool, + ) + return ToolExecutionResult(id=call.id, name=tool.name, output=output) + + if tool.type == "system" and tool.system: + system = tool.system.model_copy(update={"arguments": arguments}) + system_dict = system.model_dump() + system_def = SystemDef(**system_dict) + output = await execute_system( + developer_id=developer_id, + system=system_def, + connection_pool=connection_pool, + ) + if hasattr(output, "model_dump"): + return ToolExecutionResult(id=call.id, name=tool.name, output=output.model_dump()) + return ToolExecutionResult(id=call.id, name=tool.name, output=output) + + if tool.type == "api_call" and tool.api_call: + arguments["include_response_content"] = tool.api_call.include_response_content + output = await execute_api_call(tool.api_call, arguments) + return ToolExecutionResult(id=call.id, name=tool.name, output=output) + + return ToolExecutionResult(id=call.id, name=tool.name, output={}) + + +@beartype +async def run_context_tool( + context: StepContext, + tool: Tool | CreateToolRequest, + call: BaseChosenToolCall, +) -> ToolExecutionResult: + """Execute a tool call within a workflow step context.""" + + # AIDEV-NOTE: Extract parameters from context and delegate to context-free function + developer_id = context.execution_input.developer_id + agent_id = context.execution_input.agent.id + task_id = context.execution_input.task.id if context.execution_input.task else None + session_id = getattr(context.execution_input, "session", None) + session_id = session_id.id if session_id else None + + # Delegate to the context-free function + return await run_tool_call( + developer_id=developer_id, + agent_id=agent_id, + task_id=task_id, + session_id=session_id, + tool=tool, + call=call, + ) + + +@beartype +def convert_litellm_to_chosen_tool_call( + call: ChatCompletionMessageToolCall, tool: Tool | CreateToolRequest +) -> BaseChosenToolCall: + """ + Convert a LiteLLM ChatCompletionMessageToolCall to the appropriate BaseChosenToolCall subtype + based on the tool's type. This preserves the internal tool type information. + """ + # Parse arguments from the string + arguments_str = json.loads(call.function.arguments) + + tool_spec = tool.model_dump() + if "id" in tool_spec: + tool_spec.pop("id") + + setup = getattr(tool_spec, f"{tool.type}", {}).get("setup", {}) + if setup: + setup = setup.model_dump() + tool_spec[f"{tool.type}"]["setup"] = setup + + # TODO: add computer_20241022, text_editor_20241022, bash_20241022 + tool_spec[f"{tool.type}"]["arguments"] = arguments_str + + return BaseChosenToolCall( + id=call.id, + **tool_spec, + ) + + +@beartype +async def run_llm_with_tools( + *, + messages: list[dict], + tools: Sequence[Tool | CreateToolRequest], + settings: dict[str, Any], + run_tool_call: Callable[ + [Tool | CreateToolRequest, BaseChosenToolCall], Awaitable[ToolExecutionResult] + ], # TODO: Probably can be removed +) -> list[dict]: + """Run the LLM with a tool loop.""" + + # Create a copy of messages to avoid mutating the original + messages_copy = messages.copy() + + formatted_tools = [await format_tool(t) for t in tools] + + # Build a map of function name to tool + tool_map = {} + for t in tools: + if t.type == "integration" and t.integration is not None: + tool_map[f"{t.integration.provider}_{t.integration.method}"] = t + else: + tool_map[t.name] = t + + while True: + response: ModelResponse = await litellm.acompletion( + tools=formatted_tools, + messages=messages_copy, + **settings, + ) + choice = response.choices[0] + messages_copy.append(choice.message.model_dump()) + + if choice.finish_reason != "tool_calls" or not choice.message.tool_calls: + return messages_copy + + # Process ALL tool calls before continuing + for litellm_call in choice.message.tool_calls: + # Get the function name from the call + function_name = litellm_call.function.name + + # Try to find the tool by name or handle integration tools + tool = tool_map.get(function_name) + + if tool is None: + # Create a dummy response for unknown tools to satisfy the API requirement + error_result = ToolExecutionResult( + id=litellm_call.id, + name=function_name, + output={}, + error=f"Tool '{function_name}' not found", + ) + messages_copy.append(format_tool_results_for_llm(error_result)) + continue + + # Convert LiteLLM call to appropriate internal format while preserving tool type + internal_call = convert_litellm_to_chosen_tool_call(litellm_call, tool) + # Execute the tool with the correctly typed call + result = await run_tool_call(tool, internal_call) + messages_copy.append(format_tool_results_for_llm(result)) diff --git a/agents-api/agents_api/common/utils/types.py b/src/agents-api/agents_api/common/utils/types.py similarity index 100% rename from agents-api/agents_api/common/utils/types.py rename to src/agents-api/agents_api/common/utils/types.py diff --git a/agents-api/agents_api/common/utils/usage.py b/src/agents-api/agents_api/common/utils/usage.py similarity index 80% rename from agents-api/agents_api/common/utils/usage.py rename to src/agents-api/agents_api/common/utils/usage.py index 330bfbab9..a534ab5c3 100644 --- a/agents-api/agents_api/common/utils/usage.py +++ b/src/agents-api/agents_api/common/utils/usage.py @@ -11,6 +11,24 @@ from ...queries.usage.create_usage_record import create_usage_record +def is_llama_based_model(model_string: str) -> bool: + """Check if a model string (either model_name or litellm_params.model) indicates a LLaMA model""" + # AIDEV-NOTE: More specific Llama model detection patterns to avoid false positives + model_lower = model_string.lower() + + # Check for specific llama patterns + llama_patterns = [ + "llama", # Matches any model with "llama" in the name + "meta-llama/", # Meta's official Llama models + "l3.1", # Llama 3.1 models + "l3.3", # Llama 3.3 models + "/l3.1", # Llama 3.1 models with provider prefix + "/l3.3", # Llama 3.3 models with provider prefix + ] + + return any(pattern in model_lower for pattern in llama_patterns) + + @beartype async def track_usage( *, @@ -20,6 +38,7 @@ async def track_usage( response: ModelResponse, custom_api_used: bool = False, metadata: dict[str, Any] = {}, + connection_pool: Any = None, # This is for testing purposes ) -> None: """ Tracks token usage and costs for an LLM API call. @@ -61,6 +80,8 @@ async def track_usage( # Map the model name to the actual model name actual_model = model + is_llama_model = is_llama_based_model(actual_model) + # Create usage record await create_usage_record( developer_id=developer_id, @@ -72,6 +93,8 @@ async def track_usage( "request_id": response.id if hasattr(response, "id") else None, **metadata, }, + is_llama_model=is_llama_model, + connection_pool=connection_pool, ) diff --git a/agents-api/agents_api/common/utils/workflows.py b/src/agents-api/agents_api/common/utils/workflows.py similarity index 90% rename from agents-api/agents_api/common/utils/workflows.py rename to src/agents-api/agents_api/common/utils/workflows.py index 0541d28f5..b60a06ab7 100644 --- a/agents-api/agents_api/common/utils/workflows.py +++ b/src/agents-api/agents_api/common/utils/workflows.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: Workflow name parsing utility for extracting base workflow from transition strings. from ...autogen.openapi_model import Transition PAR_PREFIX = "PAR:" diff --git a/agents-api/agents_api/common/utils/yaml.py b/src/agents-api/agents_api/common/utils/yaml.py similarity index 100% rename from agents-api/agents_api/common/utils/yaml.py rename to src/agents-api/agents_api/common/utils/yaml.py diff --git a/agents-api/agents_api/dependencies/__init__.py b/src/agents-api/agents_api/dependencies/__init__.py similarity index 100% rename from agents-api/agents_api/dependencies/__init__.py rename to src/agents-api/agents_api/dependencies/__init__.py diff --git a/agents-api/agents_api/dependencies/auth.py b/src/agents-api/agents_api/dependencies/auth.py similarity index 100% rename from agents-api/agents_api/dependencies/auth.py rename to src/agents-api/agents_api/dependencies/auth.py diff --git a/agents-api/agents_api/dependencies/content_length.py b/src/agents-api/agents_api/dependencies/content_length.py similarity index 100% rename from agents-api/agents_api/dependencies/content_length.py rename to src/agents-api/agents_api/dependencies/content_length.py diff --git a/agents-api/agents_api/dependencies/developer_id.py b/src/agents-api/agents_api/dependencies/developer_id.py similarity index 81% rename from agents-api/agents_api/dependencies/developer_id.py rename to src/agents-api/agents_api/dependencies/developer_id.py index c99f44d5c..a1f9f16c0 100644 --- a/agents-api/agents_api/dependencies/developer_id.py +++ b/src/agents-api/agents_api/dependencies/developer_id.py @@ -1,7 +1,7 @@ from typing import Annotated from uuid import UUID -from fastapi import Header, HTTPException, status +from fastapi import Header from ..common.protocol.developers import Developer from ..env import multi_tenant_mode @@ -26,17 +26,6 @@ async def get_developer_id( msg = "X-Developer-Id must be a valid UUID" raise InvalidHeaderFormat(msg) from e - try: - await get_developer(developer_id=x_developer_id) - except HTTPException as e: - if e.status_code == status.HTTP_404_NOT_FOUND: - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, - detail="Invalid developer account", - ) - - raise e - return x_developer_id diff --git a/agents-api/agents_api/dependencies/exceptions.py b/src/agents-api/agents_api/dependencies/exceptions.py similarity index 100% rename from agents-api/agents_api/dependencies/exceptions.py rename to src/agents-api/agents_api/dependencies/exceptions.py diff --git a/agents-api/agents_api/dependencies/query_filter.py b/src/agents-api/agents_api/dependencies/query_filter.py similarity index 100% rename from agents-api/agents_api/dependencies/query_filter.py rename to src/agents-api/agents_api/dependencies/query_filter.py diff --git a/agents-api/agents_api/env.py b/src/agents-api/agents_api/env.py similarity index 79% rename from agents-api/agents_api/env.py rename to src/agents-api/agents_api/env.py index 7bfd0228c..44efcd422 100644 --- a/agents-api/agents_api/env.py +++ b/src/agents-api/agents_api/env.py @@ -6,7 +6,7 @@ import multiprocessing import random from pprint import pprint -from typing import Any +from typing import TYPE_CHECKING, Any from environs import Env @@ -35,6 +35,7 @@ ) max_steps_accessible_in_tasks: int = env.int("MAX_STEPS_ACCESSIBLE_IN_TASKS", default=250) gunicorn_cpu_divisor: int = env.int("GUNICORN_CPU_DIVISOR", default=4) +secrets_cache_ttl: int = env.int("SECRETS_CACHE_TTL", default=120) raw_workers: str | None = env.str("GUNICORN_WORKERS", default=None) if raw_workers and raw_workers.strip(): @@ -83,7 +84,7 @@ _random_generated_key: str = "".join(str(random.randint(0, 9)) for _ in range(32)) api_key: str = env.str("AGENTS_API_KEY", _random_generated_key) -if api_key == _random_generated_key: +if api_key == _random_generated_key and not TYPE_CHECKING: print(f"Generated API key since not set in the environment: {api_key}") api_key_header_name: str = env.str("AGENTS_API_KEY_HEADER_NAME", default="X-Auth-Key") @@ -91,6 +92,10 @@ max_free_sessions: int = env.int("MAX_FREE_SESSIONS", default=50) max_free_executions: int = env.int("MAX_FREE_EXECUTIONS", default=50) +# Usage limits +# ----------- +free_tier_cost_limit: float = env.float("FREE_TIER_COST_LIMIT", default=2.0) + # Litellm API # ----------- litellm_url: str | None = env.str("LITELLM_URL", default=None) @@ -168,10 +173,57 @@ def _parse_optional_int(val: str | None) -> int | None: desklib_url: str = env.str("DESKLIB_URL", default="http://35.243.190.233/detect") sapling_url: str = env.str("SAPLING_URL", default="https://api.sapling.ai/api/v1/aidetect") brave_api_key: str = env.str("BRAVE_API_KEY", default=None) + +# Feature Flags +# ------------- +unleash_url: str = env.str("UNLEASH_URL", default="http://localhost:4242/api") +unleash_api_token: str = env.str( + "UNLEASH_API_TOKEN", default="default:development.unleash-insecure-api-token" +) +unleash_app_name: str = env.str("UNLEASH_APP_NAME", default="agents-api") + # Responses Flag # --------------- enable_responses: bool = env.bool("ENABLE_RESPONSES", default=False) + +# Hasura GraphQL settings +hasura_url: str = env.str( + "HASURA_URL", + default="http://hasura:8080", +) +hasura_admin_secret: str | None = env.str( + "HASURA_ADMIN_SECRET", + default=None, +) + +# Llama model cost +# ---------------- +# AIDEV-NOTE: Validate multiplier is within reasonable bounds (0 to 100) +_raw_llama_multiplier: float = env.float("LLAMA_MODEL_MULTIPLIER", default=1.0) +if _raw_llama_multiplier < 0 or _raw_llama_multiplier > 100: + msg = "LLAMA_MODEL_MULTIPLIER must be between 0 and 100" + raise ValueError(msg) +llama_model_multiplier: float = _raw_llama_multiplier + + +# Secrets +# ------- +def _validate_master_key(key: str | None) -> str: + """Validate that the master key is the correct length for encryption and is provided.""" + if key is None or len(key) != 32: + msg = "SECRETS_MASTER_KEY must be exactly 32 characters long" + raise ValueError(msg) + return key + + +if not TYPE_CHECKING and not testing: + secrets_master_key: str = _validate_master_key(env.str("SECRETS_MASTER_KEY")) + +else: + secrets_master_key: str = "*" * 32 + print("USING FAKE SECRETS KEY FOR TESTING") + # Consolidate environment variables environment: dict[str, Any] = { "debug": debug, @@ -194,6 +246,12 @@ def _parse_optional_int(val: str | None) -> int | None: "s3_secret_key": s3_secret_key, "testing": testing, "enable_responses": enable_responses, + "free_tier_cost_limit": free_tier_cost_limit, + "secrets_master_key": secrets_master_key, + "unleash_url": unleash_url, + "unleash_api_token": unleash_api_token, + "unleash_app_name": unleash_app_name, + "llama_model_multiplier": llama_model_multiplier, } if debug or testing: diff --git a/agents-api/agents_api/exceptions.py b/src/agents-api/agents_api/exceptions.py similarity index 92% rename from agents-api/agents_api/exceptions.py rename to src/agents-api/agents_api/exceptions.py index 1da6ab412..6a9cee769 100644 --- a/agents-api/agents_api/exceptions.py +++ b/src/agents-api/agents_api/exceptions.py @@ -8,7 +8,7 @@ class AgentsBaseException(Exception): class ModelNotSupportedError(AgentsBaseException): """Exception raised when model is not supported.""" - def __init__(self, model_name) -> None: + def __init__(self, model_name: str) -> None: super().__init__(f"model {model_name} is not supported") @@ -56,5 +56,5 @@ class QueriesBaseException(AgentsBaseException): class InvalidSQLQuery(QueriesBaseException): - def __init__(self, query_name: str): + def __init__(self, query_name: str) -> None: super().__init__(f"invalid query: {query_name}") diff --git a/agents-api/agents_api/metrics/__init__.py b/src/agents-api/agents_api/metrics/__init__.py similarity index 100% rename from agents-api/agents_api/metrics/__init__.py rename to src/agents-api/agents_api/metrics/__init__.py diff --git a/agents-api/agents_api/metrics/counters.py b/src/agents-api/agents_api/metrics/counters.py similarity index 100% rename from agents-api/agents_api/metrics/counters.py rename to src/agents-api/agents_api/metrics/counters.py diff --git a/agents-api/agents_api/model_registry.py b/src/agents-api/agents_api/model_registry.py similarity index 100% rename from agents-api/agents_api/model_registry.py rename to src/agents-api/agents_api/model_registry.py diff --git a/agents-api/agents_api/queries/CLAUDE.md b/src/agents-api/agents_api/queries/AGENTS.md similarity index 57% rename from agents-api/agents_api/queries/CLAUDE.md rename to src/agents-api/agents_api/queries/AGENTS.md index 30d11c2c0..9c5fe4255 100644 --- a/agents-api/agents_api/queries/CLAUDE.md +++ b/src/agents-api/agents_api/queries/AGENTS.md @@ -1,3 +1,15 @@ +# AGENTS.md - queries + +This folder contains database query builders and SQL files for `agents-api`. + +Key Points +- Organize queries by domain under subfolders (agents, chat, tasks, etc.). +- Use asyncpg for execution and return typed Pydantic models. +- Validate SQL syntax with `poe check`. +- Add new queries in `queries/` and index them if needed. +- Tests reside under `agents-api/tests/`. +- Add `AIDEV-NOTE` anchors at the top of query modules to clarify module purpose. + # Queries ## Purpose @@ -7,9 +19,24 @@ ## Key Query Modules +### projects/ +- Create, list, and check for project existence +- Project association with resources + ### agents/, tasks/, sessions/, users/ - CRUD operations for core resources - Data validation and normalization +- Project association handling + +### secrets/ +- Secure storage and retrieval of sensitive data +- Key-value storage with encryption +- Access control and validation + +### usage/ +- Usage tracking and cost calculation +- User activity monitoring +- Billing and analytics data ### executions/ - Create and track task executions @@ -42,4 +69,4 @@ ## Important Functions - `prepare_execution_input`: Builds inputs for Temporal workflows - `create_execution_transition`: Records state changes in executions -- `search_docs_hybrid`: Combined embedding and text search \ No newline at end of file +- `search_docs_hybrid`: Combined embedding and text search diff --git a/src/agents-api/agents_api/queries/CLAUDE.md b/src/agents-api/agents_api/queries/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/queries/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/queries/__init__.py b/src/agents-api/agents_api/queries/__init__.py similarity index 97% rename from agents-api/agents_api/queries/__init__.py rename to src/agents-api/agents_api/queries/__init__.py index f7aa46ae5..b5a4dc05d 100644 --- a/agents-api/agents_api/queries/__init__.py +++ b/src/agents-api/agents_api/queries/__init__.py @@ -6,8 +6,6 @@ This module also integrates with the `common` module for exception handling and utility functions, ensuring robust error management and providing reusable components for data processing and query construction. """ -# ruff: noqa: F401, F403, F405 - from . import agents as agents from . import developers as developers from . import docs as docs diff --git a/agents-api/agents_api/queries/agents/__init__.py b/src/agents-api/agents_api/queries/agents/__init__.py similarity index 96% rename from agents-api/agents_api/queries/agents/__init__.py rename to src/agents-api/agents_api/queries/agents/__init__.py index c0712c47c..eb60c8971 100644 --- a/agents-api/agents_api/queries/agents/__init__.py +++ b/src/agents-api/agents_api/queries/agents/__init__.py @@ -10,8 +10,6 @@ Each function in this module constructs and returns SQL queries along with their parameters for database operations. """ -# ruff: noqa: F401, F403, F405 - from .create_agent import create_agent from .create_or_update_agent import create_or_update_agent from .delete_agent import delete_agent diff --git a/src/agents-api/agents_api/queries/agents/create_agent.py b/src/agents-api/agents_api/queries/agents/create_agent.py new file mode 100644 index 000000000..956162122 --- /dev/null +++ b/src/agents-api/agents_api/queries/agents/create_agent.py @@ -0,0 +1,136 @@ +""" +This module contains the functionality for creating agents in the PostgreSQL database. +It includes functions to construct and execute SQL queries for inserting new agent records. +""" + +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException +from uuid_extensions import uuid7 + +from ...autogen.openapi_model import Agent, CreateAgentRequest +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query for creating the agent +agent_query = """ +WITH new_agent AS ( + INSERT INTO agents ( + developer_id, + agent_id, + canonical_name, + name, + about, + instructions, + model, + metadata, + default_settings, + default_system_template + ) + VALUES ( + $1, + $2, + $3, + $4, + $5, + $6, + $7, + $8, + $9, + $10 + ) + RETURNING * +), proj AS ( + -- Find project ID by canonical name + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $11 +), project_association AS ( + -- Create project association if project exists + INSERT INTO project_agents (project_id, developer_id, agent_id) + SELECT p.project_id, $1, $2 + FROM proj p + WHERE p.project_id IS NOT NULL + ON CONFLICT (project_id, agent_id) DO NOTHING + RETURNING 1 +) +SELECT + a.*, + p.canonical_name AS project +FROM new_agent a +LEFT JOIN proj p ON TRUE; +""" + + +@rewrap_exceptions(common_db_exceptions("agent", ["create"])) +@wrap_in_class( + Agent, + one=True, + transform=lambda d: {**d, "id": d["agent_id"]}, +) +@query_metrics("create_agent") +@pg_query +@beartype +async def create_agent_query( + *, + developer_id: UUID, + agent_id: UUID | None = None, + data: CreateAgentRequest, +) -> tuple[str, list]: + """ + Constructs and executes a SQL query to create a new agent in the database. + + Parameters: + agent_id (UUID | None): The unique identifier for the agent. + developer_id (UUID): The unique identifier for the developer creating the agent. + data (CreateAgentRequest): The data for the new agent. + + Returns: + tuple[str, dict]: SQL query and parameters for creating the agent. + """ + + return ( + agent_query, + [ + developer_id, + agent_id or uuid7(), + data.canonical_name or generate_canonical_name(), + data.name, + data.about, + data.instructions if isinstance(data.instructions, list) else [data.instructions], + data.model, + data.metadata or {}, + data.default_settings or {}, + data.default_system_template, + data.project, + ], + ) + + +async def create_agent( + *, + developer_id: UUID, + agent_id: UUID | None = None, + data: CreateAgentRequest, + connection_pool: asyncpg.Pool | None = None, +) -> Agent: + project_canonical_name = data.project or "default" + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await create_agent_query( + developer_id=developer_id, + agent_id=agent_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/src/agents-api/agents_api/queries/agents/create_or_update_agent.py b/src/agents-api/agents_api/queries/agents/create_or_update_agent.py new file mode 100644 index 000000000..e44517bab --- /dev/null +++ b/src/agents-api/agents_api/queries/agents/create_or_update_agent.py @@ -0,0 +1,161 @@ +""" +This module contains the functionality for creating or updating agents in the PostgreSQL database. +It constructs and executes SQL queries to insert a new agent or update an existing agent's details based on agent ID and developer ID. +""" + +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import Agent, CreateOrUpdateAgentRequest +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query +agent_query = """ +WITH existing_agent AS ( + SELECT canonical_name + FROM agents + WHERE developer_id = $1 AND agent_id = $2 +), proj AS ( + -- Find project ID by canonical name + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $11 +), +project_check AS ( + -- Check if project exists + SELECT EXISTS ( + SELECT 1 FROM proj + ) as project_exists +), +updated_agent AS ( + INSERT INTO agents ( + developer_id, + agent_id, + canonical_name, + name, + about, + instructions, + model, + metadata, + default_settings, + default_system_template + ) + VALUES ( + $1, -- developer_id + $2, -- agent_id + COALESCE( -- canonical_name + (SELECT canonical_name FROM existing_agent), + $3 + ), + $4, -- name + $5, -- about + $6, -- instructions + $7, -- model + $8, -- metadata + $9, -- default_settings + $10 -- default_system_template + ) + ON CONFLICT (developer_id, agent_id) DO UPDATE SET + canonical_name = EXCLUDED.canonical_name, + name = EXCLUDED.name, + about = EXCLUDED.about, + instructions = EXCLUDED.instructions, + model = EXCLUDED.model, + metadata = EXCLUDED.metadata, + default_settings = EXCLUDED.default_settings, + default_system_template = EXCLUDED.default_system_template + WHERE ( + $11 IS NULL OR + (SELECT project_exists FROM project_check) + ) + RETURNING * +), +project_association AS ( + -- Insert or update project association if project exists + INSERT INTO project_agents (project_id, developer_id, agent_id) + SELECT + (SELECT project_id FROM proj), + $1, + $2 + WHERE EXISTS (SELECT 1 FROM proj) + ON CONFLICT (project_id, agent_id) DO UPDATE SET + project_id = (SELECT project_id FROM proj) + RETURNING project_id +) +SELECT + a.*, + COALESCE( + (SELECT canonical_name FROM proj), + (SELECT p.canonical_name + FROM project_agents pa + JOIN projects p ON pa.project_id = p.project_id + WHERE pa.developer_id = a.developer_id AND pa.agent_id = a.agent_id) + ) as project +FROM updated_agent a; +""" + + +@rewrap_exceptions(common_db_exceptions("agent", ["create", "update"])) +@wrap_in_class( + Agent, + one=True, + transform=lambda d: {**d, "id": d["agent_id"]}, +) +@query_metrics("create_or_update_agent") +@pg_query +@beartype +async def create_or_update_agent( + *, + agent_id: UUID, + developer_id: UUID, + data: CreateOrUpdateAgentRequest, +) -> tuple[str, list]: + """ + Constructs the SQL queries to create a new agent or update an existing agent's details. + + Args: + agent_id (UUID): The UUID of the agent to create or update. + developer_id (UUID): The UUID of the developer owning the agent. + data (CreateOrUpdateAgentRequest): A dictionary containing agent fields to insert or update. + + Returns: + tuple[list[str], dict]: A tuple containing the list of SQL queries and their parameters. + """ + # Get project (default if not specified) + project_canonical_name = ( + data.project if hasattr(data, "project") and data.project else "default" + ) + + # Ensure instructions is a list + data.instructions = ( + data.instructions if isinstance(data.instructions, list) else [data.instructions] + ) + + # Convert default_settings to dict if it exists + default_settings = data.default_settings or {} + + # Set default values + data.metadata = data.metadata or {} + data.canonical_name = data.canonical_name or generate_canonical_name() + + params = [ + developer_id, + agent_id, + data.canonical_name, + data.name, + data.about, + data.instructions, + data.model, + data.metadata, + default_settings, + data.default_system_template, + project_canonical_name, + ] + + return ( + agent_query, + params, + ) diff --git a/agents-api/agents_api/queries/agents/delete_agent.py b/src/agents-api/agents_api/queries/agents/delete_agent.py similarity index 100% rename from agents-api/agents_api/queries/agents/delete_agent.py rename to src/agents-api/agents_api/queries/agents/delete_agent.py diff --git a/agents-api/agents_api/queries/agents/get_agent.py b/src/agents-api/agents_api/queries/agents/get_agent.py similarity index 71% rename from agents-api/agents_api/queries/agents/get_agent.py rename to src/agents-api/agents_api/queries/agents/get_agent.py index fc527df6a..b26f16a6a 100644 --- a/agents-api/agents_api/queries/agents/get_agent.py +++ b/src/agents-api/agents_api/queries/agents/get_agent.py @@ -15,22 +15,25 @@ # Define the raw SQL query agent_query = """ SELECT - agent_id, - developer_id, - name, - canonical_name, - about, - instructions, - model, - metadata, - default_settings, - default_system_template, - created_at, - updated_at + a.agent_id, + a.developer_id, + a.name, + a.canonical_name, + a.about, + a.instructions, + a.model, + a.metadata, + a.default_settings, + a.default_system_template, + a.created_at, + a.updated_at, + p.canonical_name AS project FROM - agents + agents a +LEFT JOIN project_agents pa ON a.agent_id = pa.agent_id AND a.developer_id = pa.developer_id +LEFT JOIN projects p ON pa.project_id = p.project_id AND pa.developer_id = p.developer_id WHERE - agent_id = $2 AND developer_id = $1; + a.agent_id = $2 AND a.developer_id = $1; """ diff --git a/src/agents-api/agents_api/queries/agents/list_agents.py b/src/agents-api/agents_api/queries/agents/list_agents.py new file mode 100644 index 000000000..122b64454 --- /dev/null +++ b/src/agents-api/agents_api/queries/agents/list_agents.py @@ -0,0 +1,104 @@ +""" +This module contains the functionality for listing agents from the PostgreSQL database. +It constructs and executes SQL queries to fetch a list of agents based on developer ID with pagination. +""" + +from typing import Any, Literal +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import Agent +from ...common.utils.db_exceptions import common_db_exceptions +from ..utils import ( + pg_query, + rewrap_exceptions, + wrap_in_class, +) + +# Define the raw SQL query +raw_query = """ +SELECT + a.agent_id, + a.developer_id, + a.name, + a.canonical_name, + a.about, + a.instructions, + a.model, + a.metadata, + a.default_settings, + a.default_system_template, + a.created_at, + a.updated_at, + p.canonical_name AS project +FROM + agents a +LEFT JOIN project_agents pa ON a.agent_id = pa.agent_id AND a.developer_id = pa.developer_id +LEFT JOIN projects p ON pa.project_id = p.project_id AND pa.developer_id = p.developer_id +WHERE + a.developer_id = $1 {metadata_filter_query} +ORDER BY + CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN a.created_at END ASC NULLS LAST, + CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN a.created_at END DESC NULLS LAST, + CASE WHEN $4 = 'updated_at' AND $5 = 'asc' THEN a.updated_at END ASC NULLS LAST, + CASE WHEN $4 = 'updated_at' AND $5 = 'desc' THEN a.updated_at END DESC NULLS LAST +LIMIT $2 OFFSET $3; +""" + + +@rewrap_exceptions(common_db_exceptions("agent", ["list"])) +@wrap_in_class( + Agent, + transform=lambda d: {**d, "id": d["agent_id"]}, +) +@pg_query +@beartype +async def list_agents( + *, + developer_id: UUID, + limit: int = 100, + offset: int = 0, + sort_by: Literal["created_at", "updated_at"] = "created_at", + direction: Literal["asc", "desc"] = "desc", + metadata_filter: dict[str, Any] | None = None, +) -> tuple[str, list]: + """ + Constructs query to list agents for a developer with pagination. + + Args: + developer_id: UUID of the developer + limit: Maximum number of records to return + offset: Number of records to skip + sort_by: Field to sort by + direction: Sort direction ('asc' or 'desc') + metadata_filter: Optional metadata filters + + Returns: + Tuple of (query, params) + """ + + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} + # Initialize parameters + params = [ + developer_id, + limit, + offset, + sort_by, + direction, + ] + + # Handle metadata filter differently - using JSONB containment + agent_query = raw_query.format( + metadata_filter_query="AND a.metadata @> $6::jsonb" if metadata_filter else "", + ) + + # If we have metadata filters, safely add them as a parameter + if metadata_filter: + params.append(metadata_filter) + + return ( + agent_query, + params, + ) diff --git a/src/agents-api/agents_api/queries/agents/patch_agent.py b/src/agents-api/agents_api/queries/agents/patch_agent.py new file mode 100644 index 000000000..6597ebc76 --- /dev/null +++ b/src/agents-api/agents_api/queries/agents/patch_agent.py @@ -0,0 +1,153 @@ +""" +This module contains the functionality for partially updating an agent in the PostgreSQL database. +It constructs and executes SQL queries to update specific fields of an agent based on agent ID and developer ID. +""" + +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import Agent, PatchAgentRequest +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query +agent_query = """ +WITH proj AS ( + -- Find project ID by canonical name if project is being updated + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $11 + AND $11 IS NOT NULL +), +project_exists AS ( + -- Check if project exists when being updated + SELECT + CASE + WHEN $11 IS NULL THEN TRUE -- No project specified, so exists check passes + WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists + ELSE FALSE -- Project specified but doesn't exist + END AS exists +), +updated_agent AS ( + UPDATE agents + SET + name = CASE + WHEN $3::text IS NOT NULL THEN $3 + ELSE name + END, + about = CASE + WHEN $4::text IS NOT NULL THEN $4 + ELSE about + END, + metadata = CASE + WHEN $5::jsonb IS NOT NULL THEN metadata || $5 + ELSE metadata + END, + model = CASE + WHEN $6::text IS NOT NULL THEN $6 + ELSE model + END, + default_settings = CASE + WHEN $7::jsonb IS NOT NULL THEN $7 + ELSE default_settings + END, + default_system_template = CASE + WHEN $8::text IS NOT NULL THEN $8 + ELSE default_system_template + END, + instructions = CASE + WHEN $9::text[] IS NOT NULL THEN $9 + ELSE instructions + END, + canonical_name = CASE + WHEN $10::citext IS NOT NULL THEN $10 + ELSE canonical_name + END + WHERE agent_id = $2 AND developer_id = $1 + AND (SELECT exists FROM project_exists) + RETURNING * +) +SELECT + (SELECT exists FROM project_exists) AS project_exists, + a.*, + p.canonical_name as project +FROM updated_agent a +LEFT JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id +LEFT JOIN projects p ON pa.project_id = p.project_id; +""" + + +@rewrap_exceptions(common_db_exceptions("agent", ["patch"])) +@wrap_in_class( + Agent, + one=True, + transform=lambda d: {**d, "id": d["agent_id"]}, +) +@query_metrics("patch_agent") +@pg_query +@beartype +async def patch_agent_query( + *, + agent_id: UUID, + developer_id: UUID, + data: PatchAgentRequest, +) -> tuple[str, list]: + """ + Constructs the SQL query to partially update an agent's details. + + Args: + agent_id (UUID): The UUID of the agent to update. + developer_id (UUID): The UUID of the developer owning the agent. + data (PatchAgentRequest): A dictionary of fields to update. + + Returns: + tuple[str, list]: A tuple containing the SQL query and its parameters. + """ + params = [ + developer_id, + agent_id, + data.name, + data.about, + data.metadata, + data.model, + data.default_settings, + data.default_system_template, + [data.instructions] if isinstance(data.instructions, str) else data.instructions, + data.canonical_name, + data.project, + ] + + return ( + agent_query, + params, + ) + + +async def patch_agent( + *, + agent_id: UUID, + developer_id: UUID, + data: PatchAgentRequest, + connection_pool: asyncpg.Pool | None = None, +) -> Agent: + project_canonical_name = data.project or "default" + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await patch_agent_query( + agent_id=agent_id, + developer_id=developer_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/src/agents-api/agents_api/queries/agents/update_agent.py b/src/agents-api/agents_api/queries/agents/update_agent.py new file mode 100644 index 000000000..10afc1244 --- /dev/null +++ b/src/agents-api/agents_api/queries/agents/update_agent.py @@ -0,0 +1,125 @@ +""" +This module contains the functionality for fully updating an agent in the PostgreSQL database. +It constructs and executes SQL queries to replace an agent's details based on agent ID and developer ID. +""" + +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import Agent, UpdateAgentRequest +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query +agent_query = """ +WITH proj AS ( + -- Find project ID by canonical name if project is provided and not NULL + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $9 + AND $9 IS NOT NULL +), +project_exists AS ( + -- Check if the project exists when specified + SELECT + CASE + WHEN $9 IS NULL THEN TRUE -- No project specified, check passes + WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists + ELSE FALSE -- Project specified but doesn't exist + END AS exists +), +updated_agent AS ( + UPDATE agents + SET + metadata = $3, + name = $4, + about = $5, + model = $6, + default_settings = $7::jsonb, + default_system_template = $8 + WHERE agent_id = $2 AND developer_id = $1 + AND (SELECT exists FROM project_exists) + RETURNING * +) +SELECT + (SELECT exists FROM project_exists) AS project_exists, + a.*, + p.canonical_name as project +FROM updated_agent a +LEFT JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id +LEFT JOIN projects p ON pa.project_id = p.project_id; +""" + + +@rewrap_exceptions(common_db_exceptions("agent", ["update"])) +@wrap_in_class( + Agent, + one=True, + transform=lambda d: {**d, "id": d["agent_id"]}, +) +@query_metrics("update_agent") +@pg_query +@beartype +async def update_agent_query( + *, + agent_id: UUID, + developer_id: UUID, + data: UpdateAgentRequest, +) -> tuple[str, list]: + """ + Constructs the SQL query to fully update an agent's details. + + Args: + agent_id (UUID): The UUID of the agent to update. + developer_id (UUID): The UUID of the developer owning the agent. + data (UpdateAgentRequest): A dictionary containing all agent fields to update. + + Returns: + tuple[str, list]: A tuple containing the SQL query and its parameters. + """ + params = [ + developer_id, + agent_id, + data.metadata or {}, + data.name, + data.about, + data.model, + data.default_settings or {}, + data.default_system_template, + data.project, + ] + + return ( + agent_query, + params, + ) + + +async def update_agent( + *, + agent_id: UUID, + developer_id: UUID, + data: UpdateAgentRequest, + connection_pool: asyncpg.Pool | None = None, +) -> Agent: + project_canonical_name = data.project or "default" + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await update_agent_query( + agent_id=agent_id, + developer_id=developer_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/agents-api/agents_api/queries/chat/__init__.py b/src/agents-api/agents_api/queries/chat/__init__.py similarity index 97% rename from agents-api/agents_api/queries/chat/__init__.py rename to src/agents-api/agents_api/queries/chat/__init__.py index 2c05b4f8b..9a70d00bf 100644 --- a/agents-api/agents_api/queries/chat/__init__.py +++ b/src/agents-api/agents_api/queries/chat/__init__.py @@ -14,7 +14,7 @@ This documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately. """ -# ruff: noqa: F401, F403, F405 +# ruff: noqa: F401 from .gather_messages import gather_messages from .prepare_chat_context import prepare_chat_context diff --git a/agents-api/agents_api/queries/chat/gather_messages.py b/src/agents-api/agents_api/queries/chat/gather_messages.py similarity index 87% rename from agents-api/agents_api/queries/chat/gather_messages.py rename to src/agents-api/agents_api/queries/chat/gather_messages.py index 84406a752..c57a4961f 100644 --- a/agents-api/agents_api/queries/chat/gather_messages.py +++ b/src/agents-api/agents_api/queries/chat/gather_messages.py @@ -18,7 +18,7 @@ from ...common.protocol.developers import Developer from ...common.protocol.sessions import ChatContext from ...common.utils.db_exceptions import common_db_exceptions, partialclass -from ...common.utils.get_doc_search import get_search_fn_and_params +from ...common.utils.get_doc_search import get_search_fn_and_params, strip_embeddings from ...common.utils.mmr import apply_mmr_to_docs from ..entries.get_history import get_history from ..utils import rewrap_exceptions @@ -46,10 +46,22 @@ async def gather_messages( assert len(new_raw_messages) > 0 # Get the session history + # Determine allowed sources based on recall_tools flag + if chat_input.recall_tools: + allowed_sources = [ + "api_request", + "api_response", + "tool_request", + "tool_response", + "summarizer", + ] + else: + allowed_sources = ["api_request", "api_response"] + history: History = await get_history( developer_id=developer.id, session_id=session_id, - allowed_sources=["api_request", "api_response", "tool_response", "summarizer"], + allowed_sources=allowed_sources, connection_pool=connection_pool, ) @@ -122,6 +134,7 @@ async def gather_messages( confidence=recall_options.confidence, mmr_strength=recall_options.mmr_strength, vector=query_embedding, + include_embeddings=recall_options.include_embeddings, ) elif recall_options.mode == "hybrid": search_params = HybridDocSearchRequest( @@ -135,6 +148,7 @@ async def gather_messages( vector=query_embedding, trigram_similarity_threshold=recall_options.trigram_similarity_threshold, k_multiplier=recall_options.k_multiplier, + include_embeddings=recall_options.include_embeddings, ) elif recall_options.mode == "text": search_params = TextOnlyDocSearchRequest( @@ -143,6 +157,7 @@ async def gather_messages( metadata_filter=recall_options.metadata_filter, text=query_text, trigram_similarity_threshold=recall_options.trigram_similarity_threshold, + include_embeddings=recall_options.include_embeddings, ) else: # Invalid mode, return early @@ -150,10 +165,14 @@ async def gather_messages( # Execute search (extract keywords for FTS because the query is a conversation snippet) extract_keywords: bool = True - search_fn, params = get_search_fn_and_params( + search_fn, params, post_processing = get_search_fn_and_params( search_params, extract_keywords=extract_keywords ) + include_embeddings = ( + post_processing.get("include_embeddings", True) if post_processing else True + ) + doc_references: list[DocReference] = await search_fn( developer_id=developer.id, owners=owners, @@ -161,6 +180,9 @@ async def gather_messages( **params, ) + if include_embeddings is False: + doc_references = strip_embeddings(doc_references) + # Apply MMR if enabled and applicable if ( not isinstance(search_params, TextOnlyDocSearchRequest) diff --git a/agents-api/agents_api/queries/chat/prepare_chat_context.py b/src/agents-api/agents_api/queries/chat/prepare_chat_context.py similarity index 100% rename from agents-api/agents_api/queries/chat/prepare_chat_context.py rename to src/agents-api/agents_api/queries/chat/prepare_chat_context.py diff --git a/agents-api/agents_api/queries/developers/__init__.py b/src/agents-api/agents_api/queries/developers/__init__.py similarity index 97% rename from agents-api/agents_api/queries/developers/__init__.py rename to src/agents-api/agents_api/queries/developers/__init__.py index c3d1d4bbb..41afebe32 100644 --- a/agents-api/agents_api/queries/developers/__init__.py +++ b/src/agents-api/agents_api/queries/developers/__init__.py @@ -14,8 +14,6 @@ This documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately. """ -# ruff: noqa: F401, F403, F405 - from .create_developer import create_developer from .get_developer import get_developer from .patch_developer import patch_developer diff --git a/agents-api/agents_api/queries/developers/create_developer.py b/src/agents-api/agents_api/queries/developers/create_developer.py similarity index 100% rename from agents-api/agents_api/queries/developers/create_developer.py rename to src/agents-api/agents_api/queries/developers/create_developer.py diff --git a/agents-api/agents_api/queries/developers/get_developer.py b/src/agents-api/agents_api/queries/developers/get_developer.py similarity index 91% rename from agents-api/agents_api/queries/developers/get_developer.py rename to src/agents-api/agents_api/queries/developers/get_developer.py index dd0e02731..aabebf08b 100644 --- a/agents-api/agents_api/queries/developers/get_developer.py +++ b/src/agents-api/agents_api/queries/developers/get_developer.py @@ -11,7 +11,7 @@ from ..utils import pg_query, rewrap_exceptions, wrap_in_class developer_query = """ -SELECT * FROM developers WHERE developer_id = $1 and active = true +SELECT * FROM developers WHERE developer_id = $1 AND active = true """ diff --git a/agents-api/agents_api/queries/developers/patch_developer.py b/src/agents-api/agents_api/queries/developers/patch_developer.py similarity index 100% rename from agents-api/agents_api/queries/developers/patch_developer.py rename to src/agents-api/agents_api/queries/developers/patch_developer.py diff --git a/agents-api/agents_api/queries/developers/update_developer.py b/src/agents-api/agents_api/queries/developers/update_developer.py similarity index 100% rename from agents-api/agents_api/queries/developers/update_developer.py rename to src/agents-api/agents_api/queries/developers/update_developer.py diff --git a/agents-api/agents_api/queries/docs/__init__.py b/src/agents-api/agents_api/queries/docs/__init__.py similarity index 98% rename from agents-api/agents_api/queries/docs/__init__.py rename to src/agents-api/agents_api/queries/docs/__init__.py index db6fb03be..9b9b967ee 100644 --- a/agents-api/agents_api/queries/docs/__init__.py +++ b/src/agents-api/agents_api/queries/docs/__init__.py @@ -17,8 +17,6 @@ This documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately. """ -# ruff: noqa: F401, F403, F405 - from .bulk_delete_docs import bulk_delete_docs from .create_doc import create_doc from .delete_doc import delete_doc diff --git a/agents-api/agents_api/queries/docs/bulk_delete_docs.py b/src/agents-api/agents_api/queries/docs/bulk_delete_docs.py similarity index 100% rename from agents-api/agents_api/queries/docs/bulk_delete_docs.py rename to src/agents-api/agents_api/queries/docs/bulk_delete_docs.py diff --git a/agents-api/agents_api/queries/docs/create_doc.py b/src/agents-api/agents_api/queries/docs/create_doc.py similarity index 92% rename from agents-api/agents_api/queries/docs/create_doc.py rename to src/agents-api/agents_api/queries/docs/create_doc.py index ad8e55280..09d9cc5e2 100644 --- a/agents-api/agents_api/queries/docs/create_doc.py +++ b/src/agents-api/agents_api/queries/docs/create_doc.py @@ -99,11 +99,14 @@ async def create_doc( final_params_owner = [] for idx, content in enumerate(data.content): + # Convert Content object to string if needed + content_str = content.root if hasattr(content, "root") else content + doc_params = [ developer_id, current_doc_id, data.title, - content, + content_str, # Use the string value idx, modality, embedding_model, @@ -135,12 +138,15 @@ async def create_doc( )) else: + # Convert Content object to string if needed + content_str = data.content.root if hasattr(data.content, "root") else data.content + # Create the doc record doc_params = [ developer_id, current_doc_id, data.title, - data.content, + content_str, # Use the string value index, modality, embedding_model, diff --git a/agents-api/agents_api/queries/docs/delete_doc.py b/src/agents-api/agents_api/queries/docs/delete_doc.py similarity index 100% rename from agents-api/agents_api/queries/docs/delete_doc.py rename to src/agents-api/agents_api/queries/docs/delete_doc.py diff --git a/agents-api/agents_api/queries/docs/get_doc.py b/src/agents-api/agents_api/queries/docs/get_doc.py similarity index 82% rename from agents-api/agents_api/queries/docs/get_doc.py rename to src/agents-api/agents_api/queries/docs/get_doc.py index f7bef3696..92800e3b6 100644 --- a/agents-api/agents_api/queries/docs/get_doc.py +++ b/src/agents-api/agents_api/queries/docs/get_doc.py @@ -87,18 +87,23 @@ async def get_doc( *, developer_id: UUID, doc_id: UUID, + include_embeddings: bool = True, ) -> tuple[str, list]: """ - Fetch a single doc with its embedding, grouping all content chunks and embeddings. + Fetch a single doc with or without embeddings, grouping all content chunks. Parameters: developer_id (UUID): The ID of the developer. doc_id (UUID): The ID of the document. + include_embeddings (bool): Whether to include embeddings in the response. + Defaults to True for backward compatibility. Returns: tuple[str, list]: SQL query and parameters for fetching the document. """ + # AIDEV-NOTE: Bandwidth optimization - use doc_without_embedding_query when embeddings not needed + query = doc_with_embedding_query if include_embeddings else doc_without_embedding_query return ( - doc_with_embedding_query, + query, [developer_id, doc_id], ) diff --git a/agents-api/agents_api/queries/docs/list_docs.py b/src/agents-api/agents_api/queries/docs/list_docs.py similarity index 86% rename from agents-api/agents_api/queries/docs/list_docs.py rename to src/agents-api/agents_api/queries/docs/list_docs.py index f7b8e1d39..f5dbcb48b 100644 --- a/agents-api/agents_api/queries/docs/list_docs.py +++ b/src/agents-api/agents_api/queries/docs/list_docs.py @@ -28,7 +28,7 @@ d.title, array_agg(d.content ORDER BY d.index) as content, array_agg(d.index ORDER BY d.index) as indices, - array_agg(CASE WHEN $2 THEN NULL ELSE e.embedding END ORDER BY d.index) as embeddings, + array_agg(CASE WHEN $2 THEN e.embedding ELSE NULL END ORDER BY d.index) as embeddings, d.modality, d.embedding_model, d.embedding_dimensions, @@ -74,8 +74,8 @@ async def list_docs( ] = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", - metadata_filter: dict[str, Any] = {}, - include_without_embeddings: bool = False, + metadata_filter: dict[str, Any] | None = None, + include_embeddings: bool = True, ) -> tuple[str, list]: """ Lists docs with pagination and sorting, aggregating content chunks and embeddings. @@ -89,7 +89,8 @@ async def list_docs( sort_by (Literal["created_at", "updated_at"]): The field to sort by. direction (Literal["asc", "desc"]): The direction to sort by. metadata_filter (dict[str, Any]): The metadata filter to apply. - include_without_embeddings (bool): Whether to include documents without embeddings. + include_embeddings (bool): Whether to include embeddings in the response. + Defaults to True for backward compatibility. Returns: tuple[str, list]: SQL query and parameters for listing the documents. @@ -103,9 +104,12 @@ async def list_docs( # if sort_by not in ["created_at", "updated_at"]: # raise HTTPException(status_code=400, detail="Invalid sort field") + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} # Start with the base query query = base_docs_query - params = [developer_id, include_without_embeddings, owner_type, owner_id] + # AIDEV-NOTE: Bandwidth optimization - pass include_embeddings to control embedding retrieval + params = [developer_id, include_embeddings, owner_type, owner_id] # Add metadata filtering before GROUP BY using the utility function with table alias metadata_conditions, params = build_metadata_filter_conditions( diff --git a/agents-api/agents_api/queries/docs/search_docs_by_embedding.py b/src/agents-api/agents_api/queries/docs/search_docs_by_embedding.py similarity index 91% rename from agents-api/agents_api/queries/docs/search_docs_by_embedding.py rename to src/agents-api/agents_api/queries/docs/search_docs_by_embedding.py index e9e3380e1..bf14cb8e2 100644 --- a/agents-api/agents_api/queries/docs/search_docs_by_embedding.py +++ b/src/agents-api/agents_api/queries/docs/search_docs_by_embedding.py @@ -37,7 +37,7 @@ async def search_docs_by_embedding( k: int = 10, owners: list[tuple[Literal["user", "agent"], UUID]], confidence: int | float = 0.5, - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, ) -> tuple[str, list]: """ Vector-based doc search: @@ -53,6 +53,8 @@ async def search_docs_by_embedding( Returns: tuple[str, list]: SQL query and parameters for searching the documents. """ + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} if k < 1: raise HTTPException(status_code=400, detail="k must be >= 1") diff --git a/agents-api/agents_api/queries/docs/search_docs_by_text.py b/src/agents-api/agents_api/queries/docs/search_docs_by_text.py similarity index 90% rename from agents-api/agents_api/queries/docs/search_docs_by_text.py rename to src/agents-api/agents_api/queries/docs/search_docs_by_text.py index 5e74adb3c..fffc25d8c 100644 --- a/agents-api/agents_api/queries/docs/search_docs_by_text.py +++ b/src/agents-api/agents_api/queries/docs/search_docs_by_text.py @@ -38,9 +38,9 @@ async def search_docs_by_text( owners: list[tuple[Literal["user", "agent"], UUID]], query: str, k: int = 3, - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, search_language: str | None = "english_unaccent", - trigram_similarity_threshold: float = 0.5, # Higher threshold to catch fewer spelling errors + trigram_similarity_threshold: float | None = None, # Set to None to disable trigram search extract_keywords: bool = False, ) -> tuple[str, list]: """ @@ -61,6 +61,8 @@ async def search_docs_by_text( tuple[str, list]: SQL query and parameters for searching the documents. """ + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} if k < 1: raise HTTPException(status_code=400, detail="k must be >= 1") diff --git a/agents-api/agents_api/queries/docs/search_docs_hybrid.py b/src/agents-api/agents_api/queries/docs/search_docs_hybrid.py similarity index 92% rename from agents-api/agents_api/queries/docs/search_docs_hybrid.py rename to src/agents-api/agents_api/queries/docs/search_docs_hybrid.py index 680711aa2..a0c16cd60 100644 --- a/agents-api/agents_api/queries/docs/search_docs_hybrid.py +++ b/src/agents-api/agents_api/queries/docs/search_docs_hybrid.py @@ -47,10 +47,11 @@ async def search_docs_hybrid( embedding: list[float] | None = None, k: int = 10, alpha: float = 0.7, - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, search_language: str = "english_unaccent", confidence: int | float = 0.5, - trigram_similarity_threshold: float = 0.5, # Lower threshold to catch more spelling errors + trigram_similarity_threshold: float + | None = None, # Lower threshold to catch more spelling errors k_multiplier: int = 7, # Higher multiplier to include more candidates with the enhanced fuzzy matching extract_keywords: bool = False, ) -> tuple[str, list]: @@ -75,6 +76,8 @@ async def search_docs_hybrid( tuple[str, list]: The SQL query and parameters for the search. """ + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} if k < 1: raise HTTPException(status_code=400, detail="k must be >= 1") diff --git a/agents-api/agents_api/queries/docs/utils.py b/src/agents-api/agents_api/queries/docs/utils.py similarity index 96% rename from agents-api/agents_api/queries/docs/utils.py rename to src/agents-api/agents_api/queries/docs/utils.py index 43b0987e4..04e5f3687 100644 --- a/agents-api/agents_api/queries/docs/utils.py +++ b/src/agents-api/agents_api/queries/docs/utils.py @@ -40,7 +40,7 @@ def transform_to_doc_reference(d: dict) -> dict: def transform_doc(d: dict) -> dict: content = d["content"] - embeddings = d.get("embeddings") or [] + embeddings = d.get("embeddings") or None if embeddings: if isinstance(embeddings, str): diff --git a/agents-api/agents_api/queries/entries/__init__.py b/src/agents-api/agents_api/queries/entries/__init__.py similarity index 100% rename from agents-api/agents_api/queries/entries/__init__.py rename to src/agents-api/agents_api/queries/entries/__init__.py diff --git a/agents-api/agents_api/queries/entries/create_entries.py b/src/agents-api/agents_api/queries/entries/create_entries.py similarity index 100% rename from agents-api/agents_api/queries/entries/create_entries.py rename to src/agents-api/agents_api/queries/entries/create_entries.py diff --git a/agents-api/agents_api/queries/entries/delete_entries.py b/src/agents-api/agents_api/queries/entries/delete_entries.py similarity index 100% rename from agents-api/agents_api/queries/entries/delete_entries.py rename to src/agents-api/agents_api/queries/entries/delete_entries.py diff --git a/agents-api/agents_api/queries/entries/get_history.py b/src/agents-api/agents_api/queries/entries/get_history.py similarity index 91% rename from agents-api/agents_api/queries/entries/get_history.py rename to src/agents-api/agents_api/queries/entries/get_history.py index a9551c4b9..114262c57 100644 --- a/agents-api/agents_api/queries/entries/get_history.py +++ b/src/agents-api/agents_api/queries/entries/get_history.py @@ -80,7 +80,7 @@ async def get_history( *, developer_id: UUID, session_id: UUID, - allowed_sources: list[str] = ["api_request", "api_response"], + allowed_sources: list[str] | None = None, ) -> tuple[str, list] | tuple[str, list, str]: """ Get session history. @@ -94,6 +94,10 @@ async def get_history( tuple[str, list] | tuple[str, list, str]: SQL query and parameters for getting the history. """ + # AIDEV-NOTE: avoid mutable default args; initialize allowed_sources + allowed_sources = ( + allowed_sources if allowed_sources is not None else ["api_request", "api_response"] + ) return ( history_query, [session_id, allowed_sources, developer_id], diff --git a/agents-api/agents_api/queries/entries/list_entries.py b/src/agents-api/agents_api/queries/entries/list_entries.py similarity index 90% rename from agents-api/agents_api/queries/entries/list_entries.py rename to src/agents-api/agents_api/queries/entries/list_entries.py index 30f06db05..3d655c263 100644 --- a/agents-api/agents_api/queries/entries/list_entries.py +++ b/src/agents-api/agents_api/queries/entries/list_entries.py @@ -58,7 +58,7 @@ async def list_entries( *, developer_id: UUID, session_id: UUID, - allowed_sources: list[str] = ["api_request", "api_response"], + allowed_sources: list[str] | None = None, limit: Annotated[ int, Is[ @@ -72,7 +72,7 @@ async def list_entries( ] = 0, sort_by: Literal["created_at", "timestamp"] = "timestamp", direction: Literal["asc", "desc"] = "asc", - exclude_relations: list[str] = [], + exclude_relations: list[str] | None = None, search_window: timedelta = timedelta(weeks=4), ) -> list[tuple[str, list] | tuple[str, list, str]]: """List entries in a session. @@ -91,6 +91,11 @@ async def list_entries( tuple[str, list] | tuple[str, list, str]: SQL query and parameters for listing the entries. """ + # AIDEV-NOTE: avoid mutable default args; initialize lists + allowed_sources = ( + allowed_sources if allowed_sources is not None else ["api_request", "api_response"] + ) + exclude_relations = exclude_relations if exclude_relations is not None else [] query = list_entries_query.format( sort_by=sort_by, direction=direction, diff --git a/agents-api/agents_api/queries/executions/__init__.py b/src/agents-api/agents_api/queries/executions/__init__.py similarity index 83% rename from agents-api/agents_api/queries/executions/__init__.py rename to src/agents-api/agents_api/queries/executions/__init__.py index dd5efd23b..a9f7ed148 100644 --- a/agents-api/agents_api/queries/executions/__init__.py +++ b/src/agents-api/agents_api/queries/executions/__init__.py @@ -1,5 +1,3 @@ -# ruff: noqa: F401, F403, F405 - """ The `execution` module provides SQL query functions for managing executions in the TimescaleDB database. This includes operations for: @@ -15,6 +13,8 @@ from .create_execution_transition import create_execution_transition from .get_execution import get_execution from .get_execution_transition import get_execution_transition +from .list_execution_inputs_data import list_execution_inputs_data +from .list_execution_state_data import list_execution_state_data from .list_execution_transitions import list_execution_transitions from .list_executions import list_executions from .lookup_temporal_data import lookup_temporal_data @@ -26,6 +26,8 @@ "create_execution_transition", "get_execution", "get_execution_transition", + "list_execution_inputs_data", + "list_execution_state_data", "list_execution_transitions", "list_executions", "lookup_temporal_data", diff --git a/agents-api/agents_api/queries/executions/constants.py b/src/agents-api/agents_api/queries/executions/constants.py similarity index 100% rename from agents-api/agents_api/queries/executions/constants.py rename to src/agents-api/agents_api/queries/executions/constants.py diff --git a/agents-api/agents_api/queries/executions/count_executions.py b/src/agents-api/agents_api/queries/executions/count_executions.py similarity index 100% rename from agents-api/agents_api/queries/executions/count_executions.py rename to src/agents-api/agents_api/queries/executions/count_executions.py diff --git a/agents-api/agents_api/queries/executions/create_execution.py b/src/agents-api/agents_api/queries/executions/create_execution.py similarity index 100% rename from agents-api/agents_api/queries/executions/create_execution.py rename to src/agents-api/agents_api/queries/executions/create_execution.py diff --git a/agents-api/agents_api/queries/executions/create_execution_transition.py b/src/agents-api/agents_api/queries/executions/create_execution_transition.py similarity index 100% rename from agents-api/agents_api/queries/executions/create_execution_transition.py rename to src/agents-api/agents_api/queries/executions/create_execution_transition.py diff --git a/agents-api/agents_api/queries/executions/create_temporal_lookup.py b/src/agents-api/agents_api/queries/executions/create_temporal_lookup.py similarity index 100% rename from agents-api/agents_api/queries/executions/create_temporal_lookup.py rename to src/agents-api/agents_api/queries/executions/create_temporal_lookup.py diff --git a/agents-api/agents_api/queries/executions/get_execution.py b/src/agents-api/agents_api/queries/executions/get_execution.py similarity index 100% rename from agents-api/agents_api/queries/executions/get_execution.py rename to src/agents-api/agents_api/queries/executions/get_execution.py diff --git a/src/agents-api/agents_api/queries/executions/get_execution_status.py b/src/agents-api/agents_api/queries/executions/get_execution_status.py new file mode 100644 index 000000000..692142dc2 --- /dev/null +++ b/src/agents-api/agents_api/queries/executions/get_execution_status.py @@ -0,0 +1,53 @@ +from typing import Literal +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import ExecutionStatusEvent +from ...common.utils.db_exceptions import common_db_exceptions +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Query to get execution status, updated timestamp, and error for a specific execution_id +get_execution_status_query = """ +SELECT + execution_id, + status, + updated_at, + error, + transition_count, + metadata +FROM + latest_executions +WHERE + developer_id = $1 AND + execution_id = $2 +ORDER BY + updated_at DESC +LIMIT 1; +""" + + +@rewrap_exceptions(common_db_exceptions("execution", ["get_status"])) +@wrap_in_class(ExecutionStatusEvent, one=True) +@pg_query +@beartype +async def get_execution_status( + *, + developer_id: UUID, + execution_id: UUID, +) -> tuple[str, list, Literal["fetchrow"]]: + """ + Get the current status, updated_at, and error for the given execution_id. + + Parameters: + developer_id (UUID): The ID of the developer. + execution_id (UUID): The ID of the execution. + + Returns: + tuple[str, list, Literal["fetchrow"]]: SQL query and parameters for fetching execution status. + """ + return ( + get_execution_status_query, + [developer_id, execution_id], + "fetchrow", + ) diff --git a/agents-api/agents_api/queries/executions/get_execution_transition.py b/src/agents-api/agents_api/queries/executions/get_execution_transition.py similarity index 100% rename from agents-api/agents_api/queries/executions/get_execution_transition.py rename to src/agents-api/agents_api/queries/executions/get_execution_transition.py diff --git a/agents-api/agents_api/queries/executions/get_paused_execution_token.py b/src/agents-api/agents_api/queries/executions/get_paused_execution_token.py similarity index 100% rename from agents-api/agents_api/queries/executions/get_paused_execution_token.py rename to src/agents-api/agents_api/queries/executions/get_paused_execution_token.py diff --git a/agents-api/agents_api/queries/executions/get_temporal_workflow_data.py b/src/agents-api/agents_api/queries/executions/get_temporal_workflow_data.py similarity index 100% rename from agents-api/agents_api/queries/executions/get_temporal_workflow_data.py rename to src/agents-api/agents_api/queries/executions/get_temporal_workflow_data.py diff --git a/src/agents-api/agents_api/queries/executions/list_execution_inputs_data.py b/src/agents-api/agents_api/queries/executions/list_execution_inputs_data.py new file mode 100644 index 000000000..3f8cf018f --- /dev/null +++ b/src/agents-api/agents_api/queries/executions/list_execution_inputs_data.py @@ -0,0 +1,114 @@ +from datetime import timedelta +from typing import Literal +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import Transition +from ...common.utils.datetime import utcnow +from ...common.utils.db_exceptions import common_db_exceptions, partialclass +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Query to list execution input data +list_execution_inputs_query = """ +SELECT * FROM transitions +WHERE + execution_id = $1 + AND next_step IS NOT NULL + AND (current_step).scope_id = $7 + AND (next_step).scope_id = $7 + AND (current_step).workflow_name NOT SIMILAR TO '%\\[[0-9]+\\]%' + AND created_at >= $6 + AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1) +ORDER BY + CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST, + CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST +LIMIT $2 OFFSET $3; +""" + +# next is not null +# current.scope = next.scope +# (current_step).workflow NOT SIMILAR TO '%\\[[0-9]+\\]%' + + +def _transform(d): + current_step = d.pop("current_step") + next_step = d.pop("next_step", None) + + return { + "id": d["transition_id"], + "updated_at": utcnow(), + "current": { + "workflow": current_step[0], + "step": current_step[1], + "scope_id": current_step[2], + }, + "next": { + "workflow": next_step[0], + "step": next_step[1], + "scope_id": next_step[2], + } + if next_step is not None + else None, + "step_label": d["step_label"], + **d, + } + + +@rewrap_exceptions({ + asyncpg.InvalidRowCountInLimitClauseError: partialclass( + HTTPException, + status_code=400, + detail="Invalid limit clause", + ), + asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass( + HTTPException, + status_code=400, + detail="Invalid offset clause", + ), + **common_db_exceptions("transition", ["list"]), +}) +@wrap_in_class( + Transition, + transform=_transform, +) +@pg_query +@beartype +async def list_execution_inputs_data( + *, + execution_id: UUID, + limit: int = 100, + offset: int = 0, + sort_by: Literal["created_at"] = "created_at", + direction: Literal["asc", "desc"] = "desc", + scope_id: UUID, + search_window: timedelta = timedelta(weeks=2), +) -> tuple[str, list]: + """ + List execution transitions for a given execution. + + Parameters: + execution_id (UUID): The ID of the execution. + limit (int): The number of transitions to return. + offset (int): The number of transitions to skip. + sort_by (Literal["created_at"]): The field to sort by. + direction (Literal["asc", "desc"]): The direction to sort by. + scope_id (UUID | None): Filter transitions by scope_id in current_step. + + Returns: + tuple[str, list]: SQL query and parameters for listing execution transitions. + """ + + params = [ + str(execution_id), + limit, + offset, + sort_by, + direction, + utcnow() - search_window, + str(scope_id), + ] + + return (list_execution_inputs_query, params) diff --git a/src/agents-api/agents_api/queries/executions/list_execution_state_data.py b/src/agents-api/agents_api/queries/executions/list_execution_state_data.py new file mode 100644 index 000000000..6d3a4fed0 --- /dev/null +++ b/src/agents-api/agents_api/queries/executions/list_execution_state_data.py @@ -0,0 +1,112 @@ +from datetime import timedelta +from typing import Literal +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import Transition +from ...common.utils.datetime import utcnow +from ...common.utils.db_exceptions import common_db_exceptions, partialclass +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Query to list execution transitions +list_execution_state_query = """ +SELECT * FROM transitions +WHERE + execution_id = $1 + AND (current_step).scope_id = $7 + AND metadata->>'step_type' = 'SetStep' + AND created_at >= $6 + AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1) +ORDER BY + CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST, + CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST +LIMIT $2 OFFSET $3; +""" + +# next is not null +# current.scope = next.scope +# (current_step).workflow NOT SIMILAR TO '%\\[[0-9]+\\]%' + + +def _transform(d): + current_step = d.pop("current_step") + next_step = d.pop("next_step", None) + + return { + "id": d["transition_id"], + "updated_at": utcnow(), + "current": { + "workflow": current_step[0], + "step": current_step[1], + "scope_id": current_step[2], + }, + "next": { + "workflow": next_step[0], + "step": next_step[1], + "scope_id": next_step[2], + } + if next_step is not None + else None, + "step_label": d["step_label"], + **d, + } + + +@rewrap_exceptions({ + asyncpg.InvalidRowCountInLimitClauseError: partialclass( + HTTPException, + status_code=400, + detail="Invalid limit clause", + ), + asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass( + HTTPException, + status_code=400, + detail="Invalid offset clause", + ), + **common_db_exceptions("transition", ["list"]), +}) +@wrap_in_class( + Transition, + transform=_transform, +) +@pg_query +@beartype +async def list_execution_state_data( + *, + execution_id: UUID, + limit: int = 100, + offset: int = 0, + sort_by: Literal["created_at"] = "created_at", + direction: Literal["asc", "desc"] = "desc", + scope_id: UUID, + search_window: timedelta = timedelta(weeks=2), +) -> tuple[str, list]: + """ + List execution transitions for a given execution. + + Parameters: + execution_id (UUID): The ID of the execution. + limit (int): The number of transitions to return. + offset (int): The number of transitions to skip. + sort_by (Literal["created_at"]): The field to sort by. + direction (Literal["asc", "desc"]): The direction to sort by. + scope_id (UUID | None): Filter transitions by scope_id in current_step. + + Returns: + tuple[str, list]: SQL query and parameters for listing execution transitions. + """ + + params = [ + str(execution_id), + limit, + offset, + sort_by, + direction, + utcnow() - search_window, + str(scope_id), + ] + + return (list_execution_state_query, params) diff --git a/agents-api/agents_api/queries/executions/list_execution_transitions.py b/src/agents-api/agents_api/queries/executions/list_execution_transitions.py similarity index 100% rename from agents-api/agents_api/queries/executions/list_execution_transitions.py rename to src/agents-api/agents_api/queries/executions/list_execution_transitions.py diff --git a/agents-api/agents_api/queries/executions/list_executions.py b/src/agents-api/agents_api/queries/executions/list_executions.py similarity index 100% rename from agents-api/agents_api/queries/executions/list_executions.py rename to src/agents-api/agents_api/queries/executions/list_executions.py diff --git a/agents-api/agents_api/queries/executions/lookup_temporal_data.py b/src/agents-api/agents_api/queries/executions/lookup_temporal_data.py similarity index 100% rename from agents-api/agents_api/queries/executions/lookup_temporal_data.py rename to src/agents-api/agents_api/queries/executions/lookup_temporal_data.py diff --git a/agents-api/agents_api/queries/executions/prepare_execution_input.py b/src/agents-api/agents_api/queries/executions/prepare_execution_input.py similarity index 100% rename from agents-api/agents_api/queries/executions/prepare_execution_input.py rename to src/agents-api/agents_api/queries/executions/prepare_execution_input.py diff --git a/agents-api/agents_api/queries/files/__init__.py b/src/agents-api/agents_api/queries/files/__init__.py similarity index 100% rename from agents-api/agents_api/queries/files/__init__.py rename to src/agents-api/agents_api/queries/files/__init__.py diff --git a/agents-api/agents_api/queries/files/create_file.py b/src/agents-api/agents_api/queries/files/create_file.py similarity index 58% rename from agents-api/agents_api/queries/files/create_file.py rename to src/agents-api/agents_api/queries/files/create_file.py index 1749f0e07..9cc744ec4 100644 --- a/agents-api/agents_api/queries/files/create_file.py +++ b/src/agents-api/agents_api/queries/files/create_file.py @@ -8,35 +8,63 @@ from typing import Literal from uuid import UUID +import asyncpg from beartype import beartype +from fastapi import HTTPException from uuid_extensions import uuid7 from ...autogen.openapi_model import CreateFileRequest, File from ...common.utils.db_exceptions import common_db_exceptions from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists from ..utils import pg_query, rewrap_exceptions, wrap_in_class # Create file file_query = """ -INSERT INTO files ( - developer_id, - file_id, - name, - description, - mime_type, - size, - hash -) -VALUES ( - $1, -- developer_id - $2, -- file_id - $3, -- name - $4, -- description - $5, -- mime_type - $6, -- size - $7 -- hash +WITH new_file AS ( + INSERT INTO files ( + developer_id, + file_id, + name, + description, + mime_type, + size, + hash + ) + VALUES ( + $1, -- developer_id + $2, -- file_id + $3, -- name + $4, -- description + $5, -- mime_type + $6, -- size + $7 -- hash + ) + RETURNING * +), proj AS ( + -- Find project ID by canonical name + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $8 +), project_association AS ( + -- Insert into project_files junction table + INSERT INTO project_files ( + project_id, + developer_id, + file_id + ) + SELECT + p.project_id, + $1, + $2 + FROM proj p + WHERE p.project_id IS NOT NULL + RETURNING 1 ) -RETURNING *; +SELECT + f.*, + $8 AS project +FROM new_file f; """ # Replace both user_file and agent_file queries with a single file_owner query @@ -51,7 +79,9 @@ VALUES ($1, $2, $3, $4) RETURNING file_id ) -SELECT f.* +SELECT + f.*, + $5 AS project FROM inserted_owner io JOIN files f ON f.file_id = io.file_id; """ @@ -72,7 +102,7 @@ @query_metrics("create_file") @pg_query @beartype -async def create_file( +async def create_file_query( *, developer_id: UUID, file_id: UUID | None = None, @@ -109,6 +139,7 @@ async def create_file( data.mime_type, size, hash_bytes, + data.project or "default", ] queries = [] @@ -118,7 +149,41 @@ async def create_file( # Then create the association if owner info provided if owner_type and owner_id: - assoc_params = [developer_id, file_id, owner_type, owner_id] + assoc_params = [developer_id, file_id, owner_type, owner_id, data.project or "default"] queries.append((file_owner_query, assoc_params)) return queries + + +async def create_file( + *, + developer_id: UUID, + file_id: UUID | None = None, + data: CreateFileRequest, + owner_type: Literal["user", "agent"] | None = None, + owner_id: UUID | None = None, + connection_pool: asyncpg.Pool | None = None, +) -> File: + # Get project (default if not specified) + project_canonical_name = data.project or "default" + + # Check if the project exists + project_exists_result = await project_exists( + developer_id, + project_canonical_name, + connection_pool=connection_pool, + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await create_file_query( + developer_id=developer_id, + file_id=file_id, + data=data, + owner_type=owner_type, + owner_id=owner_id, + connection_pool=connection_pool, + ) diff --git a/agents-api/agents_api/queries/files/delete_file.py b/src/agents-api/agents_api/queries/files/delete_file.py similarity index 100% rename from agents-api/agents_api/queries/files/delete_file.py rename to src/agents-api/agents_api/queries/files/delete_file.py diff --git a/agents-api/agents_api/queries/files/get_file.py b/src/agents-api/agents_api/queries/files/get_file.py similarity index 90% rename from agents-api/agents_api/queries/files/get_file.py rename to src/agents-api/agents_api/queries/files/get_file.py index a8474716c..8b15c9a32 100644 --- a/agents-api/agents_api/queries/files/get_file.py +++ b/src/agents-api/agents_api/queries/files/get_file.py @@ -14,8 +14,12 @@ # Define the raw SQL query file_query = """ -SELECT f.* +SELECT + f.*, + p.canonical_name AS project FROM files f +LEFT JOIN project_files pf ON f.developer_id = pf.developer_id AND f.file_id = pf.file_id +LEFT JOIN projects p ON pf.project_id = p.project_id LEFT JOIN file_owners fo ON f.developer_id = fo.developer_id AND f.file_id = fo.file_id WHERE f.developer_id = $1 AND f.file_id = $2 diff --git a/agents-api/agents_api/queries/files/list_files.py b/src/agents-api/agents_api/queries/files/list_files.py similarity index 73% rename from agents-api/agents_api/queries/files/list_files.py rename to src/agents-api/agents_api/queries/files/list_files.py index ea960012f..7983d5964 100644 --- a/agents-api/agents_api/queries/files/list_files.py +++ b/src/agents-api/agents_api/queries/files/list_files.py @@ -15,8 +15,12 @@ # Base query for listing files base_files_query = """ -SELECT f.* +SELECT + f.*, + p.canonical_name AS project FROM files f +LEFT JOIN project_files pf ON f.developer_id = pf.developer_id AND f.file_id = pf.file_id +LEFT JOIN projects p ON pf.project_id = p.project_id LEFT JOIN file_owners fo ON f.developer_id = fo.developer_id AND f.file_id = fo.file_id WHERE f.developer_id = $1 """ @@ -40,6 +44,7 @@ async def list_files( developer_id: UUID, owner_id: UUID | None = None, owner_type: Literal["user", "agent"] | None = None, + project: str | None = None, limit: Annotated[ int, Is[ @@ -55,28 +60,27 @@ async def list_files( direction: Literal["asc", "desc"] = "desc", ) -> tuple[str, list]: """ - Lists files with optional owner filtering, pagination, and sorting. + Lists files with optional owner and project filtering, pagination, and sorting. """ - # Validate parameters - # if direction.lower() not in ["asc", "desc"]: - # raise HTTPException(status_code=400, detail="Invalid sort direction") - - # if sort_by not in ["created_at", "updated_at"]: - # raise HTTPException(status_code=400, detail="Invalid sort field") - # Start with the base query query = base_files_query params = [developer_id] + param_index = 2 # Add owner filtering if owner_type and owner_id: - query += " AND fo.owner_type = $2 AND fo.owner_id = $3" + query += f" AND fo.owner_type = ${param_index} AND fo.owner_id = ${param_index + 1}" params.extend([owner_type, owner_id]) + param_index += 2 + + # Add project filtering + if project: + query += f" AND p.canonical_name = ${param_index}" + params.append(project) + param_index += 1 # Add sorting and pagination - query += ( - f" ORDER BY {sort_by} {direction} LIMIT ${len(params) + 1} OFFSET ${len(params) + 2}" - ) + query += f" ORDER BY f.{sort_by} {direction} LIMIT ${param_index} OFFSET ${param_index + 1}" params.extend([limit, offset]) return query, params diff --git a/src/agents-api/agents_api/queries/projects/__init__.py b/src/agents-api/agents_api/queries/projects/__init__.py new file mode 100644 index 000000000..2b51cd430 --- /dev/null +++ b/src/agents-api/agents_api/queries/projects/__init__.py @@ -0,0 +1,19 @@ +""" +The `project` module within the `queries` package provides a comprehensive suite of SQL query functions for managing projects in the PostgreSQL database. This includes: + +- Creating new projects +- Updating existing projects +- Retrieving details about specific projects +- Listing projects with filtering and pagination +- Deleting projects from the database + +Each function in this module constructs and returns SQL queries along with their parameters for database operations. +""" + +from .create_project import create_project +from .list_projects import list_projects + +__all__ = [ + "create_project", + "list_projects", +] diff --git a/src/agents-api/agents_api/queries/projects/create_project.py b/src/agents-api/agents_api/queries/projects/create_project.py new file mode 100644 index 000000000..bc31abb41 --- /dev/null +++ b/src/agents-api/agents_api/queries/projects/create_project.py @@ -0,0 +1,79 @@ +""" +This module contains the functionality for creating projects in the PostgreSQL database. +It includes functions to construct and execute SQL queries for inserting new project records. +""" + +from uuid import UUID + +from beartype import beartype +from uuid_extensions import uuid7 + +from ...autogen.openapi_model import CreateProjectRequest, Project +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query +project_query = """ +INSERT INTO projects ( + developer_id, + project_id, + canonical_name, + name, + metadata +) +VALUES ( + $1, + $2, + $3, + $4, + $5 +) +RETURNING *; +""" + + +@rewrap_exceptions(common_db_exceptions("project", ["create"])) +@wrap_in_class( + Project, + one=True, + transform=lambda d: {**d, "id": d["project_id"]}, +) +@query_metrics("create_project") +@pg_query +@beartype +async def create_project( + *, + developer_id: UUID, + project_id: UUID | None = None, + data: CreateProjectRequest, +) -> tuple[str, list]: + """ + Constructs and executes a SQL query to create a new project in the database. + + Parameters: + project_id (UUID | None): The unique identifier for the project. + developer_id (UUID): The unique identifier for the developer creating the project. + data (CreateProjectRequest): The data for the new project. + + Returns: + tuple[str, dict]: SQL query and parameters for creating the project. + """ + project_id = project_id or uuid7() + + # Set default values + data.metadata = data.metadata or {} + data.canonical_name = data.canonical_name or generate_canonical_name() + + params = [ + developer_id, + project_id, + data.canonical_name, + data.name, + data.metadata, + ] + + return ( + project_query, + params, + ) diff --git a/agents-api/agents_api/queries/agents/list_agents.py b/src/agents-api/agents_api/queries/projects/list_projects.py similarity index 71% rename from agents-api/agents_api/queries/agents/list_agents.py rename to src/agents-api/agents_api/queries/projects/list_projects.py index 69049a662..0413a1ae1 100644 --- a/agents-api/agents_api/queries/agents/list_agents.py +++ b/src/agents-api/agents_api/queries/projects/list_projects.py @@ -1,6 +1,6 @@ """ -This module contains the functionality for listing agents from the PostgreSQL database. -It constructs and executes SQL queries to fetch a list of agents based on developer ID with pagination. +This module contains the functionality for listing projects from the PostgreSQL database. +It constructs and executes SQL queries to fetch a list of projects based on developer ID with pagination. """ from typing import Any, Literal @@ -8,7 +8,7 @@ from beartype import beartype -from ...autogen.openapi_model import Agent +from ...autogen.openapi_model import Project from ...common.utils.db_exceptions import common_db_exceptions from ..utils import ( pg_query, @@ -19,19 +19,14 @@ # Define the raw SQL query raw_query = """ SELECT - agent_id, + project_id, developer_id, name, canonical_name, - about, - instructions, - model, metadata, - default_settings, - default_system_template, created_at, updated_at -FROM agents +FROM projects WHERE developer_id = $1 {metadata_filter_query} ORDER BY CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST, @@ -42,24 +37,24 @@ """ -@rewrap_exceptions(common_db_exceptions("agent", ["list"])) +@rewrap_exceptions(common_db_exceptions("project", ["list"])) @wrap_in_class( - Agent, - transform=lambda d: {**d, "id": d["agent_id"]}, + Project, + transform=lambda d: {**d, "id": d["project_id"]}, ) @pg_query @beartype -async def list_agents( +async def list_projects( *, developer_id: UUID, limit: int = 100, offset: int = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, ) -> tuple[str, list]: """ - Constructs query to list agents for a developer with pagination. + Constructs query to list projects for a developer with pagination. Args: developer_id: UUID of the developer @@ -73,6 +68,8 @@ async def list_agents( Tuple of (query, params) """ + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} # Initialize parameters params = [ developer_id, @@ -83,7 +80,7 @@ async def list_agents( ] # Handle metadata filter differently - using JSONB containment - agent_query = raw_query.format( + project_query = raw_query.format( metadata_filter_query="AND metadata @> $6::jsonb" if metadata_filter else "", ) @@ -92,6 +89,6 @@ async def list_agents( params.append(metadata_filter) return ( - agent_query, + project_query, params, ) diff --git a/src/agents-api/agents_api/queries/projects/project_exists.py b/src/agents-api/agents_api/queries/projects/project_exists.py new file mode 100644 index 000000000..289c0eba1 --- /dev/null +++ b/src/agents-api/agents_api/queries/projects/project_exists.py @@ -0,0 +1,32 @@ +""" +This module contains the functionality for creating agents in the PostgreSQL database. +It includes functions to construct and execute SQL queries for inserting new agent records. +""" + +from uuid import UUID + +from beartype import beartype + +from ...common.utils.db_exceptions import common_db_exceptions +from ..utils import pg_query, rewrap_exceptions + +# Define the raw SQL query for checking project existence +check_project_query = """ +SELECT + CASE + WHEN EXISTS ( + SELECT 1 FROM projects + WHERE developer_id = $1 AND canonical_name = $2 + ) THEN + TRUE + ELSE + FALSE + END as project_exists; +""" + + +@rewrap_exceptions(common_db_exceptions("project", ["exists"])) +@pg_query +@beartype +async def project_exists(developer_id: UUID, canonical_name: str) -> tuple[str, list]: + return (check_project_query, [developer_id, canonical_name]) diff --git a/src/agents-api/agents_api/queries/secrets/__init__.py b/src/agents-api/agents_api/queries/secrets/__init__.py new file mode 100644 index 000000000..5249e156d --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/__init__.py @@ -0,0 +1,15 @@ +"""Query functions for secrets.""" + +from .create import create_secret +from .delete import delete_secret +from .get_by_name import get_secret_by_name +from .list import list_secrets +from .update import update_secret + +__all__ = [ + "create_secret", + "delete_secret", + "get_secret_by_name", + "list_secrets", + "update_secret", +] diff --git a/src/agents-api/agents_api/queries/secrets/create.py b/src/agents-api/agents_api/queries/secrets/create.py new file mode 100644 index 000000000..a4d5d80d6 --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/create.py @@ -0,0 +1,74 @@ +"""Query functions for creating secrets.""" + +from typing import Any +from uuid import UUID + +from beartype import beartype +from uuid_extensions import uuid7 + +from agents_api.autogen.openapi_model import Secret + +from ...common.utils.db_exceptions import common_db_exceptions +from ...env import secrets_master_key +from ...metrics.counters import query_metrics +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +query = """ +INSERT INTO secrets ( + secret_id, developer_id, name, description, value_encrypted, metadata +) +VALUES ( + $1, $2, $3, $4, + (SELECT encrypt_secret($5::text, $6::text)), + $7 +) +RETURNING *; +""" + + +@rewrap_exceptions(common_db_exceptions("secret", ["create"])) +@wrap_in_class( + Secret, + one=True, + transform=lambda d: {**d, "id": d["secret_id"], "value": "ENCRYPTED"}, +) +@query_metrics("create_secret") +@pg_query +@beartype +async def create_secret( + *, + developer_id: UUID, + name: str, + value: str, + secret_id: UUID | None = None, + description: str | None = None, + metadata: dict[str, Any] | None = None, +) -> tuple[str, list]: + """ + Constructs and executes a SQL query to create a new secret in the database. + + Parameters: + developer_id (UUID): The unique identifier for the developer creating the secret. + secret_id (UUID | None): The unique identifier for the secret. + name (str): The name of the secret. + value (str): The value of the secret. + description (str | None): The description of the secret. + metadata (dict[str, Any] | None): Additional metadata for the secret. + + Returns: + tuple[str, list]: SQL query and parameters for creating the secret. + """ + secret_id = secret_id or uuid7() + + return ( + query, + [ + secret_id, + developer_id, + name, + description, + value, + secrets_master_key, + metadata, + ], + ) diff --git a/src/agents-api/agents_api/queries/secrets/delete.py b/src/agents-api/agents_api/queries/secrets/delete.py new file mode 100644 index 000000000..1dfddc504 --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/delete.py @@ -0,0 +1,51 @@ +"""Query functions for deleting secrets.""" + +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import ResourceDeletedResponse +from ...common.utils.datetime import utcnow +from ...common.utils.db_exceptions import common_db_exceptions +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +query = """ + DELETE FROM secrets + WHERE secret_id = $1 + AND developer_id = $2 + RETURNING *; +""" + + +@rewrap_exceptions(common_db_exceptions("secret", ["delete"])) +@wrap_in_class( + ResourceDeletedResponse, + one=True, + transform=lambda d: { + "id": d["secret_id"], + "deleted_at": utcnow(), + }, +) +@pg_query +@beartype +async def delete_secret(*, secret_id: UUID, developer_id: UUID) -> tuple[str, list]: + """Delete a secret. + + Args: + secret_id: ID of the secret to delete + developer_id: ID of the developer who owns the secret + + Returns: + ResourceDeletedResponse: Information about the deleted secret + + Raises: + NotFoundError: If the secret does not exist + """ + + return ( + query, + [ + secret_id, + developer_id, + ], + ) diff --git a/src/agents-api/agents_api/queries/secrets/get_by_name.py b/src/agents-api/agents_api/queries/secrets/get_by_name.py new file mode 100644 index 000000000..3bdfef51b --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/get_by_name.py @@ -0,0 +1,53 @@ +"""Query functions for listing secrets.""" + +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import Secret +from ...common.utils.db_exceptions import common_db_exceptions +from ...env import secrets_master_key +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +query = """ +SELECT + secret_id, developer_id, name, description, + created_at, updated_at, metadata, + CASE WHEN $4 = True THEN decrypt_secret(value_encrypted, $3) ELSE 'ENCRYPTED' END as value +FROM secrets +WHERE ( + developer_id = $1 AND + name = $2 +) +LIMIT 1; +""" + + +# TODO: handle HTTPException: 404: No secret found during get_by_name, shouldn't be an error +@wrap_in_class( + Secret, + maybe_one=True, + transform=lambda d: {**d, "id": d["secret_id"]}, +) +@pg_query +@beartype +async def get_secret_by_name_query( + *, + developer_id: UUID, + name: str, + decrypt: bool = False, +) -> tuple[str, list]: + return ( + query, + [ + developer_id, + name, + secrets_master_key, + decrypt, + ], + ) + + +get_secret_by_name = rewrap_exceptions(common_db_exceptions("secret", ["get_by_name"]))( + get_secret_by_name_query +) diff --git a/src/agents-api/agents_api/queries/secrets/list.py b/src/agents-api/agents_api/queries/secrets/list.py new file mode 100644 index 000000000..ea4920f4c --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/list.py @@ -0,0 +1,52 @@ +"""Query functions for listing secrets.""" + +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import Secret +from ...common.utils.db_exceptions import common_db_exceptions +from ...env import secrets_master_key +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +query = """ +SELECT + secret_id, developer_id, name, description, + created_at, updated_at, metadata, + CASE WHEN $5 = True THEN decrypt_secret(value_encrypted, $4) ELSE 'ENCRYPTED' END as value +FROM secrets +WHERE ( + developer_id = $1 +) +ORDER BY created_at DESC +LIMIT $2 +OFFSET $3 +""" + + +@wrap_in_class( + Secret, + transform=lambda d: {**d, "id": d["secret_id"]}, +) +@pg_query +@beartype +async def list_secrets_query( + *, + developer_id: UUID, + limit: int = 100, + offset: int = 0, + decrypt: bool = False, +) -> tuple[str, list]: + return ( + query, + [ + developer_id, + limit, + offset, + secrets_master_key, + decrypt, + ], + ) + + +list_secrets = rewrap_exceptions(common_db_exceptions("secret", ["list"]))(list_secrets_query) diff --git a/src/agents-api/agents_api/queries/secrets/update.py b/src/agents-api/agents_api/queries/secrets/update.py new file mode 100644 index 000000000..2eb1f82e4 --- /dev/null +++ b/src/agents-api/agents_api/queries/secrets/update.py @@ -0,0 +1,59 @@ +"""Query functions for updating secrets.""" + +from typing import Any +from uuid import UUID + +from beartype import beartype + +from ...autogen.openapi_model import Secret +from ...common.utils.db_exceptions import common_db_exceptions +from ...env import secrets_master_key +from ...metrics.counters import query_metrics +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +query = """ + UPDATE secrets + SET updated_at = NOW(), + name = COALESCE($3, name), + description = COALESCE($4, description), + metadata = COALESCE($5, metadata), + value_encrypted = CASE + WHEN $6::text IS NOT NULL THEN encrypt_secret($6::text, $7) + ELSE value_encrypted + END + WHERE secret_id = $1 + AND developer_id = $2 + RETURNING *; +""" + + +@rewrap_exceptions(common_db_exceptions("secret", ["update"])) +@wrap_in_class( + Secret, + one=True, + transform=lambda d: {**d, "id": d["secret_id"], "value": "ENCRYPTED"}, +) +@query_metrics("update_secret") +@pg_query +@beartype +async def update_secret( + *, + secret_id: UUID, + developer_id: UUID, + name: str | None = None, + description: str | None = None, + metadata: dict[str, Any] | None = None, + value: str | None = None, +) -> tuple[str, list]: + return ( + query, + [ + secret_id, + developer_id, + name, + description, + metadata, + value, + secrets_master_key, + ], + ) diff --git a/agents-api/agents_api/queries/sessions/__init__.py b/src/agents-api/agents_api/queries/sessions/__init__.py similarity index 100% rename from agents-api/agents_api/queries/sessions/__init__.py rename to src/agents-api/agents_api/queries/sessions/__init__.py diff --git a/agents-api/agents_api/queries/sessions/count_sessions.py b/src/agents-api/agents_api/queries/sessions/count_sessions.py similarity index 85% rename from agents-api/agents_api/queries/sessions/count_sessions.py rename to src/agents-api/agents_api/queries/sessions/count_sessions.py index 73df54fce..91ba26a90 100644 --- a/agents-api/agents_api/queries/sessions/count_sessions.py +++ b/src/agents-api/agents_api/queries/sessions/count_sessions.py @@ -1,4 +1,5 @@ -"""This module contains functions for querying session data from the PostgreSQL database.""" +"""Query builder for counting sessions belonging to a specific developer.""" +# AIDEV-NOTE: Returns a single integer representing the number of sessions. from uuid import UUID diff --git a/agents-api/agents_api/queries/sessions/create_or_update_session.py b/src/agents-api/agents_api/queries/sessions/create_or_update_session.py similarity index 100% rename from agents-api/agents_api/queries/sessions/create_or_update_session.py rename to src/agents-api/agents_api/queries/sessions/create_or_update_session.py diff --git a/agents-api/agents_api/queries/sessions/create_session.py b/src/agents-api/agents_api/queries/sessions/create_session.py similarity index 95% rename from agents-api/agents_api/queries/sessions/create_session.py rename to src/agents-api/agents_api/queries/sessions/create_session.py index 0bdab77eb..8a1d17caa 100644 --- a/agents-api/agents_api/queries/sessions/create_session.py +++ b/src/agents-api/agents_api/queries/sessions/create_session.py @@ -1,3 +1,6 @@ +"""Database query to create a new chat session for a developer.""" +# AIDEV-NOTE: Inserts a new session row and returns it with generated ID. + from uuid import UUID from beartype import beartype diff --git a/agents-api/agents_api/queries/sessions/delete_session.py b/src/agents-api/agents_api/queries/sessions/delete_session.py similarity index 100% rename from agents-api/agents_api/queries/sessions/delete_session.py rename to src/agents-api/agents_api/queries/sessions/delete_session.py diff --git a/agents-api/agents_api/queries/sessions/get_session.py b/src/agents-api/agents_api/queries/sessions/get_session.py similarity index 100% rename from agents-api/agents_api/queries/sessions/get_session.py rename to src/agents-api/agents_api/queries/sessions/get_session.py diff --git a/agents-api/agents_api/queries/sessions/list_sessions.py b/src/agents-api/agents_api/queries/sessions/list_sessions.py similarity index 93% rename from agents-api/agents_api/queries/sessions/list_sessions.py rename to src/agents-api/agents_api/queries/sessions/list_sessions.py index f5e63bbbf..c15530734 100644 --- a/agents-api/agents_api/queries/sessions/list_sessions.py +++ b/src/agents-api/agents_api/queries/sessions/list_sessions.py @@ -66,7 +66,7 @@ async def list_sessions( offset: int = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, ) -> tuple[str, list]: """ Lists sessions from the PostgreSQL database based on the provided filters. @@ -82,6 +82,8 @@ async def list_sessions( Returns: tuple[str, list]: SQL query and parameters """ + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} return ( session_query, [ diff --git a/agents-api/agents_api/queries/sessions/patch_session.py b/src/agents-api/agents_api/queries/sessions/patch_session.py similarity index 100% rename from agents-api/agents_api/queries/sessions/patch_session.py rename to src/agents-api/agents_api/queries/sessions/patch_session.py diff --git a/agents-api/agents_api/queries/sessions/update_session.py b/src/agents-api/agents_api/queries/sessions/update_session.py similarity index 100% rename from agents-api/agents_api/queries/sessions/update_session.py rename to src/agents-api/agents_api/queries/sessions/update_session.py diff --git a/agents-api/agents_api/queries/tasks/__init__.py b/src/agents-api/agents_api/queries/tasks/__init__.py similarity index 100% rename from agents-api/agents_api/queries/tasks/__init__.py rename to src/agents-api/agents_api/queries/tasks/__init__.py diff --git a/agents-api/agents_api/queries/tasks/create_or_update_task.py b/src/agents-api/agents_api/queries/tasks/create_or_update_task.py similarity index 100% rename from agents-api/agents_api/queries/tasks/create_or_update_task.py rename to src/agents-api/agents_api/queries/tasks/create_or_update_task.py diff --git a/agents-api/agents_api/queries/tasks/create_task.py b/src/agents-api/agents_api/queries/tasks/create_task.py similarity index 100% rename from agents-api/agents_api/queries/tasks/create_task.py rename to src/agents-api/agents_api/queries/tasks/create_task.py diff --git a/agents-api/agents_api/queries/tasks/delete_task.py b/src/agents-api/agents_api/queries/tasks/delete_task.py similarity index 100% rename from agents-api/agents_api/queries/tasks/delete_task.py rename to src/agents-api/agents_api/queries/tasks/delete_task.py diff --git a/agents-api/agents_api/queries/tasks/get_task.py b/src/agents-api/agents_api/queries/tasks/get_task.py similarity index 86% rename from agents-api/agents_api/queries/tasks/get_task.py rename to src/agents-api/agents_api/queries/tasks/get_task.py index 0a94b3848..928aa0f05 100644 --- a/agents-api/agents_api/queries/tasks/get_task.py +++ b/src/agents-api/agents_api/queries/tasks/get_task.py @@ -7,6 +7,7 @@ from ...common.utils.db_exceptions import common_db_exceptions from ..utils import pg_query, rewrap_exceptions, wrap_in_class +# AIDEV-NOTE: Tools aggregated in subquery to avoid cartesian product; filtered by updated_at to exclude older versions # Define the raw SQL query for getting a task get_task_query = """ SELECT @@ -28,15 +29,19 @@ '[]'::jsonb ) as workflows, COALESCE( - jsonb_agg(to_jsonb(tl)) FILTER (WHERE tl.tool_id IS NOT NULL), + ( + SELECT jsonb_agg(to_jsonb(tl)) + FROM tools tl + WHERE tl.developer_id = t.developer_id + AND tl.task_id = t.task_id + AND tl.updated_at >= t.updated_at + ), '[]'::jsonb ) as tools FROM tasks t LEFT JOIN workflows w ON t.developer_id = w.developer_id AND t.task_id = w.task_id AND t.version = w.version -LEFT JOIN - tools tl ON t.developer_id = tl.developer_id AND t.task_id = tl.task_id WHERE t.developer_id = $1 AND t.task_id = $2 AND t.version = ( diff --git a/agents-api/agents_api/queries/tasks/list_tasks.py b/src/agents-api/agents_api/queries/tasks/list_tasks.py similarity index 94% rename from agents-api/agents_api/queries/tasks/list_tasks.py rename to src/agents-api/agents_api/queries/tasks/list_tasks.py index 39dfee718..86d73c068 100644 --- a/agents-api/agents_api/queries/tasks/list_tasks.py +++ b/src/agents-api/agents_api/queries/tasks/list_tasks.py @@ -62,7 +62,7 @@ async def list_tasks( ] = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", - metadata_filter: dict[str, Any] = {}, + metadata_filter: dict[str, Any] | None = None, ) -> tuple[str, list]: """ Retrieves all tasks for a given developer with pagination and sorting. @@ -85,6 +85,8 @@ async def list_tasks( # if direction.lower() not in ["asc", "desc"]: # raise HTTPException(status_code=400, detail="Invalid sort direction") + # AIDEV-NOTE: avoid mutable default; initialize metadata_filter + metadata_filter = metadata_filter if metadata_filter is not None else {} # Format query with metadata filter if needed query = list_tasks_query.format( metadata_filter_query="AND metadata @> $7::jsonb" if metadata_filter else "", diff --git a/agents-api/agents_api/queries/tasks/patch_task.py b/src/agents-api/agents_api/queries/tasks/patch_task.py similarity index 100% rename from agents-api/agents_api/queries/tasks/patch_task.py rename to src/agents-api/agents_api/queries/tasks/patch_task.py diff --git a/agents-api/agents_api/queries/tasks/update_task.py b/src/agents-api/agents_api/queries/tasks/update_task.py similarity index 100% rename from agents-api/agents_api/queries/tasks/update_task.py rename to src/agents-api/agents_api/queries/tasks/update_task.py diff --git a/agents-api/agents_api/queries/tools/__init__.py b/src/agents-api/agents_api/queries/tools/__init__.py similarity index 97% rename from agents-api/agents_api/queries/tools/__init__.py rename to src/agents-api/agents_api/queries/tools/__init__.py index 7afa6d64a..15266f361 100644 --- a/agents-api/agents_api/queries/tools/__init__.py +++ b/src/agents-api/agents_api/queries/tools/__init__.py @@ -9,8 +9,6 @@ This module is crucial for the effective management and utilization of tools in the application, ensuring that tools can be created, managed, and utilized efficiently. """ -# ruff: noqa: F401, F403, F405 - from .create_tools import create_tools from .delete_tool import delete_tool from .get_tool import get_tool diff --git a/agents-api/agents_api/queries/tools/create_tools.py b/src/agents-api/agents_api/queries/tools/create_tools.py similarity index 98% rename from agents-api/agents_api/queries/tools/create_tools.py rename to src/agents-api/agents_api/queries/tools/create_tools.py index 3e4b93af2..47968f768 100644 --- a/agents-api/agents_api/queries/tools/create_tools.py +++ b/src/agents-api/agents_api/queries/tools/create_tools.py @@ -78,7 +78,7 @@ async def create_tools( str(uuid7()), tool.type, tool.name, - getattr(tool, tool.type) and getattr(tool, tool.type).model_dump(), + getattr(tool, tool.type) and getattr(tool, tool.type).model_dump(mode="json"), tool.description if hasattr(tool, "description") else None, ] for tool in data diff --git a/agents-api/agents_api/queries/tools/delete_tool.py b/src/agents-api/agents_api/queries/tools/delete_tool.py similarity index 100% rename from agents-api/agents_api/queries/tools/delete_tool.py rename to src/agents-api/agents_api/queries/tools/delete_tool.py diff --git a/agents-api/agents_api/queries/tools/get_tool.py b/src/agents-api/agents_api/queries/tools/get_tool.py similarity index 100% rename from agents-api/agents_api/queries/tools/get_tool.py rename to src/agents-api/agents_api/queries/tools/get_tool.py diff --git a/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py b/src/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py similarity index 94% rename from agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py rename to src/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py index 635cd4164..74fee2f06 100644 --- a/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py +++ b/src/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py @@ -43,7 +43,7 @@ CASE WHEN $3 = 'x-integrations-args' then metadata->'x-integrations-args' WHEN $3 = 'x-api_call-args' then metadata->'x-api_call-args' WHEN $3 = 'x-integrations-setup' then metadata->'x-integrations-setup' - WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS tasks_md + WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS sessions_md FROM sessions WHERE session_id = $2 AND developer_id = $4 LIMIT 1 ) AS sessions_md""" @@ -83,3 +83,6 @@ async def get_tool_args_from_metadata( case (_, _): msg = "Either session_id or task_id must be provided" raise ValueError(msg) + # AIDEV-NOTE: exhaustive match; this point should be unreachable + msg = "Unreachable code in get_tool_args_from_metadata" + raise RuntimeError(msg) diff --git a/agents-api/agents_api/queries/tools/list_tools.py b/src/agents-api/agents_api/queries/tools/list_tools.py similarity index 100% rename from agents-api/agents_api/queries/tools/list_tools.py rename to src/agents-api/agents_api/queries/tools/list_tools.py diff --git a/agents-api/agents_api/queries/tools/patch_tool.py b/src/agents-api/agents_api/queries/tools/patch_tool.py similarity index 100% rename from agents-api/agents_api/queries/tools/patch_tool.py rename to src/agents-api/agents_api/queries/tools/patch_tool.py diff --git a/agents-api/agents_api/queries/tools/update_tool.py b/src/agents-api/agents_api/queries/tools/update_tool.py similarity index 100% rename from agents-api/agents_api/queries/tools/update_tool.py rename to src/agents-api/agents_api/queries/tools/update_tool.py diff --git a/agents-api/agents_api/queries/usage/__init__.py b/src/agents-api/agents_api/queries/usage/__init__.py similarity index 89% rename from agents-api/agents_api/queries/usage/__init__.py rename to src/agents-api/agents_api/queries/usage/__init__.py index 894c26e2c..fc6c4326c 100644 --- a/agents-api/agents_api/queries/usage/__init__.py +++ b/src/agents-api/agents_api/queries/usage/__init__.py @@ -11,10 +11,10 @@ related to usage tracking and reporting. """ -# ruff: noqa: F401, F403, F405 - from .create_usage_record import create_usage_record +from .get_user_cost import get_usage_cost __all__ = [ "create_usage_record", + "get_usage_cost", ] diff --git a/agents-api/agents_api/queries/usage/create_usage_record.py b/src/agents-api/agents_api/queries/usage/create_usage_record.py similarity index 62% rename from agents-api/agents_api/queries/usage/create_usage_record.py rename to src/agents-api/agents_api/queries/usage/create_usage_record.py index 9e3ac6e26..eb5e92ca0 100644 --- a/agents-api/agents_api/queries/usage/create_usage_record.py +++ b/src/agents-api/agents_api/queries/usage/create_usage_record.py @@ -7,9 +7,10 @@ from uuid import UUID from beartype import beartype -from litellm import cost_per_token +from litellm import cost_per_token, model_cost from ...common.utils.db_exceptions import common_db_exceptions +from ...env import llama_model_multiplier from ...metrics.counters import query_metrics from ..utils import pg_query, rewrap_exceptions @@ -57,6 +58,38 @@ }, } +# Calculate average of non-zero input costs +input_costs_litellm = [ + model_cost[model].get("input_cost_per_token", 0) + for model in model_cost + if model_cost[model].get("input_cost_per_token", 0) > 0 +] +input_costs_fallback = [ + pricing["api_request"] + for pricing in FALLBACK_PRICING.values() + if pricing["api_request"] > 0 +] +combined_input_costs = input_costs_litellm + input_costs_fallback +AVG_INPUT_COST_PER_TOKEN = ( + sum(combined_input_costs) / len(combined_input_costs) if combined_input_costs else 0 +) + +# Calculate average of non-zero output costs +output_costs_litellm = [ + model_cost[model].get("output_cost_per_token", 0) + for model in model_cost + if model_cost[model].get("output_cost_per_token", 0) > 0 +] +output_costs_fallback = [ + pricing["api_response"] + for pricing in FALLBACK_PRICING.values() + if pricing["api_response"] > 0 +] +combined_output_costs = output_costs_litellm + output_costs_fallback +AVG_OUTPUT_COST_PER_TOKEN = ( + sum(combined_output_costs) / len(combined_output_costs) if combined_output_costs else 0 +) + # Define the raw SQL query usage_query = """ INSERT INTO usage ( @@ -96,6 +129,7 @@ async def create_usage_record( custom_api_used: bool = False, estimated: bool = False, metadata: dict[str, Any] | None = None, + is_llama_model: bool = False, ) -> tuple[str, list]: """ Creates a usage record to track token usage and costs. @@ -108,7 +142,7 @@ async def create_usage_record( custom_api_used (bool): Whether a custom API key was used. estimated (bool): Whether the token count is estimated. metadata (dict | None): Additional metadata about the usage. - + is_llama_model (bool): Whether the model is a Llama model. Returns: tuple[str, list]: SQL query and parameters for creating the usage record. """ @@ -116,23 +150,28 @@ async def create_usage_record( # For custom API keys, we still track usage but mark it as such total_cost = 0.0 - if not custom_api_used: - # Calculate cost using litellm's cost_per_token function - try: - prompt_cost, completion_cost = cost_per_token( - model, prompt_tokens=prompt_tokens, completion_tokens=completion_tokens + try: + prompt_cost, completion_cost = cost_per_token( + model, prompt_tokens=prompt_tokens, completion_tokens=completion_tokens + ) + total_cost = prompt_cost + completion_cost + except Exception: + estimated = True + + if model in FALLBACK_PRICING: + total_cost = ( + FALLBACK_PRICING[model]["api_request"] * prompt_tokens + + FALLBACK_PRICING[model]["api_response"] * completion_tokens + ) + else: + total_cost = ( + AVG_INPUT_COST_PER_TOKEN * prompt_tokens + + AVG_OUTPUT_COST_PER_TOKEN * completion_tokens ) - total_cost = prompt_cost + completion_cost - except Exception: - estimated = True + print(f"No fallback pricing found for model {model}, using avg costs: {total_cost}") - if model in FALLBACK_PRICING: - total_cost = ( - FALLBACK_PRICING[model]["api_request"] * prompt_tokens - + FALLBACK_PRICING[model]["api_response"] * completion_tokens - ) - else: - print(f"No fallback pricing found for model {model}") + if is_llama_model: + total_cost = total_cost * llama_model_multiplier params = [ developer_id, diff --git a/src/agents-api/agents_api/queries/usage/get_user_cost.py b/src/agents-api/agents_api/queries/usage/get_user_cost.py new file mode 100644 index 000000000..9762fc6b2 --- /dev/null +++ b/src/agents-api/agents_api/queries/usage/get_user_cost.py @@ -0,0 +1,73 @@ +""" +This module contains functionality for creating usage records in the PostgreSQL database. +It tracks token usage and costs for LLM API calls. +""" + +from typing import Literal +from uuid import UUID + +from beartype import beartype + +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +usage_query = """ +SELECT + COALESCE(developer_id, $1) as developer_id, + COALESCE(active, TRUE) as active, + COALESCE(tags, '{}') as tags, + COALESCE(monthly_cost, 0.0) AS cost, + COALESCE(bucket_start, NOW()) AS month +FROM ( + SELECT developer_id, active, tags, monthly_cost, bucket_start + FROM developer_cost_monthly + WHERE developer_id = $1 + ORDER BY bucket_start DESC + LIMIT 1 +) as subq +UNION ALL +SELECT + $1 as developer_id, + TRUE as active, + '{}' as tags, + 0.0 AS cost, + NOW() AS month +WHERE NOT EXISTS ( + SELECT 1 + FROM developer_cost_monthly + WHERE developer_id = $1 +) +LIMIT 1; +""" + + +@rewrap_exceptions(common_db_exceptions("usage", ["get"])) +@wrap_in_class( + dict, + one=True, +) +@query_metrics("get_usage_cost") +@pg_query +@beartype +async def get_usage_cost( + *, + developer_id: UUID, +) -> tuple[str, list, Literal["fetch", "fetchmany", "fetchrow"]]: + """ + Get the cost of a developer's usage. + + Parameters: + developer_id (UUID): The unique identifier for the developer. + + Returns: + tuple[str, list]: SQL query and parameters for creating the usage record. + """ + + return ( + usage_query, + [ + developer_id, + ], + "fetchrow", + ) diff --git a/agents-api/agents_api/queries/users/__init__.py b/src/agents-api/agents_api/queries/users/__init__.py similarity index 100% rename from agents-api/agents_api/queries/users/__init__.py rename to src/agents-api/agents_api/queries/users/__init__.py diff --git a/src/agents-api/agents_api/queries/users/create_or_update_user.py b/src/agents-api/agents_api/queries/users/create_or_update_user.py new file mode 100644 index 000000000..81f16b369 --- /dev/null +++ b/src/agents-api/agents_api/queries/users/create_or_update_user.py @@ -0,0 +1,137 @@ +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import CreateOrUpdateUserRequest, User +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query for creating or updating a user +user_query = """ +WITH proj AS ( + -- Find project ID by canonical name + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $6 +), user_op AS ( + INSERT INTO users ( + developer_id, + user_id, + name, + about, + metadata + ) + VALUES ( + $1, -- developer_id + $2, -- user_id + $3, -- name + $4, -- about + $5::jsonb -- metadata + ) + ON CONFLICT (developer_id, user_id) DO UPDATE SET + name = EXCLUDED.name, + about = EXCLUDED.about, + metadata = EXCLUDED.metadata + RETURNING * +), project_association AS ( + -- Create or update project association + INSERT INTO project_users ( + project_id, + developer_id, + user_id + ) + SELECT + p.project_id, + $1, + $2 + FROM proj p + WHERE p.project_id IS NOT NULL + ON CONFLICT (project_id, user_id) DO NOTHING + RETURNING 1 +) +SELECT + u.*, + p.canonical_name AS project +FROM user_op u +LEFT JOIN proj p ON TRUE; +""" + + +@rewrap_exceptions(common_db_exceptions("user", ["create_or_update"])) +@wrap_in_class( + User, + one=True, + transform=lambda d: { + **d, + "id": d["user_id"], + }, +) +@query_metrics("create_or_update_user") +@pg_query +@beartype +async def create_or_update_user_query( + *, + developer_id: UUID, + user_id: UUID, + data: CreateOrUpdateUserRequest, +) -> tuple[str, list]: + """ + Constructs an SQL query to create or update a user. + + Args: + developer_id (UUID): The UUID of the developer. + user_id (UUID): The UUID of the user. + data (CreateOrUpdateUserRequest): The user data to insert or update. + + Returns: + tuple[str, list]: SQL query and parameters. + + Raises: + HTTPException: If developer doesn't exist (404) or on unique constraint violation (409) + """ + + params = [ + developer_id, # $1 + user_id, # $2 + data.name, # $3 + data.about, # $4 + data.metadata or {}, # $5 + data.project or "default", # $6 + ] + + return ( + user_query, + params, + ) + + +async def create_or_update_user( + *, + developer_id: UUID, + user_id: UUID, + data: CreateOrUpdateUserRequest, + connection_pool: asyncpg.Pool | None = None, +) -> User: + # Get project (default if not specified) + project_canonical_name = data.project or "default" + + # Check if the project exists + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await create_or_update_user_query( + developer_id=developer_id, + user_id=user_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/src/agents-api/agents_api/queries/users/create_user.py b/src/agents-api/agents_api/queries/users/create_user.py new file mode 100644 index 000000000..8adcfbebd --- /dev/null +++ b/src/agents-api/agents_api/queries/users/create_user.py @@ -0,0 +1,130 @@ +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException +from uuid_extensions import uuid7 + +from ...autogen.openapi_model import CreateUserRequest, User +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query outside the function +user_query = """ +WITH new_user AS ( + INSERT INTO users ( + developer_id, + user_id, + name, + about, + metadata + ) + VALUES ( + $1, -- developer_id + $2, -- user_id + $3, -- name + $4, -- about + $5::jsonb -- metadata + ) + RETURNING * +), proj AS ( + -- Find project ID by canonical name + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $6 +), project_association AS ( + -- Create association in project_users table + INSERT INTO project_users ( + project_id, + developer_id, + user_id + ) + SELECT + p.project_id, + $1, + $2 + FROM proj p + ON CONFLICT (project_id, user_id) DO NOTHING + RETURNING 1 +) +SELECT + u.*, + p.canonical_name AS project +FROM new_user u +LEFT JOIN proj p ON TRUE; +""" + + +@rewrap_exceptions(common_db_exceptions("user", ["create"])) +@wrap_in_class( + User, + one=True, + transform=lambda d: { + **d, + "id": d["user_id"], + }, +) +@query_metrics("create_user") +@pg_query +@beartype +async def create_user_query( + *, + developer_id: UUID, + user_id: UUID | None = None, + data: CreateUserRequest, +) -> tuple[str, list]: + """ + Constructs the SQL query to create a new user. + + Args: + developer_id (UUID): The UUID of the developer creating the user. + user_id (UUID, optional): The UUID for the new user. If None, one will be generated. + data (CreateUserRequest): The user data to insert. + + Returns: + tuple[str, list]: A tuple containing the SQL query and its parameters. + """ + + return ( + user_query, + [ + developer_id, # $1 + user_id or uuid7(), # $2 + data.name, # $3 + data.about, # $4 + data.metadata or {}, # $5 + data.project or "default", # $6 + ], + ) + + +async def create_user( + *, + developer_id: UUID, + user_id: UUID | None = None, + data: CreateUserRequest, + connection_pool: asyncpg.Pool | None = None, +) -> User: + # Get project (default if not specified) + project_canonical_name = data.project or "default" + + # Check if the project exists + project_exists_result = await project_exists( + developer_id, + project_canonical_name, + connection_pool=connection_pool, + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await create_user_query( + developer_id=developer_id, + user_id=user_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/agents-api/agents_api/queries/users/delete_user.py b/src/agents-api/agents_api/queries/users/delete_user.py similarity index 100% rename from agents-api/agents_api/queries/users/delete_user.py rename to src/agents-api/agents_api/queries/users/delete_user.py diff --git a/agents-api/agents_api/queries/users/get_user.py b/src/agents-api/agents_api/queries/users/get_user.py similarity index 69% rename from agents-api/agents_api/queries/users/get_user.py rename to src/agents-api/agents_api/queries/users/get_user.py index 410747c24..58faedca3 100644 --- a/agents-api/agents_api/queries/users/get_user.py +++ b/src/agents-api/agents_api/queries/users/get_user.py @@ -10,16 +10,19 @@ # Define the raw SQL query outside the function user_query = """ SELECT - user_id as id, -- user_id - developer_id, -- developer_id - name, -- name - about, -- about - metadata, -- metadata - created_at, -- created_at - updated_at -- updated_at -FROM users -WHERE developer_id = $1 -AND user_id = $2; + u.user_id as id, -- user_id + u.developer_id, -- developer_id + u.name, -- name + u.about, -- about + u.metadata, -- metadata + u.created_at, -- created_at + u.updated_at, -- updated_at + p.canonical_name AS project -- project +FROM users u +LEFT JOIN project_users pu ON u.user_id = pu.user_id AND u.developer_id = pu.developer_id +LEFT JOIN projects p ON pu.project_id = p.project_id +WHERE u.developer_id = $1 +AND u.user_id = $2; """ diff --git a/agents-api/agents_api/queries/users/list_users.py b/src/agents-api/agents_api/queries/users/list_users.py similarity index 74% rename from agents-api/agents_api/queries/users/list_users.py rename to src/agents-api/agents_api/queries/users/list_users.py index d106f1b93..71a5db775 100644 --- a/agents-api/agents_api/queries/users/list_users.py +++ b/src/agents-api/agents_api/queries/users/list_users.py @@ -12,16 +12,20 @@ user_query = """ WITH filtered_users AS ( SELECT - user_id as id, -- user_id - developer_id, -- developer_id - name, -- name - about, -- about - metadata, -- metadata - created_at, -- created_at - updated_at -- updated_at - FROM users - WHERE developer_id = $1 - AND ($4::jsonb IS NULL OR metadata @> $4) + u.user_id as id, -- user_id + u.developer_id, -- developer_id + u.name, -- name + u.about, -- about + u.metadata, -- metadata + u.created_at, -- created_at + u.updated_at, -- updated_at + p.canonical_name AS project -- project + FROM users u + LEFT JOIN project_users pu ON u.user_id = pu.user_id AND u.developer_id = pu.developer_id + LEFT JOIN projects p ON pu.project_id = p.project_id + WHERE u.developer_id = $1 + AND ($4::jsonb IS NULL OR u.metadata @> $4) + AND ($7::text IS NULL OR p.canonical_name = $7) ) SELECT * FROM filtered_users @@ -56,6 +60,7 @@ async def list_users( sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", metadata_filter: dict | None = None, + project: str | None = None, ) -> tuple[str, list]: """ Constructs an optimized SQL query for listing users with pagination and filtering. @@ -68,6 +73,7 @@ async def list_users( sort_by (str): Field to sort by direction (str): Sort direction metadata_filter (dict, optional): Metadata-based filters + project (str, optional): Filter users by project canonical name Returns: tuple[str, list]: SQL query and parameters @@ -78,8 +84,9 @@ async def list_users( limit, # $2 offset, # $3 metadata_filter, # Will be NULL if not provided - sort_by, # $4 - direction, # $5 + sort_by, # $5 + direction, # $6 + project, # $7 ] return ( diff --git a/src/agents-api/agents_api/queries/users/patch_user.py b/src/agents-api/agents_api/queries/users/patch_user.py new file mode 100644 index 000000000..fc72564c0 --- /dev/null +++ b/src/agents-api/agents_api/queries/users/patch_user.py @@ -0,0 +1,161 @@ +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import PatchUserRequest, User +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query outside the function +user_query = """ +WITH proj AS ( + -- Find project ID by canonical name if project is being updated + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $6 + AND $6 IS NOT NULL +), project_exists AS ( + -- Check if the specified project exists + SELECT + CASE + WHEN $6 IS NULL THEN TRUE -- No project specified, so exists check passes + WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists + ELSE FALSE -- Project specified but doesn't exist + END AS exists +), user_update AS ( + -- Only proceed with update if project exists + UPDATE users + SET + name = CASE + WHEN $3::text IS NOT NULL THEN $3 -- name + ELSE name + END, + about = CASE + WHEN $4::text IS NOT NULL THEN $4 -- about + ELSE about + END, + metadata = CASE + WHEN $5::jsonb IS NOT NULL THEN metadata || $5 -- metadata + ELSE metadata + END + WHERE developer_id = $1 + AND user_id = $2 + AND (SELECT exists FROM project_exists) + RETURNING * +), project_association AS ( + -- Create or update project association if project is being updated + INSERT INTO project_users ( + project_id, + developer_id, + user_id + ) + SELECT + p.project_id, + $1, + $2 + FROM proj p + ON CONFLICT (project_id, user_id) DO NOTHING + RETURNING 1 +), old_associations AS ( + -- Remove any previous project associations if we're updating with a new project + DELETE FROM project_users pu + WHERE pu.developer_id = $1 + AND pu.user_id = $2 + AND EXISTS (SELECT 1 FROM proj) -- Only delete if we have a new project + AND NOT EXISTS ( + SELECT 1 FROM proj p + WHERE p.project_id = pu.project_id + ) +) +SELECT + (SELECT exists FROM project_exists) AS project_exists, + u.*, + COALESCE( + (SELECT canonical_name FROM proj), + (SELECT canonical_name + FROM projects p + JOIN project_users pu ON p.project_id = pu.project_id + WHERE pu.developer_id = $1 AND pu.user_id = $2 + LIMIT 1), + 'default' + ) AS project +FROM user_update u; +""" + + +@rewrap_exceptions(common_db_exceptions("user", ["patch"])) +@wrap_in_class( + User, + one=True, + transform=lambda d: { + **d, + "id": d["user_id"], + }, +) +@query_metrics("patch_user") +@pg_query +@beartype +async def patch_user_query( + *, + developer_id: UUID, + user_id: UUID, + data: PatchUserRequest, +) -> tuple[str, list]: + """ + Constructs an optimized SQL query for partial user updates. + Uses primary key for efficient update and jsonb_merge for metadata. + Includes project existence check directly in the SQL. + + Args: + developer_id (UUID): The developer's UUID + user_id (UUID): The user's UUID + data (PatchUserRequest): Partial update data + + Returns: + tuple[str, list]: SQL query and parameters + """ + # SQL will return project_exists status in the result + # If false, the row won't be updated, and we'll raise an appropriate exception + # in the error handling layer + params = [ + developer_id, # $1 + user_id, # $2 + data.name, # $3. Will be NULL if not provided + data.about, # $4. Will be NULL if not provided + data.metadata, # $5. Will be NULL if not provided + data.project or "default", # $6. Use default if None is provided + ] + + return ( + user_query, + params, + ) + + +async def patch_user( + *, + developer_id: UUID, + user_id: UUID, + data: PatchUserRequest, + connection_pool: asyncpg.Pool | None = None, +) -> User: + project_canonical_name = data.project or "default" + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await patch_user_query( + developer_id=developer_id, + user_id=user_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/src/agents-api/agents_api/queries/users/update_user.py b/src/agents-api/agents_api/queries/users/update_user.py new file mode 100644 index 000000000..cd1018f7d --- /dev/null +++ b/src/agents-api/agents_api/queries/users/update_user.py @@ -0,0 +1,150 @@ +from uuid import UUID + +import asyncpg +from beartype import beartype +from fastapi import HTTPException + +from ...autogen.openapi_model import UpdateUserRequest, User +from ...common.utils.db_exceptions import common_db_exceptions +from ...metrics.counters import query_metrics +from ..projects.project_exists import project_exists +from ..utils import pg_query, rewrap_exceptions, wrap_in_class + +# Define the raw SQL query outside the function +user_query = """ +WITH proj AS ( + -- Find project ID by canonical name if project is provided + SELECT project_id, canonical_name + FROM projects + WHERE developer_id = $1 AND canonical_name = $6 + AND $6 IS NOT NULL +), project_exists AS ( + -- Check if the specified project exists + SELECT + CASE + WHEN $6 IS NULL THEN TRUE -- No project specified, so exists check passes + WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists + ELSE FALSE -- Project specified but doesn't exist + END AS exists +), user_update AS ( + -- Only proceed with update if project exists + UPDATE users + SET + name = $3, -- name + about = $4, -- about + metadata = $5 -- metadata + WHERE developer_id = $1 -- developer_id + AND user_id = $2 -- user_id + AND (SELECT exists FROM project_exists) + RETURNING * +), project_association AS ( + -- Create or update project association if project is provided and exists + INSERT INTO project_users ( + project_id, + developer_id, + user_id + ) + SELECT + p.project_id, + $1, + $2 + FROM proj p + ON CONFLICT (project_id, user_id) DO NOTHING + RETURNING 1 +), old_associations AS ( + -- Remove any previous project associations if we're updating with a new project + DELETE FROM project_users pu + WHERE pu.developer_id = $1 + AND pu.user_id = $2 + AND EXISTS (SELECT 1 FROM proj) -- Only delete if we have a new project + AND NOT EXISTS ( + SELECT 1 FROM proj p + WHERE p.project_id = pu.project_id + ) +) +SELECT + (SELECT exists FROM project_exists) AS project_exists, + u.*, + COALESCE( + (SELECT canonical_name FROM proj), + (SELECT canonical_name + FROM projects p + JOIN project_users pu ON p.project_id = pu.project_id + WHERE pu.developer_id = $1 AND pu.user_id = $2 + LIMIT 1), + 'default' + ) AS project +FROM user_update u; +""" + + +@rewrap_exceptions(common_db_exceptions("user", ["update"])) +@wrap_in_class( + User, + one=True, + transform=lambda d: { + **d, + "id": d["user_id"], + }, +) +@query_metrics("update_user") +@pg_query +@beartype +async def update_user_query( + *, + developer_id: UUID, + user_id: UUID, + data: UpdateUserRequest, +) -> tuple[str, list]: + """ + Constructs an optimized SQL query to update a user's details. + Uses primary key for efficient update. + Includes project existence check directly in the SQL. + + Args: + developer_id (UUID): The developer's UUID + user_id (UUID): The user's UUID + data (UpdateUserRequest): Updated user data + + Returns: + tuple[str, list]: SQL query and parameters + """ + + params = [ + developer_id, + user_id, + data.name, + data.about, + data.metadata or {}, + data.project or "default", + ] + + return ( + user_query, + params, + ) + + +async def update_user( + *, + developer_id: UUID, + user_id: UUID, + data: UpdateUserRequest, + connection_pool: asyncpg.Pool | None = None, +) -> User: + project_canonical_name = data.project or "default" + project_exists_result = await project_exists( + developer_id, project_canonical_name, connection_pool=connection_pool + ) + + if not project_exists_result[0]["project_exists"]: + raise HTTPException( + status_code=404, detail=f"Project '{project_canonical_name}' not found" + ) + + return await update_user_query( + developer_id=developer_id, + user_id=user_id, + data=data, + connection_pool=connection_pool, + ) diff --git a/agents-api/agents_api/queries/utils.py b/src/agents-api/agents_api/queries/utils.py similarity index 79% rename from agents-api/agents_api/queries/utils.py rename to src/agents-api/agents_api/queries/utils.py index 2f4d26b92..911a34df7 100644 --- a/agents-api/agents_api/queries/utils.py +++ b/src/agents-api/agents_api/queries/utils.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module contains utility functions and decorators for database queries and data processing. import concurrent.futures import inspect import socket @@ -31,6 +32,7 @@ ModelT = TypeVar("ModelT", bound=BaseModel) +# AIDEV-NOTE: Generates a unique, readable canonical name. def generate_canonical_name() -> str: """Generate canonical name""" @@ -51,6 +53,7 @@ class AsyncPGFetchArgs(TypedDict): type BatchedPreparedPGQueryArgs = list[PreparedPGQueryArgs] +# AIDEV-NOTE: Prepares and formats PostgreSQL query arguments for batch execution. @beartype def prepare_pg_query_args( query_args: PGQueryArgs | list[PGQueryArgs], @@ -82,6 +85,8 @@ def prepare_pg_query_args( return batch +# AIDEV-NOTE: Decorator for executing PostgreSQL queries within a transaction. +# Handles connection pooling, error handling, and result formatting. @beartype def pg_query[**P]( func: Callable[P, PGQueryArgs | list[PGQueryArgs]] | None = None, @@ -188,6 +193,7 @@ async def wrapper( return pg_query_dec +# AIDEV-NOTE: Sanitizes strings to remove null characters for PostgreSQL compatibility. def sanitize_string(value: Any) -> Any: """ Remove null characters (\u0000) from strings for PostgreSQL compatibility. @@ -209,34 +215,63 @@ def sanitize_string(value: Any) -> Any: return value +# AIDEV-NOTE: Decorator to wrap query results in Pydantic models. def wrap_in_class( cls: type[ModelT] | Callable[..., ModelT], one: bool = False, + maybe_one: bool = False, transform: Callable[[dict], dict] | None = None, -) -> Callable[..., Callable[..., ModelT | list[ModelT]]]: - def _return_data(rec: list[Record]): +) -> Callable[..., Callable[..., ModelT | list[ModelT] | None]]: + """ + Decorator that wraps database query results into Pydantic model instances. + + Args: + cls: The Pydantic model class or callable that constructs the model + one: If True, expects exactly one result and returns a single model instance + maybe_one: If True, returns None if no results, a single model if one result, + and raises ValueError if multiple results + transform: Optional function to transform each record before model instantiation + + Returns: + A decorator that transforms query results into model instances + + Raises: + ValueError: If one=True and not exactly one result is returned, or + if maybe_one=True and multiple results are returned + """ + + def _return_data(rec: list[Record]) -> ModelT | list[ModelT] | None: data = [dict(r.items()) for r in rec] + # AIDEV-NOTE: initialize transformer function once per call + transform_fn = transform or (lambda x: x) - nonlocal transform - transform = transform or (lambda x: x) + if maybe_one: + if len(data) == 0: + return None + if len(data) == 1: + return cls(**transform_fn(data[0])) + msg = f"Expected one result or none, got {len(data)}" + raise ValueError(msg) if one: assert len(data) == 1, f"Expected one result, got {len(data)}" - obj: ModelT = cls(**transform(data[0])) + obj: ModelT = cls(**transform_fn(data[0])) return obj - objs: list[ModelT] = [cls(**item) for item in map(transform, data)] + objs: list[ModelT] = [cls(**item) for item in map(transform_fn, data)] return objs def decorator( func: Callable[P, list[Record] | Awaitable[list[Record]]], - ) -> Callable[P, ModelT | list[ModelT]]: + ) -> Callable[P, ModelT | list[ModelT] | None]: @wraps(func) - def wrapper(*args: P.args, **kwargs: P.kwargs) -> ModelT | list[ModelT]: + def wrapper(*args: P.args, **kwargs: P.kwargs) -> ModelT | list[ModelT] | None: return _return_data(func(*args, **kwargs)) @wraps(func) - async def async_wrapper(*args: P.args, **kwargs: P.kwargs) -> ModelT | list[ModelT]: + async def async_wrapper( + *args: P.args, **kwargs: P.kwargs + ) -> ModelT | list[ModelT] | None: return _return_data(await func(*args, **kwargs)) # Set the wrapped function as an attribute of the wrapper, @@ -249,6 +284,7 @@ async def async_wrapper(*args: P.args, **kwargs: P.kwargs) -> ModelT | list[Mode return decorator +# AIDEV-NOTE: Decorator to rewrap specific exceptions raised by a function. def rewrap_exceptions( mapping: dict[ type[BaseException] | Callable[[BaseException], bool], @@ -305,12 +341,16 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: return decorator +# AIDEV-NOTE: Runs multiple asynchronous functions concurrently. def run_concurrently( fns: list[Callable[..., Any]], *, - args_list: list[tuple] = [], - kwargs_list: list[dict] = [], + args_list: list[tuple] | None = None, + kwargs_list: list[dict] | None = None, ) -> list[Any]: + # AIDEV-NOTE: avoid mutable default args; initialize to empty list if None + args_list = args_list if args_list is not None else [] + kwargs_list = kwargs_list if kwargs_list is not None else [] args_list = args_list or [()] * len(fns) kwargs_list = kwargs_list or [{}] * len(fns) @@ -323,6 +363,7 @@ def run_concurrently( return [future.result() for future in concurrent.futures.as_completed(futures)] +# AIDEV-NOTE: Serializes Pydantic model data into a dictionary, handling nested models. def serialize_model_data(data: Any) -> Any: """ Recursively serialize Pydantic models and their nested structures. @@ -342,6 +383,7 @@ def serialize_model_data(data: Any) -> Any: return data +# AIDEV-NOTE: Builds SQL conditions for filtering based on JSONB metadata. def build_metadata_filter_conditions( base_params: list[Any], metadata_filter: dict[str, Any], table_alias: str = "" ) -> tuple[str, list[Any]]: @@ -380,21 +422,21 @@ def build_metadata_filter_conditions( return sql_conditions, params +# AIDEV-NOTE: Creates a validator function for numerical ranges. def make_num_validator( min_value: int | float | None = None, max_value: int | float | None = None, err_msg: str | None = None, ): - def validator(v: int | float): - nonlocal err_msg - + def validator(v: int | float) -> bool: + # Choose appropriate error message without mutating outer err_msg if min_value is not None and v < min_value: - err_msg = err_msg or f"Number must be greater than or equal to {min_value}" - raise QueryParamsValidationError(err_msg) + msg = err_msg or f"Number must be greater than or equal to {min_value}" + raise QueryParamsValidationError(msg) if max_value is not None and v > max_value: - err_msg = err_msg or f"Number must be less than or equal to {max_value}" - raise QueryParamsValidationError(err_msg) + msg = err_msg or f"Number must be less than or equal to {max_value}" + raise QueryParamsValidationError(msg) return True diff --git a/agents-api/agents_api/rec_sum/__init__.py b/src/agents-api/agents_api/rec_sum/__init__.py similarity index 100% rename from agents-api/agents_api/rec_sum/__init__.py rename to src/agents-api/agents_api/rec_sum/__init__.py diff --git a/agents-api/agents_api/rec_sum/data.py b/src/agents-api/agents_api/rec_sum/data.py similarity index 100% rename from agents-api/agents_api/rec_sum/data.py rename to src/agents-api/agents_api/rec_sum/data.py diff --git a/agents-api/agents_api/rec_sum/entities.py b/src/agents-api/agents_api/rec_sum/entities.py similarity index 96% rename from agents-api/agents_api/rec_sum/entities.py rename to src/agents-api/agents_api/rec_sum/entities.py index 44a9e390f..6bf9b2eab 100644 --- a/agents-api/agents_api/rec_sum/entities.py +++ b/src/agents-api/agents_api/rec_sum/entities.py @@ -44,8 +44,8 @@ def make_entities_prompt( session: list[pd.Series] | list[Any], - user="a user", - assistant="gpt-4-turbo", + user: str = "a user", + assistant: str = "gpt-4-turbo", **_, ): session = [m.to_dict() if isinstance(m, pd.Series) else m for m in session] @@ -60,9 +60,9 @@ def make_entities_prompt( @retry(stop=stop_after_attempt(2)) async def get_entities( chat_session, - model="gpt-4o", + model: str = "gpt-4o", stop=["= 2, "Session is too short" diff --git a/agents-api/agents_api/rec_sum/entities_example_chat.json b/src/agents-api/agents_api/rec_sum/entities_example_chat.json similarity index 100% rename from agents-api/agents_api/rec_sum/entities_example_chat.json rename to src/agents-api/agents_api/rec_sum/entities_example_chat.json diff --git a/agents-api/agents_api/rec_sum/generate.py b/src/agents-api/agents_api/rec_sum/generate.py similarity index 100% rename from agents-api/agents_api/rec_sum/generate.py rename to src/agents-api/agents_api/rec_sum/generate.py diff --git a/agents-api/agents_api/rec_sum/summarize.py b/src/agents-api/agents_api/rec_sum/summarize.py similarity index 95% rename from agents-api/agents_api/rec_sum/summarize.py rename to src/agents-api/agents_api/rec_sum/summarize.py index 62c7bfe9c..418ff528d 100644 --- a/agents-api/agents_api/rec_sum/summarize.py +++ b/src/agents-api/agents_api/rec_sum/summarize.py @@ -34,7 +34,9 @@ - VERY IMPORTANT: Add the indices of messages that are being summarized so that those messages can then be removed from the session otherwise, there'll be no way to identify which messages to remove. See example for more details.""" -def make_summarize_prompt(session, user="a user", assistant="gpt-4-turbo", **_) -> list[str]: +def make_summarize_prompt( + session, user: str = "a user", assistant: str = "gpt-4-turbo", **_ +) -> list[str]: return [ f"You are given a session history of a chat between {user or 'a user'} and {assistant or 'gpt-4-turbo'}. The session is formatted in the ChatML JSON format (from OpenAI).\n\n{summarize_instructions}\n\n\n{json.dumps(add_indices(summarize_example_chat), indent=2)}\n\n\n\n{summarize_example_plan}\n\n\n\n{json.dumps(summarize_example_result, indent=2)}\n", f"Begin! Write the summarized messages as a json list just like the example above. First write your plan inside and then your answer between . Don't forget to add the indices of the messages being summarized alongside each summary.\n\n\n{json.dumps(add_indices(session), indent=2)}\n\n", @@ -44,9 +46,9 @@ def make_summarize_prompt(session, user="a user", assistant="gpt-4-turbo", **_) @retry(stop=stop_after_attempt(2)) async def summarize_messages( chat_session, - model="gpt-4o", + model: str = "gpt-4o", stop=["= 2, "Session is too short" diff --git a/agents-api/agents_api/rec_sum/summarize_example_chat.json b/src/agents-api/agents_api/rec_sum/summarize_example_chat.json similarity index 100% rename from agents-api/agents_api/rec_sum/summarize_example_chat.json rename to src/agents-api/agents_api/rec_sum/summarize_example_chat.json diff --git a/agents-api/agents_api/rec_sum/summarize_example_result.json b/src/agents-api/agents_api/rec_sum/summarize_example_result.json similarity index 100% rename from agents-api/agents_api/rec_sum/summarize_example_result.json rename to src/agents-api/agents_api/rec_sum/summarize_example_result.json diff --git a/agents-api/agents_api/rec_sum/trim.py b/src/agents-api/agents_api/rec_sum/trim.py similarity index 94% rename from agents-api/agents_api/rec_sum/trim.py rename to src/agents-api/agents_api/rec_sum/trim.py index ff6364a30..a718d7496 100644 --- a/agents-api/agents_api/rec_sum/trim.py +++ b/src/agents-api/agents_api/rec_sum/trim.py @@ -32,7 +32,9 @@ # It is important to make keep the tone, setting and flow of the conversation consistent while trimming the messages. -def make_trim_prompt(session, user="a user", assistant="gpt-4-turbo", **_) -> list[str]: +def make_trim_prompt( + session, user: str = "a user", assistant: str = "gpt-4-turbo", **_ +) -> list[str]: return [ f"You are given a session history of a chat between {user or 'a user'} and {assistant or 'gpt-4-turbo'}. The session is formatted in the ChatML JSON format (from OpenAI).\n\n{trim_instructions}\n\n\n{json.dumps(add_indices(trim_example_chat), indent=2)}\n\n\n\n{trim_example_plan}\n\n\n\n{json.dumps(trim_example_result, indent=2)}\n", f"Begin! Write the trimmed messages as a json list. First write your plan inside and then your answer between .\n\n\n{json.dumps(add_indices(session), indent=2)}\n\n", @@ -42,9 +44,9 @@ def make_trim_prompt(session, user="a user", assistant="gpt-4-turbo", **_) -> li @retry(stop=stop_after_attempt(2)) async def trim_messages( chat_session, - model="gpt-4o", + model: str = "gpt-4o", stop=["= 2, "Session is too short" diff --git a/agents-api/agents_api/rec_sum/trim_example_chat.json b/src/agents-api/agents_api/rec_sum/trim_example_chat.json similarity index 100% rename from agents-api/agents_api/rec_sum/trim_example_chat.json rename to src/agents-api/agents_api/rec_sum/trim_example_chat.json diff --git a/agents-api/agents_api/rec_sum/trim_example_result.json b/src/agents-api/agents_api/rec_sum/trim_example_result.json similarity index 100% rename from agents-api/agents_api/rec_sum/trim_example_result.json rename to src/agents-api/agents_api/rec_sum/trim_example_result.json diff --git a/agents-api/agents_api/rec_sum/utils.py b/src/agents-api/agents_api/rec_sum/utils.py similarity index 76% rename from agents-api/agents_api/rec_sum/utils.py rename to src/agents-api/agents_api/rec_sum/utils.py index 4816b4308..3dc1da8b9 100644 --- a/agents-api/agents_api/rec_sum/utils.py +++ b/src/agents-api/agents_api/rec_sum/utils.py @@ -10,7 +10,7 @@ class chatml: @staticmethod - def make(content, role="system", name: _T2 = None, **_) -> dict[str, _T2]: + def make(content, role: str = "system", name: _T2 = None, **_) -> dict[str, _T2]: return { key: value for key, value in {"role": role, "name": name, "content": content}.items() @@ -18,19 +18,19 @@ def make(content, role="system", name: _T2 = None, **_) -> dict[str, _T2]: } @staticmethod - def user(content, name=None) -> Any: + def user(content, name: str | None = None) -> Any: return chatml.make(role="user", content=content, name=name) @staticmethod - def assistant(content, name=None) -> Any: + def assistant(content, name: str | None = None) -> Any: return chatml.make(role="assistant", content=content, name=name) @staticmethod - def system(content, name=None) -> Any: + def system(content, name: str | None = None) -> Any: return chatml.make(content, name=name) @staticmethod - def thought(content, name=None) -> Any: + def thought(content, name: str | None = None) -> Any: return chatml.make(content, name="thought") @staticmethod @@ -46,7 +46,7 @@ def entities(content) -> Any: return chatml.system(content, name="entity") -def add_indices(list_of_dicts, idx_name="index") -> list[dict]: +def add_indices(list_of_dicts, idx_name: str = "index") -> list[dict]: return [{idx_name: i, **msg} for i, msg in enumerate(list_of_dicts)] diff --git a/agents-api/agents_api/routers/CLAUDE.md b/src/agents-api/agents_api/routers/AGENTS.md similarity index 57% rename from agents-api/agents_api/routers/CLAUDE.md rename to src/agents-api/agents_api/routers/AGENTS.md index ab448074f..9a21eff68 100644 --- a/agents-api/agents_api/routers/CLAUDE.md +++ b/src/agents-api/agents_api/routers/AGENTS.md @@ -1,3 +1,15 @@ +# AGENTS.md - routers + +This folder contains FastAPI route definitions for `agents-api` endpoints. + +Key Points +- Follow RESTful CRUD patterns for resource routes. +- Use dependency injection for authentication and authorization. +- Response models sourced from `autogen/` or `protocol/`. +- Document new endpoints in `openapi.yaml` and regenerate clients as needed. +- Run `poe codegen` after TypeSpec updates. +- Place route-specific tests under `agents-api/tests/`. + # Routers ## Purpose @@ -7,6 +19,10 @@ ## Key Routers +### projects/ +- Project creation and listing +- Resource organization and management + ### agents/ - CRUD operations for agents (AI assistants) - Tool management for agents @@ -26,9 +42,33 @@ - Embeddings generation - Vector and text search capabilities -### users/ and files/ +### users/ - User management and authentication +- User CRUD operations + +### files/ - File upload, download, and management +- File metadata and storage + +### secrets/ +- Secret management for secure storage +- Create, update, delete, and list secrets + +### responses/ +- Response management for task executions +- Response creation and retrieval + +### healthz/ +- Health check endpoints +- Service status monitoring + +### internal/ +- Internal API endpoints +- System-level operations + +### jobs/ +- Job management and scheduling +- Background task coordination ## Common Patterns - Most endpoints require developer_id authentication @@ -47,4 +87,4 @@ ## Error Handling - Structured error responses with details and suggestions - HTTP-appropriate status codes -- Validation errors include field location and fix recommendations \ No newline at end of file +- Validation errors include field location and fix recommendations diff --git a/src/agents-api/agents_api/routers/CLAUDE.md b/src/agents-api/agents_api/routers/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/routers/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/routers/__init__.py b/src/agents-api/agents_api/routers/__init__.py similarity index 82% rename from agents-api/agents_api/routers/__init__.py rename to src/agents-api/agents_api/routers/__init__.py index 62e7ef036..7ac8d0148 100644 --- a/agents-api/agents_api/routers/__init__.py +++ b/src/agents-api/agents_api/routers/__init__.py @@ -7,12 +7,13 @@ - `users`: Responsible for routing user-related operations. This encompasses user creation, update, deletion, and managing user documents. It ensures that user data can be properly managed and accessed as needed. - `jobs`: Deals with routing for job status inquiries. This allows users to check the status of asynchronous jobs, providing insights into the progress and outcomes of long-running operations. - `files`: Deals with routing for file operations. This includes creating, reading, updating, and deleting files. It provides endpoints for managing files, including uploading, downloading, and deleting file content. -- `docs`: Deals with routing for documentation operations. This includes creating, reading, updating, and deleting documentation. It provides endpoints for managing documentation, including uploading, downloading, and deleting documentation content. - +- `docs`: Deals with routing for documentation operations. This includes creating, reading, updating, and deleting documents. It provides endpoints for managing documentation, including uploading, downloading, and deleting documentation content. +- `projects`: Deals with routing for project operations. It provides endpoints for managing projects, including creating, reading, updating, and deleting projects. Each sub-module defines its own set of API endpoints and is responsible for handling requests and responses related to its domain, ensuring a modular and organized approach to API development. """ # ruff: noqa: F401 +# AIDEV-NOTE: Central router aggregator for all sub-modules in agents-api. # TODO: Create a router for developers # SCRUM-21 @@ -22,6 +23,7 @@ from .files import router as files_router from .internal import router as internal_router from .jobs import router as jobs_router +from .projects import router as projects_router from .responses import router as responses_router from .sessions import router as sessions_router from .tasks import router as tasks_router diff --git a/agents-api/agents_api/routers/agents/__init__.py b/src/agents-api/agents_api/routers/agents/__init__.py similarity index 100% rename from agents-api/agents_api/routers/agents/__init__.py rename to src/agents-api/agents_api/routers/agents/__init__.py diff --git a/agents-api/agents_api/routers/agents/create_agent.py b/src/agents-api/agents_api/routers/agents/create_agent.py similarity index 73% rename from agents-api/agents_api/routers/agents/create_agent.py rename to src/agents-api/agents_api/routers/agents/create_agent.py index 1f5242770..794789697 100644 --- a/agents-api/agents_api/routers/agents/create_agent.py +++ b/src/agents-api/agents_api/routers/agents/create_agent.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for creating new agents. from typing import Annotated from uuid import UUID @@ -14,6 +15,9 @@ from .router import router +# AIDEV-NOTE: API endpoint to create a new agent. +# It depends on the developer ID and the agent data from the request body. +# Validates the agent model if specified and calls the create_agent_query function. @router.post("/agents", status_code=HTTP_201_CREATED, tags=["agents"]) async def create_agent( x_developer_id: Annotated[UUID, Depends(get_developer_id)], diff --git a/agents-api/agents_api/routers/agents/create_agent_tool.py b/src/agents-api/agents_api/routers/agents/create_agent_tool.py similarity index 100% rename from agents-api/agents_api/routers/agents/create_agent_tool.py rename to src/agents-api/agents_api/routers/agents/create_agent_tool.py diff --git a/agents-api/agents_api/routers/agents/create_or_update_agent.py b/src/agents-api/agents_api/routers/agents/create_or_update_agent.py similarity index 100% rename from agents-api/agents_api/routers/agents/create_or_update_agent.py rename to src/agents-api/agents_api/routers/agents/create_or_update_agent.py diff --git a/agents-api/agents_api/routers/agents/delete_agent.py b/src/agents-api/agents_api/routers/agents/delete_agent.py similarity index 100% rename from agents-api/agents_api/routers/agents/delete_agent.py rename to src/agents-api/agents_api/routers/agents/delete_agent.py diff --git a/agents-api/agents_api/routers/agents/delete_agent_tool.py b/src/agents-api/agents_api/routers/agents/delete_agent_tool.py similarity index 100% rename from agents-api/agents_api/routers/agents/delete_agent_tool.py rename to src/agents-api/agents_api/routers/agents/delete_agent_tool.py diff --git a/agents-api/agents_api/routers/agents/get_agent_details.py b/src/agents-api/agents_api/routers/agents/get_agent_details.py similarity index 67% rename from agents-api/agents_api/routers/agents/get_agent_details.py rename to src/agents-api/agents_api/routers/agents/get_agent_details.py index 30f7d3a34..f1760bb57 100644 --- a/agents-api/agents_api/routers/agents/get_agent_details.py +++ b/src/agents-api/agents_api/routers/agents/get_agent_details.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for retrieving a specific agent. from typing import Annotated from uuid import UUID @@ -9,6 +10,8 @@ from .router import router +# AIDEV-NOTE: API endpoint to get an agent by its ID. +# It depends on the developer ID and the agent ID from the path parameter, and calls the get_agent_query function. @router.get("/agents/{agent_id}", tags=["agents"]) async def get_agent_details( agent_id: UUID, diff --git a/agents-api/agents_api/routers/agents/list_agent_tools.py b/src/agents-api/agents_api/routers/agents/list_agent_tools.py similarity index 100% rename from agents-api/agents_api/routers/agents/list_agent_tools.py rename to src/agents-api/agents_api/routers/agents/list_agent_tools.py diff --git a/agents-api/agents_api/routers/agents/list_agents.py b/src/agents-api/agents_api/routers/agents/list_agents.py similarity index 100% rename from agents-api/agents_api/routers/agents/list_agents.py rename to src/agents-api/agents_api/routers/agents/list_agents.py diff --git a/agents-api/agents_api/routers/agents/list_models.py b/src/agents-api/agents_api/routers/agents/list_models.py similarity index 100% rename from agents-api/agents_api/routers/agents/list_models.py rename to src/agents-api/agents_api/routers/agents/list_models.py diff --git a/agents-api/agents_api/routers/agents/patch_agent.py b/src/agents-api/agents_api/routers/agents/patch_agent.py similarity index 100% rename from agents-api/agents_api/routers/agents/patch_agent.py rename to src/agents-api/agents_api/routers/agents/patch_agent.py diff --git a/agents-api/agents_api/routers/agents/patch_agent_tool.py b/src/agents-api/agents_api/routers/agents/patch_agent_tool.py similarity index 100% rename from agents-api/agents_api/routers/agents/patch_agent_tool.py rename to src/agents-api/agents_api/routers/agents/patch_agent_tool.py diff --git a/agents-api/agents_api/routers/agents/router.py b/src/agents-api/agents_api/routers/agents/router.py similarity index 100% rename from agents-api/agents_api/routers/agents/router.py rename to src/agents-api/agents_api/routers/agents/router.py diff --git a/agents-api/agents_api/routers/agents/update_agent.py b/src/agents-api/agents_api/routers/agents/update_agent.py similarity index 100% rename from agents-api/agents_api/routers/agents/update_agent.py rename to src/agents-api/agents_api/routers/agents/update_agent.py diff --git a/agents-api/agents_api/routers/agents/update_agent_tool.py b/src/agents-api/agents_api/routers/agents/update_agent_tool.py similarity index 100% rename from agents-api/agents_api/routers/agents/update_agent_tool.py rename to src/agents-api/agents_api/routers/agents/update_agent_tool.py diff --git a/agents-api/agents_api/routers/docs/__init__.py b/src/agents-api/agents_api/routers/docs/__init__.py similarity index 100% rename from agents-api/agents_api/routers/docs/__init__.py rename to src/agents-api/agents_api/routers/docs/__init__.py diff --git a/agents-api/agents_api/routers/docs/bulk_delete_docs.py b/src/agents-api/agents_api/routers/docs/bulk_delete_docs.py similarity index 100% rename from agents-api/agents_api/routers/docs/bulk_delete_docs.py rename to src/agents-api/agents_api/routers/docs/bulk_delete_docs.py diff --git a/agents-api/agents_api/routers/docs/create_doc.py b/src/agents-api/agents_api/routers/docs/create_doc.py similarity index 100% rename from agents-api/agents_api/routers/docs/create_doc.py rename to src/agents-api/agents_api/routers/docs/create_doc.py diff --git a/agents-api/agents_api/routers/docs/delete_doc.py b/src/agents-api/agents_api/routers/docs/delete_doc.py similarity index 100% rename from agents-api/agents_api/routers/docs/delete_doc.py rename to src/agents-api/agents_api/routers/docs/delete_doc.py diff --git a/agents-api/agents_api/routers/docs/embed.py b/src/agents-api/agents_api/routers/docs/embed.py similarity index 100% rename from agents-api/agents_api/routers/docs/embed.py rename to src/agents-api/agents_api/routers/docs/embed.py diff --git a/agents-api/agents_api/routers/docs/get_doc.py b/src/agents-api/agents_api/routers/docs/get_doc.py similarity index 61% rename from agents-api/agents_api/routers/docs/get_doc.py rename to src/agents-api/agents_api/routers/docs/get_doc.py index 498fb46e0..86e69a486 100644 --- a/agents-api/agents_api/routers/docs/get_doc.py +++ b/src/agents-api/agents_api/routers/docs/get_doc.py @@ -13,5 +13,9 @@ async def get_doc( x_developer_id: Annotated[UUID, Depends(get_developer_id)], doc_id: UUID, + include_embeddings: bool = True, ) -> Doc: - return await get_doc_query(developer_id=x_developer_id, doc_id=doc_id) + # AIDEV-NOTE: include_embeddings parameter added to reduce bandwidth when embeddings not needed + return await get_doc_query( + developer_id=x_developer_id, doc_id=doc_id, include_embeddings=include_embeddings + ) diff --git a/agents-api/agents_api/routers/docs/list_docs.py b/src/agents-api/agents_api/routers/docs/list_docs.py similarity index 84% rename from agents-api/agents_api/routers/docs/list_docs.py rename to src/agents-api/agents_api/routers/docs/list_docs.py index 80f7c8248..61476d224 100644 --- a/agents-api/agents_api/routers/docs/list_docs.py +++ b/src/agents-api/agents_api/routers/docs/list_docs.py @@ -22,7 +22,9 @@ async def list_user_docs( offset: int = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", + include_embeddings: bool = True, ) -> ListResponse[Doc]: + # AIDEV-NOTE: include_embeddings parameter exposed to reduce bandwidth when embeddings not needed docs = await list_docs_query( developer_id=x_developer_id, owner_type="user", @@ -32,6 +34,7 @@ async def list_user_docs( sort_by=sort_by, direction=direction, metadata_filter=metadata_filter.model_dump(mode="json"), + include_embeddings=include_embeddings, ) return ListResponse[Doc](items=docs) @@ -49,7 +52,9 @@ async def list_agent_docs( offset: int = 0, sort_by: Literal["created_at", "updated_at"] = "created_at", direction: Literal["asc", "desc"] = "desc", + include_embeddings: bool = True, ) -> ListResponse[Doc]: + # AIDEV-NOTE: include_embeddings parameter exposed to reduce bandwidth when embeddings not needed docs = await list_docs_query( developer_id=x_developer_id, owner_type="agent", @@ -59,6 +64,7 @@ async def list_agent_docs( sort_by=sort_by, direction=direction, metadata_filter=metadata_filter.model_dump(mode="json"), + include_embeddings=include_embeddings, ) return ListResponse[Doc](items=docs) diff --git a/agents-api/agents_api/routers/docs/router.py b/src/agents-api/agents_api/routers/docs/router.py similarity index 100% rename from agents-api/agents_api/routers/docs/router.py rename to src/agents-api/agents_api/routers/docs/router.py diff --git a/agents-api/agents_api/routers/docs/search_docs.py b/src/agents-api/agents_api/routers/docs/search_docs.py similarity index 84% rename from agents-api/agents_api/routers/docs/search_docs.py rename to src/agents-api/agents_api/routers/docs/search_docs.py index f9acc2c37..17c83eeb4 100644 --- a/agents-api/agents_api/routers/docs/search_docs.py +++ b/src/agents-api/agents_api/routers/docs/search_docs.py @@ -12,7 +12,7 @@ TextOnlyDocSearchRequest, VectorDocSearchRequest, ) -from ...common.utils.get_doc_search import get_search_fn_and_params +from ...common.utils.get_doc_search import get_search_fn_and_params, strip_embeddings from ...common.utils.mmr import apply_mmr_to_docs from ...dependencies.developer_id import get_developer_id from .router import router @@ -32,13 +32,16 @@ async def search_user_docs( x_developer_id (UUID): The unique identifier of the developer associated with the user. search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search. user_id (UUID): The unique identifier of the user associated with the documents. - Returns: DocSearchResponse: The search results. """ # Get the search function and params here - search_fn, params = get_search_fn_and_params(search_params) + search_fn, params, post_processing = get_search_fn_and_params(search_params) + + include_embeddings = ( + post_processing.get("include_embeddings", True) if post_processing else True + ) start = time.time() # Get the docs here @@ -48,6 +51,9 @@ async def search_user_docs( **params, ) + if include_embeddings is False: + docs = strip_embeddings(docs) + # Apply MMR if enabled and applicable if ( not isinstance(search_params, TextOnlyDocSearchRequest) @@ -84,14 +90,17 @@ async def search_agent_docs( Parameters: x_developer_id (UUID): The unique identifier of the developer associated with the agent. search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search. - agent_id (UUID): The unique identifier of the agent associated with the documents. - + agent_id (UUID): The umnique identifier of the agent associated with the documents. Returns: DocSearchResponse: The search results. """ # Get the search function and params here - search_fn, params = get_search_fn_and_params(search_params) + search_fn, params, post_processing = get_search_fn_and_params(search_params) + + include_embeddings = ( + post_processing.get("include_embeddings", True) if post_processing else True + ) start = time.time() # Get the docs here @@ -101,6 +110,9 @@ async def search_agent_docs( **params, ) + if include_embeddings is False: + docs = strip_embeddings(docs) + # Apply MMR if enabled and applicable if ( not isinstance(search_params, TextOnlyDocSearchRequest) diff --git a/agents-api/agents_api/routers/files/__init__.py b/src/agents-api/agents_api/routers/files/__init__.py similarity index 100% rename from agents-api/agents_api/routers/files/__init__.py rename to src/agents-api/agents_api/routers/files/__init__.py diff --git a/agents-api/agents_api/routers/files/create_file.py b/src/agents-api/agents_api/routers/files/create_file.py similarity index 100% rename from agents-api/agents_api/routers/files/create_file.py rename to src/agents-api/agents_api/routers/files/create_file.py diff --git a/agents-api/agents_api/routers/files/delete_file.py b/src/agents-api/agents_api/routers/files/delete_file.py similarity index 100% rename from agents-api/agents_api/routers/files/delete_file.py rename to src/agents-api/agents_api/routers/files/delete_file.py diff --git a/agents-api/agents_api/routers/files/get_file.py b/src/agents-api/agents_api/routers/files/get_file.py similarity index 100% rename from agents-api/agents_api/routers/files/get_file.py rename to src/agents-api/agents_api/routers/files/get_file.py diff --git a/agents-api/agents_api/routers/files/list_files.py b/src/agents-api/agents_api/routers/files/list_files.py similarity index 100% rename from agents-api/agents_api/routers/files/list_files.py rename to src/agents-api/agents_api/routers/files/list_files.py diff --git a/agents-api/agents_api/routers/files/router.py b/src/agents-api/agents_api/routers/files/router.py similarity index 100% rename from agents-api/agents_api/routers/files/router.py rename to src/agents-api/agents_api/routers/files/router.py diff --git a/agents-api/agents_api/routers/healthz/__init__.py b/src/agents-api/agents_api/routers/healthz/__init__.py similarity index 100% rename from agents-api/agents_api/routers/healthz/__init__.py rename to src/agents-api/agents_api/routers/healthz/__init__.py diff --git a/agents-api/agents_api/routers/healthz/check_health.py b/src/agents-api/agents_api/routers/healthz/check_health.py similarity index 100% rename from agents-api/agents_api/routers/healthz/check_health.py rename to src/agents-api/agents_api/routers/healthz/check_health.py diff --git a/agents-api/agents_api/routers/healthz/router.py b/src/agents-api/agents_api/routers/healthz/router.py similarity index 100% rename from agents-api/agents_api/routers/healthz/router.py rename to src/agents-api/agents_api/routers/healthz/router.py diff --git a/agents-api/agents_api/routers/internal/__init__.py b/src/agents-api/agents_api/routers/internal/__init__.py similarity index 100% rename from agents-api/agents_api/routers/internal/__init__.py rename to src/agents-api/agents_api/routers/internal/__init__.py diff --git a/agents-api/agents_api/routers/internal/router.py b/src/agents-api/agents_api/routers/internal/router.py similarity index 100% rename from agents-api/agents_api/routers/internal/router.py rename to src/agents-api/agents_api/routers/internal/router.py diff --git a/agents-api/agents_api/routers/jobs/__init__.py b/src/agents-api/agents_api/routers/jobs/__init__.py similarity index 100% rename from agents-api/agents_api/routers/jobs/__init__.py rename to src/agents-api/agents_api/routers/jobs/__init__.py diff --git a/agents-api/agents_api/routers/jobs/routers.py b/src/agents-api/agents_api/routers/jobs/routers.py similarity index 100% rename from agents-api/agents_api/routers/jobs/routers.py rename to src/agents-api/agents_api/routers/jobs/routers.py diff --git a/src/agents-api/agents_api/routers/projects/__init__.py b/src/agents-api/agents_api/routers/projects/__init__.py new file mode 100644 index 000000000..ffc57284f --- /dev/null +++ b/src/agents-api/agents_api/routers/projects/__init__.py @@ -0,0 +1,5 @@ +# ruff: noqa: F401 + +from .create_project import create_project +from .list_projects import list_projects +from .router import router diff --git a/src/agents-api/agents_api/routers/projects/create_project.py b/src/agents-api/agents_api/routers/projects/create_project.py new file mode 100644 index 000000000..bb755d1a9 --- /dev/null +++ b/src/agents-api/agents_api/routers/projects/create_project.py @@ -0,0 +1,24 @@ +from typing import Annotated +from uuid import UUID + +from fastapi import Depends +from starlette.status import HTTP_201_CREATED + +from ...autogen.openapi_model import ( + CreateProjectRequest, + Project, +) +from ...dependencies.developer_id import get_developer_id +from ...queries.projects.create_project import create_project as create_project_query +from .router import router + + +@router.post("/projects", status_code=HTTP_201_CREATED, tags=["projects"]) +async def create_project( + x_developer_id: Annotated[UUID, Depends(get_developer_id)], + data: CreateProjectRequest, +) -> Project: + return await create_project_query( + developer_id=x_developer_id, + data=data, + ) diff --git a/src/agents-api/agents_api/routers/projects/list_projects.py b/src/agents-api/agents_api/routers/projects/list_projects.py new file mode 100644 index 000000000..53dc50e2a --- /dev/null +++ b/src/agents-api/agents_api/routers/projects/list_projects.py @@ -0,0 +1,37 @@ +from typing import Annotated, Literal +from uuid import UUID + +from fastapi import Depends + +from ...autogen.openapi_model import ListResponse, Project +from ...dependencies.developer_id import get_developer_id +from ...dependencies.query_filter import MetadataFilter, create_filter_extractor +from ...queries.projects.list_projects import list_projects as list_projects_query +from .router import router + + +@router.get("/projects", tags=["projects"]) +async def list_projects( + x_developer_id: Annotated[UUID, Depends(get_developer_id)], + # Expects the dot notation of object in query params + # Example: + # > ?metadata_filter.name=John&metadata_filter.age=30 + metadata_filter: Annotated[ + MetadataFilter, + Depends(create_filter_extractor("metadata_filter")), + ], + limit: int = 100, + offset: int = 0, + sort_by: Literal["created_at", "updated_at"] = "created_at", + direction: Literal["asc", "desc"] = "desc", +) -> ListResponse[Project]: + projects = await list_projects_query( + developer_id=x_developer_id, + limit=limit, + offset=offset, + sort_by=sort_by, + direction=direction, + metadata_filter=metadata_filter.model_dump(mode="json") or {}, + ) + + return ListResponse[Project](items=projects) diff --git a/src/agents-api/agents_api/routers/projects/router.py b/src/agents-api/agents_api/routers/projects/router.py new file mode 100644 index 000000000..af9233c56 --- /dev/null +++ b/src/agents-api/agents_api/routers/projects/router.py @@ -0,0 +1,3 @@ +from fastapi import APIRouter + +router = APIRouter() diff --git a/agents-api/agents_api/routers/responses/__init__.py b/src/agents-api/agents_api/routers/responses/__init__.py similarity index 100% rename from agents-api/agents_api/routers/responses/__init__.py rename to src/agents-api/agents_api/routers/responses/__init__.py diff --git a/agents-api/agents_api/routers/responses/create_response.py b/src/agents-api/agents_api/routers/responses/create_response.py similarity index 99% rename from agents-api/agents_api/routers/responses/create_response.py rename to src/agents-api/agents_api/routers/responses/create_response.py index a195aeec2..95aff4c49 100644 --- a/agents-api/agents_api/routers/responses/create_response.py +++ b/src/agents-api/agents_api/routers/responses/create_response.py @@ -24,8 +24,8 @@ convert_chat_response_to_response, convert_create_response, ) +from ..sessions.legacy.render import render_chat_input from ..sessions.metrics import total_tokens_per_user -from ..sessions.render import render_chat_input from .router import router diff --git a/agents-api/agents_api/routers/responses/get_response.py b/src/agents-api/agents_api/routers/responses/get_response.py similarity index 100% rename from agents-api/agents_api/routers/responses/get_response.py rename to src/agents-api/agents_api/routers/responses/get_response.py diff --git a/agents-api/agents_api/routers/responses/router.py b/src/agents-api/agents_api/routers/responses/router.py similarity index 100% rename from agents-api/agents_api/routers/responses/router.py rename to src/agents-api/agents_api/routers/responses/router.py diff --git a/src/agents-api/agents_api/routers/secrets/__init__.py b/src/agents-api/agents_api/routers/secrets/__init__.py new file mode 100644 index 000000000..5eb3a130f --- /dev/null +++ b/src/agents-api/agents_api/routers/secrets/__init__.py @@ -0,0 +1,14 @@ +# from .create_secret import create_agent_secret as create_agent_secret +from .create_secret import create_developer_secret as create_developer_secret + +# from .delete_secret import delete_agent_secret as delete_agent_secret +from .delete_secret import delete_developer_secret as delete_developer_secret + +# from .list_secrets import list_agent_secrets as list_agent_secrets +from .list_secrets import list_developer_secrets as list_developer_secrets +from .router import router as router + +# from .update_secret import update_agent_secret as update_agent_secret +from .update_secret import update_developer_secret as update_developer_secret + +# TODO: Add get_secret_by_name endpoint diff --git a/src/agents-api/agents_api/routers/secrets/create_secret.py b/src/agents-api/agents_api/routers/secrets/create_secret.py new file mode 100644 index 000000000..759a5c3b7 --- /dev/null +++ b/src/agents-api/agents_api/routers/secrets/create_secret.py @@ -0,0 +1,66 @@ +"""Create secret endpoint.""" + +from typing import Annotated +from uuid import UUID + +from fastapi import Depends +from starlette.status import HTTP_201_CREATED + +from agents_api.autogen.openapi_model import CreateSecretRequest, Secret + +from ...dependencies.developer_id import get_developer_id +from ...queries.secrets import create_secret as create_secret_query +from .router import router + + +@router.post("/secrets", status_code=HTTP_201_CREATED, tags=["secrets"]) +async def create_developer_secret( + *, + x_developer_id: Annotated[UUID, Depends(get_developer_id)], + secret: CreateSecretRequest, +) -> Secret: + """Create a new secret for a developer. + + Args: + developer_id: ID of the developer creating the secret + secret: Secret to create + + Returns: + The created secret + + Raises: + HTTPException: If a secret with this name already exists (409 Conflict) + """ + return await create_secret_query( + developer_id=x_developer_id, + name=secret.name, + description=secret.description, + value=secret.value, + metadata=secret.metadata, + ) + + +# @router.post("/agents/{agent_id}/secrets", response_model=Secret) +# async def create_agent_secret( +# agent_id: UUID, +# secret: CreateSecretRequest, +# ) -> Secret: +# """Create a new secret for an agent. + +# Args: +# agent_id: ID of the agent creating the secret +# secret: Secret to create + +# Returns: +# The created secret + +# Raises: +# HTTPException: If a secret with this name already exists (409 Conflict) +# """ +# return await create_secret_query( +# agent_id=agent_id, +# name=secret.name, +# description=secret.description, +# value=secret.value, +# metadata=secret.metadata, +# ) diff --git a/src/agents-api/agents_api/routers/secrets/delete_secret.py b/src/agents-api/agents_api/routers/secrets/delete_secret.py new file mode 100644 index 000000000..5d8841f20 --- /dev/null +++ b/src/agents-api/agents_api/routers/secrets/delete_secret.py @@ -0,0 +1,60 @@ +"""Delete secret endpoint.""" + +from typing import Annotated +from uuid import UUID + +from fastapi import Depends +from starlette.status import HTTP_202_ACCEPTED + +from agents_api.autogen.openapi_model import ResourceDeletedResponse + +from ...dependencies.developer_id import get_developer_id +from ...queries.secrets import delete_secret as delete_secret_query +from .router import router + + +@router.delete( + "/secrets/{secret_id}", + response_model=ResourceDeletedResponse, + status_code=HTTP_202_ACCEPTED, + tags=["secrets"], +) +async def delete_developer_secret( + *, + secret_id: UUID, + x_developer_id: Annotated[UUID, Depends(get_developer_id)], +) -> ResourceDeletedResponse: + """Delete a secret. + + Args: + secret_id: ID of the secret to delete + x_developer_id: ID of the developer who owns the secret + + Returns: + The deleted secret + + Raises: + HTTPException: If the secret doesn't exist + """ + return await delete_secret_query(secret_id=secret_id, developer_id=x_developer_id) + + +# @router.delete("/agents/{agent_id}/secrets/{secret_id}", response_model=ResourceDeletedResponse) +# async def delete_agent_secret( +# agent_id: UUID, +# secret_id: UUID, +# ) -> ResourceDeletedResponse: +# """Delete a secret. + +# Args: +# secret_id: ID of the secret to delete +# conn: Database connection +# developer_id: ID of the developer who owns the secret + +# Returns: +# The deleted secret + +# Raises: +# HTTPException: If the secret doesn't exist +# """ +# return await delete_secret_query(secret_id=secret_id, agent_id=agent_id) diff --git a/src/agents-api/agents_api/routers/secrets/list_secrets.py b/src/agents-api/agents_api/routers/secrets/list_secrets.py new file mode 100644 index 000000000..716bdc89a --- /dev/null +++ b/src/agents-api/agents_api/routers/secrets/list_secrets.py @@ -0,0 +1,59 @@ +"""List secrets endpoint.""" + +from typing import Annotated +from uuid import UUID + +from fastapi import Depends + +from ...autogen.openapi_model import Secret +from ...dependencies.developer_id import get_developer_id +from ...queries.secrets import list_secrets as list_secrets_query +from .router import router + + +@router.get("/secrets", response_model=list[Secret], tags=["secrets"]) +async def list_developer_secrets( + *, + x_developer_id: Annotated[UUID, Depends(get_developer_id)], + limit: int = 100, + offset: int = 0, +) -> list[Secret]: + """List all secrets for a developer. + + Args: + x_developer_id: ID of the developer whose secrets to list + limit: Maximum number of secrets to return + offset: Number of secrets to skip + + Returns: + List of secrets + """ + return await list_secrets_query( + developer_id=x_developer_id, + limit=limit, + offset=offset, + ) + + +# @router.get("/agents/{agent_id}/secrets", response_model=list[Secret]) +# async def list_agent_secrets( +# agent_id: UUID, +# *, +# limit: int = 100, +# offset: int = 0, +# ) -> list[Secret]: +# """List all secrets for an agent. + +# Args: +# agent_id: ID of the agent whose secrets to list +# limit: Maximum number of secrets to return +# offset: Number of secrets to skip + +# Returns: +# List of secrets +# """ +# return await list_secrets_query( +# agent_id=agent_id, +# limit=limit, +# offset=offset, +# ) diff --git a/agents-api/agents_api/routers/sessions/router.py b/src/agents-api/agents_api/routers/secrets/router.py similarity index 100% rename from agents-api/agents_api/routers/sessions/router.py rename to src/agents-api/agents_api/routers/secrets/router.py diff --git a/src/agents-api/agents_api/routers/secrets/update_secret.py b/src/agents-api/agents_api/routers/secrets/update_secret.py new file mode 100644 index 000000000..13af2a12c --- /dev/null +++ b/src/agents-api/agents_api/routers/secrets/update_secret.py @@ -0,0 +1,70 @@ +"""Update secret endpoint.""" + +from typing import Annotated +from uuid import UUID + +from fastapi import Depends + +from ...autogen.openapi_model import Secret, UpdateSecretRequest +from ...dependencies.developer_id import get_developer_id +from ...queries.secrets import update_secret as update_secret_query +from .router import router + + +@router.put("/secrets/{secret_id}", tags=["secrets"]) +async def update_developer_secret( + *, + secret_id: UUID, + data: UpdateSecretRequest, + x_developer_id: Annotated[UUID, Depends(get_developer_id)], +) -> Secret: + """Update a developer secret. + + Args: + developer_id: ID of the developer who owns the secret + secret_id: ID of the secret to update + data: New secret data + + Returns: + The updated secret + + Raises: + HTTPException: If the secret doesn't exist or doesn't belong to the developer + """ + return await update_secret_query( + secret_id=secret_id, + developer_id=x_developer_id, + name=data.name, + description=data.description, + metadata=data.metadata, + value=data.value, + ) + + +# @router.put("/agents/{agent_id}/secrets/{secret_id}", response_model=Secret) +# async def update_agent_secret( +# agent_id: UUID, +# secret_id: UUID, +# data: UpdateSecretRequest, +# ) -> Secret: +# """Update an agent secret. + +# Args: +# agent_id: ID of the agent who owns the secret +# secret_id: ID of the secret to update +# data: New secret data + +# Returns: +# The updated secret + +# Raises: +# HTTPException: If the secret doesn't exist or doesn't belong to the agent +# """ +# return await update_secret_query( +# secret_id=secret_id, +# agent_id=agent_id, +# name=data.name, +# description=data.description, +# metadata=data.metadata, +# value=data.value, +# ) diff --git a/agents-api/agents_api/routers/sessions/__init__.py b/src/agents-api/agents_api/routers/sessions/__init__.py similarity index 100% rename from agents-api/agents_api/routers/sessions/__init__.py rename to src/agents-api/agents_api/routers/sessions/__init__.py diff --git a/agents-api/agents_api/routers/utils/__init__.py b/src/agents-api/agents_api/routers/sessions/auto_tools/__init__.py similarity index 100% rename from agents-api/agents_api/routers/utils/__init__.py rename to src/agents-api/agents_api/routers/sessions/auto_tools/__init__.py diff --git a/src/agents-api/agents_api/routers/sessions/auto_tools/chat.py b/src/agents-api/agents_api/routers/sessions/auto_tools/chat.py new file mode 100644 index 000000000..b1cc8a004 --- /dev/null +++ b/src/agents-api/agents_api/routers/sessions/auto_tools/chat.py @@ -0,0 +1,263 @@ +""" +Chat implementation with automatic tool execution support. +When auto_run_tools is enabled, this implementation will automatically execute tools +and feed results back to the model. +""" + +from typing import Any +from uuid import UUID + +from fastapi import BackgroundTasks, HTTPException +from fastapi.responses import StreamingResponse +from uuid_extensions import uuid7 + +from ....autogen.openapi_model import ( + BaseChosenToolCall, + ChatInput, + CreateEntryRequest, + MessageChatResponse, + Tool, + ToolExecutionResult, +) +from ....clients import litellm +from ....common.protocol.developers import Developer +from ....common.utils.datetime import utcnow +from ....common.utils.tool_runner import run_llm_with_tools, run_tool_call +from ....queries.entries.create_entries import create_entries + +# Entry saving logic will be implemented directly in this file +from ..metrics import total_tokens_per_user +from .render import render_chat_input + +COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" + + +async def chat( + developer: Developer, + session_id: UUID, + chat_input: ChatInput, + background_tasks: BackgroundTasks, + x_custom_api_key: str | None = None, + mock_response: str | None = None, + connection_pool: Any = None, # This is for testing purposes +) -> MessageChatResponse | StreamingResponse: + """ + Chat implementation with automatic tool execution. + + When chat_input.auto_run_tools is True, tools are executed automatically. + When False, tools are not passed to the model to prevent tool calls. + + Note: Streaming is not supported when tools are involved. + + Parameters: + developer (Developer): The developer associated with the chat session. + session_id (UUID): The unique identifier of the chat session. + chat_input (ChatInput): The chat input data with auto_run_tools flag. + background_tasks (BackgroundTasks): The background tasks to run. + x_custom_api_key (Optional[str]): The custom API key. + mock_response (Optional[str]): Mock response for testing. + connection_pool: Connection pool for testing purposes. + + Returns: + MessageChatResponse: The chat response (no streaming with tools). + """ + ( + messages, + doc_references, + tools, # auto_tools/render.py returns actual tools, not formatted + settings, + new_messages, + chat_context, + ) = await render_chat_input( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) + + # Determine tools to use based on auto_run_tools + # AIDEV-NOTE: When auto_run_tools=False, pass empty tools list to prevent + # model from making tool calls that won't be executed. This simplifies the + # flow as the model will always return a regular completion instead of tool calls. + tools_to_use = tools if chat_input.auto_run_tools else [] + + # Check if streaming is requested with tools + if chat_input.stream and tools_to_use: + # Streaming with tools is not supported + msg = "Streaming is not supported when auto_run_tools is enabled" + raise HTTPException(status_code=400, detail=msg) + + # Prepare base parameters + completion_data = { + "model": settings["model"], + "user": str(developer.id), + "tags": developer.tags, + "custom_api_key": x_custom_api_key, + "mock_response": mock_response, + **settings, + } + + # Remove messages from completion_data if it exists to avoid duplicate parameter error + completion_data.pop("messages", None) + completion_data.pop("tools", None) + + # Always use tool execution loop for consistency + # Get the first agent from the chat context + if not chat_context.agents: + msg = "No agent found for the session" + raise HTTPException(status_code=400, detail=msg) + + agent = chat_context.agents[0] + + # Create a partial function for tool execution with chat context + async def run_tool_partial(tool: Tool, call: BaseChosenToolCall) -> ToolExecutionResult: + return await run_tool_call( + developer_id=developer.id, + agent_id=agent.id, + task_id=None, # No task in chat context + session_id=session_id, + tool=tool, + call=call, + connection_pool=connection_pool, + ) + + # Handle streaming for non-tool cases + if chat_input.stream and not tools_to_use: + # Import streaming function from legacy implementation + from ..legacy.chat import stream_chat_response + + # Prepare parameters for LiteLLM + params = { + "messages": messages, + "tools": None, # No tools when streaming + "stream": True, + "stream_options": {"include_usage": True}, + **completion_data, + } + + # Get streaming response from LiteLLM + model_response = await litellm.acompletion(**params) + + # Save input messages if requested + if chat_input.save: + new_entries = [ + CreateEntryRequest.from_model_input( + model=settings["model"], + **msg, + source="api_request", + ) + for msg in new_messages + ] + + background_tasks.add_task( + create_entries, + developer_id=developer.id, + session_id=session_id, + data=new_entries, + ) + + # Return streaming response + return StreamingResponse( + stream_chat_response( + model_response=model_response, + developer_id=developer.id, + doc_references=doc_references, + should_save=chat_input.save, + session_id=session_id, + model=settings["model"], + background_tasks=background_tasks, + messages=messages, + custom_api_key_used=x_custom_api_key is not None, + developer_tags=developer.tags, + connection_pool=connection_pool, + ), + media_type="text/event-stream", + ) + + # Run LLM with automatic tool execution (tools=[] when auto_run_tools=False) + all_messages = await run_llm_with_tools( + messages=messages, + tools=tools_to_use, # Empty list when auto_run_tools=False + settings=completion_data, + run_tool_call=run_tool_partial, + ) + + # The last message is the final response + final_response = all_messages[-1] + + # Save all messages to history if requested + if chat_input.save: + # Save input messages + entries_to_save = [ + CreateEntryRequest.from_model_input( + model=settings["model"], + **msg, + source="api_request", + ) + for msg in new_messages + ] + + # Save all generated messages (including tool calls and results) + # Correctly label each message based on its type + for msg in all_messages[len(messages) :]: + role = msg.get("role") + # Determine the correct source based on message type + if role == "assistant" and msg.get("tool_calls"): + source = "tool_request" + elif role == "assistant": + source = "api_response" + elif role == "tool": + source = "tool_response" + else: + source = "api_request" # fallback, shouldn't happen + + entries_to_save.append( + CreateEntryRequest.from_model_input( + model=settings["model"], + **msg, + source=source, + ) + ) + + background_tasks.add_task( + create_entries, + developer_id=developer.id, + session_id=session_id, + data=entries_to_save, + ) + + # Create non-streaming response + # Extract the final message content from the last message + final_content = final_response.get("content", "") + final_tool_calls = final_response.get("tool_calls") + + # For usage data, we would need to track this in run_llm_with_tools + usage_data = { + "prompt_tokens": 0, + "completion_tokens": 0, + "total_tokens": 0, + } + + chat_response = MessageChatResponse( + id=uuid7(), + created_at=utcnow(), + jobs=[], + docs=doc_references, + usage=usage_data, + choices=[ + { + "index": 0, + "message": { + "role": "assistant", + "content": final_content, + "tool_calls": final_tool_calls, + }, + "finish_reason": "stop", + } + ], + ) + + # Track usage metrics + if usage_data.get("total_tokens", 0) > 0: + total_tokens_per_user.labels(str(developer.id)).inc(amount=usage_data["total_tokens"]) + + return chat_response diff --git a/src/agents-api/agents_api/routers/sessions/auto_tools/render.py b/src/agents-api/agents_api/routers/sessions/auto_tools/render.py new file mode 100644 index 000000000..0b32ca4e3 --- /dev/null +++ b/src/agents-api/agents_api/routers/sessions/auto_tools/render.py @@ -0,0 +1,165 @@ +from typing import Annotated +from uuid import UUID + +from fastapi import Depends, HTTPException, status + +from ....autogen.openapi_model import ( + ChatInput, + DocReference, + RenderResponse, +) +from ....common.protocol.developers import Developer +from ....common.protocol.sessions import ChatContext +from ....common.utils.template import render_template +from ....dependencies.developer_id import get_developer_data +from ....env import max_free_sessions +from ....queries.chat.gather_messages import gather_messages +from ....queries.chat.prepare_chat_context import prepare_chat_context +from ....queries.sessions.count_sessions import count_sessions as count_sessions_query +from ...utils.model_validation import validate_model + +COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" + + +async def render( + developer: Annotated[Developer, Depends(get_developer_data)], + session_id: UUID, + chat_input: ChatInput, +) -> RenderResponse: + """ + Renders a chat input. + + Parameters: + developer (Developer): The developer associated with the chat session. + session_id (UUID): The unique identifier of the chat session. + chat_input (ChatInput): The chat input data. + + Returns: + RenderResponse: The rendered chat input. + """ + + messages, doc_references, tools, *_ = await render_chat_input( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) + + return RenderResponse(messages=messages, docs=doc_references, tools=tools) + + +async def render_chat_input( + developer: Developer, + session_id: UUID, + chat_input: ChatInput, +) -> tuple[list[dict], list[DocReference], list[dict] | None, dict, list[dict], ChatContext]: + # check if the developer is paid + if "paid" not in developer.tags: + # get the session length + sessions = await count_sessions_query(developer_id=developer.id) + session_length = sessions["count"] + if session_length > max_free_sessions: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail="Session length exceeded the free tier limit", + ) + + # First get the chat context + chat_context: ChatContext = await prepare_chat_context( + developer_id=developer.id, + session_id=session_id, + ) + + # Merge the settings and prepare environment + chat_context.merge_settings(chat_input) + settings: dict = chat_context.settings or {} + + await validate_model(settings.get("model")) + + # Get the past messages and doc references + past_messages, doc_references = await gather_messages( + developer=developer, + session_id=session_id, + chat_context=chat_context, + chat_input=chat_input, + ) + + # Prepare the environment + env: dict = chat_context.get_chat_environment() + env["docs"] = [ + { + "title": ref.title, + "content": [ref.snippet.content], + "metadata": ref.metadata or None, + } + for ref in doc_references + ] + + # Add metadata from chat_input to the environment + # AIDEV-NOTE: metadata field enables dynamic instructions at message level via system template + if hasattr(chat_input, "metadata") and chat_input.metadata: + env["metadata"] = chat_input.metadata + + # Render the system message + if system_template := chat_context.merge_system_template( + chat_context.session.system_template, + ): + system_message = { + "role": "system", + "content": system_template, + } + system_messages: list[dict] = await render_template([system_message], variables=env) + past_messages = system_messages + past_messages + + # Render the incoming messages + new_raw_messages = [msg.model_dump(mode="json") for msg in chat_input.messages] + + if chat_context.session.render_templates: + new_messages = await render_template(new_raw_messages, variables=env) + else: + new_messages = new_raw_messages + + # Combine the past messages with the new messages + messages = past_messages + new_messages + + # Get the agent tools + tools = chat_context.get_active_tools() + # If the user has provided tools, add them to the tools, but only if they are not already in the tools + if chat_input.tools: + existing_tool_names = {tool.name for tool in tools} + for tool in chat_input.tools: + if tool.name not in existing_tool_names: + tools.append(tool) + + # FIXME: Truncate chat messages in the chat context + # SCRUM-7 + if chat_context.session.context_overflow == "truncate": + # messages = messages[-settings["max_tokens"] :] + msg = "Truncation is not yet implemented" + raise NotImplementedError(msg) + + # FIXME: Hotfix for datetime not serializable. Needs investigation + messages = [ + { + k: v + for k, v in m.items() + if k in ["role", "content", "tool_calls", "tool_call_id", "user"] + } + for m in messages + ] + + # HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages + # FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format + is_groq_model = settings.get("model", "").lower().startswith("llama-3.1") + if is_groq_model: + messages = [ + { + k: v + for k, v in message.items() + if k not in ["tool_calls", "tool_call_id", "user", "continue_", "name"] + } + for message in messages + ] + + # AIDEV-NOTE: Return actual Tool objects (unformatted) for auto_tools implementation + # The auto_tools/chat.py handles tool formatting and execution internally + return messages, doc_references, tools, settings, new_messages, chat_context diff --git a/src/agents-api/agents_api/routers/sessions/chat.py b/src/agents-api/agents_api/routers/sessions/chat.py new file mode 100644 index 000000000..1c6e799c9 --- /dev/null +++ b/src/agents-api/agents_api/routers/sessions/chat.py @@ -0,0 +1,91 @@ +""" +Chat endpoint router with feature flag-based implementation selection. +Routes to either legacy or auto-tools implementation based on feature flags. +""" + +from typing import Annotated, Any +from uuid import UUID + +from fastapi import BackgroundTasks, Depends, Header +from fastapi.responses import StreamingResponse +from starlette.status import HTTP_201_CREATED + +from ...autogen.openapi_model import ( + ChatInput, + ChatResponse, + MessageChatResponse, +) +from ...common.protocol.developers import Developer +from ...common.utils.feature_flags import get_feature_flag_value +from ...dependencies.developer_id import get_developer_data +from .router import router + + +def with_mock_response(r: str | None = None): + def wrapper(): + return r + + return wrapper + + +@router.post( + "/sessions/{session_id}/chat", + status_code=HTTP_201_CREATED, + tags=["sessions", "chat"], + response_model=ChatResponse, +) +async def chat( + developer: Annotated[Developer, Depends(get_developer_data)], + session_id: UUID, + chat_input: ChatInput, + background_tasks: BackgroundTasks, + x_custom_api_key: Annotated[str | None, Header(alias="X-Custom-Api-Key")] = None, + mock_response: Annotated[str | None, Depends(with_mock_response())] = None, + connection_pool: Any = None, # This is for testing purposes +) -> MessageChatResponse | StreamingResponse: + """ + Initiates a chat session. + + Routes to different implementations based on feature flags: + - If auto_run_tools_chat feature flag is enabled, uses the new auto-tools implementation + - Otherwise, uses the legacy implementation + + Parameters: + developer (Developer): The developer associated with the chat session. + session_id (UUID): The unique identifier of the chat session. + chat_input (ChatInput): The chat input data. + background_tasks (BackgroundTasks): The background tasks to run. + x_custom_api_key (Optional[str]): The custom API key. + mock_response (Optional[str]): Mock response for testing. + connection_pool: Connection pool for testing purposes. + + Returns: + ChatResponse or StreamingResponse: The chat response or streaming response. + """ + # Check if auto tools feature is enabled + # AIDEV-NOTE: Feature flag controls which implementation to use + if get_feature_flag_value("auto_run_tools_chat", developer_id=str(developer.id)): + from .auto_tools.chat import chat as chat_auto_tools + + return await chat_auto_tools( + developer=developer, + session_id=session_id, + chat_input=chat_input, + background_tasks=background_tasks, + x_custom_api_key=x_custom_api_key, + mock_response=mock_response, + connection_pool=connection_pool, + ) + + # Default to legacy implementation + from .legacy.chat import chat as chat_legacy + + return await chat_legacy( + developer=developer, + session_id=session_id, + chat_input=chat_input, + background_tasks=background_tasks, + x_custom_api_key=x_custom_api_key, + mock_response=mock_response, + connection_pool=connection_pool, + ) diff --git a/agents-api/agents_api/routers/sessions/create_or_update_session.py b/src/agents-api/agents_api/routers/sessions/create_or_update_session.py similarity index 100% rename from agents-api/agents_api/routers/sessions/create_or_update_session.py rename to src/agents-api/agents_api/routers/sessions/create_or_update_session.py diff --git a/agents-api/agents_api/routers/sessions/create_session.py b/src/agents-api/agents_api/routers/sessions/create_session.py similarity index 72% rename from agents-api/agents_api/routers/sessions/create_session.py rename to src/agents-api/agents_api/routers/sessions/create_session.py index 462553e0c..fe5a37d0b 100644 --- a/agents-api/agents_api/routers/sessions/create_session.py +++ b/src/agents-api/agents_api/routers/sessions/create_session.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for creating new sessions. from typing import Annotated from uuid import UUID @@ -10,6 +11,8 @@ from .router import router +# AIDEV-NOTE: API endpoint to create a new session. +# It depends on the developer ID and the session data from the request body, and calls the create_session_query function. @router.post("/sessions", status_code=HTTP_201_CREATED, tags=["sessions"]) async def create_session( x_developer_id: Annotated[UUID, Depends(get_developer_id)], diff --git a/agents-api/agents_api/routers/sessions/delete_session.py b/src/agents-api/agents_api/routers/sessions/delete_session.py similarity index 100% rename from agents-api/agents_api/routers/sessions/delete_session.py rename to src/agents-api/agents_api/routers/sessions/delete_session.py diff --git a/agents-api/agents_api/routers/sessions/exceptions.py b/src/agents-api/agents_api/routers/sessions/exceptions.py similarity index 100% rename from agents-api/agents_api/routers/sessions/exceptions.py rename to src/agents-api/agents_api/routers/sessions/exceptions.py diff --git a/agents-api/agents_api/routers/sessions/get_session.py b/src/agents-api/agents_api/routers/sessions/get_session.py similarity index 68% rename from agents-api/agents_api/routers/sessions/get_session.py rename to src/agents-api/agents_api/routers/sessions/get_session.py index 3b70201e3..065fe4a68 100644 --- a/agents-api/agents_api/routers/sessions/get_session.py +++ b/src/agents-api/agents_api/routers/sessions/get_session.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for retrieving a specific session. from typing import Annotated from uuid import UUID @@ -9,6 +10,8 @@ from .router import router +# AIDEV-NOTE: API endpoint to get a session by its ID. +# It depends on the developer ID and the session ID from the path parameter, and calls the get_session_query function. @router.get("/sessions/{session_id}", tags=["sessions"]) async def get_session( session_id: UUID, diff --git a/agents-api/agents_api/routers/sessions/get_session_history.py b/src/agents-api/agents_api/routers/sessions/get_session_history.py similarity index 100% rename from agents-api/agents_api/routers/sessions/get_session_history.py rename to src/agents-api/agents_api/routers/sessions/get_session_history.py diff --git a/agents-api/tests/__init__.py b/src/agents-api/agents_api/routers/sessions/legacy/__init__.py similarity index 100% rename from agents-api/tests/__init__.py rename to src/agents-api/agents_api/routers/sessions/legacy/__init__.py diff --git a/src/agents-api/agents_api/routers/sessions/legacy/chat.py b/src/agents-api/agents_api/routers/sessions/legacy/chat.py new file mode 100644 index 000000000..393c9c6d8 --- /dev/null +++ b/src/agents-api/agents_api/routers/sessions/legacy/chat.py @@ -0,0 +1,298 @@ +from collections.abc import AsyncGenerator +from typing import Annotated, Any +from uuid import UUID + +from fastapi import BackgroundTasks, Depends, Header +from fastapi.responses import StreamingResponse +from litellm.utils import Choices, Message, ModelResponse +from uuid_extensions import uuid7 + +from ....autogen.openapi_model import ( + ChatInput, + ChunkChatResponse, + CreateEntryRequest, + MessageChatResponse, +) +from ....clients import litellm +from ....common.protocol.developers import Developer +from ....common.utils.datetime import utcnow +from ....common.utils.usage import track_usage +from ....dependencies.developer_id import get_developer_data +from ....queries.entries.create_entries import create_entries +from ..metrics import total_tokens_per_user +from .render import render_chat_input + +COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" + + +def with_mock_response(r: str | None = None): + def wrapper(): + return r + + return wrapper + + +def _join_deltas(acc: dict, delta: dict) -> dict: + acc["content"] = (acc.get("content", "") or "") + (delta.pop("content", "") or "") + return {**acc, **delta} + + +async def stream_chat_response( + model_response: litellm.CustomStreamWrapper, + developer_id: UUID, + doc_references: list[Any], + should_save: bool = False, + session_id: UUID | None = None, + model: str = "", + background_tasks: BackgroundTasks | None = None, + messages: list[dict] | None = None, + custom_api_key_used: bool = False, + developer_tags: list[str] | None = None, + connection_pool: Any = None, # This is for testing purposes +) -> AsyncGenerator[str, None]: + """ + Streams the chat response as Server-Sent Events. + + Args: + model_response: The streaming model response from LiteLLM + developer_id: The developer ID for usage tracking + doc_references: Document references to include in the response + should_save: Whether to save the response to history + session_id: The session ID for saving response + model: The model name used for the response + background_tasks: Background tasks for saving responses + messages: The original messages sent to the model (for usage tracking) + custom_api_key_used: Whether a custom API key was used + developer_tags: Tags associated with the developer (for metadata) + connection_pool: Connection pool for testing purposes + """ + collected_output = [] + # Variables to collect the complete response for saving to history if needed + default_role = "assistant" + default_finish_reason = "stop" + + # Usage information will be collected from the stream response + usage_data = None + + # Create initial response with metadata + response_id = uuid7() + created_time = utcnow() + + # Process all chunks + async for chunk in model_response: + if not collected_output: + collected_output = [{} for _ in range(len(chunk.choices or []))] + + collected_output = [ + _join_deltas(acc, choice.delta.model_dump()) + for acc, choice in zip(collected_output, chunk.choices) + ] + + # Check if this chunk contains usage data + if hasattr(chunk, "usage") and chunk.usage: + usage_data = chunk.usage.model_dump() + + # Create a proper ChunkChatResponse for each chunk + chunk_response = ChunkChatResponse( + id=response_id, + created_at=created_time, + docs=doc_references, + jobs=[], + usage=usage_data, + choices=[ + { + **choice.model_dump(), + "delta": { + **choice.delta.model_dump(), + "role": choice.delta.role or default_role, + }, + "finish_reason": choice.finish_reason or default_finish_reason, + } + for choice in chunk.choices + ], + ) + + # Forward the chunk as a proper ChunkChatResponse + yield f"data: {chunk_response.model_dump_json()}\n\n" + + # Track token usage with Prometheus metrics if available + if usage_data and usage_data.get("total_tokens", 0) > 0: + total_tokens_per_user.labels(str(developer_id)).inc( + amount=usage_data.get("total_tokens", 0) + ) + + # Track usage in database + await track_usage( + developer_id=developer_id, + model=model, + messages=messages or [], + response=ModelResponse( + id=str(response_id), + choices=[ + Choices( + message=Message( + content=choice.get("content", ""), + tool_calls=choice.get("tool_calls"), + ), + ) + for choice in collected_output + ], + usage=usage_data, + ), + custom_api_used=custom_api_key_used, + metadata={ + "tags": developer_tags or [], + "streaming": True, + }, + connection_pool=connection_pool, + ) + + # Save the complete response if requested + if should_save: + background_tasks.add_task( + create_entries, + developer_id=developer_id, + session_id=session_id, + data=[ + CreateEntryRequest.from_model_input( + model=model, + **{ + **choice, + "role": choice.get("role", default_role) or default_role, + "finish_reason": choice.get("finish_reason", default_finish_reason) + or default_finish_reason, + }, + source="api_response", + ) + for choice in collected_output + ], + ) + + +async def chat( + developer: Annotated[Developer, Depends(get_developer_data)], + session_id: UUID, + chat_input: ChatInput, + background_tasks: BackgroundTasks, + x_custom_api_key: Annotated[str | None, Header(alias="X-Custom-Api-Key")] = None, + mock_response: Annotated[str | None, Depends(with_mock_response())] = None, + connection_pool: Any = None, # This is for testing purposes +) -> MessageChatResponse | StreamingResponse: + """ + Initiates a chat session. + + Parameters: + developer (Developer): The developer associated with the chat session. + session_id (UUID): The unique identifier of the chat session. + chat_input (ChatInput): The chat input data. + background_tasks (BackgroundTasks): The background tasks to run. + x_custom_api_key (Optional[str]): The custom API key. + + Returns: + ChatResponse or StreamingResponse: The chat response or streaming response. + """ + ( + messages, + doc_references, + formatted_tools, + settings, + new_messages, + chat_context, + ) = await render_chat_input( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) + + # Prepare parameters for LiteLLM + params = { + "messages": messages, + "tools": formatted_tools or None, + "user": str(developer.id), + "tags": developer.tags, + "custom_api_key": x_custom_api_key, + } + + # Set streaming parameter based on chat_input.stream + if chat_input.stream: + params["stream"] = True + params["stream_options"] = {"include_usage": True} + + payload = {**settings, **params, "mock_response": mock_response} + + # Get response from LiteLLM (streaming or non-streaming) + model_response = await litellm.acompletion(**payload) + + # Save the input messages to the session history if requested + if chat_input.save: + new_entries = [ + CreateEntryRequest.from_model_input( + model=settings["model"], + **msg, + source="api_request", + ) + for msg in new_messages + ] + + # For non-streaming, save the response immediately + if not chat_input.stream: + # Add the response to the new entries + # FIXME: We need to save all the choices + new_entries.append( + CreateEntryRequest.from_model_input( + model=settings["model"], + **model_response.choices[0].model_dump()["message"], + source="api_response", + ), + ) + + background_tasks.add_task( + create_entries, + developer_id=developer.id, + session_id=session_id, + data=new_entries, + ) + + # Handle streaming response + if chat_input.stream: + # Return streaming response using the unified function + return StreamingResponse( + stream_chat_response( + model_response=model_response, + developer_id=developer.id, + doc_references=doc_references, + should_save=chat_input.save, + session_id=session_id, + model=settings["model"], + background_tasks=background_tasks, + messages=messages, + custom_api_key_used=x_custom_api_key is not None, + developer_tags=developer.tags, + connection_pool=connection_pool, + ), + media_type="text/event-stream", + ) + + # Handle non-streaming response + # Adaptive context handling + jobs = [] + if chat_context.session.context_overflow == "adaptive": + # FIXME: Start the adaptive context workflow + # SCRUM-8 + msg = "Adaptive context is not yet implemented" + raise NotImplementedError(msg) + + chat_response = MessageChatResponse( + id=uuid7(), + created_at=utcnow(), + jobs=jobs, + docs=doc_references, + usage=model_response.usage.model_dump(), + choices=[choice.model_dump() for choice in model_response.choices], + ) + + total_tokens_per_user.labels(str(developer.id)).inc( + amount=chat_response.usage.total_tokens if chat_response.usage is not None else 0, + ) + + return chat_response diff --git a/agents-api/agents_api/routers/sessions/render.py b/src/agents-api/agents_api/routers/sessions/legacy/render.py similarity index 81% rename from agents-api/agents_api/routers/sessions/render.py rename to src/agents-api/agents_api/routers/sessions/legacy/render.py index 0322573b7..0d259af47 100644 --- a/agents-api/agents_api/routers/sessions/render.py +++ b/src/agents-api/agents_api/routers/sessions/legacy/render.py @@ -2,32 +2,27 @@ from uuid import UUID from fastapi import Depends, HTTPException, status -from starlette.status import HTTP_200_OK -from ...autogen.openapi_model import ( +from ....autogen.openapi_model import ( ChatInput, DocReference, RenderResponse, ) -from ...common.protocol.developers import Developer -from ...common.protocol.sessions import ChatContext -from ...common.utils.template import render_template -from ...dependencies.developer_id import get_developer_data -from ...env import max_free_sessions -from ...queries.chat.gather_messages import gather_messages -from ...queries.chat.prepare_chat_context import prepare_chat_context -from ...queries.sessions.count_sessions import count_sessions as count_sessions_query -from ..utils.model_validation import validate_model -from .router import router +from ....common.protocol.developers import Developer +from ....common.protocol.sessions import ChatContext +from ....common.utils.expressions import evaluate_expressions +from ....common.utils.template import render_template +from ....dependencies.developer_id import get_developer_data +from ....env import max_free_sessions +from ....queries.chat.gather_messages import gather_messages +from ....queries.chat.prepare_chat_context import prepare_chat_context +from ....queries.secrets.list import list_secrets_query +from ....queries.sessions.count_sessions import count_sessions as count_sessions_query +from ...utils.model_validation import validate_model COMPUTER_USE_BETA_FLAG = "computer-use-2024-10-22" -@router.post( - "/sessions/{session_id}/render", - status_code=HTTP_200_OK, - tags=["sessions", "render"], -) async def render( developer: Annotated[Developer, Depends(get_developer_data)], session_id: UUID, @@ -101,6 +96,11 @@ async def render_chat_input( for ref in doc_references ] + # Add metadata from chat_input to the environment + # AIDEV-NOTE: metadata field enables dynamic instructions at message level via system template + if hasattr(chat_input, "metadata") and chat_input.metadata: + env["metadata"] = chat_input.metadata + # Render the system message if system_template := chat_context.merge_system_template( chat_context.session.system_template, @@ -162,7 +162,19 @@ async def render_chat_input( # `function` (see: https://docs.litellm.ai/docs/providers/anthropic#computer-tools) # but we don't allow that (spec should match type). formatted_tools = [] - for i, tool in enumerate(tools): + secrets = {} + if tools and any( + tool.type == "computer_20241022" and tool.computer_20241022 for tool in tools + ): + secrets = { + secret.name: secret.value + for secret in await list_secrets_query( + developer_id=developer.id, + decrypt=True, + ) + } + + for tool in tools: if tool.type == "computer_20241022" and tool.computer_20241022: function = tool.computer_20241022 tool = { @@ -170,7 +182,7 @@ async def render_chat_input( "function": { "name": tool.name, "parameters": { - k: v + k: evaluate_expressions(v, values={"secrets": secrets}) for k, v in function.model_dump().items() if k not in ["name", "type"] } diff --git a/agents-api/agents_api/routers/sessions/list_sessions.py b/src/agents-api/agents_api/routers/sessions/list_sessions.py similarity index 76% rename from agents-api/agents_api/routers/sessions/list_sessions.py rename to src/agents-api/agents_api/routers/sessions/list_sessions.py index 76ff44280..24f1c35c3 100644 --- a/agents-api/agents_api/routers/sessions/list_sessions.py +++ b/src/agents-api/agents_api/routers/sessions/list_sessions.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for listing sessions with filtering, pagination, and sorting. from typing import Annotated, Literal from uuid import UUID @@ -10,6 +11,9 @@ from .router import router +# AIDEV-NOTE: API endpoint to list sessions. +# Supports filtering by metadata, pagination (limit, offset), and sorting (sort_by, direction). +# It depends on developer ID, metadata filter, and query parameters, and calls the list_sessions_query function. @router.get("/sessions", tags=["sessions"]) async def list_sessions( x_developer_id: Annotated[UUID, Depends(get_developer_id)], diff --git a/agents-api/agents_api/routers/sessions/metrics.py b/src/agents-api/agents_api/routers/sessions/metrics.py similarity index 100% rename from agents-api/agents_api/routers/sessions/metrics.py rename to src/agents-api/agents_api/routers/sessions/metrics.py diff --git a/agents-api/agents_api/routers/sessions/patch_session.py b/src/agents-api/agents_api/routers/sessions/patch_session.py similarity index 100% rename from agents-api/agents_api/routers/sessions/patch_session.py rename to src/agents-api/agents_api/routers/sessions/patch_session.py diff --git a/src/agents-api/agents_api/routers/sessions/render.py b/src/agents-api/agents_api/routers/sessions/render.py new file mode 100644 index 000000000..30606e08c --- /dev/null +++ b/src/agents-api/agents_api/routers/sessions/render.py @@ -0,0 +1,65 @@ +""" +Render endpoint router with feature flag-based implementation selection. +Routes to either legacy or auto-tools implementation based on feature flags. +""" + +from typing import Annotated +from uuid import UUID + +from fastapi import Depends +from starlette.status import HTTP_200_OK + +from ...autogen.openapi_model import ( + ChatInput, + RenderResponse, +) +from ...common.protocol.developers import Developer +from ...common.utils.feature_flags import get_feature_flag_value +from ...dependencies.developer_id import get_developer_data +from .router import router + + +@router.post( + "/sessions/{session_id}/render", + status_code=HTTP_200_OK, + tags=["sessions", "render"], +) +async def render( + developer: Annotated[Developer, Depends(get_developer_data)], + session_id: UUID, + chat_input: ChatInput, +) -> RenderResponse: + """ + Renders a chat input. + + Routes to different implementations based on feature flags: + - If auto_run_tools_chat feature flag is enabled, uses the new auto-tools implementation + - Otherwise, uses the legacy implementation + + Parameters: + developer (Developer): The developer associated with the chat session. + session_id (UUID): The unique identifier of the chat session. + chat_input (ChatInput): The chat input data. + + Returns: + RenderResponse: The rendered chat input. + """ + # Check if auto tools feature is enabled + # AIDEV-NOTE: Feature flag controls which implementation to use + if get_feature_flag_value("auto_run_tools_chat", developer_id=str(developer.id)): + from .auto_tools.render import render as render_auto_tools + + return await render_auto_tools( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) + + # Default to legacy implementation + from .legacy.render import render as render_legacy + + return await render_legacy( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) diff --git a/agents-api/agents_api/routers/users/router.py b/src/agents-api/agents_api/routers/sessions/router.py similarity index 100% rename from agents-api/agents_api/routers/users/router.py rename to src/agents-api/agents_api/routers/sessions/router.py diff --git a/agents-api/agents_api/routers/sessions/update_session.py b/src/agents-api/agents_api/routers/sessions/update_session.py similarity index 100% rename from agents-api/agents_api/routers/sessions/update_session.py rename to src/agents-api/agents_api/routers/sessions/update_session.py diff --git a/agents-api/agents_api/routers/tasks/__init__.py b/src/agents-api/agents_api/routers/tasks/__init__.py similarity index 87% rename from agents-api/agents_api/routers/tasks/__init__.py rename to src/agents-api/agents_api/routers/tasks/__init__.py index 0c7180cd2..e158795a4 100644 --- a/agents-api/agents_api/routers/tasks/__init__.py +++ b/src/agents-api/agents_api/routers/tasks/__init__.py @@ -1,4 +1,4 @@ -# ruff: noqa: F401, F403, F405 +# ruff: noqa: F401 from .create_or_update_task import create_or_update_task from .create_task import create_task from .create_task_execution import create_task_execution @@ -8,5 +8,6 @@ from .list_task_executions import list_task_executions from .list_tasks import list_tasks from .router import router +from .stream_execution_status import stream_execution_status from .stream_transitions_events import stream_transitions_events from .update_execution import update_execution diff --git a/agents-api/agents_api/routers/tasks/create_or_update_task.py b/src/agents-api/agents_api/routers/tasks/create_or_update_task.py similarity index 100% rename from agents-api/agents_api/routers/tasks/create_or_update_task.py rename to src/agents-api/agents_api/routers/tasks/create_or_update_task.py diff --git a/agents-api/agents_api/routers/tasks/create_task.py b/src/agents-api/agents_api/routers/tasks/create_task.py similarity index 100% rename from agents-api/agents_api/routers/tasks/create_task.py rename to src/agents-api/agents_api/routers/tasks/create_task.py diff --git a/agents-api/agents_api/routers/tasks/create_task_execution.py b/src/agents-api/agents_api/routers/tasks/create_task_execution.py similarity index 83% rename from agents-api/agents_api/routers/tasks/create_task_execution.py rename to src/agents-api/agents_api/routers/tasks/create_task_execution.py index a552c1563..33f69a3df 100644 --- a/agents-api/agents_api/routers/tasks/create_task_execution.py +++ b/src/agents-api/agents_api/routers/tasks/create_task_execution.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: This module defines the API endpoint for creating and initiating task executions. import logging from typing import Annotated from uuid import UUID @@ -40,6 +41,7 @@ logger.setLevel(logging.DEBUG) +# AIDEV-NOTE: Initiates a task execution by creating a database entry and starting the Temporal workflow. @beartype async def start_execution( *, @@ -77,6 +79,7 @@ async def start_execution( job_id = uuid7() try: + # AIDEV-NOTE: Runs the Temporal task execution workflow. handle = await run_task_execution_workflow( execution_input=execution_input, job_id=job_id, @@ -85,6 +88,7 @@ async def start_execution( except Exception as e: logger.exception(e) + # AIDEV-NOTE: Creates an error transition in the database if the workflow fails to start. await create_execution_transition( developer_id=developer_id, execution_id=execution_id, @@ -109,6 +113,9 @@ async def start_execution( return execution, handle +# AIDEV-NOTE: API endpoint to create a new task execution for a given task. +# It depends on developer ID, task ID from the path, and execution data from the request body. +# Includes validation for the input data schema and checks for free tier limits before starting the execution. @router.post( "/tasks/{task_id}/executions", status_code=HTTP_201_CREATED, @@ -121,6 +128,7 @@ async def create_task_execution( background_tasks: BackgroundTasks, ) -> Execution: try: + # AIDEV-NOTE: Validates the input data against the task's input schema. task = await get_task_query(task_id=task_id, developer_id=x_developer_id) validate(data.input, task.input_schema) @@ -130,6 +138,7 @@ async def create_task_execution( detail="Invalid request arguments schema", ) + # AIDEV-NOTE: Checks if the developer is within the free tier execution limit for the task. # get developer data developer: Developer = await get_developer(developer_id=x_developer_id) @@ -144,6 +153,7 @@ async def create_task_execution( detail="Execution count exceeded the free tier limit", ) + # AIDEV-NOTE: Starts the task execution and creates a Temporal lookup entry in the background. execution, handle = await start_execution( developer_id=x_developer_id, task_id=task_id, diff --git a/agents-api/agents_api/routers/tasks/get_execution_details.py b/src/agents-api/agents_api/routers/tasks/get_execution_details.py similarity index 100% rename from agents-api/agents_api/routers/tasks/get_execution_details.py rename to src/agents-api/agents_api/routers/tasks/get_execution_details.py diff --git a/agents-api/agents_api/routers/tasks/get_task_details.py b/src/agents-api/agents_api/routers/tasks/get_task_details.py similarity index 100% rename from agents-api/agents_api/routers/tasks/get_task_details.py rename to src/agents-api/agents_api/routers/tasks/get_task_details.py diff --git a/agents-api/agents_api/routers/tasks/list_execution_transitions.py b/src/agents-api/agents_api/routers/tasks/list_execution_transitions.py similarity index 100% rename from agents-api/agents_api/routers/tasks/list_execution_transitions.py rename to src/agents-api/agents_api/routers/tasks/list_execution_transitions.py diff --git a/agents-api/agents_api/routers/tasks/list_task_executions.py b/src/agents-api/agents_api/routers/tasks/list_task_executions.py similarity index 100% rename from agents-api/agents_api/routers/tasks/list_task_executions.py rename to src/agents-api/agents_api/routers/tasks/list_task_executions.py diff --git a/agents-api/agents_api/routers/tasks/list_tasks.py b/src/agents-api/agents_api/routers/tasks/list_tasks.py similarity index 100% rename from agents-api/agents_api/routers/tasks/list_tasks.py rename to src/agents-api/agents_api/routers/tasks/list_tasks.py diff --git a/agents-api/agents_api/routers/tasks/router.py b/src/agents-api/agents_api/routers/tasks/router.py similarity index 100% rename from agents-api/agents_api/routers/tasks/router.py rename to src/agents-api/agents_api/routers/tasks/router.py diff --git a/src/agents-api/agents_api/routers/tasks/stream_execution_status.py b/src/agents-api/agents_api/routers/tasks/stream_execution_status.py new file mode 100644 index 000000000..b5debda0f --- /dev/null +++ b/src/agents-api/agents_api/routers/tasks/stream_execution_status.py @@ -0,0 +1,151 @@ +import logging +from functools import partial +from typing import Annotated +from uuid import UUID + +import anyio +from anyio.streams.memory import MemoryObjectSendStream +from fastapi import Depends, HTTPException, Request, status +from sse_starlette.sse import EventSourceResponse + +from ...autogen.openapi_model import ExecutionStatusEvent +from ...dependencies.developer_id import get_developer_id +from ...queries.executions.get_execution_status import ( + get_execution_status as get_execution_status_query, +) +from .router import router + +# Set up logger +logger = logging.getLogger(__name__) + +# Poll interval in seconds between status checks +STREAM_POLL_INTERVAL = 1 +# Overall timeout for the SSE connection (seconds) +STREAM_TIMEOUT = 10 * 60 + +# Terminal states that indicate we should end the stream +TERMINAL_STATES = {"succeeded", "failed", "cancelled"} + + +async def execution_status_publisher( + send_chan: MemoryObjectSendStream, + execution_id: UUID, + x_developer_id: UUID, + request: Request, +): + """ + Publishes execution status updates to the SSE stream. + + Args: + send_chan: Channel to send updates through + execution_id: ID of the execution to monitor + x_developer_id: Developer ID for permission checking + request: FastAPI request object to check for disconnection + """ + async with send_chan: + last_updated_at: str | None = None + while True: + # Exit loop if client disconnected + if await request.is_disconnected(): + logger.debug( + f"Client disconnected from status stream for execution {execution_id}" + ) + break + + # Fetch latest execution status via SQL query + try: + execution_status_event: ExecutionStatusEvent = await get_execution_status_query( + developer_id=x_developer_id, + execution_id=execution_id, + ) + except Exception as e: + # Log the error and continue + logger.error(f"Error fetching status for execution {execution_id}: {e!s}") + await anyio.sleep(STREAM_POLL_INTERVAL) + continue + + if not execution_status_event: + logger.warning(f"No status found for execution {execution_id}") + await anyio.sleep(STREAM_POLL_INTERVAL) + continue + + updated_at = execution_status_event.updated_at + if updated_at and updated_at != last_updated_at: + last_updated_at = updated_at + try: + json_data = execution_status_event.model_dump_json() + await send_chan.send({"data": json_data}) + + # Log terminal states + if execution_status_event.status in TERMINAL_STATES: + logger.info( + f"Execution {execution_id} reached terminal state: {execution_status_event.status}" + ) + break + + except anyio.BrokenResourceError as e: + logger.warning( + f"Connection broken while sending status for execution {execution_id}: {e!s}" + ) + break + except Exception as e: + logger.error(f"Error sending status for execution {execution_id}: {e!s}") + # Continue the loop to try again + + # Wait before polling again + await anyio.sleep(STREAM_POLL_INTERVAL) + + +@router.get( + "/executions/{execution_id}/status.stream", + response_class=EventSourceResponse, + tags=["executions"], +) +async def stream_execution_status( + request: Request, + x_developer_id: Annotated[UUID, Depends(get_developer_id)], + execution_id: UUID, +): + """ + SSE endpoint that streams the status of a given execution_id by polling the + latest_executions view. + """ + try: + try: + # Verify execution exists before starting the stream + await get_execution_status_query( + developer_id=x_developer_id, + execution_id=execution_id, + ) + except HTTPException as e: + if "not found" in str(e).lower(): + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Execution {execution_id} not found", + ) + raise e + + send_chan, recv_chan = anyio.create_memory_object_stream(max_buffer_size=1) + logger.debug(f"Starting status stream for execution {execution_id}") + + return EventSourceResponse( + recv_chan, + data_sender_callable=partial( + execution_status_publisher, + send_chan, + execution_id, + x_developer_id, + request, + ), + send_timeout=STREAM_TIMEOUT, + ) + + except Exception as e: + error_message = f"Failed to start status stream for execution {execution_id}: {e!s}" + logger.error(error_message) + if isinstance(e, HTTPException): + raise e + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail="Failed to start execution status stream", + ) diff --git a/agents-api/agents_api/routers/tasks/stream_transitions_events.py b/src/agents-api/agents_api/routers/tasks/stream_transitions_events.py similarity index 100% rename from agents-api/agents_api/routers/tasks/stream_transitions_events.py rename to src/agents-api/agents_api/routers/tasks/stream_transitions_events.py diff --git a/agents-api/agents_api/routers/tasks/update_execution.py b/src/agents-api/agents_api/routers/tasks/update_execution.py similarity index 100% rename from agents-api/agents_api/routers/tasks/update_execution.py rename to src/agents-api/agents_api/routers/tasks/update_execution.py diff --git a/agents-api/agents_api/routers/users/__init__.py b/src/agents-api/agents_api/routers/users/__init__.py similarity index 100% rename from agents-api/agents_api/routers/users/__init__.py rename to src/agents-api/agents_api/routers/users/__init__.py diff --git a/agents-api/agents_api/routers/users/create_or_update_user.py b/src/agents-api/agents_api/routers/users/create_or_update_user.py similarity index 100% rename from agents-api/agents_api/routers/users/create_or_update_user.py rename to src/agents-api/agents_api/routers/users/create_or_update_user.py diff --git a/agents-api/agents_api/routers/users/create_user.py b/src/agents-api/agents_api/routers/users/create_user.py similarity index 100% rename from agents-api/agents_api/routers/users/create_user.py rename to src/agents-api/agents_api/routers/users/create_user.py diff --git a/agents-api/agents_api/routers/users/delete_user.py b/src/agents-api/agents_api/routers/users/delete_user.py similarity index 100% rename from agents-api/agents_api/routers/users/delete_user.py rename to src/agents-api/agents_api/routers/users/delete_user.py diff --git a/agents-api/agents_api/routers/users/get_user_details.py b/src/agents-api/agents_api/routers/users/get_user_details.py similarity index 100% rename from agents-api/agents_api/routers/users/get_user_details.py rename to src/agents-api/agents_api/routers/users/get_user_details.py diff --git a/agents-api/agents_api/routers/users/list_users.py b/src/agents-api/agents_api/routers/users/list_users.py similarity index 100% rename from agents-api/agents_api/routers/users/list_users.py rename to src/agents-api/agents_api/routers/users/list_users.py diff --git a/agents-api/agents_api/routers/users/patch_user.py b/src/agents-api/agents_api/routers/users/patch_user.py similarity index 100% rename from agents-api/agents_api/routers/users/patch_user.py rename to src/agents-api/agents_api/routers/users/patch_user.py diff --git a/integrations-service/integrations/routers/execution/router.py b/src/agents-api/agents_api/routers/users/router.py similarity index 100% rename from integrations-service/integrations/routers/execution/router.py rename to src/agents-api/agents_api/routers/users/router.py diff --git a/agents-api/agents_api/routers/users/update_user.py b/src/agents-api/agents_api/routers/users/update_user.py similarity index 100% rename from agents-api/agents_api/routers/users/update_user.py rename to src/agents-api/agents_api/routers/users/update_user.py diff --git a/agents-api/tests/sample_tasks/__init__.py b/src/agents-api/agents_api/routers/utils/__init__.py similarity index 100% rename from agents-api/tests/sample_tasks/__init__.py rename to src/agents-api/agents_api/routers/utils/__init__.py diff --git a/agents-api/agents_api/routers/utils/model_converters.py b/src/agents-api/agents_api/routers/utils/model_converters.py similarity index 99% rename from agents-api/agents_api/routers/utils/model_converters.py rename to src/agents-api/agents_api/routers/utils/model_converters.py index 923b7314b..91f3088d5 100644 --- a/agents-api/agents_api/routers/utils/model_converters.py +++ b/src/agents-api/agents_api/routers/utils/model_converters.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: Utilities to convert API and internal Pydantic models for requests and responses. from uuid import UUID from fastapi import HTTPException diff --git a/src/agents-api/agents_api/routers/utils/model_validation.py b/src/agents-api/agents_api/routers/utils/model_validation.py new file mode 100644 index 000000000..06451eca5 --- /dev/null +++ b/src/agents-api/agents_api/routers/utils/model_validation.py @@ -0,0 +1,17 @@ +# AIDEV-NOTE: Validates model names against LiteLLM and raises HTTPException for invalid names. +from fastapi import HTTPException +from starlette.status import HTTP_400_BAD_REQUEST + +from ...common.utils.model_validation import ( + ModelNotAvailableError, + ensure_model_available, +) + + +async def validate_model(model_name: str | None) -> None: + """Validate that ``model_name`` exists in LiteLLM's catalog.""" + + try: + await ensure_model_available(model_name) + except ModelNotAvailableError as exc: + raise HTTPException(status_code=HTTP_400_BAD_REQUEST, detail=str(exc)) from exc diff --git a/agents-api/agents_api/web.py b/src/agents-api/agents_api/web.py similarity index 78% rename from agents-api/agents_api/web.py rename to src/agents-api/agents_api/web.py index 787b67fba..282ceae63 100644 --- a/agents-api/agents_api/web.py +++ b/src/agents-api/agents_api/web.py @@ -6,7 +6,9 @@ import logging from collections.abc import Callable from typing import Any, cast +from uuid import UUID +import asyncpg import sentry_sdk import uvicorn import uvloop @@ -14,15 +16,16 @@ from fastapi.exceptions import HTTPException, RequestValidationError from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse -from litellm.exceptions import APIError +from litellm.exceptions import APIError, BadRequestError from pydantic import ValidationError from temporalio.service import RPCError from .app import app from .common.exceptions import BaseCommonException from .dependencies.auth import get_api_key -from .env import enable_responses, sentry_dsn +from .env import enable_responses, free_tier_cost_limit, sentry_dsn from .exceptions import PromptTooBigError +from .queries.usage.get_user_cost import get_usage_cost from .routers import ( agents, docs, @@ -30,7 +33,9 @@ healthz, internal, jobs, + projects, responses, + secrets, sessions, tasks, users, @@ -276,9 +281,91 @@ def register_exceptions(app: FastAPI) -> None: app.include_router(files.router, dependencies=[Depends(get_api_key)]) app.include_router(docs.router, dependencies=[Depends(get_api_key)]) app.include_router(tasks.router, dependencies=[Depends(get_api_key)]) + app.include_router(secrets.router, dependencies=[Depends(get_api_key)]) app.include_router(internal.router) + app.include_router(projects.router, dependencies=[Depends(get_api_key)]) app.include_router(jobs.router, dependencies=[Depends(get_api_key)]) app.include_router(healthz.router) + + +# Register the usage check middleware +@app.middleware("http") +async def usage_check_middleware(request: Request, call_next): + # Get developer ID from header + developer_id_str = request.headers.get("X-Developer-Id") + if not developer_id_str: + return await call_next(request) + + user_cost_data: dict = {} + invalid_account_error = JSONResponse( + status_code=status.HTTP_403_FORBIDDEN, + content={ + "error": { + "message": "Invalid user account", + "code": "invalid_user_account", + } + }, + ) + + try: + developer_id = UUID(developer_id_str) + user_cost_data: dict = await get_usage_cost(developer_id=developer_id) + + # Check if user is active + if not user_cost_data.get("active", False): + return invalid_account_error + + if request.method == "GET": + return await call_next(request) + + # Skip cost check for users with "paid" tag + user_tags = user_cost_data.get("tags", []) or [] + if not isinstance(user_tags, list): + user_tags = [] + + if "paid" in user_tags: + return await call_next(request) + + user_cost = user_cost_data.get("cost") + + if user_cost is None or float(user_cost) > free_tier_cost_limit: + return JSONResponse( + status_code=status.HTTP_403_FORBIDDEN, + content={ + "error": { + "message": "Cost limit exceeded", + "code": "cost_limit_exceeded", + } + }, + ) + except HTTPException as e: + if e.status_code == status.HTTP_404_NOT_FOUND: + return invalid_account_error + + return JSONResponse( + status_code=e.status_code, + content=e.detail, + ) + except asyncpg.NoDataFoundError: + return invalid_account_error + except ValueError: + return JSONResponse( + status_code=status.HTTP_400_BAD_REQUEST, + content={ + "error": { + "message": "Invalid developer ID", + "code": "invalid_developer_id", + } + }, + ) + except Exception as e: + # Log the error but don't block the request + logger.error(f"Error in usage check middleware: {e!s}") + + # Continue processing the request + return await call_next(request) + + # TODO: CORS should be enabled only for JWT auth # app.add_middleware( @@ -353,6 +440,21 @@ async def prompt_too_big_error(request: Request, exc: PromptTooBigError): ) +@app.exception_handler(BadRequestError) +async def litellm_bad_request_error(request: Request, exc: BadRequestError): + return JSONResponse( + status_code=status.HTTP_400_BAD_REQUEST, + content={ + "error": { + "message": str(exc), + "code": "llm_bad_request", + "type": "LLMServiceBadRequest", + "fix": "Check request payload for invalid or missing fields", + } + }, + ) + + @app.exception_handler(APIError) async def litellm_api_error(request: Request, exc: APIError): return JSONResponse( @@ -369,12 +471,12 @@ async def litellm_api_error(request: Request, exc: APIError): def main( - host="127.0.0.1", - port=8000, - backlog=4096, - timeout_keep_alive=30, + host: str = "127.0.0.1", + port: int = 8000, + backlog: int = 4096, + timeout_keep_alive: int = 30, workers=None, - log_level="info", + log_level: str = "info", ) -> None: uvicorn.run( app, diff --git a/agents-api/agents_api/worker/CLAUDE.md b/src/agents-api/agents_api/worker/AGENTS.md similarity index 69% rename from agents-api/agents_api/worker/CLAUDE.md rename to src/agents-api/agents_api/worker/AGENTS.md index 36e837ec9..e86138f38 100644 --- a/agents-api/agents_api/worker/CLAUDE.md +++ b/src/agents-api/agents_api/worker/AGENTS.md @@ -1,4 +1,13 @@ -# Worker +# AGENTS.md - worker + +This folder contains the Temporal worker setup for processing agents-api workflows and activities. + +Key Points +- Entrypoint script: `run_worker.py` initializes the Temporal worker. +- Register both workflows and activities in worker setup. +- Configure `TEMPORAL_URL` and retry policies via environment variables. +- Logging and monitoring configured in `logging.yaml`. +- Use `poe test` for basic worker smoke tests. ## Purpose - Temporal worker process for executing workflows and activities @@ -37,4 +46,4 @@ ## Remote Object Handling - Large objects stored in S3 via RemoteObject - Automatic serialization/deserialization -- Prevents Temporal payload size limitations \ No newline at end of file +- Prevents Temporal payload size limitations diff --git a/src/agents-api/agents_api/worker/CLAUDE.md b/src/agents-api/agents_api/worker/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/worker/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/worker/__init__.py b/src/agents-api/agents_api/worker/__init__.py similarity index 100% rename from agents-api/agents_api/worker/__init__.py rename to src/agents-api/agents_api/worker/__init__.py diff --git a/agents-api/agents_api/worker/__main__.py b/src/agents-api/agents_api/worker/__main__.py similarity index 85% rename from agents-api/agents_api/worker/__main__.py rename to src/agents-api/agents_api/worker/__main__.py index 9425d53ce..121df17ae 100644 --- a/agents-api/agents_api/worker/__main__.py +++ b/src/agents-api/agents_api/worker/__main__.py @@ -27,7 +27,7 @@ retry=retry_if_exception_type(RuntimeError), after=after_log(logger, logging.DEBUG), ) -async def main(): +async def main() -> None: """ Initializes the Temporal client and worker with TLS configuration (if provided), then starts the worker to listen for tasks on the configured task queue. @@ -35,6 +35,8 @@ async def main(): client = await temporal.get_client_with_metrics() worker = create_worker(client) + if hasattr(worker, "_workflow_worker") and worker._workflow_worker: # noqa: SLF001 + worker._workflow_worker._deadlock_timeout_seconds = 60 # noqa: SLF001 async with lifespan(app): # Start the worker to listen for and process tasks diff --git a/agents-api/agents_api/worker/codec.py b/src/agents-api/agents_api/worker/codec.py similarity index 96% rename from agents-api/agents_api/worker/codec.py rename to src/agents-api/agents_api/worker/codec.py index de707c34b..28df5a28b 100644 --- a/agents-api/agents_api/worker/codec.py +++ b/src/agents-api/agents_api/worker/codec.py @@ -41,7 +41,8 @@ def from_value(cls, x: Any) -> Self: serialized = serialize(x) key = sync_s3.add_object_with_hash(serialized) - return RemoteObject(key=key, bucket=blob_store_bucket) + # AIDEV-NOTE: use cls to return correct subclass instance for Self + return cls(key=key, bucket=blob_store_bucket) def load(self) -> Any: sync_s3.setup() @@ -167,7 +168,11 @@ class PydanticEncodingPayloadConverter(EncodingPayloadConverter): encoding = "text/pickle+lz4" b_encoding = encoding.encode() - def to_payload(self, value: Any) -> Payload | None: + def to_payload( + self, value: Any + ) -> ( + Payload | FailedEncodingSentinel | None + ): # AIDEV-NOTE: include FailedEncodingSentinel for error payloads python_version = f"{sys.version_info.major}.{sys.version_info.minor}".encode() try: diff --git a/agents-api/agents_api/worker/worker.py b/src/agents-api/agents_api/worker/worker.py similarity index 96% rename from agents-api/agents_api/worker/worker.py rename to src/agents-api/agents_api/worker/worker.py index 7b8ed971e..50abc492e 100644 --- a/agents-api/agents_api/worker/worker.py +++ b/src/agents-api/agents_api/worker/worker.py @@ -24,6 +24,7 @@ def create_worker(client: Client) -> Any: from ..activities.execute_api_call import execute_api_call from ..activities.execute_integration import execute_integration from ..activities.execute_system import execute_system + from ..activities.pg_query_step import pg_query_step from ..activities.sync_items_remote import load_inputs_remote, save_inputs_remote from ..common.interceptors import CustomInterceptor from ..env import ( @@ -51,6 +52,7 @@ def create_worker(client: Client) -> Any: execute_api_call, save_inputs_remote, load_inputs_remote, + pg_query_step, ], interceptors=[CustomInterceptor()], max_concurrent_workflow_tasks=temporal_max_concurrent_workflow_tasks, diff --git a/agents-api/agents_api/workflows/CLAUDE.md b/src/agents-api/agents_api/workflows/AGENTS.md similarity index 74% rename from agents-api/agents_api/workflows/CLAUDE.md rename to src/agents-api/agents_api/workflows/AGENTS.md index 03e22c820..555b62d3d 100644 --- a/agents-api/agents_api/workflows/CLAUDE.md +++ b/src/agents-api/agents_api/workflows/AGENTS.md @@ -1,3 +1,15 @@ +# AGENTS.md - workflows + +This folder contains Temporal workflow definitions orchestrating activities in `agents-api`. + +Key Points +- Implement workflows with Temporal Python SDK (init, step, finish, error, cancel). +- Use `WorkflowClient.execute` for invocation. +- Define branching logic with IfElse and Parallel steps as needed. +- Monitor transitions in the database for debugging. +- Place workflow tests in `agents-api/tests/`. +- See parent AGENTS.md for component-wide instructions. + # Workflows ## Purpose @@ -38,4 +50,4 @@ ## Concurrency and Control - Parallel execution for map/reduce operations - Heartbeats for long-running activities -- Workflow continues even if activities fail (with retry policies) \ No newline at end of file +- Workflow continues even if activities fail (with retry policies) diff --git a/src/agents-api/agents_api/workflows/CLAUDE.md b/src/agents-api/agents_api/workflows/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/agents-api/agents_api/workflows/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/agents-api/agents_api/workflows/__init__.py b/src/agents-api/agents_api/workflows/__init__.py similarity index 62% rename from agents-api/agents_api/workflows/__init__.py rename to src/agents-api/agents_api/workflows/__init__.py index ad2f389b5..b1ffcc30f 100644 --- a/agents-api/agents_api/workflows/__init__.py +++ b/src/agents-api/agents_api/workflows/__init__.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 - +# AIDEV-NOTE: Configure Temporal workflow unsafe imports and logging setup for agents-api workflows. from temporalio import workflow with workflow.unsafe.imports_passed_through(): diff --git a/agents-api/agents_api/workflows/demo.py b/src/agents-api/agents_api/workflows/demo.py similarity index 85% rename from agents-api/agents_api/workflows/demo.py rename to src/agents-api/agents_api/workflows/demo.py index 0599a4392..83229bf5e 100644 --- a/agents-api/agents_api/workflows/demo.py +++ b/src/agents-api/agents_api/workflows/demo.py @@ -4,6 +4,7 @@ from ..common.retry_policies import DEFAULT_RETRY_POLICY +# AIDEV-NOTE: Sample workflow demonstrating Temporal integration with a simple demo activity. with workflow.unsafe.imports_passed_through(): from ..activities.demo import demo_activity diff --git a/agents-api/agents_api/workflows/task_execution/__init__.py b/src/agents-api/agents_api/workflows/task_execution/__init__.py similarity index 88% rename from agents-api/agents_api/workflows/task_execution/__init__.py rename to src/agents-api/agents_api/workflows/task_execution/__init__.py index 034c9bbcd..cf0b724c8 100644 --- a/agents-api/agents_api/workflows/task_execution/__init__.py +++ b/src/agents-api/agents_api/workflows/task_execution/__init__.py @@ -1,8 +1,9 @@ -#!/usr/bin/env python3 +# AIDEV-NOTE: This file contains the core Temporal workflow definition and step handlers for task execution. +# !/usr/bin/env python3 import asyncio from datetime import timedelta -from typing import Any +from typing import Any, cast from temporalio import workflow from temporalio.exceptions import ActivityError, ApplicationError @@ -59,6 +60,7 @@ WorkflowResult, ) from ...common.retry_policies import DEFAULT_RETRY_POLICY + from ...common.utils.feature_flags import get_feature_flag_value from ...env import ( debug, task_max_parallelism, @@ -78,7 +80,6 @@ ) from .transition import transition - # Supported steps # --------------- @@ -131,11 +132,11 @@ class TaskExecutionWorkflow: context: StepContext | None = None outcome: StepOutcome | None = None - def __init__(self): + def __init__(self) -> None: self.last_error = None @workflow.signal - async def set_last_error(self, value: LastErrorInput): + async def set_last_error(self, value: LastErrorInput) -> None: self.last_error = value.last_error async def eval_step_exprs(self, step_type: WorkflowStep): @@ -168,7 +169,7 @@ async def eval_step_exprs(self, step_type: WorkflowStep): output = i break case ToolCallStep(arguments=arguments): - tools: list[Tool] = self.context.tools + tools: list[Tool] = await self.context.tools() tool_name = self.context.current_step.tool tool = next((t for t in tools if t.name == tool_name), None) @@ -440,20 +441,43 @@ async def _handle_PromptStep( if self.outcome is None: return WorkflowResult(state=PartialTransition(output=None)) - message = self.outcome.output + messages = self.outcome.output - if ( - step.unwrap - or not step.auto_run_tools - or message["choices"][0]["finish_reason"] != "tool_calls" - ): - workflow.logger.debug(f"Prompt step: Received response: {message}") - return WorkflowResult(state=PartialTransition(output=message)) + try: + if self.context is not None and get_feature_flag_value( + "auto_tool_calls_prompt_step", + developer_id=str(self.context.execution_input.developer_id), + ): + if step.unwrap or not step.auto_run_tools or messages[-1]["tool_calls"] is None: + workflow.logger.debug(f"Prompt step: Received response: {messages}") + return WorkflowResult(state=PartialTransition(output=messages)) + + # TODO: make sure to include filtered function tool calls in the last message, or filter them from 2nd message + tool_calls_input = messages[-1]["tool_calls"] + else: + message = messages + if ( + step.unwrap + or not step.auto_run_tools + or message["choices"][0]["finish_reason"] != "tool_calls" + ): + workflow.logger.debug(f"Prompt step: Received response: {message}") + return WorkflowResult(state=PartialTransition(output=message)) + + choice = message["choices"][0] + tool_calls_input = choice["message"]["tool_calls"] + except (KeyError, IndexError, TypeError) as e: + workflow.logger.error(f"Prompt step: Error parsing response structure: {e}") + msg = f"Invalid response structure in prompt step: {e}" + raise ApplicationError(msg) from e + except Exception as e: + workflow.logger.error(f"Prompt step: Unexpected error: {e}") + msg = f"Unexpected error in prompt step: {e}" + raise ApplicationError(msg) from e - choice = message["choices"][0] - tool_calls_input = choice["message"]["tool_calls"] input_type = tool_calls_input[0]["type"] + # TODO: What if the model requested multiple function tool calls? if input_type == "function": workflow.logger.debug("Prompt step: Received FUNCTION tool call") @@ -468,7 +492,7 @@ async def _handle_PromptStep( # Feed the tool call results back to the model if self.context is not None: - self.context.current_step.prompt.append(message) + self.context.current_step.prompt.append(messages) self.context.current_step.prompt.append(tool_calls_results) new_response = await workflow.execute_activity( task_steps.prompt_step, @@ -511,7 +535,7 @@ async def _handle_PromptStep( workflow.logger.debug( f"Prompt step: Received unknown tool call: {tool_calls_input[0]['type']}", ) - return WorkflowResult(state=PartialTransition(output=message)) + return WorkflowResult(state=PartialTransition(output=messages)) async def _handle_SetStep( self, @@ -549,6 +573,11 @@ async def _handle_ToolCallStep( self, step: ToolCallStep, ): + # Add null check for context + if self.context is None: + msg = "Context is None in _handle_ToolCallStep" + raise ApplicationError(msg) + tool_call = self.outcome.output if self.outcome is not None else {} if tool_call["type"] == "function": tool_call_response = await workflow.execute_activity( @@ -569,7 +598,7 @@ async def _handle_ToolCallStep( call = tool_call["integration"] tool_name = call["name"] arguments = call["arguments"] - tools = self.context.tools if self.context is not None else [] + tools = await self.context.tools() integration_tool = next((t for t in tools if t.name == tool_name), None) if integration_tool is None: @@ -590,9 +619,28 @@ async def _handle_ToolCallStep( arguments=arguments, ) + # AIDEV-NOTE: Extract IDs from context for new execute_integration signature + developer_id = self.context.execution_input.developer_id + agent_id = self.context.execution_input.agent.id + task_id = ( + self.context.execution_input.task.id + if self.context.execution_input.task + else None + ) + session_id = getattr(self.context.execution_input, "session", None) + session_id = session_id.id if session_id else None + tool_call_response = await workflow.execute_activity( execute_integration, - args=[self.context, tool_name, integration, arguments], + args=[ + developer_id, + agent_id, + task_id, + session_id, + tool_name, + integration, + arguments, + ], schedule_to_close_timeout=timedelta( seconds=30 if debug or testing else temporal_schedule_to_close_timeout, ), @@ -608,18 +656,24 @@ async def _handle_ToolCallStep( call = tool_call["api_call"] tool_name = call["name"] arguments = call["arguments"] - tools = self.context.tools if self.context else [] + tools = await self.context.tools() apicall_tool = next((t for t in tools if t.name == tool_name), None) if apicall_tool is None: msg = f"Integration {tool_name} not found" raise ApplicationError(msg) + if apicall_tool.api_call is None: + msg = f"API call data for {tool_name} not found" + raise ApplicationError(msg) + + api_call: ApiCallDef = cast(ApiCallDef, apicall_tool.api_call) + api_call = ApiCallDef( - method=apicall_tool.api_call.method, - url=apicall_tool.api_call.url, - headers=apicall_tool.api_call.headers, - follow_redirects=apicall_tool.api_call.follow_redirects, + method=api_call.method, + url=api_call.url, + headers=api_call.headers, + follow_redirects=api_call.follow_redirects, ) if "json_" in arguments: @@ -647,9 +701,11 @@ async def _handle_ToolCallStep( call = tool_call.get("system") system_call = SystemDef(**call) + # AIDEV-NOTE: Extract developer_id for new execute_system signature + developer_id = self.context.execution_input.developer_id tool_call_response = await workflow.execute_activity( execute_system, - args=[self.context, system_call], + args=[developer_id, system_call], schedule_to_close_timeout=timedelta( seconds=30 if debug or testing else temporal_schedule_to_close_timeout, ), diff --git a/agents-api/agents_api/workflows/task_execution/helpers.py b/src/agents-api/agents_api/workflows/task_execution/helpers.py similarity index 95% rename from agents-api/agents_api/workflows/task_execution/helpers.py rename to src/agents-api/agents_api/workflows/task_execution/helpers.py index e16a9db69..6617f5e78 100644 --- a/agents-api/agents_api/workflows/task_execution/helpers.py +++ b/src/agents-api/agents_api/workflows/task_execution/helpers.py @@ -1,3 +1,4 @@ +# AIDEV-NOTE: Helper functions for TaskExecution workflow orchestration, including validation and branch execution. import asyncio from datetime import timedelta from typing import Any, TypeVar @@ -65,8 +66,11 @@ async def base_evaluate_activity( heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout), ) except ActivityError as e: + # Unwrap nested ActivityError causes while isinstance(e, ActivityError) and getattr(e, "__cause__", None): - e = e.__cause__ + e = e.__cause__ # type: ignore[assignment] # AIDEV-NOTE: e.__cause__ is BaseException|None + # AIDEV-NOTE: assert e is BaseException for raising + assert isinstance(e, BaseException) raise e @@ -109,8 +113,11 @@ async def continue_as_child( ]), ) except Exception as e: + # Unwrap nested ChildWorkflowError causes while isinstance(e, ChildWorkflowError) and getattr(e, "__cause__", None): - e = e.__cause__ + e = e.__cause__ # type: ignore[assignment] # AIDEV-NOTE: e.__cause__ is BaseException|None + # AIDEV-NOTE: assert e is BaseException for raising + assert isinstance(e, BaseException) e.transitioned = True raise e diff --git a/agents-api/agents_api/workflows/task_execution/transition.py b/src/agents-api/agents_api/workflows/task_execution/transition.py similarity index 100% rename from agents-api/agents_api/workflows/task_execution/transition.py rename to src/agents-api/agents_api/workflows/task_execution/transition.py diff --git a/agents-api/docker-compose-api.yml b/src/agents-api/docker-compose-api.yml similarity index 100% rename from agents-api/docker-compose-api.yml rename to src/agents-api/docker-compose-api.yml diff --git a/agents-api/docker-compose.yml b/src/agents-api/docker-compose.yml similarity index 89% rename from agents-api/docker-compose.yml rename to src/agents-api/docker-compose.yml index 845fe979c..efe88926b 100644 --- a/agents-api/docker-compose.yml +++ b/src/agents-api/docker-compose.yml @@ -51,6 +51,13 @@ x--shared-environment: &shared-environment BRAVE_API_KEY: ${BRAVE_API_KEY} GUNICORN_CPU_DIVISOR: ${GUNICORN_CPU_DIVISOR:-4} GUNICORN_WORKERS: ${GUNICORN_WORKERS} + SECRETS_MASTER_KEY: ${SECRETS_MASTER_KEY} + HASURA_URL: ${HASURA_URL:-http://hasura:8080} + HASURA_ADMIN_SECRET: ${HASURA_ADMIN_SECRET:-hasura_admin_secret} + UNLEASH_URL: ${UNLEASH_URL:-http://localhost:4242/api} + UNLEASH_API_TOKEN: ${UNLEASH_API_TOKEN:-default:development.unleash-insecure-api-token} + UNLEASH_APP_NAME: ${UNLEASH_APP_NAME:-agents-api} + LLAMA_MODEL_MULTIPLIER: ${LLAMA_MODEL_MULTIPLIER} x--base-agents-api: &base-agents-api image: julepai/agents-api:${TAG:-dev} @@ -87,6 +94,8 @@ x--base-agents-api: &base-agents-api - action: rebuild path: Dockerfile + volumes: + - ../llm-proxy/litellm-config.yaml:/app/litellm-config.yaml:ro services: agents-api: @@ -125,3 +134,6 @@ services: path: uv.lock - action: rebuild path: Dockerfile.worker + + volumes: + - ../llm-proxy/litellm-config.yaml:/app/litellm-config.yaml:ro diff --git a/agents-api/gunicorn_conf.py b/src/agents-api/gunicorn_conf.py similarity index 100% rename from agents-api/gunicorn_conf.py rename to src/agents-api/gunicorn_conf.py diff --git a/agents-api/poe_tasks.toml b/src/agents-api/poe_tasks.toml similarity index 100% rename from agents-api/poe_tasks.toml rename to src/agents-api/poe_tasks.toml diff --git a/agents-api/pyproject.toml b/src/agents-api/pyproject.toml similarity index 69% rename from agents-api/pyproject.toml rename to src/agents-api/pyproject.toml index ad3cd58b8..7e3744cc2 100644 --- a/agents-api/pyproject.toml +++ b/src/agents-api/pyproject.toml @@ -5,7 +5,7 @@ description = "Julep's backend API" readme = "README.md" requires-python = ">=3.12,<3.13" dependencies = [ - "aiobotocore>=2.15.2", + "aiobotocore>=2.21.0", "anyio>=4.4.0", "arrow>=1.3.0", "async-lru>=2.0.4", @@ -22,10 +22,11 @@ dependencies = [ "jsonschema>=4.22.0", "langchain-core>=0.3.14", "larch-pickle~=1.4.3", - "litellm>=1.57.0", + "litellm>=1.74.9", "lz4>=4.3.3", "msgpack>=1.1.0", "numpy>=2.0.0,<2.1.0", + "openfeature-sdk>=0.8.1", "pandas>=2.2.2", "prometheus-client>=0.21.0", "prometheus-fastapi-instrumentator>=7.0.0", @@ -42,7 +43,8 @@ dependencies = [ "tenacity>=9.0.0", "thefuzz>=0.22.1", "tiktoken>=0.7.0", - "uvicorn>=0.30.6", + "UnleashClient>=5.12.0", + "uvicorn==0.29.0", "uvloop>=0.21.0", "xxhash>=3.5.0", "spacy-chunks>=0.0.2", @@ -55,6 +57,15 @@ dependencies = [ "markdownify>=1.0.0", "markdown2>=2.5.3", "aiohttp>=3.11.13", + "websockets>=15.0.1", + "python-multipart>=0.0.20", + "cryptography>=45.0.6", + "backoff>=2.2.1", + "pyjwt>=2.10.1", + "sqlalchemy>=2.0.42", + "redis>=6.4.0", + "psycopg2-binary>=2.9.10", + "fastapi-sso>=0.18.0", ] [dependency-groups] @@ -73,7 +84,10 @@ dev = [ "sqlvalidator>=0.0.20", "testcontainers[postgres,localstack]>=4.9.0", "ward>=0.68.0b0", - "psycopg[binary]>=3.2.5", # only for use inside tests for now + "pyanalyze>=0.13.1", + "autotyping>=24.9.0", + "psycopg[binary]>=3.2.5", # only for use inside tests for now + "ty>=0.0.0a8", ] [tool.setuptools] @@ -81,5 +95,16 @@ py-modules = [ "agents_api", ] -extend-safe-fixes = [""] +[tool.ty.rules] +invalid-parameter-default = "warn" +invalid-argument-type = "warn" +unknown-argument = "warn" +invalid-type-form = "warn" +missing-argument = "warn" +unresolved-attribute = "warn" +invalid-assignment = "warn" +possibly-unbound-attribute = "warn" +no-matching-overload = "warn" +not-iterable = "warn" +unsupported-operator = "warn" diff --git a/agents-api/pytype.toml b/src/agents-api/pytype.toml similarity index 100% rename from agents-api/pytype.toml rename to src/agents-api/pytype.toml diff --git a/cli/tests/__init__.py b/src/agents-api/tests/__init__.py similarity index 100% rename from cli/tests/__init__.py rename to src/agents-api/tests/__init__.py diff --git a/agents-api/tests/fixtures.py b/src/agents-api/tests/fixtures.py similarity index 89% rename from agents-api/tests/fixtures.py rename to src/agents-api/tests/fixtures.py index 060901487..dc0dff06b 100644 --- a/agents-api/tests/fixtures.py +++ b/src/agents-api/tests/fixtures.py @@ -9,6 +9,7 @@ CreateDocRequest, CreateExecutionRequest, CreateFileRequest, + CreateProjectRequest, CreateSessionRequest, CreateTaskRequest, CreateToolRequest, @@ -29,6 +30,9 @@ ) from agents_api.queries.executions.create_temporal_lookup import create_temporal_lookup from agents_api.queries.files.create_file import create_file +from agents_api.queries.projects.create_project import create_project +from agents_api.queries.secrets.delete import delete_secret +from agents_api.queries.secrets.list import list_secrets from agents_api.queries.sessions.create_session import create_session from agents_api.queries.tasks.create_task import create_task from agents_api.queries.tools.create_tools import create_tools @@ -78,6 +82,20 @@ async def test_developer(dsn=pg_dsn, developer_id=test_developer_id): ) +@fixture(scope="test") +async def test_project(dsn=pg_dsn, developer=test_developer): + pool = await create_db_pool(dsn=dsn) + + return await create_project( + developer_id=developer.id, + data=CreateProjectRequest( + name="Test Project", + metadata={"test": "test"}, + ), + connection_pool=pool, + ) + + @fixture(scope="test") def patch_embed_acompletion(): output = {"role": "assistant", "content": "Hello, world!"} @@ -86,7 +104,7 @@ def patch_embed_acompletion(): @fixture(scope="test") -async def test_agent(dsn=pg_dsn, developer=test_developer): +async def test_agent(dsn=pg_dsn, developer=test_developer, project=test_project): pool = await create_db_pool(dsn=dsn) return await create_agent( @@ -96,6 +114,7 @@ async def test_agent(dsn=pg_dsn, developer=test_developer): name="test agent", about="test agent about", metadata={"test": "test"}, + project=project.canonical_name, ), connection_pool=pool, ) @@ -335,11 +354,17 @@ async def test_execution( yield execution +@fixture +def custom_scope_id(): + return uuid7() + + @fixture(scope="test") async def test_execution_started( dsn=pg_dsn, developer_id=test_developer_id, task=test_task, + scope_id=custom_scope_id, ): pool = await create_db_pool(dsn=dsn) workflow_handle = WorkflowHandle( @@ -359,7 +384,8 @@ async def test_execution_started( connection_pool=pool, ) - scope_id = uuid7() + actual_scope_id = scope_id or uuid7() + # Start the execution await create_execution_transition( developer_id=developer_id, @@ -367,8 +393,8 @@ async def test_execution_started( data=CreateTransitionRequest( type="init", output={}, - current={"workflow": "main", "step": 0, "scope_id": scope_id}, - next={"workflow": "main", "step": 0, "scope_id": scope_id}, + current={"workflow": "main", "step": 0, "scope_id": actual_scope_id}, + next={"workflow": "main", "step": 0, "scope_id": actual_scope_id}, ), connection_pool=pool, ) @@ -436,7 +462,7 @@ def client(_dsn=pg_dsn): with ( TestClient(app=app) as client, patch( - "agents_api.routers.utils.model_validation.get_model_list", + "agents_api.common.utils.model_validation.get_model_list", return_value=SAMPLE_MODELS, ), ): @@ -482,3 +508,27 @@ async def s3_client(): finally: await s3_client.close() app.state.s3_client = None + + +@fixture(scope="test") +async def clean_secrets(dsn=pg_dsn, developer_id=test_developer_id): + async def purge() -> None: + pool = await create_db_pool(dsn=dsn) + try: + secrets = await list_secrets( + developer_id=developer_id, + connection_pool=pool, + ) + for secret in secrets: + await delete_secret( + secret_id=secret.id, + developer_id=developer_id, + connection_pool=pool, + ) + finally: + # pool is closed in *the same* loop it was created in + await pool.close() + + await purge() + yield + await purge() diff --git a/integrations-service/integrations/__init__.py b/src/agents-api/tests/sample_tasks/__init__.py similarity index 100% rename from integrations-service/integrations/__init__.py rename to src/agents-api/tests/sample_tasks/__init__.py diff --git a/agents-api/tests/sample_tasks/find_selector.yaml b/src/agents-api/tests/sample_tasks/find_selector.yaml similarity index 100% rename from agents-api/tests/sample_tasks/find_selector.yaml rename to src/agents-api/tests/sample_tasks/find_selector.yaml diff --git a/agents-api/tests/sample_tasks/integration_example.yaml b/src/agents-api/tests/sample_tasks/integration_example.yaml similarity index 100% rename from agents-api/tests/sample_tasks/integration_example.yaml rename to src/agents-api/tests/sample_tasks/integration_example.yaml diff --git a/agents-api/tests/sample_tasks/reclaim-example.yaml b/src/agents-api/tests/sample_tasks/reclaim-example.yaml similarity index 100% rename from agents-api/tests/sample_tasks/reclaim-example.yaml rename to src/agents-api/tests/sample_tasks/reclaim-example.yaml diff --git a/agents-api/tests/sample_tasks/screenshot.base64 b/src/agents-api/tests/sample_tasks/screenshot.base64 similarity index 100% rename from agents-api/tests/sample_tasks/screenshot.base64 rename to src/agents-api/tests/sample_tasks/screenshot.base64 diff --git a/agents-api/tests/sample_tasks/screenshot.png b/src/agents-api/tests/sample_tasks/screenshot.png similarity index 100% rename from agents-api/tests/sample_tasks/screenshot.png rename to src/agents-api/tests/sample_tasks/screenshot.png diff --git a/agents-api/tests/sample_tasks/simple_multi_step.yaml b/src/agents-api/tests/sample_tasks/simple_multi_step.yaml similarity index 100% rename from agents-api/tests/sample_tasks/simple_multi_step.yaml rename to src/agents-api/tests/sample_tasks/simple_multi_step.yaml diff --git a/agents-api/tests/sample_tasks/simple_parameter_extractor.yaml b/src/agents-api/tests/sample_tasks/simple_parameter_extractor.yaml similarity index 100% rename from agents-api/tests/sample_tasks/simple_parameter_extractor.yaml rename to src/agents-api/tests/sample_tasks/simple_parameter_extractor.yaml diff --git a/agents-api/tests/sample_tasks/simple_prompt.yaml b/src/agents-api/tests/sample_tasks/simple_prompt.yaml similarity index 100% rename from agents-api/tests/sample_tasks/simple_prompt.yaml rename to src/agents-api/tests/sample_tasks/simple_prompt.yaml diff --git a/agents-api/tests/sample_tasks/test_find_selector.py b/src/agents-api/tests/sample_tasks/test_find_selector.py similarity index 100% rename from agents-api/tests/sample_tasks/test_find_selector.py rename to src/agents-api/tests/sample_tasks/test_find_selector.py diff --git a/agents-api/tests/test_activities.py b/src/agents-api/tests/test_activities.py similarity index 100% rename from agents-api/tests/test_activities.py rename to src/agents-api/tests/test_activities.py diff --git a/agents-api/tests/test_activities_utils.py b/src/agents-api/tests/test_activities_utils.py similarity index 96% rename from agents-api/tests/test_activities_utils.py rename to src/agents-api/tests/test_activities_utils.py index 467002bb7..6c4948daf 100644 --- a/agents-api/tests/test_activities_utils.py +++ b/src/agents-api/tests/test_activities_utils.py @@ -2,7 +2,7 @@ import markdown2 import markdownify -from agents_api.activities.utils import get_evaluator +from agents_api.common.utils.evaluator import get_evaluator from ward import test @@ -84,7 +84,7 @@ def _(): @test("safe_extract_json with various code block formats") def test_safe_extract_json_formats(): - from agents_api.activities.utils import safe_extract_json + from agents_api.common.utils.evaluator import safe_extract_json # Test with ```json format json_block = """```json @@ -123,7 +123,7 @@ def test_safe_extract_json_formats(): @test("safe_extract_json handles marker validation correctly") def test_safe_extract_json_validation(): - from agents_api.activities.utils import safe_extract_json + from agents_api.common.utils.evaluator import safe_extract_json # Test invalid start marker validation for ```json format invalid_json_marker = """``json diff --git a/agents-api/tests/test_agent_metadata_filtering.py b/src/agents-api/tests/test_agent_metadata_filtering.py similarity index 100% rename from agents-api/tests/test_agent_metadata_filtering.py rename to src/agents-api/tests/test_agent_metadata_filtering.py diff --git a/src/agents-api/tests/test_agent_queries.py b/src/agents-api/tests/test_agent_queries.py new file mode 100644 index 000000000..d42eeb6aa --- /dev/null +++ b/src/agents-api/tests/test_agent_queries.py @@ -0,0 +1,396 @@ +# Tests for agent queries + +from agents_api.autogen.openapi_model import ( + Agent, + CreateAgentRequest, + CreateOrUpdateAgentRequest, + PatchAgentRequest, + ResourceDeletedResponse, + UpdateAgentRequest, +) +from agents_api.clients.pg import create_db_pool +from agents_api.queries.agents import ( + create_agent, + create_or_update_agent, + delete_agent, + get_agent, + list_agents, + patch_agent, + update_agent, +) +from fastapi import HTTPException +from uuid_extensions import uuid7 +from ward import raises, test + +from tests.fixtures import pg_dsn, test_agent, test_developer_id, test_project + + +@test("query: create agent sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that an agent can be successfully created.""" + + pool = await create_db_pool(dsn=dsn) + await create_agent( + developer_id=developer_id, + data=CreateAgentRequest( + name="test agent", + about="test agent about", + model="gpt-4o-mini", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + +@test("query: create agent with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that an agent can be successfully created with a project.""" + + pool = await create_db_pool(dsn=dsn) + result = await create_agent( + developer_id=developer_id, + data=CreateAgentRequest( + name="test agent with project", + about="test agent about", + model="gpt-4o-mini", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result.project == project.canonical_name + + +@test("query: create agent with invalid project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that creating an agent with an invalid project raises an exception.""" + + pool = await create_db_pool(dsn=dsn) + + with raises(HTTPException) as exc: + await create_agent( + developer_id=developer_id, + data=CreateAgentRequest( + name="test agent with invalid project", + about="test agent about", + model="gpt-4o-mini", + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + +@test("query: create or update agent sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that an agent can be successfully created or updated.""" + + pool = await create_db_pool(dsn=dsn) + await create_or_update_agent( + developer_id=developer_id, + agent_id=uuid7(), + data=CreateOrUpdateAgentRequest( + name="test agent", + canonical_name="test_agent2", + about="test agent about", + model="gpt-4o-mini", + instructions=["test instruction"], + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + +@test("query: create or update agent with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that an agent can be successfully created or updated with a project.""" + + pool = await create_db_pool(dsn=dsn) + result = await create_or_update_agent( + developer_id=developer_id, + agent_id=uuid7(), + data=CreateOrUpdateAgentRequest( + name="test agent", + canonical_name="test_agent_with_project", + about="test agent about", + model="gpt-4o-mini", + instructions=["test instruction"], + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result.project == project.canonical_name + + +@test("query: update agent sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that an existing agent's information can be successfully updated.""" + + pool = await create_db_pool(dsn=dsn) + result = await update_agent( + agent_id=agent.id, + developer_id=developer_id, + data=UpdateAgentRequest( + name="updated agent", + about="updated agent about", + model="gpt-4o-mini", + default_settings={"temperature": 1.0}, + metadata={"hello": "world"}, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result is not None + assert isinstance(result, Agent) + assert result.name == "updated agent" + assert result.about == "updated agent about" + assert result.model == "gpt-4o-mini" + assert result.default_settings["temperature"] == 1.0 + assert result.metadata == {"hello": "world"} + + +@test("query: update agent with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, project=test_project): + """Test that an existing agent's information can be successfully updated with a project.""" + + pool = await create_db_pool(dsn=dsn) + result = await update_agent( + agent_id=agent.id, + developer_id=developer_id, + data=UpdateAgentRequest( + name="updated agent with project", + about="updated agent about", + model="gpt-4o-mini", + default_settings={"temperature": 1.0}, + metadata={"hello": "world"}, + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result is not None + assert isinstance(result, Agent) + assert result.project == project.canonical_name + + +@test("query: update agent, project does not exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that an existing agent's information can be successfully updated with a project that does not exist.""" + + pool = await create_db_pool(dsn=dsn) + with raises(HTTPException) as exc: + await update_agent( + agent_id=agent.id, + developer_id=developer_id, + data=UpdateAgentRequest( + name="updated agent with project", + about="updated agent about", + model="gpt-4o-mini", + default_settings={"temperature": 1.0}, + metadata={"hello": "world"}, + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + +@test("query: patch agent sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that an agent can be successfully patched.""" + + pool = await create_db_pool(dsn=dsn) + result = await patch_agent( + agent_id=agent.id, + developer_id=developer_id, + data=PatchAgentRequest( + name="patched agent", + about="patched agent about", + default_settings={"temperature": 1.0}, + metadata={"something": "else"}, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result is not None + assert isinstance(result, Agent) + assert result.name == "patched agent" + assert result.about == "patched agent about" + assert result.default_settings["temperature"] == 1.0 + + +@test("query: patch agent with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, project=test_project): + """Test that an agent can be successfully patched with a project.""" + + pool = await create_db_pool(dsn=dsn) + result = await patch_agent( + agent_id=agent.id, + developer_id=developer_id, + data=PatchAgentRequest( + name="patched agent with project", + about="patched agent about", + default_settings={"temperature": 1.0}, + metadata={"something": "else"}, + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + # Verify the agent is in the list of agents with the correct project + agents = await list_agents( + developer_id=developer_id, + connection_pool=pool, + ) # type: ignore[not-callable] + + # Find our patched agent in the list + patched_agent = next((a for a in agents if a.id == agent.id), None) + + assert patched_agent is not None + assert patched_agent.name == "patched agent with project" + assert patched_agent.project == project.canonical_name + + assert result is not None + assert isinstance(result, Agent) + assert result.project == project.canonical_name + + +@test("query: patch agent, project does not exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that an agent can be successfully patched with a project that does not exist.""" + + pool = await create_db_pool(dsn=dsn) + with raises(HTTPException) as exc: + await patch_agent( + agent_id=agent.id, + developer_id=developer_id, + data=PatchAgentRequest( + name="patched agent with project", + about="patched agent about", + default_settings={"temperature": 1.0}, + metadata={"something": "else"}, + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + +@test("query: get agent not exists sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that retrieving a non-existent agent raises an exception.""" + + agent_id = uuid7() + pool = await create_db_pool(dsn=dsn) + + with raises(Exception): + await get_agent(agent_id=agent_id, developer_id=developer_id, connection_pool=pool) # type: ignore[not-callable] + + +@test("query: get agent exists sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that retrieving an existing agent returns the correct agent information.""" + + pool = await create_db_pool(dsn=dsn) + result = await get_agent( + agent_id=agent.id, + developer_id=developer_id, + connection_pool=pool, + ) # type: ignore[not-callable] + + assert result is not None + assert isinstance(result, Agent) + assert result.id == agent.id + assert result.name == agent.name + assert result.about == agent.about + assert result.model == agent.model + assert result.default_settings == agent.default_settings + assert result.metadata == agent.metadata + + +@test("query: list agents sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that listing agents returns a collection of agent information.""" + + pool = await create_db_pool(dsn=dsn) + result = await list_agents(developer_id=developer_id, connection_pool=pool) # type: ignore[not-callable] + + assert isinstance(result, list) + assert all(isinstance(agent, Agent) for agent in result) + + +@test("query: list agents with project filter sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that listing agents with a project filter returns the correct agents.""" + + pool = await create_db_pool(dsn=dsn) + + # First create an agent with the specific project + await create_agent( + developer_id=developer_id, + data=CreateAgentRequest( + name="test agent for project filter", + about="test agent about", + model="gpt-4o-mini", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + # Now fetch with project filter + result = await list_agents(developer_id=developer_id, connection_pool=pool) # type: ignore[not-callable] + + assert isinstance(result, list) + assert all(isinstance(agent, Agent) for agent in result) + assert any(agent.project == project.canonical_name for agent in result) + + +@test("query: list agents sql, invalid sort direction") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that listing agents with an invalid sort direction raises an exception.""" + + pool = await create_db_pool(dsn=dsn) + with raises(HTTPException) as exc: + await list_agents( + developer_id=developer_id, + connection_pool=pool, + direction="invalid", + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 400 + assert exc.raised.detail == "Invalid sort direction" + + +@test("query: delete agent sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that an agent can be successfully deleted.""" + + pool = await create_db_pool(dsn=dsn) + create_result = await create_agent( + developer_id=developer_id, + data=CreateAgentRequest( + name="test agent", + about="test agent about", + model="gpt-4o-mini", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + delete_result = await delete_agent( + agent_id=create_result.id, + developer_id=developer_id, + connection_pool=pool, + ) # type: ignore[not-callable] + + assert delete_result is not None + assert isinstance(delete_result, ResourceDeletedResponse) + + with raises(Exception): + await get_agent( + developer_id=developer_id, + agent_id=create_result.id, + connection_pool=pool, + ) # type: ignore[not-callable] diff --git a/agents-api/tests/test_agent_routes.py b/src/agents-api/tests/test_agent_routes.py similarity index 56% rename from agents-api/tests/test_agent_routes.py rename to src/agents-api/tests/test_agent_routes.py index 5c4d0c7c4..c0a2b1b6e 100644 --- a/agents-api/tests/test_agent_routes.py +++ b/src/agents-api/tests/test_agent_routes.py @@ -3,7 +3,7 @@ from uuid_extensions import uuid7 from ward import test -from tests.fixtures import client, make_request, test_agent +from tests.fixtures import client, make_request, test_agent, test_project @test("route: unauthorized should fail") @@ -40,6 +40,25 @@ def _(make_request=make_request): assert response.status_code == 201 +@test("route: create agent with project") +def _(make_request=make_request, project=test_project): + data = { + "name": "test agent with project", + "about": "test agent about", + "model": "gpt-4o-mini", + "project": project.canonical_name, + } + + response = make_request( + method="POST", + url="/agents", + json=data, + ) + + assert response.status_code == 201 + assert response.json()["project"] == project.canonical_name + + @test("route: create agent with instructions") def _(make_request=make_request): data = { @@ -78,6 +97,28 @@ def _(make_request=make_request): assert response.status_code == 201 +@test("route: create or update agent with project") +def _(make_request=make_request, project=test_project): + agent_id = str(uuid7()) + + data = { + "name": "test agent with project", + "about": "test agent about", + "model": "gpt-4o-mini", + "instructions": ["test instruction"], + "project": project.canonical_name, + } + + response = make_request( + method="POST", + url=f"/agents/{agent_id}", + json=data, + ) + + assert response.status_code == 201 + assert response.json()["project"] == project.canonical_name + + @test("route: get agent not exists") def _(make_request=make_request): agent_id = str(uuid7()) @@ -165,6 +206,39 @@ def _(make_request=make_request, agent=test_agent): assert "test" not in agent["metadata"] +@test("route: update agent with project") +def _(make_request=make_request, agent=test_agent, project=test_project): + data = { + "name": "updated agent with project", + "about": "updated agent about", + "default_settings": {"temperature": 1.0}, + "model": "gpt-4o-mini", + "metadata": {"hello": "world"}, + "project": project.canonical_name, + } + + agent_id = str(agent.id) + response = make_request( + method="PUT", + url=f"/agents/{agent_id}", + json=data, + ) + + assert response.status_code == 200 + + agent_id = response.json()["id"] + + response = make_request( + method="GET", + url=f"/agents/{agent_id}", + ) + + assert response.status_code == 200 + agent = response.json() + + assert agent["project"] == project.canonical_name + + @test("route: patch agent") def _(make_request=make_request, agent=test_agent): agent_id = str(agent.id) @@ -197,6 +271,40 @@ def _(make_request=make_request, agent=test_agent): assert "hello" in agent["metadata"] +@test("route: patch agent with project") +def _(make_request=make_request, agent=test_agent, project=test_project): + agent_id = str(agent.id) + + data = { + "name": "patched agent with project", + "about": "patched agent about", + "default_settings": {"temperature": 1.0}, + "metadata": {"hello": "world"}, + "project": project.canonical_name, + } + + response = make_request( + method="PATCH", + url=f"/agents/{agent_id}", + json=data, + ) + + assert response.status_code == 200 + + agent_id = response.json()["id"] + + response = make_request( + method="GET", + url=f"/agents/{agent_id}", + ) + + assert response.status_code == 200 + agent = response.json() + + assert "hello" in agent["metadata"] + assert agent["project"] == project.canonical_name + + @test("route: list agents") def _(make_request=make_request): response = make_request( @@ -212,6 +320,40 @@ def _(make_request=make_request): assert len(agents) > 0 +@test("route: list agents with project filter") +def _(make_request=make_request, project=test_project): + # First create an agent with the project + data = { + "name": "test agent for project filter", + "about": "test agent about", + "model": "gpt-4o-mini", + "project": project.canonical_name, + } + + make_request( + method="POST", + url="/agents", + json=data, + ) + + # Then list agents with project filter + response = make_request( + method="GET", + url="/agents", + params={ + "project": project.canonical_name, + }, + ) + + assert response.status_code == 200 + response = response.json() + agents = response["items"] + + assert isinstance(agents, list) + assert len(agents) > 0 + assert any(agent["project"] == project.canonical_name for agent in agents) + + @test("route: list agents with metadata filter") def _(make_request=make_request): response = make_request( diff --git a/agents-api/tests/test_base_evaluate.py b/src/agents-api/tests/test_base_evaluate.py similarity index 100% rename from agents-api/tests/test_base_evaluate.py rename to src/agents-api/tests/test_base_evaluate.py diff --git a/src/agents-api/tests/test_chat_auto_tools.py b/src/agents-api/tests/test_chat_auto_tools.py new file mode 100644 index 000000000..d4f2c08f0 --- /dev/null +++ b/src/agents-api/tests/test_chat_auto_tools.py @@ -0,0 +1,305 @@ +""" +Tests for auto tool calls in chat sessions. +Tests for feature flag routing, tool execution logic, and edge cases. +""" + +from unittest.mock import AsyncMock, MagicMock, patch +from uuid import uuid4 + +from agents_api.autogen.openapi_model import ChatInput +from agents_api.autogen.Tools import ( + ChosenFunctionCall, + FunctionCallOption, + FunctionDef, + Tool, +) +from agents_api.common.utils.datetime import utcnow +from agents_api.common.utils.tool_runner import run_tool_call +from fastapi import HTTPException +from ward import test + + +@test("ChatInput defaults to auto_run_tools=False") +async def _(): + """Test that ChatInput defaults to auto_run_tools=False.""" + # Create a minimal chat input without auto_run_tools + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + ) + + # Verify default value + assert chat_input.auto_run_tools is False + + +@test("ChatInput can set auto_run_tools=True") +async def _(): + """Test that ChatInput can set auto_run_tools=True.""" + # Create a chat input with auto_run_tools=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + auto_run_tools=True, + ) + + # Verify the value was set + assert chat_input.auto_run_tools is True + + +@test("ChatInput can explicitly set auto_run_tools=False") +async def _(): + """Test that ChatInput can explicitly set auto_run_tools=False.""" + # Create a chat input with auto_run_tools=False + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + auto_run_tools=False, + ) + + # Verify the value was set + assert chat_input.auto_run_tools is False + + +@test("run_tool_call handles function tools") +async def _(): + """Test that function tools are handled by run_tool_call.""" + # Create a function tool + now = utcnow() + tool = Tool( + id=uuid4(), + name="test_function", + type="function", + description="A test function tool", + function=FunctionDef( + parameters={"type": "object", "properties": {"input": {"type": "string"}}} + ), + created_at=now, + updated_at=now, + ) + + # Create a function tool call + call = ChosenFunctionCall( + id="call_123", + type="function", + function=FunctionCallOption(name="test_function", arguments='{"input": "test"}'), + ) + + # Execute the tool call - function tools will fail due to missing setup key + try: + result = await run_tool_call( + developer_id=uuid4(), + agent_id=uuid4(), + session_id=uuid4(), + tool=tool, + call=call, + ) + # If it doesn't raise an error, verify the result + assert result.id == call.id + assert result.name == tool.name + assert result.output == {} + except KeyError as e: + # Expected behavior for now - function tools don't have setup field + assert str(e) == "'setup'" + + +@test("chat_auto_tools raises HTTPException when streaming with tools") +async def _(): + """Test that streaming is not supported when auto_run_tools is enabled with tools.""" + from agents_api.routers.sessions.auto_tools.chat import chat + + # Mock dependencies + mock_developer = MagicMock(id=uuid4(), tags=[]) + mock_session = MagicMock() + mock_agent = MagicMock(id=uuid4()) + mock_toolset = MagicMock(tools=[MagicMock()]) # Non-empty tools + mock_chat_context = MagicMock( + session=mock_session, agents=[mock_agent], toolsets=[mock_toolset] + ) + + # Create streaming chat input with auto_run_tools=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, # Streaming enabled + auto_run_tools=True, # Auto run tools enabled + ) + + with patch( + "agents_api.routers.sessions.auto_tools.chat.render_chat_input", + return_value=([], [], [MagicMock()], {}, [], mock_chat_context), + ): + try: + await chat( + developer=mock_developer, + session_id=uuid4(), + chat_input=chat_input, + background_tasks=MagicMock(), + ) + assert False, "Should have raised HTTPException" + except HTTPException as e: + assert e.status_code == 400 + assert "Streaming is not supported when auto_run_tools is enabled" in e.detail + + +@test("chat_auto_tools with auto_run_tools=False passes empty tools to LLM") +async def _(): + """Test that when auto_run_tools=False, empty tools are passed to prevent tool calls.""" + from agents_api.routers.sessions.auto_tools.chat import chat + + # Mock dependencies + mock_developer = MagicMock(id=uuid4(), tags=[]) + mock_session = MagicMock() + mock_agent = MagicMock(id=uuid4()) + mock_toolset = MagicMock(tools=[MagicMock()]) # Has tools but shouldn't use them + mock_chat_context = MagicMock( + session=mock_session, agents=[mock_agent], toolsets=[mock_toolset] + ) + + # Create non-streaming chat input with auto_run_tools=False + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=False, + save=False, + auto_run_tools=False, # Disabled + ) + + # Mock litellm.acompletion to verify it receives no tools + mock_choice = MagicMock() + mock_choice.message = MagicMock(content="Hi", tool_calls=None) + mock_choice.message.model_dump.return_value = {"content": "Hi", "tool_calls": None} + mock_choice.finish_reason = "stop" + mock_response = MagicMock() + mock_response.choices = [mock_choice] + mock_response.usage = MagicMock(model_dump=lambda: {"total_tokens": 10}) + + with ( + patch( + "agents_api.routers.sessions.auto_tools.chat.render_chat_input", + return_value=( + [{"role": "user", "content": "Hello"}], + [], + [MagicMock()], + {"model": "gpt-4"}, + [], + mock_chat_context, + ), + ), + patch( + "agents_api.clients.litellm.acompletion", new_callable=AsyncMock + ) as mock_acompletion, + ): + mock_acompletion.return_value = mock_response + + await chat( + developer=mock_developer, + session_id=uuid4(), + chat_input=chat_input, + background_tasks=MagicMock(), + ) + + # Verify litellm was called with tools=[] + mock_acompletion.assert_called_once() + call_args = mock_acompletion.call_args[1] + assert call_args.get("tools") == [] + + +@test("chat_auto_tools with auto_run_tools=True and no tools works normally") +async def _(): + """Test that when auto_run_tools=True but no tools exist, chat works normally.""" + from agents_api.routers.sessions.auto_tools.chat import chat + + # Mock dependencies + mock_developer = MagicMock(id=uuid4(), tags=[]) + mock_session = MagicMock() + mock_agent = MagicMock(id=uuid4()) + mock_chat_context = MagicMock( + session=mock_session, + agents=[mock_agent], + toolsets=[], # No tools available + ) + + # Create chat input with auto_run_tools=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=False, + save=False, + auto_run_tools=True, # Enabled + ) + + # Mock litellm response + mock_choice = MagicMock() + mock_choice.message = MagicMock(content="Hi", tool_calls=None) + mock_choice.message.model_dump.return_value = {"content": "Hi", "tool_calls": None} + mock_choice.finish_reason = "stop" + mock_response = MagicMock() + mock_response.choices = [mock_choice] + mock_response.usage = MagicMock(model_dump=lambda: {"total_tokens": 10}) + + with ( + patch( + "agents_api.routers.sessions.auto_tools.chat.render_chat_input", + return_value=( + [{"role": "user", "content": "Hello"}], + [], + [], + {"model": "gpt-4"}, + [], + mock_chat_context, + ), + ), + patch( + "agents_api.clients.litellm.acompletion", new_callable=AsyncMock + ) as mock_acompletion, + ): + mock_acompletion.return_value = mock_response + + result = await chat( + developer=mock_developer, + session_id=uuid4(), + chat_input=chat_input, + background_tasks=MagicMock(), + ) + + # Should complete successfully + assert result.choices[0].message.content == "Hi" + + +@test("chat router uses ChatInput.auto_run_tools for routing") +async def _(): + """Test that the chat router correctly uses ChatInput.auto_run_tools for routing.""" + # This test validates that the chat router implementation uses + # ChatInput.auto_run_tools flag along with the feature flag for routing + + # Test 1: With auto_run_tools=True + chat_input_enabled = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + auto_run_tools=True, + ) + + # Verify the field exists and is set correctly + assert hasattr(chat_input_enabled, "auto_run_tools") + assert chat_input_enabled.auto_run_tools is True + + # Test 2: With auto_run_tools=False + chat_input_disabled = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + auto_run_tools=False, + ) + + # Verify the field exists and is set correctly + assert hasattr(chat_input_disabled, "auto_run_tools") + assert chat_input_disabled.auto_run_tools is False + + # Test 3: Default value + chat_input_default = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + ) + + # Verify the field exists and defaults to False + assert hasattr(chat_input_default, "auto_run_tools") + assert chat_input_default.auto_run_tools is False + + +# Note: These tests cover: +# 1. ChatInput model defaults and configuration +# 2. Function tool error handling in chat +# 3. Streaming error when tools are involved +# 4. Empty tools list when auto_run_tools=False +# 5. Normal operation when no tools exist +# 6. Chat router routing based on ChatInput.auto_run_tools diff --git a/src/agents-api/tests/test_chat_metadata.py b/src/agents-api/tests/test_chat_metadata.py new file mode 100644 index 000000000..5d223eabc --- /dev/null +++ b/src/agents-api/tests/test_chat_metadata.py @@ -0,0 +1,399 @@ +"""Test metadata functionality in chat endpoint.""" + +from ward import test + +from tests.fixtures import ( + make_request, + patch_embed_acompletion, + pg_dsn, + test_agent, + test_developer_id, + test_session, +) + + +@test("chat: metadata is passed to system template rendering") +async def _( + make_request=make_request, + agent=test_agent, + session=test_session, + mocks=patch_embed_acompletion, +): + """Test that metadata from chat request is available in system template.""" + (_embed, acompletion) = mocks + + # Prepare chat request with metadata + chat_data = { + "messages": [ + { + "role": "user", + "content": "Hello, please help me", + } + ], + "metadata": { + "foo": True, + "custom_instruction": "Be extra helpful", + "user_preference": "formal tone", + "priority": "high", + }, + } + + # Make the chat request + response = make_request( + method="POST", + url=f"/sessions/{session.id}/chat", + json=chat_data, + ) + + assert response.status_code == 201 + + # Check that the completion was called + acompletion.assert_called_once() + + # Get the actual call arguments + call_args = acompletion.call_args + messages = call_args[1]["messages"] + + # The system message should be the first message + assert len(messages) > 0 + system_message = messages[0] + assert system_message["role"] == "system" + + # Since we're mocking, we can't test the actual template rendering, + # but we can verify the metadata was included in the request + assert "metadata" in chat_data + assert chat_data["metadata"]["foo"] is True + assert chat_data["metadata"]["custom_instruction"] == "Be extra helpful" + + +@test("chat: metadata field accepts complex nested structures") +async def _( + make_request=make_request, + session=test_session, + mocks=patch_embed_acompletion, +): + """Test that metadata can contain nested objects and arrays.""" + (_embed, acompletion) = mocks + + # Complex metadata structure + chat_data = { + "messages": [ + { + "role": "user", + "content": "Test message", + } + ], + "metadata": { + "user_profile": { + "preferences": { + "language": "en", + "style": "formal", + "topics": ["science", "technology"], + }, + "flags": { + "premium": True, + "beta_features": False, + }, + }, + "context": { + "session_type": "support", + "priority": 1, + "tags": ["urgent", "technical"], + }, + "custom_instructions": [ + "Be concise", + "Use examples", + "Avoid jargon", + ], + }, + } + + # Make the chat request + response = make_request( + method="POST", + url=f"/sessions/{session.id}/chat", + json=chat_data, + ) + + assert response.status_code == 201 + + # Verify the LLM was called + acompletion.assert_called_once() + + +@test("chat: empty metadata field is handled correctly") +async def _( + make_request=make_request, + session=test_session, + mocks=patch_embed_acompletion, +): + """Test that empty or null metadata doesn't cause issues.""" + (_embed, acompletion) = mocks + + # Test with empty metadata + chat_data_empty = { + "messages": [ + { + "role": "user", + "content": "Test with empty metadata", + } + ], + "metadata": {}, + } + + response = make_request( + method="POST", + url=f"/sessions/{session.id}/chat", + json=chat_data_empty, + ) + + assert response.status_code == 201 + + # Test with null metadata (by not including it) + chat_data_null = { + "messages": [ + { + "role": "user", + "content": "Test without metadata", + } + ], + } + + response = make_request( + method="POST", + url=f"/sessions/{session.id}/chat", + json=chat_data_null, + ) + + assert response.status_code == 201 + + # Both calls should succeed + assert acompletion.call_count == 2 + + +@test("render: metadata is properly rendered in system template") +async def _( + make_request=make_request, + test_agent=test_agent, + test_developer_id=test_developer_id, + pg_dsn=pg_dsn, +): + """Test that metadata is properly rendered in custom system templates.""" + from agents_api.autogen.Sessions import CreateSessionRequest + from agents_api.clients.pg import create_db_pool + from agents_api.queries.sessions.create_session import create_session + + # Create a custom system template that uses metadata + custom_system_template = """ +{%- if agent.name -%} +You are {{agent.name}}.{{" "}} +{%- endif -%} + +{%- if metadata.custom_instructions -%} +Custom instructions: {{metadata.custom_instructions}} +{%- endif -%} + +{%- if metadata.mood -%} +Current mood: {{metadata.mood}} +{%- endif -%} + +{%- if metadata.language -%} +Respond in: {{metadata.language}} +{%- endif -%} +""" + + # Create a session with the custom system template + pool = await create_db_pool(dsn=pg_dsn) + session_data = CreateSessionRequest( + agent=test_agent.id, + system_template=custom_system_template, + ) + + session = await create_session( + developer_id=test_developer_id, + data=session_data, + connection_pool=pool, + ) + + # Make a render request with metadata + render_data = { + "messages": [ + { + "role": "user", + "content": "Hello, how are you?", + } + ], + "metadata": { + "custom_instructions": "You are very rude. Try to make fun of the user", + "mood": "sarcastic", + "language": "English with a British accent", + }, + "recall": False, + } + + response = make_request( + method="POST", + url=f"/sessions/{session.id}/render", + json=render_data, + ) + + assert response.status_code == 200 + + # Parse the response + result = response.json() + + # Check that messages were rendered + assert "messages" in result + messages = result["messages"] + assert len(messages) >= 2 # System message + user message + + # Find the system message + system_message = next((msg for msg in messages if msg["role"] == "system"), None) + assert system_message is not None + + # Verify that metadata was rendered in the system message + system_content = system_message["content"] + assert ( + "Custom instructions: You are very rude. Try to make fun of the user" in system_content + ) + assert "Current mood: sarcastic" in system_content + assert "Respond in: English with a British accent" in system_content + + # Also verify the agent name is rendered + assert f"You are {test_agent.name}" in system_content + + +@test("render: metadata with conditional logic in template") +async def _( + make_request=make_request, + test_agent=test_agent, + test_developer_id=test_developer_id, + pg_dsn=pg_dsn, +): + """Test complex conditional logic with metadata in system templates.""" + from agents_api.autogen.Sessions import CreateSessionRequest + from agents_api.clients.pg import create_db_pool + from agents_api.queries.sessions.create_session import create_session + + # Create a template with complex conditional logic + complex_template = """ +{%- if agent.name -%} +You are {{agent.name}}. +{%- endif -%} + +{%- if metadata.mode == "helpful" -%} +Be as helpful and supportive as possible. +{%- elif metadata.mode == "concise" -%} +Keep your responses brief and to the point. +{%- elif metadata.mode == "creative" -%} +Be creative and think outside the box. +{%- else -%} +Respond normally. +{%- endif -%} + +{%- if metadata.expertise -%} +You are an expert in: +{%- for skill in metadata.expertise -%} +- {{skill}} +{%- endfor -%} +{%- endif -%} + +{%- if metadata.restrictions -%} +Important restrictions: +{%- for restriction in metadata.restrictions -%} +* {{restriction}} +{%- endfor -%} +{%- endif -%} +""" + + # Create session with complex template + pool = await create_db_pool(dsn=pg_dsn) + session_data = CreateSessionRequest( + agent=test_agent.id, + system_template=complex_template, + ) + + session = await create_session( + developer_id=test_developer_id, + data=session_data, + connection_pool=pool, + ) + + # Test with different metadata configurations + test_cases = [ + { + "metadata": { + "mode": "helpful", + "expertise": ["Python", "Machine Learning", "Data Science"], + "restrictions": ["No code execution", "Family-friendly content only"], + }, + "expected_content": [ + "Be as helpful and supportive as possible", + "You are an expert in:", + "- Python", + "- Machine Learning", + "- Data Science", + "Important restrictions:", + "* No code execution", + "* Family-friendly content only", + ], + }, + { + "metadata": { + "mode": "concise", + }, + "expected_content": [ + "Keep your responses brief and to the point", + ], + "not_expected": [ + "You are an expert in:", + "Important restrictions:", + ], + }, + ] + + for test_case in test_cases: + render_data = { + "messages": [{"role": "user", "content": "Test"}], + "metadata": test_case["metadata"], + "recall": False, + } + + response = make_request( + method="POST", + url=f"/sessions/{session.id}/render", + json=render_data, + ) + + assert response.status_code == 200 + result = response.json() + + # Find system message + system_message = next( + (msg for msg in result["messages"] if msg["role"] == "system"), None + ) + assert system_message is not None + + # Check expected content + for expected in test_case["expected_content"]: + assert expected in system_message["content"], ( + f"Expected '{expected}' in system message but it was not found" + ) + + # Check not expected content (if specified) + if "not_expected" in test_case: + for not_expected in test_case["not_expected"]: + assert not_expected not in system_message["content"], ( + f"Did not expect '{not_expected}' in system message but it was found" + ) + + +# TODO: Add streaming test when streaming mock is fixed +# @test("chat: metadata works with streaming responses") +# async def _( +# make_request=make_request, +# session=test_session, +# mocks=patch_embed_acompletion, +# ): +# """Test that metadata works correctly with streaming chat responses.""" +# # This test is currently disabled due to mock issues with streaming responses diff --git a/agents-api/tests/test_chat_routes.py b/src/agents-api/tests/test_chat_routes.py similarity index 100% rename from agents-api/tests/test_chat_routes.py rename to src/agents-api/tests/test_chat_routes.py diff --git a/src/agents-api/tests/test_chat_streaming.py b/src/agents-api/tests/test_chat_streaming.py new file mode 100644 index 000000000..82dbd5794 --- /dev/null +++ b/src/agents-api/tests/test_chat_streaming.py @@ -0,0 +1,860 @@ +"""Tests for the streaming logic in the chat function.""" + +import json +from unittest.mock import AsyncMock, MagicMock, patch + +from agents_api.autogen.openapi_model import ( + ChatInput, + CreateSessionRequest, + DocReference, +) +from agents_api.clients.pg import create_db_pool +from agents_api.queries.sessions.create_session import create_session +from agents_api.routers.sessions.legacy.chat import _join_deltas, chat +from fastapi import BackgroundTasks +from starlette.responses import StreamingResponse +from uuid_extensions import uuid7 +from ward import skip, test + +from .fixtures import ( + pg_dsn, + test_agent, + test_developer, + test_developer_id, +) + + +async def get_usage_records(dsn: str, developer_id: str, limit: int = 100): + """Helper function to get usage records for testing.""" + pool = await create_db_pool(dsn=dsn) + + records = await pool.fetch( + """ + SELECT + developer_id, + model, + prompt_tokens, + completion_tokens, + cost, + estimated, + custom_api_used, + created_at, + metadata + FROM usage + WHERE developer_id = $1 + ORDER BY created_at DESC + LIMIT $2;""", + developer_id, + limit, + ) + + # Convert records to dictionaries + return [dict(record) for record in records] + + +async def delete_usage_records(dsn: str, developer_id: str): + """Helper function to delete usage records for testing.""" + pool = await create_db_pool(dsn=dsn) + + await pool.execute( + """ + DELETE FROM usage + WHERE developer_id = $1 + """, + developer_id, + ) + + +async def collect_stream_content(response: StreamingResponse) -> list[dict]: + """Helper function to collect stream chunks in a list.""" + chunks = [] + async for chunk in response.body_iterator: + # Ensure we're dealing with string data + if isinstance(chunk, bytes): + chunk = chunk.decode("utf-8") + + # Handle SSE format: data: {JSON}\n\n + if chunk.startswith("data: "): + json_data = chunk[6:].strip() # Remove 'data: ' prefix and whitespace + if json_data: # Only parse non-empty data + chunks.append(json.loads(json_data)) + else: + # Fallback for raw JSON (for backward compatibility) + chunk = chunk.strip() + if chunk: + chunks.append(json.loads(chunk)) + return chunks + + +@test("join_deltas: Test correct behavior") +async def _(): + """Test that join_deltas works properly to merge deltas.""" + # Test initial case where content needs to be added + acc = {"content": ""} + delta = {"content": "Hello", "role": "assistant"} + result = _join_deltas(acc, delta) + assert result == {"content": "Hello", "role": "assistant"} + + # Test appending content + acc = {"content": "Hello"} + delta = {"content": " world!", "role": "assistant"} + result = _join_deltas(acc, delta) + assert result == {"content": "Hello world!", "role": "assistant"} + + # Test with no content in delta + acc = {"content": "Hello world!"} + delta = {"finish_reason": "stop"} + result = _join_deltas(acc, delta) + assert result == {"content": "Hello world!", "finish_reason": "stop"} + + # Test with None content + acc = {"content": None} + delta = {"content": "Hello", "role": "assistant"} + result = _join_deltas(acc, delta) + assert result == {"content": "Hello", "role": "assistant"} + + # Test with None content in delta + acc = {"content": "Hello"} + delta = {"content": None, "role": "assistant"} + result = _join_deltas(acc, delta) + assert result == {"content": "Hello", "role": "assistant"} + + +@test("chat: Test streaming response format") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming responses follow the correct format.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming format", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with mock response that includes finish_reason + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Verify response type is StreamingResponse + assert isinstance(response, StreamingResponse) + assert response.media_type == "text/event-stream" + + # Collect and parse stream content + parsed_chunks = await collect_stream_content(response) + + assert len(parsed_chunks) > 0 + + resulting_content = [] + + # Verify chunk format + for chunk in parsed_chunks: + assert "id" in chunk + assert "created_at" in chunk + assert "choices" in chunk + assert isinstance(chunk["choices"], list) + for choice in chunk["choices"]: + resulting_content.append(choice["delta"]["content"] or "") + assert "delta" in choice + assert "content" in choice["delta"] + assert "finish_reason" in choice + assert choice["finish_reason"] in [ + "stop", + "length", + "content_filter", + "tool_calls", + ] + + assert "".join(resulting_content) == mock_response + + +@test("chat: Test streaming with document references") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that document references are included in streaming response.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming with documents", + ), + connection_pool=pool, + ) + + # Create document references with required fields + doc_refs = [ + DocReference( + id=str(uuid7()), + title="Test Document 1", + owner={"id": developer_id, "role": "user"}, + snippet={"index": 0, "content": "Test snippet 1"}, + ), + DocReference( + id=str(uuid7()), + title="Test Document 2", + owner={"id": developer_id, "role": "user"}, + snippet={"index": 0, "content": "Test snippet 2"}, + ), + ] + + # Mock render_chat_input to return document references + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + doc_refs, # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with mock response that includes finish_reason + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content + parsed_chunks = await collect_stream_content(response) + + # Verify document references in chunks + for chunk in parsed_chunks: + assert "docs" in chunk + assert len(chunk["docs"]) == len(doc_refs) + for doc_ref in chunk["docs"]: + assert "id" in doc_ref + assert "title" in doc_ref + assert "owner" in doc_ref + assert "snippet" in doc_ref + + +@skip("Skipping message history saving test") +@test("chat: Test streaming with message history saving") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that messages are saved to history when streaming with save=True.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming with history", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Set up mocks + create_entries_mock = AsyncMock() + + with ( + patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ), + patch("agents_api.routers.sessions.legacy.chat.create_entries", create_entries_mock), + ): + # Create chat input with stream=True and save=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + save=True, + ) + + # Call the chat function with mock response that includes finish_reason + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + _ = await collect_stream_content(response) + + # Verify create_entries was called for user messages + create_entries_mock.assert_called_once() + call_args = create_entries_mock.call_args[1] + assert call_args["developer_id"] == developer_id + assert call_args["session_id"] == session.id + # Verify we're saving the user message + assert len(call_args["data"]) == 1 + assert call_args["data"][0].role == "user" + assert call_args["data"][0].content == "Hello" + + +@test("chat: Test streaming with usage tracking") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that token usage is tracked in streaming responses.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming usage tracking", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Mock track_usage to verify it's called + track_usage_mock = AsyncMock() + + with ( + patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ), + patch("agents_api.routers.sessions.legacy.chat.track_usage", track_usage_mock), + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with mock response that includes finish_reason and usage + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content + parsed_chunks = await collect_stream_content(response) + + # Verify usage data in the final chunk + final_chunk = parsed_chunks[-1] + assert "usage" in final_chunk + assert "total_tokens" in final_chunk["usage"] + + # Verify that track_usage was called for database tracking + track_usage_mock.assert_called_once() + call_args = track_usage_mock.call_args[1] + assert call_args["developer_id"] == developer_id + assert call_args["model"] == "gpt-4o-mini" + assert call_args["messages"] == [{"role": "user", "content": "Hello"}] + assert call_args["custom_api_used"] is False + assert "streaming" in call_args["metadata"] + assert call_args["metadata"]["streaming"] is True + + +@test("chat: Test streaming with custom API key") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming works with a custom API key.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming with custom API key", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with custom API key and mock response that includes finish_reason + custom_api_key = "test-api-key" + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + x_custom_api_key=custom_api_key, + mock_response=mock_response, + connection_pool=pool, + ) + + # Verify response type is StreamingResponse + assert isinstance(response, StreamingResponse) + assert response.media_type == "text/event-stream" + + # Collect and parse stream content + parsed_chunks = await collect_stream_content(response) + + # Verify chunks are received + assert len(parsed_chunks) > 0 + + +@test("chat: Test streaming creates actual usage records in database") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming creates actual usage records in the database.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for streaming usage database tracking", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Get initial usage record count + initial_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + initial_count = len(initial_records) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with mock response + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content to complete the streaming + parsed_chunks = await collect_stream_content(response) + + # Verify usage data in the final chunk + final_chunk = parsed_chunks[-1] + assert "usage" in final_chunk + assert "total_tokens" in final_chunk["usage"] + + # Get usage records after streaming + final_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + final_count = len(final_records) + + await delete_usage_records(dsn=dsn, developer_id=str(developer_id)) + + # Verify a new usage record was created + assert final_count == initial_count + 1 + + # Get the latest usage record + latest_record = final_records[0] # Records are ordered by created_at DESC + + # Verify the usage record details + assert str(latest_record["developer_id"]) == str(developer_id) # UUID comparison + assert latest_record["model"] == "gpt-4o-mini" + assert latest_record["prompt_tokens"] > 0 + assert latest_record["completion_tokens"] > 0 + assert float(latest_record["cost"]) > 0 # cost is NUMERIC type + assert latest_record["custom_api_used"] is False + assert "streaming" in latest_record["metadata"] + assert latest_record["metadata"]["streaming"] is True + assert "tags" in latest_record["metadata"] + + +@test("chat: Test streaming with custom API key creates correct usage record") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming with custom API key sets custom_api_used correctly.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for custom API usage tracking", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Get initial usage record count + initial_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + initial_count = len(initial_records) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function with custom API key + custom_api_key = "test-custom-api-key" + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + x_custom_api_key=custom_api_key, + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content to complete the streaming + parsed_chunks = await collect_stream_content(response) + + # Verify usage data in the final chunk + final_chunk = parsed_chunks[-1] + assert "usage" in final_chunk + + # Get usage records after streaming + final_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + final_count = len(final_records) + + # Verify a new usage record was created + assert final_count == initial_count + 1 + + # Get the latest usage record + latest_record = final_records[0] # Records are ordered by created_at DESC + + # Verify the usage record details for custom API usage + assert str(latest_record["developer_id"]) == str(developer_id) # UUID comparison + assert latest_record["model"] == "gpt-4o-mini" + assert latest_record["custom_api_used"] is True # This should be True for custom API + assert "streaming" in latest_record["metadata"] + assert latest_record["metadata"]["streaming"] is True + + +@test("chat: Test streaming usage tracking with developer tags") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming includes developer tags in usage metadata.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for tags in usage tracking", + ), + connection_pool=pool, + ) + + # Mock render_chat_input to return consistent values + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": "gpt-4o-mini"}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Mock developer with tags + test_tags = ["tag1", "tag2", "test"] + developer_with_tags = developer + developer_with_tags.tags = test_tags + + # Get initial usage record count + initial_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + initial_count = len(initial_records) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function + mock_response = "This is a test response" + response = await chat( + developer=developer_with_tags, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content to complete the streaming + parsed_chunks = await collect_stream_content(response) + + # Verify usage data in the final chunk + final_chunk = parsed_chunks[-1] + assert "usage" in final_chunk + + # Get usage records after streaming + final_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + final_count = len(final_records) + await delete_usage_records(dsn=dsn, developer_id=str(developer_id)) + + # Verify a new usage record was created + assert final_count == initial_count + 1 + + # Get the latest usage record + latest_record = final_records[0] # Records are ordered by created_at DESC + + # Verify the usage record includes developer tags + assert str(latest_record["developer_id"]) == str(developer_id) # UUID comparison + assert latest_record["model"] == "gpt-4o-mini" + assert "streaming" in latest_record["metadata"] + assert latest_record["metadata"]["streaming"] is True + assert "tags" in latest_record["metadata"] + assert latest_record["metadata"]["tags"] == test_tags + + +@test("chat: Test streaming usage tracking with different models") +async def _( + developer=test_developer, + dsn=pg_dsn, + developer_id=test_developer_id, + agent=test_agent, +): + """Test that streaming correctly tracks usage for different models.""" + pool = await create_db_pool(dsn=dsn) + + # Create a session + session = await create_session( + developer_id=developer_id, + data=CreateSessionRequest( + agent=agent.id, + situation="test session for different model usage tracking", + ), + connection_pool=pool, + ) + + test_model = "gpt-3.5-turbo" + + # Mock render_chat_input to return the test model + async def mock_render(*args, **kwargs): + return ( + [{"role": "user", "content": "Hello"}], # messages + [], # doc_references + None, # formatted_tools + {"model": test_model}, # settings + [{"role": "user", "content": "Hello"}], # new_messages + MagicMock(), # chat_context + ) + + # Get initial usage record count + initial_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + initial_count = len(initial_records) + + with patch( + "agents_api.routers.sessions.legacy.chat.render_chat_input", side_effect=mock_render + ): + # Create chat input with stream=True + chat_input = ChatInput( + messages=[{"role": "user", "content": "Hello"}], + stream=True, + ) + + # Call the chat function + mock_response = "This is a test response" + response = await chat( + developer=developer, + session_id=session.id, + chat_input=chat_input, + background_tasks=BackgroundTasks(), + mock_response=mock_response, + connection_pool=pool, + ) + + # Collect and parse stream content to complete the streaming + parsed_chunks = await collect_stream_content(response) + + # Verify usage data in the final chunk + final_chunk = parsed_chunks[-1] + assert "usage" in final_chunk + + # Get usage records after streaming + final_records = await get_usage_records( + dsn=dsn, + developer_id=str(developer_id), + ) + final_count = len(final_records) + await delete_usage_records(dsn=dsn, developer_id=str(developer_id)) + + # Verify a new usage record was created + assert final_count == initial_count + 1 + + # Get the latest usage record + latest_record = final_records[0] # Records are ordered by created_at DESC + + # Verify the usage record has the correct model + assert str(latest_record["developer_id"]) == str(developer_id) # UUID comparison + assert latest_record["model"] == test_model + assert latest_record["prompt_tokens"] > 0 + assert latest_record["completion_tokens"] > 0 + assert float(latest_record["cost"]) > 0 # cost is NUMERIC type + assert "streaming" in latest_record["metadata"] + assert latest_record["metadata"]["streaming"] is True diff --git a/agents-api/tests/test_developer_queries.py b/src/agents-api/tests/test_developer_queries.py similarity index 67% rename from agents-api/tests/test_developer_queries.py rename to src/agents-api/tests/test_developer_queries.py index 59cb5979e..70dc8f188 100644 --- a/agents-api/tests/test_developer_queries.py +++ b/src/agents-api/tests/test_developer_queries.py @@ -1,20 +1,14 @@ # Tests for agent queries -from unittest.mock import patch -from uuid import uuid4 -from agents_api.app import app from agents_api.clients.pg import create_db_pool from agents_api.common.protocol.developers import Developer -from agents_api.dependencies.developer_id import get_developer_id from agents_api.queries.developers.create_developer import create_developer from agents_api.queries.developers.get_developer import ( get_developer, ) from agents_api.queries.developers.patch_developer import patch_developer from agents_api.queries.developers.update_developer import update_developer -from fastapi import Depends -from fastapi.testclient import TestClient from uuid_extensions import uuid7 from ward import raises, test @@ -96,36 +90,3 @@ async def _(dsn=pg_dsn, dev=test_new_developer, email=random_email): assert developer.active assert developer.tags == [*dev.tags, "tag2"] assert developer.settings == {**dev.settings, "key2": "val2"} - - -@test("dependency: access denied for inactive developer") -async def _(dsn=pg_dsn): - with patch("agents_api.dependencies.developer_id.multi_tenant_mode", True): - developer_id = uuid4() - # Add a test endpoint that requires authentication - - @app.get("/test") - async def test_endpoint(x_developer_id=Depends(get_developer_id)): - return {"message": "success"} - - # Create a test client - client = TestClient(app) - - # Create an inactive developer - pool = await create_db_pool(dsn=dsn) - await create_developer( - email="inactive@test.com", - active=False, - developer_id=developer_id, - connection_pool=pool, - ) - - # Make a request with the inactive developer's ID - response = client.get( - "/test", - headers={"X-Developer-Id": str(developer_id)}, - ) - - # Verify we get a 403 response - assert response.status_code == 403 - assert response.json()["error"]["message"] == "Invalid developer account" diff --git a/agents-api/tests/test_docs_metadata_filtering.py b/src/agents-api/tests/test_docs_metadata_filtering.py similarity index 100% rename from agents-api/tests/test_docs_metadata_filtering.py rename to src/agents-api/tests/test_docs_metadata_filtering.py diff --git a/agents-api/tests/test_docs_queries.py b/src/agents-api/tests/test_docs_queries.py similarity index 90% rename from agents-api/tests/test_docs_queries.py rename to src/agents-api/tests/test_docs_queries.py index d15e26401..f732888c4 100644 --- a/agents-api/tests/test_docs_queries.py +++ b/src/agents-api/tests/test_docs_queries.py @@ -137,6 +137,40 @@ async def _(dsn=pg_dsn, developer=test_developer, doc=test_doc): assert doc_test.content is not None +@test("query: get doc with embeddings") +async def _(dsn=pg_dsn, developer=test_developer, doc=test_doc_with_embedding): + pool = await create_db_pool(dsn=dsn) + # Get doc with embeddings (default behavior) + doc_with_emb = await get_doc( + developer_id=developer.id, + doc_id=doc.id, + include_embeddings=True, + connection_pool=pool, + ) + assert isinstance(doc_with_emb, Doc) + assert doc_with_emb.id == doc.id + assert doc_with_emb.embeddings is not None + assert len(doc_with_emb.embeddings) > 0 + + +@test("query: get doc without embeddings") +async def _(dsn=pg_dsn, developer=test_developer, doc=test_doc_with_embedding): + pool = await create_db_pool(dsn=dsn) + # Get doc without embeddings + doc_without_emb = await get_doc( + developer_id=developer.id, + doc_id=doc.id, + include_embeddings=False, + connection_pool=pool, + ) + assert isinstance(doc_without_emb, Doc) + assert doc_without_emb.id == doc.id + assert doc_without_emb.title is not None + assert doc_without_emb.content is not None + # Embeddings should be None when not included + assert doc_without_emb.embeddings is None + + @test("query: list user docs") async def _(dsn=pg_dsn, developer=test_developer, user=test_user): pool = await create_db_pool(dsn=dsn) @@ -341,6 +375,40 @@ async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): assert len(docs_list) >= 1 assert any(d.id == doc_agent.id for d in docs_list) + +@test("query: list docs without embeddings") +async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): + pool = await create_db_pool(dsn=dsn) + + # Create a doc owned by the agent + doc_agent = await create_doc( + developer_id=developer.id, + data=CreateDocRequest( + title="Agent List Test No Embeddings", + content="Some agent doc content for testing without embeddings", + metadata={"test": "test_no_embeddings"}, + embed_instruction="Embed the document", + ), + owner_type="agent", + owner_id=agent.id, + connection_pool=pool, + ) + + # List agent's docs without embeddings + docs_list = await list_docs( + developer_id=developer.id, + owner_type="agent", + owner_id=agent.id, + include_embeddings=False, + connection_pool=pool, + ) + + assert len(docs_list) >= 1 + # Find the doc we just created + created_doc = next((d for d in docs_list if d.id == doc_agent.id), None) + assert created_doc is not None + assert created_doc.embeddings is None # Embeddings should be None when excluded + # Create a doc with a different metadata doc_agent_different_metadata = await create_doc( developer_id=developer.id, diff --git a/agents-api/tests/test_docs_routes.py b/src/agents-api/tests/test_docs_routes.py similarity index 100% rename from agents-api/tests/test_docs_routes.py rename to src/agents-api/tests/test_docs_routes.py diff --git a/agents-api/tests/test_entry_queries.py b/src/agents-api/tests/test_entry_queries.py similarity index 100% rename from agents-api/tests/test_entry_queries.py rename to src/agents-api/tests/test_entry_queries.py diff --git a/agents-api/tests/test_execution_queries.py b/src/agents-api/tests/test_execution_queries.py similarity index 100% rename from agents-api/tests/test_execution_queries.py rename to src/agents-api/tests/test_execution_queries.py diff --git a/agents-api/tests/test_execution_workflow.py b/src/agents-api/tests/test_execution_workflow.py similarity index 100% rename from agents-api/tests/test_execution_workflow.py rename to src/agents-api/tests/test_execution_workflow.py diff --git a/agents-api/tests/test_expression_validation.py b/src/agents-api/tests/test_expression_validation.py similarity index 100% rename from agents-api/tests/test_expression_validation.py rename to src/agents-api/tests/test_expression_validation.py diff --git a/agents-api/tests/test_file_routes.py b/src/agents-api/tests/test_file_routes.py similarity index 57% rename from agents-api/tests/test_file_routes.py rename to src/agents-api/tests/test_file_routes.py index e2bb4424d..a166dd005 100644 --- a/agents-api/tests/test_file_routes.py +++ b/src/agents-api/tests/test_file_routes.py @@ -5,7 +5,7 @@ from ward import test -from tests.fixtures import make_request, s3_client +from tests.fixtures import make_request, s3_client, test_project @test("route: create file") @@ -26,6 +26,26 @@ async def _(make_request=make_request, s3_client=s3_client): assert response.status_code == 201 +@test("route: create file with project") +async def _(make_request=make_request, s3_client=s3_client, project=test_project): + data = { + "name": "Test File with Project", + "description": "This is a test file with project.", + "mime_type": "text/plain", + "content": "eyJzYW1wbGUiOiAidGVzdCJ9", + "project": project.canonical_name, + } + + response = make_request( + method="POST", + url="/files", + json=data, + ) + + assert response.status_code == 201 + assert response.json()["project"] == project.canonical_name + + @test("route: delete file") async def _(make_request=make_request, s3_client=s3_client): data = { @@ -98,3 +118,37 @@ async def _(make_request=make_request, s3_client=s3_client): ) assert response.status_code == 200 + + +@test("route: list files with project filter") +async def _(make_request=make_request, s3_client=s3_client, project=test_project): + # First create a file with the project + data = { + "name": "Test File for Project Filter", + "description": "This is a test file for project filtering.", + "mime_type": "text/plain", + "content": "eyJzYW1wbGUiOiAidGVzdCJ9", + "project": project.canonical_name, + } + + make_request( + method="POST", + url="/files", + json=data, + ) + + # Then list files with project filter + response = make_request( + method="GET", + url="/files", + params={ + "project": project.canonical_name, + }, + ) + + assert response.status_code == 200 + files = response.json() + + assert isinstance(files, list) + assert len(files) > 0 + assert any(file["project"] == project.canonical_name for file in files) diff --git a/agents-api/tests/test_files_queries.py b/src/agents-api/tests/test_files_queries.py similarity index 59% rename from agents-api/tests/test_files_queries.py rename to src/agents-api/tests/test_files_queries.py index 2eedc7108..2f00ebb48 100644 --- a/agents-api/tests/test_files_queries.py +++ b/src/agents-api/tests/test_files_queries.py @@ -9,7 +9,14 @@ from fastapi import HTTPException from ward import raises, test -from tests.fixtures import pg_dsn, test_agent, test_developer, test_file, test_user +from tests.fixtures import ( + pg_dsn, + test_agent, + test_developer, + test_file, + test_project, + test_user, +) @test("query: create file") @@ -32,6 +39,47 @@ async def _(dsn=pg_dsn, developer=test_developer): assert file.mime_type == "text/plain" +@test("query: create file with project") +async def _(dsn=pg_dsn, developer=test_developer, project=test_project): + pool = await create_db_pool(dsn=dsn) + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="Hello with Project", + description="World", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + connection_pool=pool, + ) + assert isinstance(file, File) + assert file.id is not None + assert file.name == "Hello with Project" + assert file.project == project.canonical_name + + +@test("query: create file with invalid project") +async def _(dsn=pg_dsn, developer=test_developer): + pool = await create_db_pool(dsn=dsn) + + with raises(HTTPException) as exc: + await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="Hello with Invalid Project", + description="World", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project="invalid_project", + ), + connection_pool=pool, + ) + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + @test("query: create user file") async def _(dsn=pg_dsn, developer=test_developer, user=test_user): pool = await create_db_pool(dsn=dsn) @@ -61,6 +109,39 @@ async def _(dsn=pg_dsn, developer=test_developer, user=test_user): assert any(f.id == file.id for f in files) +@test("query: create user file with project") +async def _(dsn=pg_dsn, developer=test_developer, user=test_user, project=test_project): + pool = await create_db_pool(dsn=dsn) + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="User File with Project", + description="Test user file", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + owner_type="user", + owner_id=user.id, + connection_pool=pool, + ) + assert isinstance(file, File) + assert file.id is not None + assert file.name == "User File with Project" + assert file.project == project.canonical_name + + # Verify file appears in user's files with the right project + files = await list_files( + developer_id=developer.id, + owner_type="user", + owner_id=user.id, + project=project.canonical_name, + connection_pool=pool, + ) + assert any(f.id == file.id for f in files) + assert all(f.project == project.canonical_name for f in files) + + @test("query: create agent file") async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): pool = await create_db_pool(dsn=dsn) @@ -89,6 +170,38 @@ async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): assert any(f.id == file.id for f in files) +@test("query: create agent file with project") +async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent, project=test_project): + pool = await create_db_pool(dsn=dsn) + + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="Agent File with Project", + description="Test agent file", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + owner_type="agent", + owner_id=agent.id, + connection_pool=pool, + ) + assert file.name == "Agent File with Project" + assert file.project == project.canonical_name + + # Verify file appears in agent's files with the right project + files = await list_files( + developer_id=developer.id, + owner_type="agent", + owner_id=agent.id, + project=project.canonical_name, + connection_pool=pool, + ) + assert any(f.id == file.id for f in files) + assert all(f.project == project.canonical_name for f in files) + + @test("query: get file") async def _(dsn=pg_dsn, file=test_file, developer=test_developer): pool = await create_db_pool(dsn=dsn) @@ -115,6 +228,35 @@ async def _(dsn=pg_dsn, developer=test_developer, file=test_file): assert any(f.id == file.id for f in files) +@test("query: list files with project filter") +async def _(dsn=pg_dsn, developer=test_developer, project=test_project): + pool = await create_db_pool(dsn=dsn) + + # Create a file with the project + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="Project File for Filtering", + description="Test project file filtering", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + connection_pool=pool, + ) + + # List files with project filter + files = await list_files( + developer_id=developer.id, + project=project.canonical_name, + connection_pool=pool, + ) + + assert len(files) >= 1 + assert any(f.id == file.id for f in files) + assert all(f.project == project.canonical_name for f in files) + + @test("query: list files, invalid limit") async def _(dsn=pg_dsn, developer=test_developer, file=test_file): """Test that listing files with an invalid limit raises an exception.""" @@ -213,6 +355,38 @@ async def _(dsn=pg_dsn, developer=test_developer, user=test_user): assert any(f.id == file.id for f in files) +@test("query: list user files with project") +async def _(dsn=pg_dsn, developer=test_developer, user=test_user, project=test_project): + pool = await create_db_pool(dsn=dsn) + + # Create a file owned by the user with a project + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="User Project List Test", + description="Test file for user project listing", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + owner_type="user", + owner_id=user.id, + connection_pool=pool, + ) + + # List user's files with project filter + files = await list_files( + developer_id=developer.id, + owner_type="user", + owner_id=user.id, + project=project.canonical_name, + connection_pool=pool, + ) + assert len(files) >= 1 + assert any(f.id == file.id for f in files) + assert all(f.project == project.canonical_name for f in files) + + @test("query: list agent files") async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): pool = await create_db_pool(dsn=dsn) @@ -242,6 +416,38 @@ async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent): assert any(f.id == file.id for f in files) +@test("query: list agent files with project") +async def _(dsn=pg_dsn, developer=test_developer, agent=test_agent, project=test_project): + pool = await create_db_pool(dsn=dsn) + + # Create a file owned by the agent with a project + file = await create_file( + developer_id=developer.id, + data=CreateFileRequest( + name="Agent Project List Test", + description="Test file for agent project listing", + mime_type="text/plain", + content="eyJzYW1wbGUiOiAidGVzdCJ9", + project=project.canonical_name, + ), + owner_type="agent", + owner_id=agent.id, + connection_pool=pool, + ) + + # List agent's files with project filter + files = await list_files( + developer_id=developer.id, + owner_type="agent", + owner_id=agent.id, + project=project.canonical_name, + connection_pool=pool, + ) + assert len(files) >= 1 + assert any(f.id == file.id for f in files) + assert all(f.project == project.canonical_name for f in files) + + @test("query: delete user file") async def _(dsn=pg_dsn, developer=test_developer, user=test_user): pool = await create_db_pool(dsn=dsn) diff --git a/src/agents-api/tests/test_get_doc_search.py b/src/agents-api/tests/test_get_doc_search.py new file mode 100644 index 000000000..a312cb16e --- /dev/null +++ b/src/agents-api/tests/test_get_doc_search.py @@ -0,0 +1,410 @@ +from uuid import uuid4 + +from agents_api.autogen.Docs import DocOwner, DocReference, Snippet +from agents_api.autogen.openapi_model import ( + HybridDocSearchRequest, + TextOnlyDocSearchRequest, + VectorDocSearchRequest, +) +from agents_api.common.utils.get_doc_search import ( + get_language, + get_search_fn_and_params, + strip_embeddings, +) +from agents_api.queries.docs.search_docs_by_embedding import search_docs_by_embedding +from agents_api.queries.docs.search_docs_by_text import search_docs_by_text +from agents_api.queries.docs.search_docs_hybrid import search_docs_hybrid +from fastapi import HTTPException +from ward import raises, test + + +@test("get_language: valid language code returns lowercase language name") +def _(): + result = get_language("en") + assert result == "english_unaccent" + + result = get_language("fr") + assert result == "french" + + +@test("get_language: empty language code raises HTTPException") +def _(): + with raises(HTTPException) as exc: + get_language("") + + assert exc.raised.status_code == 422 + assert exc.raised.detail == "Invalid ISO 639 language code." + + +@test("get_search_fn_and_params: text-only search request") +def _(): + request = TextOnlyDocSearchRequest( + text="search query", + limit=10, + lang="en", + metadata_filter={"field": "value"}, + trigram_similarity_threshold=0.4, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_by_text + assert params == { + "query": "search query", + "k": 10, + "metadata_filter": {"field": "value"}, + "search_language": "english_unaccent", + "extract_keywords": False, + "trigram_similarity_threshold": 0.4, + } + assert post_processing == { + "include_embeddings": True, + } + + +@test("get_search_fn_and_params: text-only search request with include_embeddings=False") +def _(): + request = TextOnlyDocSearchRequest( + text="search query", + limit=10, + lang="en", + metadata_filter={"field": "value"}, + trigram_similarity_threshold=0.4, + include_embeddings=False, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_by_text + assert params == { + "query": "search query", + "k": 10, + "metadata_filter": {"field": "value"}, + "search_language": "english_unaccent", + "extract_keywords": False, + "trigram_similarity_threshold": 0.4, + } + assert post_processing == { + "include_embeddings": False, + } + + +@test("get_search_fn_and_params: vector search request without MMR") +def _(): + request = VectorDocSearchRequest( + vector=[0.1, 0.2, 0.3], + limit=5, + confidence=0.8, + metadata_filter={"field": "value"}, + mmr_strength=0, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_by_embedding + assert params == { + "embedding": [0.1, 0.2, 0.3], + "k": 5, + "confidence": 0.8, + "metadata_filter": {"field": "value"}, + } + assert post_processing == { + "include_embeddings": True, + } + + +@test("get_search_fn_and_params: vector search request with include_embeddings=False") +def _(): + request = VectorDocSearchRequest( + vector=[0.1, 0.2, 0.3], + limit=5, + confidence=0.8, + metadata_filter={"field": "value"}, + mmr_strength=0, + include_embeddings=False, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_by_embedding + assert params == { + "embedding": [0.1, 0.2, 0.3], + "k": 5, + "confidence": 0.8, + "metadata_filter": {"field": "value"}, + } + assert post_processing == { + "include_embeddings": False, + } + + +@test("get_search_fn_and_params: vector search request with MMR") +def _(): + request = VectorDocSearchRequest( + vector=[0.1, 0.2, 0.3], + limit=5, + confidence=0.8, + metadata_filter={"field": "value"}, + mmr_strength=0.5, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_by_embedding + assert params == { + "embedding": [0.1, 0.2, 0.3], + "k": 15, # 5 * 3 because MMR is enabled + "confidence": 0.8, + "metadata_filter": {"field": "value"}, + } + assert post_processing == { + "include_embeddings": True, + } + + +@test("get_search_fn_and_params: hybrid search request") +def _(): + request = HybridDocSearchRequest( + text="search query", + vector=[0.1, 0.2, 0.3], + lang="en", + limit=5, + confidence=0.8, + alpha=0.5, + metadata_filter={"field": "value"}, + mmr_strength=0, + trigram_similarity_threshold=0.4, + k_multiplier=7, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_hybrid + assert params == { + "text_query": "search query", + "embedding": [0.1, 0.2, 0.3], + "k": 5, + "confidence": 0.8, + "alpha": 0.5, + "metadata_filter": {"field": "value"}, + "search_language": "english_unaccent", + "extract_keywords": False, + "trigram_similarity_threshold": 0.4, + "k_multiplier": 7, + } + assert post_processing == { + "include_embeddings": True, + } + + +@test("get_search_fn_and_params: hybrid search request with include_embeddings=False") +def _(): + request = HybridDocSearchRequest( + text="search query", + vector=[0.1, 0.2, 0.3], + lang="en", + limit=5, + confidence=0.8, + alpha=0.5, + metadata_filter={"field": "value"}, + mmr_strength=0, + trigram_similarity_threshold=0.4, + k_multiplier=7, + include_embeddings=False, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_hybrid + assert params == { + "text_query": "search query", + "embedding": [0.1, 0.2, 0.3], + "k": 5, + "confidence": 0.8, + "alpha": 0.5, + "metadata_filter": {"field": "value"}, + "search_language": "english_unaccent", + "extract_keywords": False, + "trigram_similarity_threshold": 0.4, + "k_multiplier": 7, + } + assert post_processing == { + "include_embeddings": False, + } + + +@test("get_search_fn_and_params: hybrid search request with MMR") +def _(): + request = HybridDocSearchRequest( + text="search query", + vector=[0.1, 0.2, 0.3], + lang="en", + limit=5, + confidence=0.8, + alpha=0.5, + metadata_filter={"field": "value"}, + mmr_strength=0.5, + trigram_similarity_threshold=0.4, + k_multiplier=7, + ) + + search_fn, params, post_processing = get_search_fn_and_params(request) + + assert search_fn == search_docs_hybrid + assert params == { + "text_query": "search query", + "embedding": [0.1, 0.2, 0.3], + "k": 15, # 5 * 3 because MMR is enabled + "confidence": 0.8, + "alpha": 0.5, + "metadata_filter": {"field": "value"}, + "search_language": "english_unaccent", + "extract_keywords": False, + "trigram_similarity_threshold": 0.4, + "k_multiplier": 7, + } + assert post_processing == { + "include_embeddings": True, + } + + +@test("get_search_fn_and_params: hybrid search request with invalid language") +def _(): + request = HybridDocSearchRequest( + text="search query", + vector=[0.1, 0.2, 0.3], + lang="en-axzs", # Invalid language code + limit=5, + confidence=0.8, + alpha=0.5, + metadata_filter={"field": "value"}, + mmr_strength=0, + trigram_similarity_threshold=0.4, + k_multiplier=7, + ) + + with raises(HTTPException) as exc: + _search_fn, _params, _post_processing = get_search_fn_and_params(request) + + assert exc.raised.status_code == 422 + assert exc.raised.detail == "Invalid ISO 639 language code." + + +@test("strip_embeddings: single DocReference with embedding") +def _(): + # Create test data + doc = DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="user"), + title="Test Document", + snippet=Snippet(index=0, content="Test content", embedding=[0.1, 0.2, 0.3, 0.4, 0.5]), + distance=0.8, + ) + + # Test the function + result = strip_embeddings(doc) + + # Assertions + assert isinstance(result, DocReference) + assert result.snippet.embedding is None + assert result.snippet.content == "Test content" + assert result.snippet.index == 0 + assert result.title == "Test Document" + assert result.distance == 0.8 + + +@test("strip_embeddings: single DocReference without embedding") +def _(): + # Create test data without embedding + doc = DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="agent"), + title="Test Document", + snippet=Snippet(index=1, content="Test content without embedding", embedding=None), + ) + + # Test the function + result = strip_embeddings(doc) + + # Assertions + assert isinstance(result, DocReference) + assert result.snippet.embedding is None + assert result.snippet.content == "Test content without embedding" + assert result.snippet.index == 1 + + +@test("strip_embeddings: list of DocReferences with embeddings") +def _(): + # Create test data + docs = [ + DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="user"), + title="Document 1", + snippet=Snippet(index=0, content="Content 1", embedding=[0.1, 0.2, 0.3]), + ), + DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="agent"), + title="Document 2", + snippet=Snippet(index=1, content="Content 2", embedding=[0.4, 0.5, 0.6]), + ), + ] + + # Test the function + result = strip_embeddings(docs) + + # Assertions + assert isinstance(result, list) + assert len(result) == 2 + + for i, doc in enumerate(result): + assert isinstance(doc, DocReference) + assert doc.snippet.embedding is None + assert doc.snippet.content == f"Content {i + 1}" + assert doc.title == f"Document {i + 1}" + + +@test("strip_embeddings: list of DocReferences mixed with and without embeddings") +def _(): + # Create test data with mixed embedding states + docs = [ + DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="user"), + title="Document with embedding", + snippet=Snippet( + index=0, content="Content with embedding", embedding=[0.1, 0.2, 0.3] + ), + ), + DocReference( + id=uuid4(), + owner=DocOwner(id=uuid4(), role="agent"), + title="Document without embedding", + snippet=Snippet(index=1, content="Content without embedding", embedding=None), + ), + ] + + # Test the function + result = strip_embeddings(docs) + + # Assertions + assert isinstance(result, list) + assert len(result) == 2 + + for doc in result: + assert isinstance(doc, DocReference) + assert doc.snippet.embedding is None + + +@test("strip_embeddings: empty list") +def _(): + # Test with empty list + docs = [] + + # Test the function + result = strip_embeddings(docs) + + # Assertions + assert isinstance(result, list) + assert len(result) == 0 diff --git a/src/agents-api/tests/test_litellm_utils.py b/src/agents-api/tests/test_litellm_utils.py new file mode 100644 index 000000000..f9a2c91f3 --- /dev/null +++ b/src/agents-api/tests/test_litellm_utils.py @@ -0,0 +1,197 @@ +from unittest.mock import AsyncMock, patch + +from agents_api.clients.litellm import acompletion +from agents_api.common.utils.llm_providers import ( + get_api_key_env_var_name, + get_litellm_model_name, +) +from litellm.types.utils import ModelResponse +from ward import test + + +@test("litellm_utils: acompletion - no tools") +async def _(): + with patch("agents_api.clients.litellm._acompletion") as mock_acompletion: + mock_acompletion.return_value = ModelResponse( + id="test-id", + choices=[{"message": {"content": "test"}}], + model="gpt-4", + usage={"total_tokens": 10}, + ) + + messages = [{"role": "user", "content": "test", "tool_calls": []}] + + await acompletion(model="gpt-4", messages=messages) + + # Check that tool_calls was removed from the message + mock_acompletion.assert_called_once() + called_messages = mock_acompletion.call_args[1]["messages"] + assert "tool_calls" not in called_messages[0] + + +@test("litellm_utils: get_api_key_env_var_name") +async def _(): + with patch("agents_api.common.utils.llm_providers.get_config") as mock_get_config: + mock_get_config.return_value = { + "model_list": [ + { + "model_name": "gpt-4", + "litellm_params": {"api_key": "os.environ/OPENAI_API_KEY"}, + } + ] + } + + result = get_api_key_env_var_name("gpt-4") + assert result == "OPENAI_API_KEY" + + +@test("litellm_utils: get_litellm_model_name - known models") +async def _(): + with patch("agents_api.common.utils.llm_providers.get_config") as mock_get_config: + mock_get_config.return_value = { + "model_list": [ + { + "model_name": "gpt-4o", + "litellm_params": {"model": "openai/gpt-4o"}, + }, + { + "model_name": "gemini-1.5-pro", + "litellm_params": {"model": "gemini/gemini-1.5-pro"}, + }, + { + "model_name": "claude-3.5-sonnet", + "litellm_params": {"model": "claude-3-5-sonnet-20241022"}, + }, + ] + } + + assert get_litellm_model_name("gpt-4o") == "openai/gpt-4o" + assert get_litellm_model_name("gemini-1.5-pro") == "gemini/gemini-1.5-pro" + assert get_litellm_model_name("claude-3.5-sonnet") == "claude-3-5-sonnet-20241022" + + +@test("litellm_utils: get_litellm_model_name - unknown model") +async def _(): + with patch("agents_api.common.utils.llm_providers.get_config") as mock_get_config: + mock_get_config.return_value = { + "model_list": [ + { + "model_name": "gpt-4o", + "litellm_params": {"model": "openai/gpt-4o"}, + } + ] + } + + # Unknown model should return unchanged + assert get_litellm_model_name("unknown-model") == "unknown-model" + + +@test("litellm_utils: get_litellm_model_name - empty config") +async def _(): + with patch("agents_api.common.utils.llm_providers.get_config") as mock_get_config: + mock_get_config.return_value = {} + + # With empty config, any model returns unchanged + assert get_litellm_model_name("any-model") == "any-model" + + +@test("litellm_utils: acompletion - custom_api_key takes precedence over secret") +async def _(): + with ( + patch("agents_api.clients.litellm._acompletion") as mock_acompletion, + patch("agents_api.clients.litellm.get_secret_by_name") as mock_get_secret, + patch("agents_api.clients.litellm.get_litellm_model_name") as mock_get_model_name, + ): + # Setup mocks + mock_acompletion.return_value = ModelResponse( + id="test-id", + choices=[{"message": {"content": "test"}}], + model="gpt-4o", + usage={"total_tokens": 10}, + ) + mock_get_secret.return_value = AsyncMock(value="secret-api-key") + mock_get_model_name.return_value = "openai/gpt-4o" + + messages = [{"role": "user", "content": "test"}] + + # Call with both custom_api_key and user (which would trigger secret lookup) + await acompletion( + model="gpt-4o", + messages=messages, + custom_api_key="custom-api-key", + user="test-user-id", + ) + + # Verify custom_api_key is used, not the secret + mock_acompletion.assert_called_once() + call_kwargs = mock_acompletion.call_args[1] + assert call_kwargs["api_key"] == "custom-api-key" + assert call_kwargs["base_url"] is None + assert call_kwargs["model"] == "openai/gpt-4o" + + +@test("litellm_utils: acompletion - secret used when no custom_api_key") +async def _(): + with ( + patch("agents_api.clients.litellm._acompletion") as mock_acompletion, + patch("agents_api.clients.litellm.get_secret_by_name") as mock_get_secret, + patch("agents_api.clients.litellm.get_litellm_model_name") as mock_get_model_name, + patch("agents_api.clients.litellm.get_api_key_env_var_name") as mock_get_env_var, + ): + # Setup mocks + mock_acompletion.return_value = ModelResponse( + id="test-id", + choices=[{"message": {"content": "test"}}], + model="gpt-4o", + usage={"total_tokens": 10}, + ) + secret_mock = AsyncMock() + secret_mock.value = "secret-api-key" + mock_get_secret.return_value = secret_mock + mock_get_model_name.return_value = "openai/gpt-4o" + mock_get_env_var.return_value = "OPENAI_API_KEY" + + messages = [{"role": "user", "content": "test"}] + + # Call without custom_api_key but with user + await acompletion( + model="gpt-4o", messages=messages, user="550e8400-e29b-41d4-a716-446655440000" + ) + + # Verify secret's API key is used + mock_acompletion.assert_called_once() + call_kwargs = mock_acompletion.call_args[1] + assert call_kwargs["api_key"] == "secret-api-key" + assert call_kwargs["base_url"] is None + assert call_kwargs["model"] == "openai/gpt-4o" + + +@test("litellm_utils: acompletion - proxy used when no custom_api_key or secret") +async def _(): + with ( + patch("agents_api.clients.litellm._acompletion") as mock_acompletion, + patch("agents_api.clients.litellm.get_secret_by_name") as mock_get_secret, + patch("agents_api.clients.litellm.litellm_master_key", "master-key"), + patch("agents_api.clients.litellm.litellm_url", "http://litellm-proxy"), + ): + # Setup mocks + mock_acompletion.return_value = ModelResponse( + id="test-id", + choices=[{"message": {"content": "test"}}], + model="openai/gpt-4o", + usage={"total_tokens": 10}, + ) + # No secret found + mock_get_secret.side_effect = Exception("Secret not found") + + messages = [{"role": "user", "content": "test"}] + + # Call without custom_api_key + await acompletion(model="gpt-4o", messages=messages) + + # Verify proxy configuration is used + mock_acompletion.assert_called_once() + call_kwargs = mock_acompletion.call_args[1] + assert call_kwargs["api_key"] == "master-key" + assert call_kwargs["base_url"] == "http://litellm-proxy" + assert call_kwargs["model"] == "openai/gpt-4o" # Note the openai/ prefix diff --git a/agents-api/tests/test_memory_utils.py b/src/agents-api/tests/test_memory_utils.py similarity index 100% rename from agents-api/tests/test_memory_utils.py rename to src/agents-api/tests/test_memory_utils.py diff --git a/agents-api/tests/test_messages_truncation.py b/src/agents-api/tests/test_messages_truncation.py similarity index 100% rename from agents-api/tests/test_messages_truncation.py rename to src/agents-api/tests/test_messages_truncation.py diff --git a/agents-api/tests/test_metadata_filter_utils.py b/src/agents-api/tests/test_metadata_filter_utils.py similarity index 100% rename from agents-api/tests/test_metadata_filter_utils.py rename to src/agents-api/tests/test_metadata_filter_utils.py diff --git a/src/agents-api/tests/test_middleware.py b/src/agents-api/tests/test_middleware.py new file mode 100644 index 000000000..91ab28edb --- /dev/null +++ b/src/agents-api/tests/test_middleware.py @@ -0,0 +1,597 @@ +""" +Tests for HTTP middleware, specifically the usage_check_middleware +""" + +import uuid +from unittest.mock import AsyncMock, patch + +import asyncpg +from agents_api.app import app +from agents_api.clients.pg import create_db_pool +from agents_api.env import free_tier_cost_limit +from agents_api.queries.developers.create_developer import create_developer +from fastapi import HTTPException, status +from fastapi.testclient import TestClient +from pydantic import BaseModel +from uuid_extensions import uuid7 +from ward import fixture, test + +from .fixtures import make_request, pg_dsn, test_agent, test_session + + +class TestPayload(BaseModel): + """Test payload for POST/PUT handlers.""" + + message: str + + +@fixture +def client(): + """Test client fixture that gets reset for each test.""" + client = TestClient(app) + yield client + + +@test("middleware: inactive free user receives forbidden response") +async def _(client=client): + """Test that requests from inactive users are blocked with 403 Forbidden.""" + + # Create a test handler + @app.get("/test-inactive-user") + async def test_inactive_user(): + return {"status": "success"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": False, + "cost": 0.0, + "developer_id": developer_id, + "tags": [], + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make request with the developer ID header + response = client.get("/test-inactive-user", headers={"X-Developer-Id": developer_id}) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Invalid user account" in response.text + assert "invalid_user_account" in response.text + + +@test("middleware: inactive paid user receives forbidden response") +def _(client=client): + """Test that requests from inactive paid users are blocked with 403 Forbidden.""" + + # Create a test handler + @app.get("/test-inactive-paid-user") + async def test_inactive_paid_user(): + return {"status": "success"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": False, + "cost": 0.0, + "developer_id": developer_id, + "tags": ["paid"], # User has paid tag but is inactive + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make request with the developer ID header + response = client.get( + "/test-inactive-paid-user", headers={"X-Developer-Id": developer_id} + ) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Invalid user account" in response.text + assert "invalid_user_account" in response.text + + +@test("middleware: cost limit exceeded, all requests blocked except GET") +def _(client=client): + """Test that non-GET requests from users who exceeded cost limits are blocked with 403 Forbidden.""" + + # Create test handlers for different methods + @app.get("/test-cost-limit/get") + async def test_cost_limit_get(): + return {"status": "success", "method": "GET"} + + @app.post("/test-cost-limit/post") + async def test_cost_limit_post(payload: TestPayload): + return {"status": "success", "method": "POST", "message": payload.message} + + @app.put("/test-methods/put") + async def test_methods_put(payload: TestPayload): + return {"status": "success", "method": "PUT", "message": payload.message} + + @app.delete("/test-methods/delete") + async def test_methods_delete(): + return {"status": "success", "method": "DELETE"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": float(free_tier_cost_limit) + 1.0, # Exceed the cost limit + "developer_id": developer_id, + "tags": [], # No paid tag + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make a POST request that should be blocked + post_response = client.post( + "/test-cost-limit/post", + json={"message": "test"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify POST response is 403 with correct message + assert post_response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in post_response.text + assert "cost_limit_exceeded" in post_response.text + + put_response = client.put( + "/test-methods/put", + json={"message": "test update"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify PUT response is 403 with correct message + assert put_response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in put_response.text + assert "cost_limit_exceeded" in put_response.text + + # Make a DELETE request that should be blocked + delete_response = client.delete( + "/test-methods/delete", headers={"X-Developer-Id": developer_id} + ) + + # Verify DELETE response is 403 with correct message + assert delete_response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in delete_response.text + assert "cost_limit_exceeded" in delete_response.text + + # Make a GET request that should be allowed + get_response = client.get( + "/test-cost-limit/get", headers={"X-Developer-Id": developer_id} + ) + + # Verify GET response passes through + assert get_response.status_code == status.HTTP_200_OK + assert get_response.json()["method"] == "GET" + + +@test("middleware: paid tag bypasses cost limit check") +def _(client=client): + """Test that users with 'paid' tag can make non-GET requests even when over the cost limit.""" + + # Create test handlers for different methods + @app.post("/test-paid/post") + async def test_paid_post(payload: TestPayload): + return {"status": "success", "method": "POST", "message": payload.message} + + @app.put("/test-paid-methods/put") + async def test_paid_methods_put(payload: TestPayload): + return {"status": "success", "method": "PUT", "message": payload.message} + + @app.delete("/test-paid-methods/delete") + async def test_paid_methods_delete(): + return {"status": "success", "method": "DELETE"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": float(free_tier_cost_limit) + 10.0, # Significantly exceed the cost limit + "developer_id": developer_id, + "tags": ["test", "paid", "other-tag"], # Include "paid" tag + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make a POST request that should be allowed due to paid tag + response = client.post( + "/test-paid/post", + json={"message": "test"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify the request was allowed + assert response.status_code == status.HTTP_200_OK + assert response.json()["method"] == "POST" + assert response.json()["message"] == "test" + + put_response = client.put( + "/test-paid-methods/put", + json={"message": "test update"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify the PUT request was allowed + assert put_response.status_code == status.HTTP_200_OK + assert put_response.json()["method"] == "PUT" + + # Make a DELETE request that should be allowed due to paid tag + delete_response = client.delete( + "/test-paid-methods/delete", headers={"X-Developer-Id": developer_id} + ) + + # Verify the DELETE request was allowed + assert delete_response.status_code == status.HTTP_200_OK + assert delete_response.json()["method"] == "DELETE" + + +@test("middleware: GET request with cost limit exceeded passes through") +def _(client=client): + """Test that GET requests from users who exceeded cost limits are allowed to proceed.""" + + # Create a test handler + @app.get("/test-get-with-cost-limit") + async def test_get_with_cost_limit(): + return {"status": "success", "method": "GET"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": float(free_tier_cost_limit) + 1.0, # Exceed the cost limit + "developer_id": developer_id, + "tags": [], + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make a GET request + response = client.get( + "/test-get-with-cost-limit", headers={"X-Developer-Id": developer_id} + ) + + # Verify the request was allowed + assert response.status_code == status.HTTP_200_OK + assert response.json()["method"] == "GET" + + +@test("middleware: cost is None treats as exceeded limit") +def _(client=client): + """Test that non-GET requests with None cost value are treated as exceeding the limit.""" + + # Create a test handler + @app.post("/test-none-cost") + async def test_none_cost(payload: TestPayload): + return {"status": "success", "method": "POST", "message": payload.message} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": None, + "developer_id": developer_id, + "tags": [], + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make a POST request + response = client.post( + "/test-none-cost", + json={"message": "test"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in response.text + assert "cost_limit_exceeded" in response.text + + +@test("middleware: null tags field handled properly") +def _(client=client): + """Test that users with null tags field are handled properly when over cost limit.""" + + # Create a test handler + @app.post("/test-null-tags") + async def test_null_tags(payload: TestPayload): + return {"status": "success", "method": "POST", "message": payload.message} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": float(free_tier_cost_limit) + 5.0, # Exceed the cost limit + "developer_id": developer_id, + "tags": None, # Null field + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make a POST request + response = client.post( + "/test-null-tags", + json={"message": "test"}, + headers={"X-Developer-Id": developer_id}, + ) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in response.text + assert "cost_limit_exceeded" in response.text + + +@test("middleware: no developer_id header passes through") +def _(client=client): + """Test that requests without a developer_id header are allowed to proceed.""" + + # Create a test handler + @app.get("/test-no-developer-id") + async def test_no_developer_id(): + return {"status": "success", "message": "no developer ID needed"} + + # Make request with no developer ID header + response = client.get("/test-no-developer-id") + + # Verify the request was allowed + assert response.status_code == status.HTTP_200_OK + assert response.json()["message"] == "no developer ID needed" + + +@test("middleware: forbidden, if user is not found") +def _(client=client): + """Test that requests resulting in NoDataFoundError return 403.""" + + # Create a test handler + @app.get("/test-user-not-found") + async def test_user_not_found(): + return {"status": "success", "message": "user found"} + + @app.get("/test-404-error") + async def test_404_error(): + return {"status": "success", "message": "no 404 error"} + + # Create a random developer ID + developer_id = str(uuid.uuid4()) + + # Mock the get_user_cost function to raise NoDataFoundError + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(side_effect=asyncpg.NoDataFoundError()) + ): + # Make request with the developer ID header + response = client.get("/test-user-not-found", headers={"X-Developer-Id": developer_id}) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Invalid user account" in response.text + assert "invalid_user_account" in response.text + + # Mock the get_user_cost function to raise HTTPException with 404 + http_404_error = HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found") + with patch("agents_api.web.get_usage_cost", new=AsyncMock(side_effect=http_404_error)): + # Make request with the developer ID header + response = client.get("/test-404-error", headers={"X-Developer-Id": developer_id}) + + # Verify response is 403 with correct message + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Invalid user account" in response.text + assert "invalid_user_account" in response.text + + +@test("middleware: hand over all the http errors except of 404") +def _(client=client): + """Test that HTTP exceptions other than 404 return with correct status code.""" + + # Create a test handler + @app.get("/test-500-error") + async def test_500_error(): + return {"status": "success", "message": "no 500 error"} + + # Create a random developer ID + developer_id = str(uuid.uuid4()) + + # Mock the get_user_cost function to raise HTTPException with 500 + http_500_error = HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Server error" + ) + with patch("agents_api.web.get_usage_cost", new=AsyncMock(side_effect=http_500_error)): + # Make request with the developer ID header + response = client.get("/test-500-error", headers={"X-Developer-Id": developer_id}) + + # Verify the response has the same status code as the exception + assert response.status_code == status.HTTP_500_INTERNAL_SERVER_ERROR + + +@test("middleware: invalid uuid returns bad request") +def _(client=client): + """Test that requests with invalid UUID return 400 Bad Request.""" + + # Create a test handler + @app.get("/test-invalid-uuid") + async def test_invalid_uuid(): + return {"status": "success", "message": "valid UUID"} + + # Make request with invalid UUID + response = client.get( + "/test-invalid-uuid", + headers={"X-Developer-Id": "invalid-uuid"}, # Invalid UUID + ) + + # Verify response is 400 with correct message + assert response.status_code == status.HTTP_400_BAD_REQUEST + assert "Invalid developer ID" in response.text + assert "invalid_developer_id" in response.text + + +@test("middleware: valid user passes through") +def _(client=client): + """Test that requests from valid users are allowed to proceed.""" + + # Create a test handler + @app.get("/test-valid-user") + async def test_valid_user(): + return {"status": "success", "message": "valid user"} + + # Create test data + developer_id = str(uuid.uuid4()) + mock_user_cost_data = { + "active": True, + "cost": 0.0, # Below the limit + "developer_id": developer_id, + "tags": [], + } + + # Mock the get_user_cost function + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Make request with the developer ID header + response = client.get("/test-valid-user", headers={"X-Developer-Id": developer_id}) + + # Verify the request was allowed + assert response.status_code == status.HTTP_200_OK + assert response.json()["message"] == "valid user" + + +@test("middleware: can't create session when cost limit is reached") +async def _(make_request=make_request, dsn=pg_dsn, test_agent=test_agent): + """Test that creating a session fails with 403 when cost limit is reached.""" + + # Create a real developer for this test with no paid tag + pool = await create_db_pool(dsn=dsn) + developer_id = uuid7() + email = f"test-{developer_id}@example.com" + await create_developer( + email=email, + active=True, + tags=[], # Free tier user (no paid tag) + settings={}, + developer_id=developer_id, + connection_pool=pool, + ) + + # Mock the get_usage_cost function to simulate cost limit exceeded + mock_user_cost_data = { + "active": True, + "cost": float(free_tier_cost_limit) + 1.0, # Exceed the cost limit + "developer_id": developer_id, + "tags": [], # No paid tag + } + + # Use the mock for get_usage_cost + with patch( + "agents_api.web.get_usage_cost", new=AsyncMock(return_value=mock_user_cost_data) + ): + # Try to create a session - should fail with 403 + response = make_request( + method="POST", + url="/sessions", + json={"agent_id": str(test_agent.id)}, + headers={"X-Developer-Id": str(developer_id)}, + ) + + # Verify session creation was blocked + assert response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in response.text + assert "cost_limit_exceeded" in response.text + + +@test("middleware: can't delete session when cost limit is reached") +async def _(make_request=make_request, dsn=pg_dsn, test_session=test_session, agent=test_agent): + """Test that deleting a session fails with 403 when cost limit is reached.""" + + # Create a real developer for this test with no paid tag + pool = await create_db_pool(dsn=dsn) + developer_id = uuid7() + email = f"test-{developer_id}@example.com" + await create_developer( + email=email, + active=True, + tags=[], # Free tier user (no paid tag) + settings={}, + developer_id=developer_id, + connection_pool=pool, + ) + + # Mock the get_usage_cost function to return different values for different calls + # First call should return under limit for session creation + # Subsequent calls should return over limit for deletion + mock_responses = [ + # First response - under the limit (for session creation) + { + "active": True, + "cost": float(free_tier_cost_limit) - 0.5, # Under the cost limit + "developer_id": developer_id, + "tags": [], + }, + # Second response - over the limit (for session deletion) + { + "active": True, + "cost": float(free_tier_cost_limit) + 1.0, # Exceed the cost limit + "developer_id": developer_id, + "tags": [], + }, + ] + + mock_get_usage_cost = AsyncMock() + mock_get_usage_cost.side_effect = mock_responses + + with patch("agents_api.web.get_usage_cost", new=mock_get_usage_cost): + # First create a session when under the cost limit + session_response = make_request( + method="POST", + url="/sessions", + json={"agent": str(agent.id)}, + headers={"X-Developer-Id": str(developer_id)}, + ) + + assert session_response.status_code == status.HTTP_201_CREATED + session_id = session_response.json()["id"] + + # Try to delete the session - should fail with 403 since cost is now over limit + delete_response = make_request( + method="DELETE", + url=f"/sessions/{session_id}", + headers={"X-Developer-Id": str(developer_id)}, + ) + + # Verify session deletion was blocked + assert delete_response.status_code == status.HTTP_403_FORBIDDEN + assert "Cost limit exceeded" in delete_response.text + assert "cost_limit_exceeded" in delete_response.text + + # Mock one more response for the GET request + mock_get_usage_cost.side_effect = [ + { + "active": True, + "cost": float(free_tier_cost_limit) + 1.0, # Still over the limit + "developer_id": developer_id, + "tags": [], + } + ] + + # But GET request should still work even when over cost limit + get_response = make_request( + method="GET", + url=f"/sessions/{session_id}", + headers={"X-Developer-Id": str(developer_id)}, + ) + + # Verify GET request was allowed + assert get_response.status_code == status.HTTP_200_OK diff --git a/agents-api/tests/test_mmr.py b/src/agents-api/tests/test_mmr.py similarity index 100% rename from agents-api/tests/test_mmr.py rename to src/agents-api/tests/test_mmr.py index e996c56fc..937f47953 100644 --- a/agents-api/tests/test_mmr.py +++ b/src/agents-api/tests/test_mmr.py @@ -50,8 +50,8 @@ def _(): # Will return the top k docs irrespective of MMR strength and presence of embeddings result = apply_mmr_to_docs(docs_few_embeddings, query_embedding, limit=2, mmr_strength=0.5) assert len(result) == 2 # Should only return docs with embeddings - assert result[0].id == UUID("550e8400-e29b-41d4-a716-446655440000") - assert result[1].id == UUID("550e8400-e29b-41d4-a716-446655441122") + assert result[0].id == UUID("550e8400-e29b-41d4-a716-446655441122") + assert result[1].id == UUID("550e8400-e29b-41d4-a716-446655440000") # Test with limit greater than available docs result = apply_mmr_to_docs(docs, query_embedding, limit=10, mmr_strength=0.5) diff --git a/agents-api/tests/test_model_validation.py b/src/agents-api/tests/test_model_validation.py similarity index 80% rename from agents-api/tests/test_model_validation.py rename to src/agents-api/tests/test_model_validation.py index d3a875018..ea807401f 100644 --- a/agents-api/tests/test_model_validation.py +++ b/src/agents-api/tests/test_model_validation.py @@ -10,7 +10,7 @@ @test("validate_model: succeeds when model is available in model list") async def _(): # Use async context manager for patching - with patch("agents_api.routers.utils.model_validation.get_model_list") as mock_get_models: + with patch("agents_api.common.utils.model_validation.get_model_list") as mock_get_models: mock_get_models.return_value = SAMPLE_MODELS await validate_model("gpt-4o-mini") mock_get_models.assert_called_once() @@ -18,7 +18,7 @@ async def _(): @test("validate_model: fails when model is unavailable in model list") async def _(): - with patch("agents_api.routers.utils.model_validation.get_model_list") as mock_get_models: + with patch("agents_api.common.utils.model_validation.get_model_list") as mock_get_models: mock_get_models.return_value = SAMPLE_MODELS with raises(HTTPException) as exc: await validate_model("non-existent-model") @@ -30,7 +30,7 @@ async def _(): @test("validate_model: fails when model is None") async def _(): - with patch("agents_api.routers.utils.model_validation.get_model_list") as mock_get_models: + with patch("agents_api.common.utils.model_validation.get_model_list") as mock_get_models: mock_get_models.return_value = SAMPLE_MODELS with raises(HTTPException) as exc: await validate_model(None) diff --git a/agents-api/tests/test_nlp_utilities.py b/src/agents-api/tests/test_nlp_utilities.py similarity index 100% rename from agents-api/tests/test_nlp_utilities.py rename to src/agents-api/tests/test_nlp_utilities.py diff --git a/src/agents-api/tests/test_pg_query_step.py b/src/agents-api/tests/test_pg_query_step.py new file mode 100644 index 000000000..58f413d1f --- /dev/null +++ b/src/agents-api/tests/test_pg_query_step.py @@ -0,0 +1,82 @@ +from unittest.mock import AsyncMock, MagicMock, patch + +from agents_api.activities.pg_query_step import pg_query_step +from ward import test + + +@test("pg_query_step correctly calls the specified query") +async def _(): + # Patch the relevant modules and functions + with ( + patch("agents_api.activities.pg_query_step.queries") as mock_queries, + ): + # Create a mock query function that will be returned by getattr + mock_query = AsyncMock(return_value={"result": "test"}) + + # Set up module resolution chain: queries -> test_module -> test_file -> test_query + mock_test_file = MagicMock() + mock_test_file.test_query = mock_query + + mock_test_module = MagicMock() + mock_test_module.test_file = mock_test_file + + # Configure the queries module to return our mock module + mock_queries.test_module = mock_test_module + + # Call the function with a query in the format "module_name.query_name" + result = await pg_query_step( + query_name="test_query", + file_name="test_module.test_file", + values={"param1": "value1"}, + ) + + # Verify the query was called with the expected arguments + mock_query.assert_called_once_with(param1="value1") + + # Verify the function returns the result from the query + assert result == {"result": "test"} + + +@test("pg_query_step raises exception for invalid query name format") +async def _(): + # Try with an invalid query name (no dot separator) + try: + await pg_query_step( + query_name="invalid_query_name", file_name="invalid_file_name", values={} + ) + assert False, "Expected an exception but none was raised" + except ValueError: + # Expected behavior - ValueError should be raised + pass + except Exception as e: + assert False, f"Expected ValueError but got {type(e).__name__}" + + +@test("pg_query_step propagates exceptions from the underlying query") +async def _(): + # Patch the relevant modules and functions + with patch("agents_api.activities.pg_query_step.queries") as mock_queries: + # Create a mock query function that raises an exception + mock_query = AsyncMock(side_effect=Exception("Test query error")) + + # Set up module resolution chain: queries -> test_module -> test_file -> test_query + mock_test_file = MagicMock() + mock_test_file.test_query = mock_query + + mock_test_module = MagicMock() + mock_test_module.test_file = mock_test_file + + # Configure the queries module to return our mock module + mock_queries.test_module = mock_test_module + + # Call the function and expect an exception + try: + await pg_query_step( + query_name="test_query", + file_name="test_module.test_file", + values={}, + ) + assert False, "Expected an exception but none was raised" + except Exception as e: + # Verify the exception is propagated + assert str(e) == "Test query error" diff --git a/agents-api/tests/test_prepare_for_step.py b/src/agents-api/tests/test_prepare_for_step.py similarity index 84% rename from agents-api/tests/test_prepare_for_step.py rename to src/agents-api/tests/test_prepare_for_step.py index ee8cc7b3a..13916b604 100644 --- a/agents-api/tests/test_prepare_for_step.py +++ b/src/agents-api/tests/test_prepare_for_step.py @@ -10,20 +10,45 @@ TransitionTarget, Workflow, ) +from agents_api.clients.pg import create_db_pool from agents_api.common.protocol.tasks import ( ExecutionInput, StepContext, ) from agents_api.common.utils.datetime import utcnow +from agents_api.common.utils.expressions import evaluate_expressions from agents_api.common.utils.workflows import get_workflow_name from uuid_extensions import uuid7 from ward import raises, test +from tests.fixtures import pg_dsn from tests.utils import generate_transition +async def base_evaluate_with_pool( + exprs, + context=None, + values=None, + extra_lambda_strs=None, + connection_pool=None, +): + """Custom base_evaluate that uses connection_pool for prepare_for_step""" + if context is None and values is None: + msg = "Either context or values must be provided" + raise ValueError(msg) + + values = values or {} + if context: + # Pass the connection_pool to prepare_for_step + values.update(await context.prepare_for_step(limit=50, connection_pool=connection_pool)) + + return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs) + + @test("utility: prepare_for_step - underscore") -async def _(): +async def _(dsn=pg_dsn): # Add dsn parameter + pool = await create_db_pool(dsn=dsn) + with patch( "agents_api.common.protocol.tasks.StepContext.get_inputs", return_value=( @@ -57,12 +82,14 @@ async def _(): scope_id=uuid.uuid4(), ), ) - result = await context.prepare_for_step() + result = await context.prepare_for_step(connection_pool=pool) assert result["_"] == {"current_input": "value 1"} @test("utility: prepare_for_step - label lookup in step") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + with patch( "agents_api.common.protocol.tasks.StepContext.get_inputs", return_value=( @@ -96,7 +123,7 @@ async def _(): scope_id=uuid.uuid4(), ), ) - result = await context.prepare_for_step() + result = await context.prepare_for_step(connection_pool=pool) assert result["steps"]["first step"]["input"] == {"x": "1"} assert result["steps"]["first step"]["output"] == {"y": "2"} @@ -105,7 +132,9 @@ async def _(): @test("utility: prepare_for_step - global state") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + with patch( "agents_api.common.protocol.tasks.StepContext.get_inputs", return_value=([], [], {"user_name": "John", "count": 10, "has_data": True}), @@ -135,14 +164,16 @@ async def _(): scope_id=uuid.uuid4(), ), ) - result = await context.prepare_for_step() + result = await context.prepare_for_step(connection_pool=pool) assert result["state"]["user_name"] == "John" assert result["state"]["count"] == 10 assert result["state"]["has_data"] is True @test("utility: get_workflow_name") -async def _(): +async def _(dsn=pg_dsn): + await create_db_pool(dsn=dsn) + transition = Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -200,7 +231,9 @@ async def _(): @test("utility: get_workflow_name - raises") -async def _(): +async def _(dsn=pg_dsn): + await create_db_pool(dsn=dsn) + transition = Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -238,7 +271,9 @@ async def _(): @test("utility: get_inputs - 2 parallel subworkflows") -async def _(): +async def _(dsn=pg_dsn): + await create_db_pool(dsn=dsn) + uuid7() subworkflow1_scope_id = uuid7() subworkflow2_scope_id = uuid7() @@ -341,9 +376,15 @@ async def _(): ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - return_value=subworkflow1_transitions, + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + return_value=subworkflow1_transitions, + ), + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), ): context.cursor.scope_id = subworkflow1_scope_id inputs, labels, state = await context.get_inputs() @@ -351,9 +392,15 @@ async def _(): assert labels == [None, None] assert state == {} - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - return_value=subworkflow2_transitions, + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + return_value=subworkflow2_transitions, + ), + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), ): context.cursor.scope_id = subworkflow2_scope_id inputs, labels, state = await context.get_inputs() diff --git a/src/agents-api/tests/test_prompt_step_auto_tools.py b/src/agents-api/tests/test_prompt_step_auto_tools.py new file mode 100644 index 000000000..66c8114d1 --- /dev/null +++ b/src/agents-api/tests/test_prompt_step_auto_tools.py @@ -0,0 +1,355 @@ +from unittest.mock import AsyncMock, patch +from uuid import uuid4 + +from agents_api.activities.task_steps.prompt_step import prompt_step +from agents_api.autogen.openapi_model import ( + Agent, + CreateToolRequest, + FunctionDef, + PromptStep, + TaskSpecDef, + TransitionTarget, + Workflow, +) +from agents_api.common.protocol.tasks import ExecutionInput, StepContext +from agents_api.common.utils.datetime import utcnow +from ward import test + + +# Define the mock function once at module level +def mock_base_evaluate(value, context): + """Mock base_evaluate to return appropriate types based on input""" + if isinstance(value, dict): + # For passed_settings, return the dict unchanged + return value + # For prompt strings, return the string + return "Test prompt" + + +@test("prompt_step uses auto tool calls when feature flag is enabled") +async def _(): + tool = CreateToolRequest( + name="test_tool", + type="function", + function=FunctionDef( + parameters={"type": "object", "properties": {"param": {"type": "string"}}}, + ), + description="Test function", + ) + + # Mock feature flag to be enabled + with ( + patch( + "agents_api.activities.task_steps.prompt_step.get_feature_flag_value" + ) as mock_flag, + patch( + "agents_api.activities.task_steps.prompt_step.base_evaluate", + side_effect=mock_base_evaluate, + ), + patch( + "agents_api.activities.task_steps.prompt_step.run_llm_with_tools", + new_callable=AsyncMock, + ) as mock_run_llm, + ): + mock_flag.return_value = True + mock_run_llm.return_value = [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response"}, + ] + + # Create proper StepContext with real objects + # Note: auto_run_tools defaults to False now, so we need to explicitly set it to True + step = PromptStep(prompt="Test prompt", unwrap=False, auto_run_tools=True) + execution_input = ExecutionInput( + developer_id=uuid4(), + agent=Agent( + id=uuid4(), + name="test_agent", + model="gpt-4", + default_settings={"temperature": 0.7}, + created_at=utcnow(), + updated_at=utcnow(), + ), + agent_tools=[], + arguments={}, + task=TaskSpecDef( + name="test_task", + tools=[], + workflows=[Workflow(name="main", steps=[step])], + ), + ) + + context = StepContext( + execution_input=execution_input, + current_input="test input", + cursor=TransitionTarget( + workflow="main", + step=0, + scope_id=uuid4(), + ), + ) + + # Mock the tools method on the StepContext class - need to accept self parameter + async def mock_tools_method(self): + return [tool] + + with patch.object(StepContext, "tools", mock_tools_method): + # Run the activity + result = await prompt_step(context) + + # Verify run_llm_with_tools was called + mock_run_llm.assert_called_once() + call_args = mock_run_llm.call_args + assert call_args[1]["messages"] == [{"role": "user", "content": "Test prompt"}] + assert len(call_args[1]["tools"]) == 1 + assert call_args[1]["tools"][0].name == "test_tool" + + # Check result + assert result.output == [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response"}, + ] + + +@test("prompt_step with auto tools handles unwrap correctly") +async def _(): + # Mock feature flag to be enabled + with ( + patch( + "agents_api.activities.task_steps.prompt_step.get_feature_flag_value" + ) as mock_flag, + patch( + "agents_api.activities.task_steps.prompt_step.base_evaluate", + side_effect=mock_base_evaluate, + ), + patch( + "agents_api.activities.task_steps.prompt_step.run_llm_with_tools", + new_callable=AsyncMock, + ) as mock_run_llm, + ): + mock_flag.return_value = True + mock_run_llm.return_value = [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Unwrapped response", "tool_calls": None}, + ] + + # Create proper StepContext with real objects + # Note: auto_run_tools defaults to False now, so we need to explicitly set it to True for this test + step = PromptStep(prompt="Test prompt", unwrap=True, auto_run_tools=True) + execution_input = ExecutionInput( + developer_id=uuid4(), + agent=Agent( + id=uuid4(), + name="test_agent", + model="gpt-4", + default_settings={}, + created_at=utcnow(), + updated_at=utcnow(), + ), + agent_tools=[], + arguments={}, + task=TaskSpecDef( + name="test_task", + tools=[], + workflows=[Workflow(name="main", steps=[step])], + ), + ) + + context = StepContext( + execution_input=execution_input, + current_input="test input", + cursor=TransitionTarget( + workflow="main", + step=0, + scope_id=uuid4(), + ), + ) + + # Mock the tools method on the StepContext class - need to accept self parameter + async def mock_tools_method(self): + return [] + + with patch.object(StepContext, "tools", mock_tools_method): + # Run the activity + result = await prompt_step(context) + + # Check that output is unwrapped + assert result.output == "Unwrapped response" + + +@test("prompt_step with auto_run_tools=False passes empty tools list") +async def _(): + tool = CreateToolRequest( + name="test_tool", + type="function", + function=FunctionDef( + parameters={"type": "object", "properties": {"param": {"type": "string"}}}, + ), + description="Test function", + ) + + # Mock feature flag to be enabled + with ( + patch( + "agents_api.activities.task_steps.prompt_step.get_feature_flag_value" + ) as mock_flag, + patch( + "agents_api.activities.task_steps.prompt_step.base_evaluate", + side_effect=mock_base_evaluate, + ), + patch( + "agents_api.activities.task_steps.prompt_step.run_llm_with_tools", + new_callable=AsyncMock, + ) as mock_run_llm, + ): + mock_flag.return_value = True + mock_run_llm.return_value = [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response without tools"}, + ] + + # Create prompt step with auto_run_tools=False + step = PromptStep(prompt="Test prompt", unwrap=False, auto_run_tools=False) + execution_input = ExecutionInput( + developer_id=uuid4(), + agent=Agent( + id=uuid4(), + name="test_agent", + model="gpt-4", + default_settings={"temperature": 0.7}, + created_at=utcnow(), + updated_at=utcnow(), + ), + agent_tools=[], + arguments={}, + task=TaskSpecDef( + name="test_task", + tools=[], + workflows=[Workflow(name="main", steps=[step])], + ), + ) + + context = StepContext( + execution_input=execution_input, + current_input="test input", + cursor=TransitionTarget( + workflow="main", + step=0, + scope_id=uuid4(), + ), + ) + + # Mock the tools method to return a tool + async def mock_tools_method(self): + return [tool] + + with patch.object(StepContext, "tools", mock_tools_method): + # Run the activity + result = await prompt_step(context) + + # Verify run_llm_with_tools was called with empty tools list + mock_run_llm.assert_called_once() + call_args = mock_run_llm.call_args + assert call_args[1]["messages"] == [{"role": "user", "content": "Test prompt"}] + # IMPORTANT: Verify empty tools list was passed + assert call_args[1]["tools"] == [] + + # Check result + assert result.output == [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response without tools"}, + ] + + +@test("prompt_step with auto_run_tools=True passes all available tools") +async def _(): + tool1 = CreateToolRequest( + name="tool1", + type="function", + function=FunctionDef( + parameters={"type": "object", "properties": {"param": {"type": "string"}}}, + ), + description="Test function 1", + ) + tool2 = CreateToolRequest( + name="tool2", + type="function", + function=FunctionDef( + parameters={"type": "object", "properties": {"param": {"type": "number"}}}, + ), + description="Test function 2", + ) + + # Mock feature flag to be enabled + with ( + patch( + "agents_api.activities.task_steps.prompt_step.get_feature_flag_value" + ) as mock_flag, + patch( + "agents_api.activities.task_steps.prompt_step.base_evaluate", + side_effect=mock_base_evaluate, + ), + patch( + "agents_api.activities.task_steps.prompt_step.run_llm_with_tools", + new_callable=AsyncMock, + ) as mock_run_llm, + ): + mock_flag.return_value = True + mock_run_llm.return_value = [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response with tools"}, + ] + + # Create prompt step with auto_run_tools=True (default) + step = PromptStep(prompt="Test prompt", unwrap=False, auto_run_tools=True) + execution_input = ExecutionInput( + developer_id=uuid4(), + agent=Agent( + id=uuid4(), + name="test_agent", + model="gpt-4", + default_settings={"temperature": 0.7}, + created_at=utcnow(), + updated_at=utcnow(), + ), + agent_tools=[], + arguments={}, + task=TaskSpecDef( + name="test_task", + tools=[], + workflows=[Workflow(name="main", steps=[step])], + ), + ) + + context = StepContext( + execution_input=execution_input, + current_input="test input", + cursor=TransitionTarget( + workflow="main", + step=0, + scope_id=uuid4(), + ), + ) + + # Mock the tools method to return multiple tools + async def mock_tools_method(self): + return [tool1, tool2] + + with patch.object(StepContext, "tools", mock_tools_method): + # Run the activity + result = await prompt_step(context) + + # Verify run_llm_with_tools was called with all tools + mock_run_llm.assert_called_once() + call_args = mock_run_llm.call_args + assert call_args[1]["messages"] == [{"role": "user", "content": "Test prompt"}] + # IMPORTANT: Verify all tools were passed + assert len(call_args[1]["tools"]) == 2 + assert call_args[1]["tools"][0].name == "tool1" + assert call_args[1]["tools"][1].name == "tool2" + + # Check result + assert result.output == [ + {"role": "user", "content": "Test prompt"}, + {"role": "assistant", "content": "Test response with tools"}, + ] diff --git a/agents-api/tests/test_query_utils.py b/src/agents-api/tests/test_query_utils.py similarity index 100% rename from agents-api/tests/test_query_utils.py rename to src/agents-api/tests/test_query_utils.py diff --git a/src/agents-api/tests/test_secrets_queries.py b/src/agents-api/tests/test_secrets_queries.py new file mode 100644 index 000000000..16b423711 --- /dev/null +++ b/src/agents-api/tests/test_secrets_queries.py @@ -0,0 +1,297 @@ +"""Tests for secrets queries.""" + +from uuid import uuid4 + +from agents_api.autogen.openapi_model import Secret +from agents_api.clients.pg import create_db_pool +from agents_api.queries.secrets.create import create_secret +from agents_api.queries.secrets.delete import delete_secret +from agents_api.queries.secrets.get_by_name import get_secret_by_name +from agents_api.queries.secrets.list import list_secrets +from agents_api.queries.secrets.update import update_secret +from ward import test + +from tests.fixtures import clean_secrets, pg_dsn, test_developer_id + + +@test("query: create secret") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create secret with both developer_id + agent_secret_data = { + "name": "agent_api_key", + "description": "An agent-specific API key", + "value": "sk_agent_12345", + "metadata": {"service": "agent_service", "environment": "test"}, + } + + agent_secret = await create_secret( + developer_id=developer_id, + name=agent_secret_data["name"], + description=agent_secret_data["description"], + value=agent_secret_data["value"], + metadata=agent_secret_data["metadata"], + connection_pool=pool, + ) + + assert agent_secret is not None + assert isinstance(agent_secret, Secret) + assert agent_secret.name == agent_secret_data["name"] + assert agent_secret.value == "ENCRYPTED" + + +@test("query: list secrets") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create test secrets first - use unique but valid identifiers + secret_name1 = f"list_test_key_a{uuid4().hex[:6]}" + secret_name2 = f"list_test_key_b{uuid4().hex[:6]}" + + await create_secret( + developer_id=developer_id, + name=secret_name1, + description="Test secret 1 for listing", + value="sk_test_list_1", + connection_pool=pool, + ) + + await create_secret( + developer_id=developer_id, + name=secret_name2, + description="Test secret 2 for listing", + value="sk_test_list_2", + connection_pool=pool, + ) + + # Test listing developer secrets + secrets = await list_secrets( + developer_id=developer_id, + decrypt=True, + connection_pool=pool, + ) + + assert secrets is not None + assert isinstance(secrets, list) + assert len(secrets) == 2 + assert all(isinstance(secret, Secret) for secret in secrets) + + # Check if our test secrets are in the list + created_secret_names = {secret.name for secret in secrets} + assert secret_name1 in created_secret_names + assert secret_name2 in created_secret_names + + # Check if the values are decrypted + assert any(secret.value == "sk_test_list_1" for secret in secrets) + assert any(secret.value == "sk_test_list_2" for secret in secrets) + + +@test("query: list secrets (decrypt=False)") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create test secrets first - use unique but valid identifiers + secret_name1 = f"list_test_key_a{uuid4().hex[:6]}" + secret_name2 = f"list_test_key_b{uuid4().hex[:6]}" + + await create_secret( + developer_id=developer_id, + name=secret_name1, + description="Test secret 1 for listing", + value="sk_test_list_1", + connection_pool=pool, + ) + + await create_secret( + developer_id=developer_id, + name=secret_name2, + description="Test secret 2 for listing", + value="sk_test_list_2", + connection_pool=pool, + ) + + # Test listing developer secrets + secrets = await list_secrets( + developer_id=developer_id, + decrypt=False, + connection_pool=pool, + ) + + assert secrets is not None + assert isinstance(secrets, list) + assert len(secrets) > 0 + assert all(isinstance(secret, Secret) for secret in secrets) + + # Check if our test secrets are in the list + created_secret_names = {secret.name for secret in secrets} + assert secret_name1 in created_secret_names + assert secret_name2 in created_secret_names + + # Check if the values are encrypted + assert all(secret.value == "ENCRYPTED" for secret in secrets) + + +@test("query: get secret by name") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create a test secret first + secret_name = f"get_test_key_a{uuid4().hex[:6]}" + await create_secret( + developer_id=developer_id, + name=secret_name, + description="Test secret for get by name", + value="sk_get_test_1", + connection_pool=pool, + ) + + # Get the secret by name + retrieved_secret = await get_secret_by_name( + developer_id=developer_id, + name=secret_name, + decrypt=True, + connection_pool=pool, + ) + + assert retrieved_secret is not None + assert isinstance(retrieved_secret, Secret) + assert retrieved_secret.name == secret_name + assert retrieved_secret.value == "sk_get_test_1" + + +@test("query: get secret by name (decrypt=False)") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create a test secret first + secret_name = f"get_test_key_a{uuid4().hex[:6]}" + await create_secret( + developer_id=developer_id, + name=secret_name, + description="Test secret for get by name", + value="sk_get_test_1", + connection_pool=pool, + ) + + # Get the secret by name + retrieved_secret = await get_secret_by_name( + developer_id=developer_id, + name=secret_name, + decrypt=False, + connection_pool=pool, + ) + + assert retrieved_secret is not None + assert isinstance(retrieved_secret, Secret) + assert retrieved_secret.name == secret_name + assert retrieved_secret.value == "ENCRYPTED" + + +@test("query: update secret") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create a test secret first + original_name = f"update_test_key_a{uuid4().hex[:6]}" + original_secret = await create_secret( + developer_id=developer_id, + name=original_name, + description="Original description", + value="original_value", + metadata={"original": True}, + connection_pool=pool, + ) + + # Update the secret + updated_name = f"updated_key_b{uuid4().hex[:6]}" + updated_description = "Updated description" + updated_value = "updated_value" + updated_metadata = {"updated": True, "timestamp": "now"} + + updated_secret = await update_secret( + secret_id=original_secret.id, + developer_id=developer_id, + name=updated_name, + description=updated_description, + value=updated_value, + metadata=updated_metadata, + connection_pool=pool, + ) + + assert updated_secret is not None + assert isinstance(updated_secret, Secret) + assert updated_secret.id == original_secret.id + assert updated_secret.name == updated_name + assert updated_secret.description == updated_description + assert updated_secret.value == "ENCRYPTED" + assert updated_secret.metadata == updated_metadata + + # Test partial update (only update some fields) + partial_description = "Partially updated description" + partial_update = await update_secret( + secret_id=original_secret.id, + developer_id=developer_id, + description=partial_description, + connection_pool=pool, + ) + + assert partial_update is not None + assert partial_update.name == updated_name # Should remain from previous update + assert partial_update.description == partial_description # Should be updated + assert partial_update.value == "ENCRYPTED" # Should remain from previous update + assert partial_update.metadata == updated_metadata # Should remain from previous update + + +@test("query: delete secret") +async def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id): + pool = await create_db_pool(dsn=dsn) + + # Create a test secret first + delete_test_name = f"delete_test_key_a{uuid4().hex[:6]}" + test_secret = await create_secret( + developer_id=developer_id, + name=delete_test_name, + description="Secret to be deleted", + value="delete_me", + connection_pool=pool, + ) + + # Delete the secret + delete_result = await delete_secret( + secret_id=test_secret.id, + developer_id=developer_id, + connection_pool=pool, + ) + + assert delete_result is not None + assert delete_result.id == test_secret.id + + # Verify the secret is deleted by listing + secrets = await list_secrets( + developer_id=developer_id, + connection_pool=pool, + ) + + # Make sure our deleted secret is not in the list + assert not any(secret.id == test_secret.id for secret in secrets) + + # Create and delete an agent-specific secret + agent_secret_name = f"agent_delete_test_b{uuid4().hex[:6]}" + agent_secret = await create_secret( + developer_id=developer_id, + name=agent_secret_name, + description="Agent secret to be deleted", + value="agent_delete_me", + connection_pool=pool, + ) + + # Delete with developer_id + agent_delete_result = await delete_secret( + secret_id=agent_secret.id, + developer_id=developer_id, + connection_pool=pool, + ) + + assert agent_delete_result is not None + assert agent_delete_result.id == agent_secret.id diff --git a/src/agents-api/tests/test_secrets_routes.py b/src/agents-api/tests/test_secrets_routes.py new file mode 100644 index 000000000..2095de894 --- /dev/null +++ b/src/agents-api/tests/test_secrets_routes.py @@ -0,0 +1,208 @@ +"""Tests for secrets routes.""" + +from uuid import uuid4 + +from ward import test + +from tests.fixtures import client, make_request, test_developer_id + + +@test("route: unauthorized secrets route should fail") +def _(client=client): + data = { + "name": f"test_secret_{uuid4().hex[:8]}", + "description": "Test secret for listing", + "value": "sk_list_test_123456789", + } + # Try to access secrets without auth + response = client.request( + method="GET", + url="/secrets", + json=data, + ) + + assert response.status_code == 403 + + +@test("route: create secret") +def _(make_request=make_request, developer_id=test_developer_id): + data = { + "developer_id": str(developer_id), + "name": f"test_secret_{uuid4().hex[:8]}", + "description": "Test secret for API integration", + "value": "sk_test_123456789", + "metadata": {"service": "test-service", "environment": "test"}, + } + + response = make_request( + method="POST", + url="/secrets", + json=data, + ) + + assert response.status_code == 201 + result = response.json() + assert result["name"] == data["name"] + assert result["description"] == data["description"] + # Value should be encrypted in response + assert result["value"] == "ENCRYPTED" + assert result["metadata"] == data["metadata"] + + +@test("route: list secrets") +def _(make_request=make_request, developer_id=test_developer_id): + # First create a secret to ensure we have something to list + secret_name = f"list_test_secret_{uuid4().hex[:8]}" + data = { + "developer_id": str(developer_id), + "name": secret_name, + "description": "Test secret for listing", + "value": "sk_list_test_123456789", + "metadata": {"service": "test-service", "environment": "test"}, + } + + make_request( + method="POST", + url="/secrets", + json=data, + ) + + # Now list secrets + response = make_request( + method="GET", + url="/secrets", + ) + + assert response.status_code == 200 + secrets = response.json() + + assert isinstance(secrets, list) + assert len(secrets) > 0 + # Find our test secret + assert any(secret["name"] == secret_name for secret in secrets) + assert all(secret["value"] == "ENCRYPTED" for secret in secrets) + + +@test("route: update secret") +def _(make_request=make_request, developer_id=test_developer_id): + # First create a secret + original_name = f"update_test_secret_{uuid4().hex[:8]}" + create_data = { + "developer_id": str(developer_id), + "name": original_name, + "description": "Original description", + "value": "sk_original_value", + "metadata": {"original": True}, + } + + create_response = make_request( + method="POST", + url="/secrets", + json=create_data, + ) + + secret_id = create_response.json()["id"] + + # Now update it + updated_name = f"updated_secret_{uuid4().hex[:8]}" + update_data = { + "developer_id": str(developer_id), + "name": updated_name, + "description": "Updated description", + "value": "sk_updated_value", + "metadata": {"updated": True, "timestamp": "now"}, + } + + update_response = make_request( + method="PUT", + url=f"/secrets/{secret_id}", + json=update_data, + ) + + assert update_response.status_code == 200 + updated_secret = update_response.json() + + assert updated_secret["name"] == updated_name + assert updated_secret["description"] == "Updated description" + assert updated_secret["value"] == "ENCRYPTED" + assert updated_secret["metadata"] == update_data["metadata"] + + +@test("route: delete secret") +def _(make_request=make_request, developer_id=test_developer_id): + # First create a secret + delete_test_name = f"delete_test_secret_{uuid4().hex[:8]}" + create_data = { + "developer_id": str(developer_id), + "name": delete_test_name, + "description": "Secret to be deleted", + "value": "sk_delete_me", + "metadata": {"service": "test-service", "environment": "test"}, + } + + create_response = make_request( + method="POST", + url="/secrets", + json=create_data, + ) + + secret_id = create_response.json()["id"] + + # Now delete it + delete_response = make_request( + method="DELETE", + url=f"/secrets/{secret_id}", + ) + + assert delete_response.status_code == 202 + # Verify the secret is gone by listing all secrets + list_response = make_request( + method="GET", + url="/secrets", + ) + + assert list_response.status_code == 200 + secrets = list_response.json() + + # Check that the deleted secret is not in the list + deleted_secret_ids = [secret["id"] for secret in secrets] + assert secret_id not in deleted_secret_ids + + +@test("route: create duplicate secret name fails") +def _(make_request=make_request, developer_id=test_developer_id): + # Create a secret with a specific name + unique_name = f"unique_secret_{uuid4().hex[:8]}" + data = { + "developer_id": str(developer_id), + "name": unique_name, + "description": "First secret with this name", + "value": "sk_first_value", + "metadata": {"service": "test-service", "environment": "test"}, + } + + first_response = make_request( + method="POST", + url="/secrets", + json=data, + ) + + assert first_response.status_code == 201 + + # Try to create another with the same name + duplicate_data = { + "developer_id": str(developer_id), + "name": unique_name, # Same name + "description": "Second secret with same name", + "value": "sk_second_value", + "metadata": {"service": "test-service", "environment": "test"}, + } + + second_response = make_request( + method="POST", + url="/secrets", + json=duplicate_data, + ) + + # Should fail with a conflict error + assert second_response.status_code == 409 diff --git a/src/agents-api/tests/test_secrets_usage.py b/src/agents-api/tests/test_secrets_usage.py new file mode 100644 index 000000000..7bec0e34c --- /dev/null +++ b/src/agents-api/tests/test_secrets_usage.py @@ -0,0 +1,362 @@ +"""Tests for list_secrets_query usage in render.py and tasks.py.""" + +from unittest.mock import MagicMock, patch +from uuid import uuid4 + +from agents_api.autogen.Agents import Agent +from agents_api.autogen.openapi_model import ( + ChatInput, + PromptItem, + PromptStep, + Secret, + TaskSpecDef, + TaskToolDef, + Tool, + TransitionTarget, + Workflow, +) +from agents_api.common.protocol.models import ExecutionInput +from agents_api.common.protocol.tasks import StepContext +from agents_api.common.utils.datetime import utcnow +from agents_api.routers.sessions.legacy.render import render_chat_input +from ward import skip, test + +from tests.fixtures import test_developer, test_developer_id + + +@skip("Skipping secrets usage tests") +@test("render: list_secrets_query usage in render_chat_input") +async def _(developer=test_developer): + # Create test secrets + test_secrets = [ + Secret( + id=uuid4(), + name="api_key", + value="sk_test_123456789", + developer_id=developer.id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + Secret( + id=uuid4(), + name="service_token", + value="token_987654321", + developer_id=developer.id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + ] + + # Create tools that use secret expressions + tools = [ + Tool( + id=uuid4(), + name="api_tool", + type="computer_20241022", + computer_20241022={ + "path": "/usr/bin/curl", + "api_key": "$ secrets.api_key", + "auth_token": "$ secrets.service_token", + }, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ) + ] + + # Create mock chat context + mock_chat_context = MagicMock() + mock_chat_context.session.render_templates = True + mock_chat_context.session.context_overflow = "error" + mock_chat_context.get_active_tools.return_value = tools + mock_chat_context.settings = {"model": "claude-3.5-sonnet"} + mock_chat_context.get_chat_environment.return_value = {} + mock_chat_context.merge_system_template.return_value = "System: Use tools to help the user" + + # Mock input data + session_id = uuid4() + chat_input = ChatInput(messages=[{"role": "user", "content": "hi"}]) + + # Set up mocking for required functions + with ( + patch( + "agents_api.routers.sessions.render.list_secrets_query" + ) as mock_list_secrets_query, + patch( + "agents_api.routers.sessions.render.prepare_chat_context" + ) as mock_prepare_chat_context, + patch("agents_api.routers.sessions.render.gather_messages") as mock_gather_messages, + patch("agents_api.routers.sessions.render.render_template") as mock_render_template, + patch( + "agents_api.routers.sessions.render.evaluate_expressions" + ) as mock_render_evaluate_expressions, + patch("agents_api.routers.sessions.render.validate_model") as mock_validate_model, + ): + # Set up return values for mocks + mock_validate_model.return_value = None + mock_list_secrets_query.return_value = test_secrets + mock_prepare_chat_context.return_value = mock_chat_context + mock_gather_messages.return_value = ([], []) + mock_render_template.return_value = [ + {"role": "system", "content": "System: Use tools to help the user"} + ] + + # Set up evaluate_expressions to properly substitute secrets + def evaluate_side_effect(value, values): + if isinstance(value, str) and "$ secrets." in value: + if "$secrets.api_key" in value: + return value.replace("$ secrets.api_key", "sk_test_123456789") + if "$secrets.service_token" in value: + return value.replace("$ secrets.service_token", "token_987654321") + return value + + mock_render_evaluate_expressions.side_effect = evaluate_side_effect + + # Call the function being tested + _messages, _doc_refs, formatted_tools, *_ = await render_chat_input( + developer=developer, + session_id=session_id, + chat_input=chat_input, + ) + + # Assert that list_secrets_query was called with the right parameters + mock_list_secrets_query.assert_called_once_with(developer_id=developer.id) + + # Verify that expressions were evaluated + mock_render_evaluate_expressions.assert_called() + + # Check that formatted_tools contains the evaluated secrets + assert formatted_tools is not None + assert len(formatted_tools) > 0 + + # The first tool should be the computer_20241022 tool + tool = formatted_tools[0] + assert tool["type"] == "computer_20241022" + + # Verify that the secrets were evaluated in the function parameters + function_params = tool["function"]["parameters"] + assert "api_key" in function_params, f"{tool}" + assert function_params["api_key"] == "sk_test_123456789" + assert "auth_token" in function_params + assert function_params["auth_token"] == "token_987654321" + + +@skip("Skipping secrets usage tests") +@test("tasks: list_secrets_query with multiple secrets") +async def _(developer_id=test_developer_id): + # Create test secrets with varying names + test_secrets = [ + Secret( + id=uuid4(), + name="api_key_1", + value="sk_test_123", + developer_id=developer_id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + Secret( + id=uuid4(), + name="api_key_2", + value="sk_test_456", + developer_id=developer_id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + Secret( + id=uuid4(), + name="database_url", + value="postgresql://user:password@localhost:5432/db", + developer_id=developer_id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + ] + + # Create tools that use secret expressions + task_tools = [ + TaskToolDef( + type="function", + name="multi_secret_tool", + spec={ + "primary_key": "$secrets.api_key_1", + "secondary_key": "$secrets.api_key_2", + "connection_string": "$secrets.database_url", + "url": "https://api.example.com", + }, + ), + TaskToolDef( + type="api_call", + name="second_tool", + spec={ + "headers": {"Authorization": "Bearer $secrets.api_key_1"}, + "url": "https://api.example.com/v2", + }, + ), + ] + + # Create a valid prompt step for the workflow + test_prompt_step = PromptStep( + kind_="prompt", + prompt=[PromptItem(role="user", content="Test prompt content")], + ) + + # Create a mock workflow with a proper step + test_workflow = Workflow(name="main", steps=[test_prompt_step]) + + # Create a proper TaskSpecDef + task_spec = TaskSpecDef( + id=uuid4(), + name="test_task", + created_at=utcnow(), + updated_at=utcnow(), + workflows=[test_workflow], + tools=task_tools, + inherit_tools=False, + ) + + # Create a proper Agent + test_agent = Agent( + id=uuid4(), name="test_agent", model="gpt-4", created_at=utcnow(), updated_at=utcnow() + ) + + # Create execution input with the task + execution_input = ExecutionInput( + developer_id=developer_id, + agent=test_agent, + agent_tools=[], + arguments={}, + task=task_spec, + ) + + # Create a transition target pointing to the workflow step + cursor = TransitionTarget(workflow="main", step=0, scope_id=uuid4()) + + # Set up the step context properly + step_context = StepContext( + loaded=True, execution_input=execution_input, cursor=cursor, current_input={} + ) + + # Mock the current step to use all tools + with ( + patch("agents_api.common.protocol.tasks.list_secrets_query") as mock_list_secrets_query, + patch( + "agents_api.common.protocol.tasks.evaluate_expressions" + ) as mock_evaluate_expressions, + ): + # Set mock return values + mock_list_secrets_query.return_value = test_secrets + # Have evaluate_expressions pass through the values but replace secret expressions + mock_evaluate_expressions.side_effect = lambda spec, values: { + k: v.replace("$secrets.api_key_1", "sk_test_123") + .replace("$secrets.api_key_2", "sk_test_456") + .replace("$secrets.database_url", "postgresql://user:password@localhost:5432/db") + if isinstance(v, str) + else v + for k, v in spec.items() + } + + # Call the tools method + tools = await step_context.tools() + + # Assert that list_secrets_query was called with the right parameters + mock_list_secrets_query.assert_called_once_with(developer_id=developer_id) + + # Verify the right number of tools were created + assert len(tools) == len(task_tools) + + # Verify evaluate_expressions was called for each tool + assert mock_evaluate_expressions.call_count == len(task_tools) + + +@skip("Skipping secrets usage tests") +@test("tasks: list_secrets_query in StepContext.tools method") +async def _(developer_id=test_developer_id): + # Create test secrets + test_secrets = [ + Secret( + id=uuid4(), + name="api_key", + value="sk_test_123456789", + developer_id=developer_id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + Secret( + id=uuid4(), + name="access_token", + value="at_test_987654321", + developer_id=developer_id, + created_at="2023-01-01T00:00:00Z", + updated_at="2023-01-01T00:00:00Z", + ), + ] + + # Create tools that use secret expressions + task_tools = [ + TaskToolDef( + type="function", + name="test_tool_with_secret", + spec={"api_key": "$secrets.api_key", "url": "https://api.example.com"}, + ) + ] + + # Create a valid prompt step for the workflow + test_prompt_step = PromptStep( + kind_="prompt", + prompt=[PromptItem(role="user", content="Test prompt content")], + ) + + # Create a mock workflow with a proper step + test_workflow = Workflow(name="main", steps=[test_prompt_step]) + + # Create a proper TaskSpecDef + task_spec = TaskSpecDef( + id=uuid4(), + name="test_task", + created_at=utcnow(), + updated_at=utcnow(), + workflows=[test_workflow], + tools=task_tools, + inherit_tools=False, + ) + + # Create a proper Agent + test_agent = Agent( + id=uuid4(), name="test_agent", model="gpt-4", created_at=utcnow(), updated_at=utcnow() + ) + + # Create execution input with the task + execution_input = ExecutionInput( + developer_id=developer_id, + agent=test_agent, + agent_tools=[], + arguments={}, + task=task_spec, + ) + + # Create a transition target pointing to the workflow step + cursor = TransitionTarget(workflow="main", step=0, scope_id=uuid4()) + + # Set up the step context properly + step_context = StepContext( + loaded=True, execution_input=execution_input, cursor=cursor, current_input={} + ) + + # Mock the current step to use all tools + with ( + patch.object(step_context, "current_step", MagicMock(tools="all")), + patch("agents_api.common.protocol.tasks.list_secrets_query") as mock_list_secrets_query, + ): + # Set mock return value + mock_list_secrets_query.return_value = test_secrets + + # Call the tools method + tools = await step_context.tools() + + # Assert that list_secrets_query was called with the right parameters + mock_list_secrets_query.assert_called_once_with(developer_id=developer_id) + + # Verify tools were created with evaluated secrets + assert len(tools) == len(task_tools) + + # StepContext.tools() returns the correct tools + assert len(tools) > 0 diff --git a/agents-api/tests/test_session_queries.py b/src/agents-api/tests/test_session_queries.py similarity index 100% rename from agents-api/tests/test_session_queries.py rename to src/agents-api/tests/test_session_queries.py diff --git a/agents-api/tests/test_session_routes.py b/src/agents-api/tests/test_session_routes.py similarity index 79% rename from agents-api/tests/test_session_routes.py rename to src/agents-api/tests/test_session_routes.py index aa1380f11..68d75d7f2 100644 --- a/agents-api/tests/test_session_routes.py +++ b/src/agents-api/tests/test_session_routes.py @@ -32,6 +32,26 @@ def _(make_request=make_request, agent=test_agent): assert response.status_code == 201 +@test("route: create session - invalid agent") +def _(make_request=make_request, agent=test_agent): + data = { + "agent": str(uuid7()), + "situation": "test session about", + } + + response = make_request( + method="POST", + url="/sessions", + json=data, + ) + + assert response.status_code == 400 + assert ( + response.json()["error"]["message"] + == "The specified participant ID is invalid for the given participant type during create" + ) + + @test("route: create or update session - create") def _(make_request=make_request, agent=test_agent): session_id = uuid7() @@ -70,6 +90,26 @@ def _(make_request=make_request, session=test_session, agent=test_agent): assert response.status_code == 201, f"{response.json()}" +@test("route: create or update session - invalid agent") +def _(make_request=make_request, agent=test_agent, session=test_session): + data = { + "agent": str(uuid7()), + "situation": "test session about", + } + + response = make_request( + method="POST", + url=f"/sessions/{session.id}", + json=data, + ) + + assert response.status_code == 400 + assert ( + response.json()["error"]["message"] + == "The specified participant ID is invalid for the given participant type during create or update" + ) + + @test("route: get session - exists") def _(make_request=make_request, session=test_session): response = make_request( diff --git a/agents-api/tests/test_task_execution_workflow.py b/src/agents-api/tests/test_task_execution_workflow.py similarity index 83% rename from agents-api/tests/test_task_execution_workflow.py rename to src/agents-api/tests/test_task_execution_workflow.py index b5c8ff2d3..ddb275509 100644 --- a/agents-api/tests/test_task_execution_workflow.py +++ b/src/agents-api/tests/test_task_execution_workflow.py @@ -1,3 +1,4 @@ +import functools import uuid from base64 import b64decode from datetime import timedelta @@ -8,7 +9,6 @@ from agents_api.activities.execute_api_call import execute_api_call from agents_api.activities.execute_integration import execute_integration from agents_api.activities.execute_system import execute_system -from agents_api.activities.task_steps.base_evaluate import base_evaluate from agents_api.autogen.openapi_model import ( Agent, ApiCallDef, @@ -38,6 +38,7 @@ Workflow, YieldStep, ) +from agents_api.clients.pg import create_db_pool from agents_api.common.protocol.tasks import ( ExecutionInput, PartialTransition, @@ -47,6 +48,7 @@ ) from agents_api.common.retry_policies import DEFAULT_RETRY_POLICY from agents_api.common.utils.datetime import utcnow +from agents_api.common.utils.expressions import evaluate_expressions from agents_api.env import ( debug, temporal_heartbeat_timeout, @@ -56,8 +58,31 @@ from agents_api.workflows.task_execution import TaskExecutionWorkflow from aiohttp import test_utils from temporalio.exceptions import ApplicationError +from temporalio.workflow import _NotInWorkflowEventLoopError from ward import raises, test +from tests.fixtures import pg_dsn + + +async def base_evaluate_with_pool( + exprs, + context=None, + values=None, + extra_lambda_strs=None, + connection_pool=None, +): + """Custom base_evaluate that uses connection_pool for prepare_for_step""" + if context is None and values is None: + msg = "Either context or values must be provided" + raise ValueError(msg) + + values = values or {} + if context: + # Pass the connection_pool to prepare_for_step + values.update(await context.prepare_for_step(limit=50, connection_pool=connection_pool)) + + return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs) + @test("task execution workflow: handle function tool call step") async def _(): @@ -152,7 +177,19 @@ async def _resp(): "integration": {"name": tool_name, "arguments": arguments}, }, ) - with patch("agents_api.workflows.task_execution.workflow") as workflow: + + with ( + patch("agents_api.workflows.task_execution.workflow") as workflow, + patch("agents_api.common.protocol.tasks.workflow") as context_workflow, + patch("agents_api.common.protocol.tasks.get_secrets_list") as mock_list_secrets, + ): + # Set up the mock to raise the expected exception + context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError( + "Not in workflow event loop" + ) + mock_list_secrets.return_value = [] + + # Set up the activity execution mock workflow.execute_activity.return_value = _resp() wf.context = context wf.outcome = outcome @@ -172,7 +209,15 @@ async def _resp(): ) workflow.execute_activity.assert_called_once_with( execute_integration, - args=[context, tool_name, integration, arguments], + args=[ + execution_input.developer_id, + execution_input.agent.id, + execution_input.task.id if execution_input.task else None, + None, # session_id is None for task execution + tool_name, + integration, + arguments, + ], schedule_to_close_timeout=timedelta( seconds=30 if debug or testing else temporal_schedule_to_close_timeout, ), @@ -213,7 +258,16 @@ async def _(): outcome = StepOutcome( output={"type": "integration", "integration": {"name": "tool1", "arguments": {}}}, ) - with patch("agents_api.workflows.task_execution.workflow") as workflow: + with ( + patch("agents_api.workflows.task_execution.workflow") as workflow, + patch("agents_api.common.protocol.tasks.workflow") as context_workflow, + patch("agents_api.common.protocol.tasks.get_secrets_list") as mock_list_secrets, + ): + # Set up the mock to raise the expected exception + context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError( + "Not in workflow event loop" + ) + mock_list_secrets.return_value = [] workflow.execute_activity.return_value = "integration_tool_call_response" with raises(ApplicationError) as exc: wf.context = context @@ -279,7 +333,16 @@ async def _resp(): }, }, ) - with patch("agents_api.workflows.task_execution.workflow") as workflow: + with ( + patch("agents_api.workflows.task_execution.workflow") as workflow, + patch("agents_api.common.protocol.tasks.workflow") as context_workflow, + patch("agents_api.common.protocol.tasks.get_secrets_list") as mock_list_secrets, + ): + # Set up the mock to raise the expected exception + context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError( + "Not in workflow event loop" + ) + mock_list_secrets.return_value = [] workflow.execute_activity.return_value = _resp() wf.context = context wf.outcome = outcome @@ -367,7 +430,17 @@ async def _resp(): }, }, ) - with patch("agents_api.workflows.task_execution.workflow") as workflow: + with ( + patch("agents_api.workflows.task_execution.workflow") as workflow, + patch("agents_api.common.protocol.tasks.workflow") as context_workflow, + patch("agents_api.common.protocol.tasks.get_secrets_list") as mock_list_secrets, + ): + # Set up the mock to raise the expected exception + context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError( + "Not in workflow event loop" + ) + mock_list_secrets.return_value = [] + workflow.execute_activity.return_value = _resp() wf.context = context wf.outcome = outcome @@ -604,7 +677,7 @@ async def _resp(): ) workflow.execute_activity.assert_called_once_with( execute_system, - args=[context, system_call], + args=[execution_input.developer_id, system_call], schedule_to_close_timeout=timedelta( seconds=30 if debug or testing else temporal_schedule_to_close_timeout, ), @@ -877,7 +950,7 @@ async def _resp(): return StepOutcome(output="function_call") wf = TaskExecutionWorkflow() - step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) + step = PromptStep(prompt=[PromptItem(content="hi there", role="user")], auto_run_tools=True) execution_input = ExecutionInput( developer_id=uuid.uuid4(), agent=Agent( @@ -939,7 +1012,11 @@ async def _resp(): @test("task execution workflow: evaluate foreach step expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -976,10 +1053,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1001,7 +1084,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, # Use the partial function here ): result = await wf.eval_step_exprs( ForeachStep(foreach=ForeachDo(in_="$ 1 + 2", do=YieldStep(workflow="wf1"))), @@ -1011,7 +1094,11 @@ async def _(): @test("task execution workflow: evaluate ifelse step expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1048,10 +1135,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1073,7 +1166,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( IfElseWorkflowStep(if_="$ 1 + 2", then=YieldStep(workflow="wf1")), @@ -1083,7 +1176,11 @@ async def _(): @test("task execution workflow: evaluate return step expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1120,10 +1217,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1145,7 +1248,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( ReturnStep(return_={"x": "$ 1 + 2"}), @@ -1155,7 +1258,11 @@ async def _(): @test("task execution workflow: evaluate wait for input step expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1192,10 +1299,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1217,7 +1330,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( WaitForInputStep(wait_for_input=WaitForInputInfo(info={"x": "$ 1 + 2"})), @@ -1227,7 +1340,11 @@ async def _(): @test("task execution workflow: evaluate evaluate expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1264,10 +1381,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1289,7 +1412,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( EvaluateStep(evaluate={"x": "$ 1 + 2"}), @@ -1299,7 +1422,11 @@ async def _(): @test("task execution workflow: evaluate map reduce expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1336,10 +1463,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1361,7 +1494,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( MapReduceStep(over="$ 1 + 2", map=YieldStep(workflow="wf1")), @@ -1371,7 +1504,11 @@ async def _(): @test("task execution workflow: evaluate set expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1408,10 +1545,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1433,7 +1576,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs(SetStep(set={"x": "$ 1 + 2"})) @@ -1441,7 +1584,11 @@ async def _(): @test("task execution workflow: evaluate log expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1478,10 +1625,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1503,7 +1656,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs(LogStep(log="$ steps[0].input['x']")) @@ -1511,7 +1664,11 @@ async def _(): @test("task execution workflow: evaluate switch expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = PromptStep(prompt=[PromptItem(content="hi there", role="user")]) execution_input = ExecutionInput( @@ -1548,10 +1705,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1573,7 +1736,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( SwitchStep( @@ -1588,7 +1751,11 @@ async def _(): @test("task execution workflow: evaluate tool call expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = ToolCallStep(tool="tool1", arguments={"x": "$ 1 + 2"}) execution_input = ExecutionInput( @@ -1633,12 +1800,23 @@ async def _(): ) with ( patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions, + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), patch("agents_api.workflows.task_execution.generate_call_id") as generate_call_id, + patch("agents_api.common.protocol.tasks.workflow") as context_workflow, + patch("agents_api.common.protocol.tasks.get_secrets_list") as mock_list_secrets, ): + # Set up the mock to raise the expected exception + context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError( + "Not in workflow event loop" + ) + mock_list_secrets.return_value = [] generate_call_id.return_value = "XXXX" - list_execution_transitions.return_value = ( + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1660,7 +1838,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( ToolCallStep(tool="tool1", arguments={"x": "$ 1 + 2"}), @@ -1676,7 +1854,11 @@ async def _(): @test("task execution workflow: evaluate yield expressions") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = YieldStep(arguments={"x": "$ 1 + 2"}, workflow="main") execution_input = ExecutionInput( @@ -1713,10 +1895,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1738,7 +1926,7 @@ async def _(): ) with patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ): result = await wf.eval_step_exprs( YieldStep(arguments={"x": "$ 1 + 2"}, workflow="main"), @@ -1756,7 +1944,11 @@ async def _(): @test("task execution workflow: evaluate yield expressions assertion") -async def _(): +async def _(dsn=pg_dsn): + pool = await create_db_pool(dsn=dsn) + + base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool) + wf = TaskExecutionWorkflow() step = ToolCallStep(tool="tool1", arguments={"x": "$ 1 + 2"}) execution_input = ExecutionInput( @@ -1793,10 +1985,16 @@ async def _(): scope_id=scope_id, ), ) - with patch( - "agents_api.common.protocol.tasks.list_execution_transitions", - ) as list_execution_transitions: - list_execution_transitions.return_value = ( + with ( + patch( + "agents_api.common.protocol.tasks.list_execution_inputs_data", + ) as list_execution_inputs_data, + patch( + "agents_api.common.protocol.tasks.list_execution_state_data", + return_value=[], + ), + ): + list_execution_inputs_data.return_value = ( Transition( id=uuid.uuid4(), execution_id=uuid.uuid4(), @@ -1820,7 +2018,7 @@ async def _(): raises(AssertionError), patch( "agents_api.workflows.task_execution.base_evaluate_activity", - new=base_evaluate, + new=base_evaluate_patched, ), ): await wf.eval_step_exprs(YieldStep(arguments={"x": "$ 1 + 2"}, workflow="main")) diff --git a/agents-api/tests/test_task_queries.py b/src/agents-api/tests/test_task_queries.py similarity index 68% rename from agents-api/tests/test_task_queries.py rename to src/agents-api/tests/test_task_queries.py index ec7798b31..afde352e8 100644 --- a/agents-api/tests/test_task_queries.py +++ b/src/agents-api/tests/test_task_queries.py @@ -1,6 +1,7 @@ # Tests for task queries from agents_api.autogen.openapi_model import ( + CreateOrUpdateTaskRequest, CreateTaskRequest, PatchTaskRequest, Task, @@ -400,3 +401,175 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): assert exc.raised.status_code == 404 assert "Task not found" in str(exc.raised.detail) + + +@test("query: get task with workflows and tools - no cartesian product") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that getting a task with both workflows and tools doesn't create duplicates.""" + + pool = await create_db_pool(dsn=dsn) + + # Create a task with workflows + task = await create_task( + developer_id=developer_id, + agent_id=agent.id, + task_id=uuid7(), + data=CreateTaskRequest( + name="test task with workflows", + description="test task with multiple workflows and tools", + input_schema={"type": "object", "additionalProperties": True}, + main=[{"evaluate": {"result": "_"}}], + tools=[ + { + "type": "function", + "name": "workflow1", + "function": {"name": "workflow1", "parameters": {"type": "object"}}, + }, + { + "type": "function", + "name": "workflow2", + "function": {"name": "workflow2", "parameters": {"type": "object"}}, + }, + ], + ), + connection_pool=pool, + ) + + # Get the task + result = await get_task( + developer_id=developer_id, + task_id=task.id, + connection_pool=pool, + ) + + assert result is not None + assert isinstance(result, Task) + + # Verify we have the correct number of tools (no duplicates) + assert len(result.tools) == 2, f"Expected 2 tools, got {len(result.tools)}" + tool_names = [tool.name for tool in result.tools] + assert set(tool_names) == {"workflow1", "workflow2"}, "Tool names don't match" + + +@test("query: get task filters tools by updated_at timestamp") +async def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent): + """Test that tools not updated for the current task version are filtered out.""" + + pool = await create_db_pool(dsn=dsn) + + # Create a task v1 with a tool + task_id = uuid7() + canonical_name = "test_task_tool_lifecycle" + + # V1: Create task with tool_a + await create_or_update_task( + developer_id=developer_id, + agent_id=agent.id, + task_id=task_id, + data=CreateOrUpdateTaskRequest( + name="task v1", + canonical_name=canonical_name, + description="initial task version with tool", + input_schema={"type": "object", "additionalProperties": True}, + main=[{"evaluate": {"result": "v1"}}], + tools=[ + { + "type": "function", + "name": "tool_a", + "function": { + "name": "tool_a", + "description": "Tool A", + "parameters": {"type": "object"}, + }, + } + ], + ), + connection_pool=pool, + ) + + # Check v1 has the tool + result_v1 = await get_task( + developer_id=developer_id, + task_id=task_id, + connection_pool=pool, + ) + assert result_v1 is not None + assert result_v1.version == 1 + tool_names_v1 = [tool.name for tool in result_v1.tools] + assert "tool_a" in tool_names_v1, "Tool A should be present in v1" + assert len(result_v1.tools) == 1, f"Expected 1 tool in v1, got {len(result_v1.tools)}" + + # Wait to ensure different timestamps + import asyncio + + await asyncio.sleep(0.1) + + # V2: Update to remove the tool + await create_or_update_task( + developer_id=developer_id, + agent_id=agent.id, + task_id=task_id, + data=CreateOrUpdateTaskRequest( + name="task v2", + canonical_name=canonical_name, + description="v2 without tool_a", + input_schema={"type": "object", "additionalProperties": True}, + main=[{"evaluate": {"result": "v2"}}], + tools=[], # No tools in v2 + inherit_tools=False, + ), + connection_pool=pool, + ) + + # Check v2 - tool_a should be filtered out because its updated_at is older + result_v2 = await get_task( + developer_id=developer_id, + task_id=task_id, + connection_pool=pool, + ) + assert result_v2 is not None + assert result_v2.version == 2 + tool_names_v2 = [tool.name for tool in result_v2.tools] + assert "tool_a" not in tool_names_v2, "Tool A should be filtered out in v2" + assert len(result_v2.tools) == 0, f"Expected 0 tools in v2, got {len(result_v2.tools)}" + + # Wait to ensure different timestamps + await asyncio.sleep(0.1) + + # V3: Re-add the same tool + await create_or_update_task( + developer_id=developer_id, + agent_id=agent.id, + task_id=task_id, + data=CreateOrUpdateTaskRequest( + name="task v3", + canonical_name=canonical_name, + description="v3 with tool_a re-added", + input_schema={"type": "object", "additionalProperties": True}, + main=[{"evaluate": {"result": "v3"}}], + tools=[ + { + "type": "function", + "name": "tool_a", + "function": { + "name": "tool_a", + "description": "Tool A", + "parameters": {"type": "object"}, + }, + } + ], + ), + connection_pool=pool, + ) + + # Check v3 - tool_a should be present again because it was updated + result_v3 = await get_task( + developer_id=developer_id, + task_id=task_id, + connection_pool=pool, + ) + assert result_v3 is not None + assert result_v3.version == 3 + tool_names_v3 = [tool.name for tool in result_v3.tools] + assert "tool_a" in tool_names_v3, "Tool A should be present again in v3" + assert len(result_v3.tools) == 1, f"Expected 1 tool in v3, got {len(result_v3.tools)}" diff --git a/agents-api/tests/test_task_routes.py b/src/agents-api/tests/test_task_routes.py similarity index 56% rename from agents-api/tests/test_task_routes.py rename to src/agents-api/tests/test_task_routes.py index f82eefadc..951e4d947 100644 --- a/agents-api/tests/test_task_routes.py +++ b/src/agents-api/tests/test_task_routes.py @@ -1,11 +1,18 @@ # Tests for task routes +import json +from unittest.mock import patch +from uuid import UUID + from agents_api.autogen.openapi_model import ( + ExecutionStatusEvent, Transition, ) +from agents_api.env import api_key, api_key_header_name, multi_tenant_mode from agents_api.queries.executions.create_execution_transition import ( create_execution_transition, ) +from fastapi.testclient import TestClient from uuid_extensions import uuid7 from ward import skip, test @@ -287,3 +294,137 @@ async def _(make_request=make_request, task=test_task): execution = response.json() assert execution["status"] == "running" + + +@test("route: stream execution status SSE endpoint") +def _( + client: TestClient = client, + test_execution_started=test_execution_started, + test_developer_id=test_developer_id, +): + # Mock SSE response data that simulates a progressing execution + mock_sse_responses = [ + ExecutionStatusEvent( + execution_id=UUID("068306ff-e0f3-7fe9-8000-0013626a759a"), + status="starting", + updated_at="2025-05-23T12:54:24.565424Z", + error=None, + transition_count=1, + metadata={}, + ), + ExecutionStatusEvent( + execution_id=UUID("068306ff-e0f3-7fe9-8000-0013626a759a"), + status="running", + updated_at="2025-05-23T12:54:30.903484Z", + error=None, + transition_count=2, + metadata={}, + ), + ExecutionStatusEvent( + execution_id=UUID("068306ff-e0f3-7fe9-8000-0013626a759a"), + status="succeeded", + updated_at="2025-05-23T12:56:12.054067Z", + error=None, + transition_count=3, + metadata={}, + ), + ] + + # Simple mock SSE server that immediately returns all events + async def mock_sse_publisher(send_chan, *args, **kwargs): + """Mock publisher that sends all events at once and then exits""" + async with send_chan: + for response in mock_sse_responses: + await send_chan.send({"data": response.model_dump_json()}) + + execution = test_execution_started + url = f"/executions/{execution.id}/status.stream" + + # Prepare authentication headers + headers = {api_key_header_name: api_key} + if multi_tenant_mode: + headers["X-Developer-Id"] = str(test_developer_id) + + # Replace the execution_status_publisher with our simplified mock version + with ( + patch( + "agents_api.routers.tasks.stream_execution_status.execution_status_publisher", + mock_sse_publisher, + ), + client.stream("GET", url, headers=headers) as response, + ): + # Verify response headers and status code + content_type = response.headers.get("content-type", "") + assert content_type.startswith("text/event-stream"), ( + f"Unexpected content type: {content_type}" + ) + assert response.status_code == 200 + + # Read and parse events from the stream + received_events = [] + max_attempts = 10 # Limit the number of attempts to avoid infinite loops + + # Read the stream with a limit on attempts + for i, line in enumerate(response.iter_lines()): + if line: + event_line = line.decode() if isinstance(line, bytes | bytearray) else line + if event_line.startswith("data:"): + # Parse JSON payload + payload = event_line[len("data:") :].strip() + data = json.loads(payload) + received_events.append(data) + + # Check if we've received all events or reached max attempts + if len(received_events) >= len(mock_sse_responses) or i >= max_attempts: + break + + # Ensure we close the connection + response.close() + + # Verify we received the expected events + assert len(received_events) == len(mock_sse_responses), ( + f"Expected {len(mock_sse_responses)} events, got {len(received_events)}" + ) + + # Verify the status progression + assert received_events[0]["status"] == "starting" + assert received_events[1]["status"] == "running" + assert received_events[2]["status"] == "succeeded" + + # Verify other fields + for i, event in enumerate(received_events): + assert event["execution_id"] == "068306ff-e0f3-7fe9-8000-0013626a759a" + assert isinstance(event["updated_at"], str) + assert event["transition_count"] == i + 1 + + +@test("route: stream execution status SSE endpoint - non-existing execution") +def _(client: TestClient = client, test_developer_id=test_developer_id): + # Create a random UUID for a non-existing execution + non_existing_execution_id = uuid7() + url = f"/executions/{non_existing_execution_id}/status.stream" + + # Prepare authentication headers + headers = {api_key_header_name: api_key} + if multi_tenant_mode: + headers["X-Developer-Id"] = str(test_developer_id) + + # Make the request to the SSE endpoint - should return a 404 error + response = client.get(url, headers=headers) + + # Verify response status code is 404 + assert response.status_code == 404 + + # Parse the error response + error_data = response.json() + + # Verify error structure + assert "error" in error_data + assert "message" in error_data["error"] + assert "code" in error_data["error"] + assert "type" in error_data["error"] + + # Verify specific error details + assert f"Execution {non_existing_execution_id} not found" in error_data["error"]["message"] + assert error_data["error"]["code"] == "http_404" + assert error_data["error"]["type"] == "http_error" diff --git a/agents-api/tests/test_task_validation.py b/src/agents-api/tests/test_task_validation.py similarity index 100% rename from agents-api/tests/test_task_validation.py rename to src/agents-api/tests/test_task_validation.py diff --git a/agents-api/tests/test_tool_call_step.py b/src/agents-api/tests/test_tool_call_step.py similarity index 100% rename from agents-api/tests/test_tool_call_step.py rename to src/agents-api/tests/test_tool_call_step.py diff --git a/agents-api/tests/test_tool_queries.py b/src/agents-api/tests/test_tool_queries.py similarity index 100% rename from agents-api/tests/test_tool_queries.py rename to src/agents-api/tests/test_tool_queries.py diff --git a/src/agents-api/tests/test_tool_runner.py b/src/agents-api/tests/test_tool_runner.py new file mode 100644 index 000000000..cc3a5b0a7 --- /dev/null +++ b/src/agents-api/tests/test_tool_runner.py @@ -0,0 +1,148 @@ +from unittest.mock import patch + +from agents_api.autogen.openapi_model import ( + ApiCallDef, + CreateToolRequest, + DummyIntegrationDef, + FunctionDef, + SystemDef, +) +from agents_api.common.utils.tool_runner import format_tool +from ward import test + + +@test("format_tool correctly formats function tool") +async def _(): + tool = CreateToolRequest( + name="test_function", + type="function", + function=FunctionDef( + parameters={"type": "object", "properties": {"param1": {"type": "string"}}}, + ), + description="A test function", + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "test_function" + assert result["function"]["description"] == "A test function" + assert result["function"]["parameters"]["properties"]["param1"]["type"] == "string" + + +@test("format_tool correctly formats integration tool") +async def _(): + with patch("agents_api.clients.integrations.convert_to_openai_tool") as mock_convert: + mock_convert.return_value = { + "type": "function", + "function": { + "name": "slack", + "description": "Send message to Slack", + "parameters": {"type": "object"}, + }, + } + + tool = CreateToolRequest( + name="dummy_integration", + type="integration", + integration=DummyIntegrationDef(provider="dummy", method="post_message"), + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "slack" + mock_convert.assert_called_once_with(provider="dummy", method="post_message") + + +@test("format_tool correctly formats api_call tool") +async def _(): + tool = CreateToolRequest( + name="weather_api", + type="api_call", + description="Get weather data", + api_call=ApiCallDef( + method="GET", + url="https://api.weather.com", + params_schema={"type": "object", "properties": {"city": {"type": "string"}}}, + ), + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "weather_api" + assert result["function"]["description"] == "Get weather data" + assert result["function"]["parameters"]["properties"]["city"]["type"] == "string" + + +@test("format_tool handles missing description") +async def _(): + tool = CreateToolRequest( + name="simple_function", + type="function", + function=FunctionDef(parameters={"type": "object"}), + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "simple_function" + assert result["function"]["description"] is None + assert result["function"]["parameters"]["type"] == "object" + + +@test("format_tool correctly formats system tool") +async def _(): + # Use a real system definition that maps to an actual handler + tool = CreateToolRequest( + name="get_agent", + type="system", + description="Retrieve agent information", + system=SystemDef( + resource="agent", + operation="get", + ), + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "get_agent" + assert result["function"]["description"] == "Retrieve agent information" + # Check that parameters schema was generated from actual handler + assert "properties" in result["function"]["parameters"] + # The actual get_agent handler should have these parameters + assert "agent_id" in result["function"]["parameters"]["properties"] + # Check that the parameter has proper schema + assert result["function"]["parameters"]["properties"]["agent_id"]["type"] == "string" + assert result["function"]["parameters"]["properties"]["agent_id"]["format"] == "uuid" + + +@test("format_tool uses handler docstring when no description provided") +async def _(): + # Use a real system definition without providing a description + tool = CreateToolRequest( + name="list_agents", + type="system", + # No description provided - should fallback to handler's docstring + system=SystemDef( + resource="agent", + operation="list", + ), + ) + + result = await format_tool(tool) + + assert result["type"] == "function" + assert result["function"]["name"] == "list_agents" + # Should use handler's docstring when no description provided + assert result["function"]["description"] is not None + assert len(result["function"]["description"]) > 0 + # The description should come from the actual handler's docstring + assert "agent" in result["function"]["description"].lower() + # Check that parameters schema was generated + assert "properties" in result["function"]["parameters"] + # List operations typically have pagination parameters + assert "limit" in result["function"]["parameters"]["properties"] + assert "offset" in result["function"]["parameters"]["properties"] diff --git a/src/agents-api/tests/test_transitions_queries.py b/src/agents-api/tests/test_transitions_queries.py new file mode 100644 index 000000000..6af08347a --- /dev/null +++ b/src/agents-api/tests/test_transitions_queries.py @@ -0,0 +1,384 @@ +"""Tests for transitions queries.""" + +from datetime import timedelta +from uuid import UUID + +from agents_api.autogen.openapi_model import CreateTransitionRequest +from agents_api.clients.pg import create_db_pool +from agents_api.common.utils.datetime import datetime, utcnow +from agents_api.queries.executions import ( + list_execution_inputs_data, + list_execution_state_data, +) +from agents_api.queries.executions.create_execution_transition import ( + create_execution_transition, +) +from asyncpg import Pool +from uuid_extensions import uuid7 +from ward import test + +from tests.fixtures import ( + custom_scope_id, + pg_dsn, + test_developer_id, + test_execution_started, + test_task, +) + + +@test("query: list execution inputs data") +async def _( + dsn=pg_dsn, + developer_id=test_developer_id, + scope_id=custom_scope_id, + execution_started=test_execution_started, +): + pool = await create_db_pool(dsn=dsn) + execution = execution_started + + data = [] + + for i in range(10): + data.append( + CreateTransitionRequest( + type="init_branch", + output=i + 1, + current={ + "workflow": f"`main`[0].foreach[{max(0, i - 1)}]", + "step": 0, + "scope_id": scope_id, + }, + next={"workflow": f"`main`[0].foreach[{i}]", "step": 0, "scope_id": scope_id}, + ) + ) + + data.append( + CreateTransitionRequest( + type="finish_branch", + output={"inside_foreach": f"inside foreach {i}"}, + current={ + "workflow": f"`main`[0].foreach[{i}]", + "step": 0, + "scope_id": scope_id, + }, + next=None, + ) + ) + + data.append( + CreateTransitionRequest( + type="step", + output=[{"inside_foreach": "inside foreach"}], + current={"workflow": "main", "step": 0, "scope_id": scope_id}, + next={"workflow": "main", "step": 1, "scope_id": scope_id}, + ) + ) + + data.append( + CreateTransitionRequest( + type="step", + output={"inside_evaluate": "inside evaluate"}, + current={"workflow": "main", "step": 1, "scope_id": scope_id}, + next={"workflow": "main", "step": 2, "scope_id": scope_id}, + ) + ) + + data.append( + CreateTransitionRequest( + type="finish", + output={"final_step": "final step"}, + current={"workflow": "main", "step": 2, "scope_id": scope_id}, + next=None, + ) + ) + + for transition in data: + await create_execution_transition( + developer_id=developer_id, + execution_id=execution.id, + data=transition, + connection_pool=pool, + ) + + transitions = await list_execution_inputs_data( + execution_id=execution.id, + scope_id=scope_id, + direction="asc", + connection_pool=pool, + ) + + assert len(transitions) == 3 + assert transitions[0].output == {} + assert transitions[1].output == [{"inside_foreach": "inside foreach"}] + assert transitions[2].output == {"inside_evaluate": "inside evaluate"} + + +@test("query: list execution state data") +async def _( + dsn=pg_dsn, + developer_id=test_developer_id, + scope_id=custom_scope_id, + execution_started=test_execution_started, +): + pool = await create_db_pool(dsn=dsn) + execution = execution_started + + data = [] + + data.append( + CreateTransitionRequest( + type="step", + output={"set_step": "set step"}, + current={"workflow": "main", "step": 0, "scope_id": scope_id}, + next={"workflow": "main", "step": 1, "scope_id": scope_id}, + metadata={"step_type": "SetStep"}, + ) + ) + + data.append( + CreateTransitionRequest( + type="finish", + output={"final_step": "final step"}, + current={"workflow": "main", "step": 1, "scope_id": scope_id}, + next=None, + ) + ) + + for transition in data: + await create_execution_transition( + developer_id=developer_id, + execution_id=execution.id, + data=transition, + connection_pool=pool, + ) + + transitions = await list_execution_state_data( + execution_id=execution.id, + scope_id=scope_id, + direction="asc", + connection_pool=pool, + ) + + assert len(transitions) == 1 + assert transitions[0].output == {"set_step": "set step"} + + +async def create_execution( + pool: Pool, + developer_id: UUID, + task_id: UUID, + created_at: datetime, +): + execution_id = uuid7() + create_execution_query = """ + INSERT INTO executions + ( + developer_id, + task_id, + execution_id, + input, + metadata, + task_version, + created_at + ) + VALUES + ( + $1, + $2, + $3, + $4, + $5, + 1, + $6 + ) + RETURNING *; + """ + + await pool.fetchrow( + create_execution_query, + str(developer_id), + str(task_id), + str(execution_id), + {"test": "test"}, + {}, + created_at, + ) + + return execution_id + + +async def create_transition( + pool: Pool, + execution_id: UUID, + type: str, + current_step: dict, + next_step: dict, + output: dict, + metadata: dict, + created_at: datetime, +): + create_execution_transition_query = """ + INSERT INTO transitions + ( + execution_id, + transition_id, + type, + step_label, + current_step, + next_step, + output, + task_token, + metadata, + created_at + ) + VALUES + ( + $1, + $2, + $3, + $4, + $5, + $6, + $7, + $8, + $9, + $10 + ) + RETURNING *; + """ + + transition_id = uuid7() + await pool.fetchrow( + create_execution_transition_query, + str(execution_id), + str(transition_id), + type, + "label", + current_step, + next_step, + output, + None, + metadata, + created_at, + ) + + +@test("query: list execution inputs data: search_window") +async def _( + dsn=pg_dsn, + developer_id=test_developer_id, + scope_id=custom_scope_id, + task=test_task, +): + pool = await create_db_pool(dsn=dsn) + + execution_id = await create_execution( + pool, developer_id, task.id, utcnow() - timedelta(weeks=1) + ) + + await create_transition( + pool, + execution_id, + "init", + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"init_step": "init step"}, + {}, + utcnow() - timedelta(weeks=1), + ) + + await create_transition( + pool, + execution_id, + "step", + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"workflow_name": "main", "step_index": 1, "scope_id": scope_id}, + {"step_step": "step step"}, + {}, + utcnow() - timedelta(days=1), + ) + + transitions_with_search_window = await list_execution_inputs_data( + execution_id=execution_id, + scope_id=scope_id, + direction="asc", + connection_pool=pool, + search_window=timedelta(days=5), + ) + + assert len(transitions_with_search_window) == 1 + assert transitions_with_search_window[0].output == {"step_step": "step step"} + + transitions_without_search_window = await list_execution_inputs_data( + execution_id=execution_id, scope_id=scope_id, direction="asc", connection_pool=pool + ) + + assert len(transitions_without_search_window) == 2 + assert transitions_without_search_window[0].output == {"init_step": "init step"} + assert transitions_without_search_window[1].output == {"step_step": "step step"} + + +@test("query: list execution state data: search_window") +async def _( + dsn=pg_dsn, + developer_id=test_developer_id, + scope_id=custom_scope_id, + task=test_task, +): + pool = await create_db_pool(dsn=dsn) + + execution_id = await create_execution( + pool, developer_id, task.id, utcnow() - timedelta(weeks=1) + ) + + await create_transition( + pool, + execution_id, + "init", + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"init_step": "init step"}, + {}, + utcnow() - timedelta(weeks=1), + ) + + await create_transition( + pool, + execution_id, + "step", + {"workflow_name": "main", "step_index": 0, "scope_id": scope_id}, + {"workflow_name": "main", "step_index": 1, "scope_id": scope_id}, + {"init_step": "init step"}, + {"step_type": "SetStep"}, + utcnow() - timedelta(weeks=1), + ) + + await create_transition( + pool, + execution_id, + "step", + {"workflow_name": "main", "step_index": 1, "scope_id": scope_id}, + {"workflow_name": "main", "step_index": 2, "scope_id": scope_id}, + {"step_step": "step step"}, + {"step_type": "SetStep"}, + utcnow() - timedelta(days=1), + ) + + transitions_with_search_window = await list_execution_state_data( + execution_id=execution_id, + scope_id=scope_id, + direction="asc", + connection_pool=pool, + search_window=timedelta(days=5), + ) + + assert len(transitions_with_search_window) == 1 + assert transitions_with_search_window[0].output == {"step_step": "step step"} + + transitions_without_search_window = await list_execution_state_data( + execution_id=execution_id, scope_id=scope_id, direction="asc", connection_pool=pool + ) + + assert len(transitions_without_search_window) == 2 + assert transitions_without_search_window[0].output == {"init_step": "init step"} + assert transitions_without_search_window[1].output == {"step_step": "step step"} diff --git a/src/agents-api/tests/test_usage_cost.py b/src/agents-api/tests/test_usage_cost.py new file mode 100644 index 000000000..5ec15eb6e --- /dev/null +++ b/src/agents-api/tests/test_usage_cost.py @@ -0,0 +1,271 @@ +""" +Tests for the usage cost tracking functionality. +""" + +import asyncio +from datetime import UTC, datetime, timedelta +from decimal import Decimal + +from agents_api.clients.pg import create_db_pool +from agents_api.queries.developers.create_developer import create_developer +from agents_api.queries.usage.create_usage_record import create_usage_record +from agents_api.queries.usage.get_user_cost import get_usage_cost +from uuid_extensions import uuid7 +from ward import test + +from .fixtures import pg_dsn, test_developer_id + + +@test("query: get_usage_cost returns zero cost when no usage records exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id) -> None: + """Test that get_usage_cost returns zero cost when no usage records exist.""" + pool = await create_db_pool(dsn=dsn) + + # Calculate expected cost + expected_cost = 0.0 + + # Get the usage cost + cost_record = await get_usage_cost(developer_id=developer_id, connection_pool=pool) + + # Verify the record + assert cost_record is not None, "Should have a cost record" + assert cost_record["developer_id"] == developer_id + assert "cost" in cost_record, "Should have a cost field" + assert isinstance(cost_record["cost"], Decimal), "Cost should be a Decimal" + assert cost_record["cost"] == expected_cost, ( + f"Cost should be {expected_cost}, got {cost_record['cost']}" + ) + assert "month" in cost_record, "Should have a month field" + assert isinstance(cost_record["month"], datetime), "Month should be a datetime" + + +@test("query: get_usage_cost returns the correct cost when records exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id) -> None: + """Test that get_usage_cost returns the correct cost for a developer with usage records.""" + pool = await create_db_pool(dsn=dsn) + + # Create some usage records for the developer + record1 = await create_usage_record( + developer_id=developer_id, + model="gpt-4o-mini", + prompt_tokens=1000, + completion_tokens=2000, + connection_pool=pool, + ) + + record2 = await create_usage_record( + developer_id=developer_id, + model="gpt-4o-mini", + prompt_tokens=500, + completion_tokens=1500, + connection_pool=pool, + ) + + # Calculate expected cost + expected_cost = record1[0]["cost"] + record2[0]["cost"] + + # Force the continuous aggregate to refresh + await pool.execute("CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)") + + # Give a small delay for the view to update + await asyncio.sleep(0.1) + + # Get the usage cost + cost_record = await get_usage_cost(developer_id=developer_id, connection_pool=pool) + + # Verify the record + assert cost_record is not None, "Should have a cost record" + assert cost_record["developer_id"] == developer_id + assert "cost" in cost_record, "Should have a cost field" + assert isinstance(cost_record["cost"], Decimal), "Cost should be a Decimal" + assert cost_record["cost"] == expected_cost, ( + f"Cost should be {expected_cost}, got {cost_record['cost']}" + ) + assert "month" in cost_record, "Should have a month field" + assert isinstance(cost_record["month"], datetime), "Month should be a datetime" + + +@test("query: get_usage_cost returns correct results for custom API usage") +async def _(dsn=pg_dsn) -> None: + """Test that get_usage_cost only includes non-custom API usage in the cost calculation.""" + pool = await create_db_pool(dsn=dsn) + + # Create a new developer for this test + dev_id = uuid7() + email = f"test-{dev_id}@example.com" + await create_developer( + email=email, + active=True, + tags=["test"], + settings={}, + developer_id=dev_id, + connection_pool=pool, + ) + + # Create usage records with custom API + await create_usage_record( + developer_id=dev_id, + model="gpt-4o-mini", + prompt_tokens=1000, + completion_tokens=2000, + custom_api_used=True, # This shouldn't be counted in the cost + connection_pool=pool, + ) + + # Create usage records without custom API + non_custom_cost = await create_usage_record( + developer_id=dev_id, + model="gpt-4o-mini", + prompt_tokens=1000, + completion_tokens=2000, + custom_api_used=False, # This should be counted + connection_pool=pool, + ) + + # Calculate what the expected cost should be + expected_cost = non_custom_cost[0]["cost"] + + # Force the continuous aggregate to refresh + await pool.execute("CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)") + + # Give a small delay for the view to update + await asyncio.sleep(0.1) + + # Get the usage cost + cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool) + + # Verify the record + assert cost_record is not None, "Should have a cost record" + assert cost_record["developer_id"] == dev_id + assert cost_record["cost"] == expected_cost, ( + f"Cost should match expected: {expected_cost} but got {cost_record['cost']}" + ) + + +@test("query: get_usage_cost handles inactive developers correctly") +async def _(dsn=pg_dsn) -> None: + """Test that get_usage_cost correctly handles inactive developers.""" + pool = await create_db_pool(dsn=dsn) + + # Create a new inactive developer + dev_id = uuid7() + email = f"test-{dev_id}@example.com" + await create_developer( + email=email, + active=False, # Developer is inactive + tags=["test"], + settings={}, + developer_id=dev_id, + connection_pool=pool, + ) + + # Create usage records for the inactive developer + record = await create_usage_record( + developer_id=dev_id, + model="gpt-4o-mini", + prompt_tokens=1000, + completion_tokens=2000, + connection_pool=pool, + ) + + # Calculate expected cost + expected_cost = record[0]["cost"] + + # Force the continuous aggregate to refresh + await pool.execute("CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)") + + # Give a small delay for the view to update + await asyncio.sleep(0.1) + + # Get the usage cost + cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool) + + # Verify the record + assert cost_record is not None, "Should have a cost record even for inactive developers" + assert cost_record["developer_id"] == dev_id + assert cost_record["active"] is False, "Developer should be marked as inactive" + assert cost_record["cost"] == expected_cost, ( + f"Cost should be {expected_cost}, got {cost_record['cost']}" + ) + + +@test("query: get_usage_cost sorts by month correctly and returns the most recent") +async def _(dsn=pg_dsn) -> None: + """Test that get_usage_cost returns the most recent month's cost when multiple months exist.""" + pool = await create_db_pool(dsn=dsn) + + # Create a new developer for this test + dev_id = uuid7() + email = f"test-{dev_id}@example.com" + await create_developer( + email=email, + active=True, + tags=["test"], + settings={}, + developer_id=dev_id, + connection_pool=pool, + ) + + # Create usage records for different months - using timezone-aware datetimes + now = datetime.now(UTC) + current_month = datetime(now.year, now.month, 1, tzinfo=UTC) + middle_month = current_month - timedelta(days=30) + oldest_month = current_month - timedelta(days=60) + + # Create a cost for the current month + current_cost_record = await create_usage_record( + developer_id=dev_id, + model="gpt-4o-mini", + prompt_tokens=600, + completion_tokens=1200, + connection_pool=pool, + ) + current_cost = current_cost_record[0]["cost"] + + # Create a cost for the middle month (insert with timestamp) + await pool.execute( + """ + INSERT INTO usage ( + developer_id, model, prompt_tokens, completion_tokens, cost, created_at + ) VALUES ($1, 'gpt-4o-mini', 400, 800, $2, $3) + """, + dev_id, + Decimal("0.004000"), + middle_month, + ) + + # Create a cost for the oldest month + await pool.execute( + """ + INSERT INTO usage ( + developer_id, model, prompt_tokens, completion_tokens, cost, created_at + ) VALUES ($1, 'gpt-4o-mini', 200, 400, $2, $3) + """, + dev_id, + Decimal("0.002000"), + oldest_month, + ) + + # Force the continuous aggregate to refresh + await pool.execute("CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)") + + # Give a small delay for the view to update + await asyncio.sleep(0.1) + + # Get the usage cost + cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool) + + # We expect the most recent month to be returned + assert cost_record is not None, "Should have a cost record" + assert cost_record["developer_id"] == dev_id + + # The month in the record should be close to the current month's date + # Ensure both datetimes are timezone-aware + record_month = cost_record["month"] + month_diff = abs((record_month - current_month).total_seconds()) + assert month_diff < 86400, "Month should be near the start of the current month" + + # The cost should match only the current month + assert cost_record["cost"] == current_cost, ( + f"Cost should match current month's usage only: expected {current_cost}, got {cost_record['cost']}" + ) diff --git a/agents-api/tests/test_usage_tracking.py b/src/agents-api/tests/test_usage_tracking.py similarity index 76% rename from agents-api/tests/test_usage_tracking.py rename to src/agents-api/tests/test_usage_tracking.py index 26f29a92c..62cc59f87 100644 --- a/agents-api/tests/test_usage_tracking.py +++ b/src/agents-api/tests/test_usage_tracking.py @@ -7,8 +7,16 @@ from unittest.mock import patch from agents_api.clients.pg import create_db_pool -from agents_api.common.utils.usage import track_embedding_usage, track_usage -from agents_api.queries.usage.create_usage_record import create_usage_record +from agents_api.common.utils.usage import ( + is_llama_based_model, + track_embedding_usage, + track_usage, +) +from agents_api.queries.usage.create_usage_record import ( + AVG_INPUT_COST_PER_TOKEN, + AVG_OUTPUT_COST_PER_TOKEN, + create_usage_record, +) from litellm import cost_per_token from litellm.utils import Message, ModelResponse, Usage, token_counter from ward import test @@ -107,9 +115,16 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id) -> None: connection_pool=pool, ) + input_cost, completion_cost = cost_per_token( + "gpt-4o-mini", prompt_tokens=100, completion_tokens=100 + ) + cost = input_cost + completion_cost + cost = Decimal(str(cost)).quantize(Decimal("0.000001")) + assert len(response) == 1 record = response[0] assert record["custom_api_used"] is True + assert record["cost"] == cost @test("query: create_usage_record with fallback pricing") @@ -142,12 +157,16 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id) -> None: completion_tokens=100, connection_pool=pool, ) - expected_call = f"No fallback pricing found for model {unknown_model}" actual_call = mock_print.call_args_list[-1].args[0] + total_cost = AVG_INPUT_COST_PER_TOKEN * 100 + AVG_OUTPUT_COST_PER_TOKEN * 100 + + expected_call = ( + f"No fallback pricing found for model {unknown_model}, using avg costs: {total_cost}" + ) assert len(response) == 1 record = response[0] - assert record["cost"] == Decimal("0.000000") + assert record["cost"] == Decimal(str(total_cost)).quantize(Decimal("0.000001")) assert record["estimated"] is True assert expected_call == actual_call @@ -173,6 +192,17 @@ async def _(developer_id=test_developer_id) -> None: assert call_args["completion_tokens"] == 100 +@test("utils: is_llama_based_model returns True for llama models") +async def _() -> None: + assert is_llama_based_model("llama-3.1-8b-instruct") is True + assert is_llama_based_model("meta-llama/llama-4-maverick") is True + assert is_llama_based_model("meta-llama/llama-4-maverick:free") is True + assert is_llama_based_model("gpt-4o-mini") is False + assert is_llama_based_model("claude-3.5-sonnet") is False + assert is_llama_based_model("gemini-1.5-pro") is False + assert is_llama_based_model("deepseek-chat") is False + + @test("utils: track_usage without response.usage") async def _(developer_id=test_developer_id) -> None: with patch("agents_api.common.utils.usage.create_usage_record") as mock_create_usage_record: @@ -257,3 +287,38 @@ async def _(developer_id=test_developer_id) -> None: assert call_args["prompt_tokens"] == expected_tokens assert call_args["completion_tokens"] == 0 assert call_args["model"] == "text-embedding-3-large" + + +@test("utils: track_usage with llama model") +async def _(dsn=pg_dsn, developer_id=test_developer_id) -> None: + with patch("agents_api.queries.usage.create_usage_record.llama_model_multiplier", 0.5): + pool = await create_db_pool(dsn=dsn) + response = await create_usage_record( + developer_id=developer_id, + model="llama-3.1-8b-instruct", + prompt_tokens=100, + completion_tokens=100, + is_llama_model=False, + connection_pool=pool, + ) + + assert len(response) == 1 + record = response[0] + record_cost_without_multiplier = record["cost"] + + response = await create_usage_record( + developer_id=developer_id, + model="llama-3.1-8b-instruct", + prompt_tokens=100, + completion_tokens=100, + is_llama_model=True, + connection_pool=pool, + ) + + assert len(response) == 1 + record = response[0] + record_cost_with_multiplier = record["cost"] + + expected_cost = record_cost_without_multiplier * Decimal("0.5") + tolerance = Decimal("0.000001") + assert abs(record_cost_with_multiplier - expected_cost) <= tolerance diff --git a/agents-api/tests/test_user_queries.py b/src/agents-api/tests/test_user_queries.py similarity index 51% rename from agents-api/tests/test_user_queries.py rename to src/agents-api/tests/test_user_queries.py index e61b96fe9..208fb3ca1 100644 --- a/agents-api/tests/test_user_queries.py +++ b/src/agents-api/tests/test_user_queries.py @@ -27,7 +27,7 @@ from uuid_extensions import uuid7 from ward import raises, test -from tests.fixtures import pg_dsn, test_developer_id, test_user +from tests.fixtures import pg_dsn, test_developer_id, test_project, test_user # Test UUIDs for consistent testing TEST_DEVELOPER_ID = UUID("123e4567-e89b-12d3-a456-426614174000") @@ -53,6 +53,46 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id): assert user.about == "test user about" +@test("query: create user with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that a user can be successfully created with a project.""" + + pool = await create_db_pool(dsn=dsn) + user = await create_user( + developer_id=developer_id, + data=CreateUserRequest( + name="test user with project", + about="test user about", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + assert isinstance(user, User) + assert user.id is not None + assert user.project == project.canonical_name + + +@test("query: create user with invalid project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id): + """Test that creating a user with an invalid project raises an exception.""" + + pool = await create_db_pool(dsn=dsn) + + with raises(HTTPException) as exc: + await create_user( + developer_id=developer_id, + data=CreateUserRequest( + name="test user with invalid project", + about="test user about", + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + @test("query: create or update user sql") async def _(dsn=pg_dsn, developer_id=test_developer_id): """Test that a user can be successfully created or updated.""" @@ -73,6 +113,26 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id): assert user.about == "test user about" +@test("query: create or update user with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that a user can be successfully created or updated with a project.""" + + pool = await create_db_pool(dsn=dsn) + user = await create_or_update_user( + developer_id=developer_id, + user_id=uuid7(), + data=CreateOrUpdateUserRequest( + name="test user with project", + about="test user about", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + assert isinstance(user, User) + assert user.id is not None + assert user.project == project.canonical_name + + @test("query: update user sql") async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): """Test that an existing user's information can be successfully updated.""" @@ -93,6 +153,64 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): assert update_result.updated_at > user.created_at +@test("query: update user with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user, project=test_project): + """Test that an existing user's information can be successfully updated with a project.""" + + pool = await create_db_pool(dsn=dsn) + update_result = await update_user( + user_id=user.id, + developer_id=developer_id, + data=UpdateUserRequest( + name="updated user with project", + about="updated user about", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + # Verify the user was updated by listing all users + users = await list_users( + developer_id=developer_id, + connection_pool=pool, + ) # type: ignore[not-callable] + + assert users is not None + assert isinstance(users, list) + assert len(users) > 0 + + # Find the updated user in the list + updated_user = next((u for u in users if u.id == user.id), None) + assert updated_user is not None + assert updated_user.name == "updated user with project" + assert updated_user.project == project.canonical_name + + assert update_result is not None + assert isinstance(update_result, User) + assert update_result.updated_at > user.created_at + assert update_result.project == project.canonical_name + + +@test("query: update user, project does not exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): + """Test that an existing user's information can be successfully updated with a project that does not exist.""" + + pool = await create_db_pool(dsn=dsn) + with raises(HTTPException) as exc: + await update_user( + user_id=user.id, + developer_id=developer_id, + data=UpdateUserRequest( + name="updated user with project", + about="updated user about", + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + @test("query: get user not exists sql") async def _(dsn=pg_dsn, developer_id=test_developer_id): """Test that retrieving a non-existent user returns an empty result.""" @@ -139,6 +257,33 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): assert all(isinstance(user, User) for user in result) +@test("query: list users with project filter sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project): + """Test that listing users with a project filter returns the correct users.""" + + pool = await create_db_pool(dsn=dsn) + + # First create a user with the specific project + await create_user( + developer_id=developer_id, + data=CreateUserRequest( + name="test user for project filter", + about="test user about", + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + # Now fetch with project filter + result = await list_users( + developer_id=developer_id, project=project.canonical_name, connection_pool=pool + ) # type: ignore[not-callable] + + assert isinstance(result, list) + assert all(isinstance(user, User) for user in result) + assert all(user.project == project.canonical_name for user in result) + + @test("query: list users sql, invalid limit") async def _(dsn=pg_dsn, developer_id=test_developer_id): """Test that listing users with an invalid limit raises an exception.""" @@ -233,6 +378,66 @@ async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): assert patch_result.updated_at > user.created_at +@test("query: patch user with project sql") +async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user, project=test_project): + """Test that a user can be successfully patched with a project.""" + + pool = await create_db_pool(dsn=dsn) + patch_result = await patch_user( + developer_id=developer_id, + user_id=user.id, + data=PatchUserRequest( + name="patched user with project", + about="patched user about", + metadata={"test": "metadata"}, + project=project.canonical_name, + ), + connection_pool=pool, + ) # type: ignore[not-callable] + # Verify the user was updated by listing all users + users = await list_users( + developer_id=developer_id, + connection_pool=pool, + ) # type: ignore[not-callable] + + assert users is not None + assert isinstance(users, list) + assert len(users) > 0 + + # Find the updated user in the list + updated_user = next((u for u in users if u.id == user.id), None) + assert updated_user is not None + assert updated_user.name == "patched user with project" + assert updated_user.project == project.canonical_name + + assert patch_result is not None + assert isinstance(patch_result, User) + assert patch_result.updated_at > user.created_at + assert patch_result.project == project.canonical_name + + +@test("query: patch user, project does not exist") +async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): + """Test that a user can be successfully patched with a project that does not exist.""" + + pool = await create_db_pool(dsn=dsn) + with raises(HTTPException) as exc: + await patch_user( + developer_id=developer_id, + user_id=user.id, + data=PatchUserRequest( + name="patched user with project", + about="patched user about", + metadata={"test": "metadata"}, + project="invalid_project", + ), + connection_pool=pool, + ) # type: ignore[not-callable] + + assert exc.raised.status_code == 404 + assert "Project 'invalid_project' not found" in exc.raised.detail + + @test("query: delete user sql") async def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user): """Test that a user can be successfully deleted.""" diff --git a/agents-api/tests/test_user_routes.py b/src/agents-api/tests/test_user_routes.py similarity index 55% rename from agents-api/tests/test_user_routes.py rename to src/agents-api/tests/test_user_routes.py index b158bea00..24f54f8ea 100644 --- a/agents-api/tests/test_user_routes.py +++ b/src/agents-api/tests/test_user_routes.py @@ -3,7 +3,7 @@ from uuid_extensions import uuid7 from ward import test -from tests.fixtures import client, make_request, test_user +from tests.fixtures import client, make_request, test_project, test_user @test("route: unauthorized should fail") @@ -38,6 +38,24 @@ def _(make_request=make_request): assert response.status_code == 201 +@test("route: create user with project") +def _(make_request=make_request, project=test_project): + data = { + "name": "test user with project", + "about": "test user about", + "project": project.canonical_name, + } + + response = make_request( + method="POST", + url="/users", + json=data, + ) + + assert response.status_code == 201 + assert response.json()["project"] == project.canonical_name + + @test("route: get user not exists") def _(make_request=make_request): user_id = str(uuid7()) @@ -121,6 +139,38 @@ def _(make_request=make_request, user=test_user): assert user["about"] == "updated user about" +@test("route: update user with project") +def _(make_request=make_request, user=test_user, project=test_project): + data = { + "name": "updated user with project", + "about": "updated user about", + "project": project.canonical_name, + } + + user_id = str(user.id) + response = make_request( + method="PUT", + url=f"/users/{user_id}", + json=data, + ) + + assert response.status_code == 200 + + user_id = response.json()["id"] + + response = make_request( + method="GET", + url=f"/users/{user_id}", + ) + + assert response.status_code == 200 + user = response.json() + + assert user["name"] == "updated user with project" + assert user["about"] == "updated user about" + assert user["project"] == project.canonical_name + + @test("query: patch user") def _(make_request=make_request, user=test_user): user_id = str(user.id) @@ -152,6 +202,39 @@ def _(make_request=make_request, user=test_user): assert user["about"] == "patched user about" +@test("query: patch user with project") +def _(make_request=make_request, user=test_user, project=test_project): + user_id = str(user.id) + + data = { + "name": "patched user with project", + "about": "patched user about", + "project": project.canonical_name, + } + + response = make_request( + method="PATCH", + url=f"/users/{user_id}", + json=data, + ) + + assert response.status_code == 200 + + user_id = response.json()["id"] + + response = make_request( + method="GET", + url=f"/users/{user_id}", + ) + + assert response.status_code == 200 + user = response.json() + + assert user["name"] == "patched user with project" + assert user["about"] == "patched user about" + assert user["project"] == project.canonical_name + + @test("query: list users") def _(make_request=make_request): response = make_request( @@ -167,6 +250,39 @@ def _(make_request=make_request): assert len(users) > 0 +@test("query: list users with project filter") +def _(make_request=make_request, project=test_project): + # First create a user with the project + data = { + "name": "test user for project filter", + "about": "test user about", + "project": project.canonical_name, + } + + make_request( + method="POST", + url="/users", + json=data, + ) + + # Then list users with project filter + response = make_request( + method="GET", + url="/users", + params={ + "project": project.canonical_name, + }, + ) + + assert response.status_code == 200 + response = response.json() + users = response["items"] + + assert isinstance(users, list) + assert len(users) > 0 + assert any(user["project"] == project.canonical_name for user in users) + + @test("query: list users with right metadata filter") def _(make_request=make_request, user=test_user): response = make_request( diff --git a/agents-api/tests/test_validation_errors.py b/src/agents-api/tests/test_validation_errors.py similarity index 100% rename from agents-api/tests/test_validation_errors.py rename to src/agents-api/tests/test_validation_errors.py diff --git a/agents-api/tests/test_workflow_helpers.py b/src/agents-api/tests/test_workflow_helpers.py similarity index 100% rename from agents-api/tests/test_workflow_helpers.py rename to src/agents-api/tests/test_workflow_helpers.py diff --git a/agents-api/tests/test_workflow_routes.py b/src/agents-api/tests/test_workflow_routes.py similarity index 100% rename from agents-api/tests/test_workflow_routes.py rename to src/agents-api/tests/test_workflow_routes.py diff --git a/agents-api/tests/utils.py b/src/agents-api/tests/utils.py similarity index 100% rename from agents-api/tests/utils.py rename to src/agents-api/tests/utils.py diff --git a/src/agents-api/uuid_extensions.pyi b/src/agents-api/uuid_extensions.pyi new file mode 100644 index 000000000..096d3f663 --- /dev/null +++ b/src/agents-api/uuid_extensions.pyi @@ -0,0 +1,89 @@ +"""Local typing stub for the external ``uuid_extensions`` package. + +Only the parts actually used by this code-base are declared. We provide a +more precise return type for :func:`uuid_extensions.uuid7` so that static type +checkers (pytype / pyright) do not complain when the function is invoked with +default arguments. + +The real implementation allows selecting an alternative output representation +(str / int / bytes) via the ``as_type`` keyword. We model this behaviour with +proper ``typing.overload`` definitions – when ``as_type`` is omitted or +``None`` the return value is a ``uuid.UUID`` which is how it is used across +Julep. + +Note: This stub is *only* imported by the type-checker – the actual runtime +module from the third-party package is still used. Keeping the stub here +avoids having to sprinkle ``cast()`` calls throughout the code-base or wrap +the function in a helper. +""" + +from __future__ import annotations + +import datetime as _dt +import uuid as _uuid +from collections.abc import Callable +from typing import Literal, overload + +__all__ = [ + "check_timing_precision", + "time_ns", + "uuid7", + "uuid7str", + "uuid_to_datetime", +] + +# --------------------------------------------------------------------------- +# Public helpers mirrored from the original package +# --------------------------------------------------------------------------- + +def time_ns() -> int: # pragma: no cover – implementation lives upstream. + """Return the current time in nanoseconds since Unix epoch.""" + +@overload +def uuid7( + ns: int | None = ..., + *, + as_type: None = ..., + time_func: Callable[[], int] = ..., +) -> _uuid.UUID: ... + +@overload +def uuid7( + ns: int | None = ..., + *, + as_type: Literal["uuid"] = ..., + time_func: Callable[[], int] = ..., +) -> _uuid.UUID: ... + +@overload +def uuid7( + ns: int | None = ..., + *, + as_type: Literal["str", "hex"] = ..., + time_func: Callable[[], int] = ..., +) -> str: ... + +@overload +def uuid7( + ns: int | None = ..., + *, + as_type: Literal["int"] = ..., + time_func: Callable[[], int] = ..., +) -> int: ... + +@overload +def uuid7( + ns: int | None = ..., + *, + as_type: Literal["bytes"] = ..., + time_func: Callable[[], int] = ..., +) -> bytes: ... + +def uuid7(*args, **kwargs): # type: ignore[override] + """Runtime implementation lives in the real package – stub only.""" + +def uuid7str(ns: int | None = ...) -> str: ... + +def check_timing_precision(timing_func: Callable[[], int] | None = ...) -> str: ... + +def uuid_to_datetime(value: _uuid.UUID) -> _dt.datetime: ... diff --git a/agents-api/uv.lock b/src/agents-api/uv.lock similarity index 83% rename from agents-api/uv.lock rename to src/agents-api/uv.lock index df30d84d1..92a84fec8 100644 --- a/agents-api/uv.lock +++ b/src/agents-api/uv.lock @@ -16,11 +16,14 @@ dependencies = [ { name = "arrow" }, { name = "async-lru" }, { name = "asyncpg" }, + { name = "backoff" }, { name = "beartype" }, + { name = "cryptography" }, { name = "deep-translator" }, { name = "en-core-web-sm" }, { name = "environs" }, { name = "fastapi" }, + { name = "fastapi-sso" }, { name = "fire" }, { name = "google-re2" }, { name = "gunicorn" }, @@ -38,32 +41,41 @@ dependencies = [ { name = "markdownify" }, { name = "msgpack" }, { name = "numpy" }, + { name = "openfeature-sdk" }, { name = "pandas" }, { name = "prometheus-client" }, { name = "prometheus-fastapi-instrumentator" }, + { name = "psycopg2-binary" }, { name = "pydantic", extra = ["email"] }, { name = "pydantic-partial" }, + { name = "pyjwt" }, { name = "python-box" }, + { name = "python-multipart" }, + { name = "redis" }, { name = "scalar-fastapi" }, { name = "sentry-sdk", extra = ["fastapi"] }, { name = "simpleeval" }, { name = "simsimd" }, { name = "spacy" }, { name = "spacy-chunks" }, + { name = "sqlalchemy" }, { name = "sse-starlette" }, { name = "temporalio", extra = ["opentelemetry"] }, { name = "tenacity" }, { name = "thefuzz" }, { name = "tiktoken" }, { name = "unique-namer" }, + { name = "unleashclient" }, { name = "uuid7" }, { name = "uvicorn" }, { name = "uvloop" }, + { name = "websockets" }, { name = "xxhash" }, ] [package.dev-dependencies] dev = [ + { name = "autotyping" }, { name = "datamodel-code-generator" }, { name = "ipython" }, { name = "ipywidgets" }, @@ -72,28 +84,33 @@ dev = [ { name = "pip" }, { name = "poethepoet" }, { name = "psycopg", extra = ["binary"] }, + { name = "pyanalyze" }, { name = "pyjwt" }, { name = "pyright" }, { name = "pytype" }, { name = "ruff" }, { name = "sqlvalidator" }, { name = "testcontainers", extra = ["localstack"] }, + { name = "ty" }, { name = "ward" }, ] [package.metadata] requires-dist = [ - { name = "aiobotocore", specifier = ">=2.15.2" }, + { name = "aiobotocore", specifier = ">=2.21.0" }, { name = "aiohttp", specifier = ">=3.11.13" }, { name = "anyio", specifier = ">=4.4.0" }, { name = "arrow", specifier = ">=1.3.0" }, { name = "async-lru", specifier = ">=2.0.4" }, { name = "asyncpg", specifier = ">=0.30.0" }, + { name = "backoff", specifier = ">=2.2.1" }, { name = "beartype", specifier = ">=0.18.5" }, + { name = "cryptography", specifier = ">=45.0.6" }, { name = "deep-translator", specifier = ">=1.11.4" }, { name = "en-core-web-sm", url = "https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl" }, { name = "environs", specifier = ">=10.3.0" }, { name = "fastapi", specifier = ">=0.115.4" }, + { name = "fastapi-sso", specifier = ">=0.18.0" }, { name = "fire", specifier = ">=0.5.0" }, { name = "google-re2", specifier = ">=1.1.20240702" }, { name = "gunicorn", specifier = ">=23.0.0" }, @@ -105,38 +122,47 @@ requires-dist = [ { name = "langchain-text-splitters", specifier = ">=0.3.2" }, { name = "langcodes", specifier = ">=3.5.0" }, { name = "larch-pickle", specifier = "~=1.4.3" }, - { name = "litellm", specifier = ">=1.57.0" }, + { name = "litellm", specifier = ">=1.74.9" }, { name = "lz4", specifier = ">=4.3.3" }, { name = "markdown2", specifier = ">=2.5.3" }, { name = "markdownify", specifier = ">=1.0.0" }, { name = "msgpack", specifier = ">=1.1.0" }, { name = "numpy", specifier = ">=2.0.0,<2.1.0" }, + { name = "openfeature-sdk", specifier = ">=0.8.1" }, { name = "pandas", specifier = ">=2.2.2" }, { name = "prometheus-client", specifier = ">=0.21.0" }, { name = "prometheus-fastapi-instrumentator", specifier = ">=7.0.0" }, + { name = "psycopg2-binary", specifier = ">=2.9.10" }, { name = "pydantic", extras = ["email"], specifier = ">=2.10.2" }, { name = "pydantic-partial", specifier = ">=0.5.5" }, + { name = "pyjwt", specifier = ">=2.10.1" }, { name = "python-box", specifier = ">=7.2.0" }, + { name = "python-multipart", specifier = ">=0.0.20" }, + { name = "redis", specifier = ">=6.4.0" }, { name = "scalar-fastapi", specifier = ">=1.0.3" }, { name = "sentry-sdk", extras = ["fastapi"], specifier = ">=2.13.0" }, { name = "simpleeval", specifier = ">=0.9.13" }, { name = "simsimd", specifier = ">=5.9.4" }, { name = "spacy", specifier = ">=3.8.2" }, { name = "spacy-chunks", specifier = ">=0.0.2" }, + { name = "sqlalchemy", specifier = ">=2.0.42" }, { name = "sse-starlette", specifier = ">=2.1.3" }, { name = "temporalio", extras = ["opentelemetry"], specifier = ">=1.8" }, { name = "tenacity", specifier = ">=9.0.0" }, { name = "thefuzz", specifier = ">=0.22.1" }, { name = "tiktoken", specifier = ">=0.7.0" }, { name = "unique-namer", specifier = ">=1.6.1" }, + { name = "unleashclient", specifier = ">=5.12.0" }, { name = "uuid7", specifier = ">=0.1.0" }, - { name = "uvicorn", specifier = ">=0.30.6" }, + { name = "uvicorn", specifier = "==0.29.0" }, { name = "uvloop", specifier = ">=0.21.0" }, + { name = "websockets", specifier = ">=15.0.1" }, { name = "xxhash", specifier = ">=3.5.0" }, ] [package.metadata.requires-dev] dev = [ + { name = "autotyping", specifier = ">=24.9.0" }, { name = "datamodel-code-generator", specifier = ">=0.26.3" }, { name = "ipython", specifier = ">=8.30.0" }, { name = "ipywidgets", specifier = ">=8.1.5" }, @@ -145,12 +171,14 @@ dev = [ { name = "pip", specifier = ">=24.3.1" }, { name = "poethepoet", specifier = ">=0.31.1" }, { name = "psycopg", extras = ["binary"], specifier = ">=3.2.5" }, + { name = "pyanalyze", specifier = ">=0.13.1" }, { name = "pyjwt", specifier = ">=2.10.1" }, { name = "pyright", specifier = ">=1.1.391" }, { name = "pytype", specifier = ">=2024.10.11" }, { name = "ruff", specifier = ">=0.9.0" }, { name = "sqlvalidator", specifier = ">=0.0.20" }, { name = "testcontainers", extras = ["postgres", "localstack"], specifier = ">=4.9.0" }, + { name = "ty", specifier = ">=0.0.0a8" }, { name = "ward", specifier = ">=0.68.0b0" }, ] @@ -267,6 +295,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] +[[package]] +name = "apscheduler" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/00/6d6814ddc19be2df62c8c898c4df6b5b1914f3bd024b780028caa392d186/apscheduler-3.11.0.tar.gz", hash = "sha256:4c622d250b0955a65d5d0eb91c33e6d43fd879834bf541e0a18661ae60460133", size = 107347 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/ae/9a053dd9229c0fde6b1f1f33f609ccff1ee79ddda364c756a924c6d8563b/APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da", size = 64004 }, +] + [[package]] name = "argcomplete" version = "3.5.3" @@ -322,6 +362,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, ] +[[package]] +name = "ast-decompiler" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/c4/734659d4b1d254d3c85afbd0e47e1e3e9e95d17c5022e0a105a97e00c35c/ast_decompiler-0.8.0.tar.gz", hash = "sha256:daef5ca5c2bcb9ba7cf72a9308c7cd596c092d7201c0bbaf28947c721ce26441", size = 18526 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/40/d6b10d5911541867e8397ccb76a6fd9399eae78de967d1209e7ee7d1cf13/ast_decompiler-0.8.0-py3-none-any.whl", hash = "sha256:bc2449883f153788d89b842967dbe871d6db14f53a178bf7ec601f393fe1e1bb", size = 13794 }, +] + [[package]] name = "asttokens" version = "3.0.0" @@ -356,6 +405,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/6b/fe1fad5cee79ca5f5c27aed7bd95baee529c1bf8a387435c8ba4fe53d5c1/asyncpg-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a0292c6af5c500523949155ec17b7fe01a00ace33b68a476d6b5059f9630305", size = 621064 }, ] +[[package]] +name = "asynq" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, + { name = "qcore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/ac/89fc0703363062e591e3eb1b1905c4d2613b98f11a9aa0ca919d65e5df15/asynq-1.6.0.tar.gz", hash = "sha256:9d30cde5dbfa5fc5d8b0bbe14c8ffe2d54320ee0db8936fd47da53a2b296a22f", size = 65946 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/98/77726a172bc7f004b244c5819b0c719d6979d9c0232d8b833dc74dd016f2/asynq-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e7fb47403fb05dda9cd54f055b1b5065e17c5768ffe7b787fb0206c4086d4b68", size = 711469 }, + { url = "https://files.pythonhosted.org/packages/1b/d2/190d7afe5a6a63f0397d2651aeed8e35b972288da7379885c4819296eb25/asynq-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e54ec34d7983d1493e4e786c8a9de37efbf73d6b87f5fce2373b05bb3d73853", size = 3971582 }, + { url = "https://files.pythonhosted.org/packages/e6/6f/00f56d7f6430f3497b6a8bf1b626468f7dc265de6f56cf6b5ba81f65456a/asynq-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23ac3e292ba1e774541b764f1003da15b8be2e11cc970e370052e3326e43090b", size = 3739095 }, + { url = "https://files.pythonhosted.org/packages/9b/ea/a8aab7c494a8a4190fa5960d4d3d3707878ff633019f2fc0720899193ba0/asynq-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4aca4ea828c7445fbf695e1b65798cb6b08ebaa7e53ba21fc0681992345fe3d2", size = 3764319 }, + { url = "https://files.pythonhosted.org/packages/5e/7b/216b20b1e7993661262d4bf1ac0834274908435938c473b90240eb8dc0cb/asynq-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c64fb28ee6c712e6b73434af63af611c1725767b223c5a78bed32ee1c076103", size = 3884938 }, + { url = "https://files.pythonhosted.org/packages/07/e1/47191a022da08b3afa6b527d7ea9cd34dbe06906c166b12c1ba6029b2c26/asynq-1.6.0-cp312-cp312-win32.whl", hash = "sha256:fa2c92ced5e4db2ec1413ea57fb71c10704b4986eb27cdf154a9bd3a11fccde5", size = 572025 }, + { url = "https://files.pythonhosted.org/packages/84/e1/44e4bbcb0b04271118ecac56c4c9db0ca65a5760b47f339cb7c4803df07a/asynq-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f6e5d691d5086d44c5216111281254fbf01f91937502f0994b165919e1a07b5", size = 643755 }, +] + [[package]] name = "attrs" version = "25.1.0" @@ -365,6 +433,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fc/30/d4986a882011f9df997a55e6becd864812ccfcd821d64aac8570ee39f719/attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a", size = 63152 }, ] +[[package]] +name = "autotyping" +version = "24.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "libcst" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1e/d6/da57f5c54009f3a2436e25aab1f156a241e61d96be6456050be11d5350a8/autotyping-24.9.0.tar.gz", hash = "sha256:d7e9787aca0f69b089431581f703c53210d2cf39e792e2106759d04034c1251b", size = 17116 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/f2/7d40e2913c27634ebf4a3e8a77061a3ed1432ccd0b8590787985e4da8e46/autotyping-24.9.0-py3-none-any.whl", hash = "sha256:9c16b0bcab310a2dfe5228bb01c4d1dd5499e7bf67fc6b7915c35267c665b498", size = 12920 }, +] + [[package]] name = "babel" version = "2.17.0" @@ -374,6 +455,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] +[[package]] +name = "backoff" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148 }, +] + [[package]] name = "beartype" version = "0.20.0" @@ -586,6 +676,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/6e/b64600156934dab14cc8b403095a9ea8bd722aad2e775673c68346b76220/cloudpathlib-0.20.0-py3-none-any.whl", hash = "sha256:7af3bcefbf73392ae7f31c08b3660ec31607f8c01b7f6262d4d73469a845f641", size = 52547 }, ] +[[package]] +name = "codemod" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/e3/cb31bfcf14f976060ea7b7f34135ebc796cde65eba923f6a0c4b71f15cc2/codemod-1.0.0.tar.gz", hash = "sha256:06e8c75f2b45210dd8270e30a6a88ae464b39abd6d0cab58a3d7bfd1c094e588", size = 11294 } + [[package]] name = "colorama" version = "0.4.6" @@ -620,6 +716,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/00/3106b1854b45bd0474ced037dfe6b73b90fe68a68968cef47c23de3d43d2/confection-0.1.5-py3-none-any.whl", hash = "sha256:e29d3c3f8eac06b3f77eb9dfb4bf2fc6bcc9622a98ca00a698e3d019c6430b14", size = 35451 }, ] +[[package]] +name = "cryptography" +version = "45.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/0d/d13399c94234ee8f3df384819dc67e0c5ce215fb751d567a55a1f4b028c7/cryptography-45.0.6.tar.gz", hash = "sha256:5c966c732cf6e4a276ce83b6e4c729edda2df6929083a952cc7da973c539c719", size = 744949 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/29/2793d178d0eda1ca4a09a7c4e09a5185e75738cc6d526433e8663b460ea6/cryptography-45.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74", size = 7042702 }, + { url = "https://files.pythonhosted.org/packages/b3/b6/cabd07410f222f32c8d55486c464f432808abaa1f12af9afcbe8f2f19030/cryptography-45.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44647c5d796f5fc042bbc6d61307d04bf29bccb74d188f18051b635f20a9c75f", size = 4206483 }, + { url = "https://files.pythonhosted.org/packages/8b/9e/f9c7d36a38b1cfeb1cc74849aabe9bf817990f7603ff6eb485e0d70e0b27/cryptography-45.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e40b80ecf35ec265c452eea0ba94c9587ca763e739b8e559c128d23bff7ebbbf", size = 4429679 }, + { url = "https://files.pythonhosted.org/packages/9c/2a/4434c17eb32ef30b254b9e8b9830cee4e516f08b47fdd291c5b1255b8101/cryptography-45.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5", size = 4210553 }, + { url = "https://files.pythonhosted.org/packages/ef/1d/09a5df8e0c4b7970f5d1f3aff1b640df6d4be28a64cae970d56c6cf1c772/cryptography-45.0.6-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a3085d1b319d35296176af31c90338eeb2ddac8104661df79f80e1d9787b8b2", size = 3894499 }, + { url = "https://files.pythonhosted.org/packages/79/62/120842ab20d9150a9d3a6bdc07fe2870384e82f5266d41c53b08a3a96b34/cryptography-45.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1b7fa6a1c1188c7ee32e47590d16a5a0646270921f8020efc9a511648e1b2e08", size = 4458484 }, + { url = "https://files.pythonhosted.org/packages/fd/80/1bc3634d45ddfed0871bfba52cf8f1ad724761662a0c792b97a951fb1b30/cryptography-45.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:275ba5cc0d9e320cd70f8e7b96d9e59903c815ca579ab96c1e37278d231fc402", size = 4210281 }, + { url = "https://files.pythonhosted.org/packages/7d/fe/ffb12c2d83d0ee625f124880a1f023b5878f79da92e64c37962bbbe35f3f/cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42", size = 4456890 }, + { url = "https://files.pythonhosted.org/packages/8c/8e/b3f3fe0dc82c77a0deb5f493b23311e09193f2268b77196ec0f7a36e3f3e/cryptography-45.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ee411a1b977f40bd075392c80c10b58025ee5c6b47a822a33c1198598a7a5f05", size = 4333247 }, + { url = "https://files.pythonhosted.org/packages/b3/a6/c3ef2ab9e334da27a1d7b56af4a2417d77e7806b2e0f90d6267ce120d2e4/cryptography-45.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e2a21a8eda2d86bb604934b6b37691585bd095c1f788530c1fcefc53a82b3453", size = 4565045 }, + { url = "https://files.pythonhosted.org/packages/31/c3/77722446b13fa71dddd820a5faab4ce6db49e7e0bf8312ef4192a3f78e2f/cryptography-45.0.6-cp311-abi3-win32.whl", hash = "sha256:d063341378d7ee9c91f9d23b431a3502fc8bfacd54ef0a27baa72a0843b29159", size = 2928923 }, + { url = "https://files.pythonhosted.org/packages/38/63/a025c3225188a811b82932a4dcc8457a26c3729d81578ccecbcce2cb784e/cryptography-45.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:833dc32dfc1e39b7376a87b9a6a4288a10aae234631268486558920029b086ec", size = 3403805 }, + { url = "https://files.pythonhosted.org/packages/5b/af/bcfbea93a30809f126d51c074ee0fac5bd9d57d068edf56c2a73abedbea4/cryptography-45.0.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:3436128a60a5e5490603ab2adbabc8763613f638513ffa7d311c900a8349a2a0", size = 7020111 }, + { url = "https://files.pythonhosted.org/packages/98/c6/ea5173689e014f1a8470899cd5beeb358e22bb3cf5a876060f9d1ca78af4/cryptography-45.0.6-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d9ef57b6768d9fa58e92f4947cea96ade1233c0e236db22ba44748ffedca394", size = 4198169 }, + { url = "https://files.pythonhosted.org/packages/ba/73/b12995edc0c7e2311ffb57ebd3b351f6b268fed37d93bfc6f9856e01c473/cryptography-45.0.6-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea3c42f2016a5bbf71825537c2ad753f2870191134933196bee408aac397b3d9", size = 4421273 }, + { url = "https://files.pythonhosted.org/packages/f7/6e/286894f6f71926bc0da67408c853dd9ba953f662dcb70993a59fd499f111/cryptography-45.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:20ae4906a13716139d6d762ceb3e0e7e110f7955f3bc3876e3a07f5daadec5f3", size = 4199211 }, + { url = "https://files.pythonhosted.org/packages/de/34/a7f55e39b9623c5cb571d77a6a90387fe557908ffc44f6872f26ca8ae270/cryptography-45.0.6-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dac5ec199038b8e131365e2324c03d20e97fe214af051d20c49db129844e8b3", size = 3883732 }, + { url = "https://files.pythonhosted.org/packages/f9/b9/c6d32edbcba0cd9f5df90f29ed46a65c4631c4fbe11187feb9169c6ff506/cryptography-45.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f878a34b90d688982e43f4b700408b478102dd58b3e39de21b5ebf6509c301", size = 4450655 }, + { url = "https://files.pythonhosted.org/packages/77/2d/09b097adfdee0227cfd4c699b3375a842080f065bab9014248933497c3f9/cryptography-45.0.6-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5bd6020c80c5b2b2242d6c48487d7b85700f5e0038e67b29d706f98440d66eb5", size = 4198956 }, + { url = "https://files.pythonhosted.org/packages/55/66/061ec6689207d54effdff535bbdf85cc380d32dd5377173085812565cf38/cryptography-45.0.6-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:eccddbd986e43014263eda489abbddfbc287af5cddfd690477993dbb31e31016", size = 4449859 }, + { url = "https://files.pythonhosted.org/packages/41/ff/e7d5a2ad2d035e5a2af116e1a3adb4d8fcd0be92a18032917a089c6e5028/cryptography-45.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:550ae02148206beb722cfe4ef0933f9352bab26b087af00e48fdfb9ade35c5b3", size = 4320254 }, + { url = "https://files.pythonhosted.org/packages/82/27/092d311af22095d288f4db89fcaebadfb2f28944f3d790a4cf51fe5ddaeb/cryptography-45.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5b64e668fc3528e77efa51ca70fadcd6610e8ab231e3e06ae2bab3b31c2b8ed9", size = 4554815 }, + { url = "https://files.pythonhosted.org/packages/7e/01/aa2f4940262d588a8fdf4edabe4cda45854d00ebc6eaac12568b3a491a16/cryptography-45.0.6-cp37-abi3-win32.whl", hash = "sha256:780c40fb751c7d2b0c6786ceee6b6f871e86e8718a8ff4bc35073ac353c7cd02", size = 2912147 }, + { url = "https://files.pythonhosted.org/packages/0a/bc/16e0276078c2de3ceef6b5a34b965f4436215efac45313df90d55f0ba2d2/cryptography-45.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:20d15aed3ee522faac1a39fbfdfee25d17b1284bafd808e1640a74846d7c4d1b", size = 3390459 }, +] + [[package]] name = "cucumber-tag-expressions" version = "4.1.0" @@ -806,6 +937,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/5d/4d8bbb94f0dbc22732350c06965e40740f4a92ca560e90bb566f4f73af41/fastapi-0.115.11-py3-none-any.whl", hash = "sha256:32e1541b7b74602e4ef4a0260ecaf3aadf9d4f19590bba3e1bf2ac4666aa2c64", size = 94926 }, ] +[[package]] +name = "fastapi-sso" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastapi" }, + { name = "httpx" }, + { name = "oauthlib" }, + { name = "pydantic", extra = ["email"] }, + { name = "pyjwt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/57/cc971c018af5d09eb5f8d1cd12abdd99ab4c59ea5c0b0b1b96349ffe117d/fastapi_sso-0.18.0.tar.gz", hash = "sha256:d8df5a686af7a6a7be248817544b405cf77f7e9ffcd5d0d7d2a196fd071964bc", size = 16811 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/03/70ca13994f5569d343a9f99dba2930c8ae3471171f161b8887d44b6c526f/fastapi_sso-0.18.0-py3-none-any.whl", hash = "sha256:727754ad770b70690f1471f7b0a9e17c6dfd8ebd6e477616d3bde1eaf62e53dc", size = 26103 }, +] + [[package]] name = "fastjsonschema" version = "2.21.1" @@ -815,6 +962,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] +[[package]] +name = "fcache" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/94/60d2b17996d5edf1a62d213ad37a9d2f25fd6864997dfd2b099fffc3deed/fcache-0.6.0.tar.gz", hash = "sha256:79949f0aafe8cedc5c9064631b3c157941a288e59f9991dd158c23e8e60b5422", size = 7368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0c/ababd9fed96d865463f95f897c48a8781bc831f9e08cdc8124b96964f92c/fcache-0.6.0-py3-none-any.whl", hash = "sha256:dbf0753bb7400ed80d703df9ffcfb438786698872ed92c50169f95cb0eac8306", size = 8163 }, +] + [[package]] name = "filelock" version = "3.17.0" @@ -902,6 +1061,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/11/fd759e766f824ef55e743d9e6096a38500c9c3b40e614667ad259e11026f/google_re2-1.1.20240702-1-cp312-cp312-win_amd64.whl", hash = "sha256:a7e3129d31e12d51397d603adf45bd696135a5d9d61bc33643bc5d2e4366070b", size = 497133 }, ] +[[package]] +name = "greenlet" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079 }, + { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997 }, + { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185 }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926 }, + { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839 }, + { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586 }, + { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281 }, + { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142 }, + { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899 }, +] + [[package]] name = "gunicorn" version = "23.0.0" @@ -1011,6 +1187,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514 }, ] +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461 }, +] + [[package]] name = "inflect" version = "5.6.2" @@ -1534,7 +1719,7 @@ wheels = [ [[package]] name = "litellm" -version = "1.61.20" +version = "1.75.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -1549,9 +1734,9 @@ dependencies = [ { name = "tiktoken" }, { name = "tokenizers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/39/ac5e350e4af3ef59d6852d074bc6e79ffbac4c4e816dd76c180267ab18ad/litellm-1.61.20.tar.gz", hash = "sha256:0b0204f56e08c92efd2f9e4bfb850c25eaa95fb03a56aaa21e5e29b2391c9067", size = 6577019 } +sdist = { url = "https://files.pythonhosted.org/packages/63/27/c75a4eaa76f3652ff92701365575872e0d4e6ecd2e8ed8772b96c3002872/litellm-1.75.2.tar.gz", hash = "sha256:e375cfa2e6f7f90f93220c1bfd04f46f6cc309ea2ca2849ea730e7d990e82a5a", size = 10097330 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/4e/310924cdf3114084ca63820268c87047c757b60b0eca86b039b8acc67084/litellm-1.61.20-py3-none-any.whl", hash = "sha256:8158f96ceda0d76bb59a59d868686e888e32d66b2380e149c6a7a0746f7a5bc9", size = 6887617 }, + { url = "https://files.pythonhosted.org/packages/e9/b4/68655f0eb049483ff0f5efdc2ecf9fba41957a05019465241222d94a824a/litellm-1.75.2-py3-none-any.whl", hash = "sha256:786eccb101ea8f860b26f290670f8bb6fd598e2a4812ead281ab42485726c9a4", size = 8863952 }, ] [[package]] @@ -1684,6 +1869,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/92/30b4e54c4d7c48c06db61595cffbbf4f19588ea177896f9b78f0fbe021fd/mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319", size = 53696 }, ] +[[package]] +name = "mmh3" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, +] + [[package]] name = "msgpack" version = "1.1.0" @@ -1902,9 +2111,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179 }, ] +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065 }, +] + [[package]] name = "openai" -version = "1.65.2" +version = "1.99.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1916,9 +2134,18 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/03/0bbf201a7e44920d892db0445874c8111be4255cb9495379df18d6d36ea1/openai-1.65.2.tar.gz", hash = "sha256:729623efc3fd91c956f35dd387fa5c718edd528c4bed9f00b40ef290200fb2ce", size = 359185 } +sdist = { url = "https://files.pythonhosted.org/packages/72/d3/c372420c8ca1c60e785fd8c19e536cea8f16b0cfdcdad6458e1d8884f2ea/openai-1.99.3.tar.gz", hash = "sha256:1a0e2910e4545d828c14218f2ac3276827c94a043f5353e43b9413b38b497897", size = 504932 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/bc/e52f49940b4e320629da7db09c90a2407a48c612cff397b4b41b7e58cdf9/openai-1.99.3-py3-none-any.whl", hash = "sha256:c786a03f6cddadb5ee42c6d749aa4f6134fe14fdd7d69a667e5e7ce7fd29a719", size = 785776 }, +] + +[[package]] +name = "openfeature-sdk" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/58/4f20fb69581d01013ce197390a48dc2e8d00c48b2979f4ce0869b8f37ba6/openfeature_sdk-0.8.1.tar.gz", hash = "sha256:475681c39b19ff33bd335e6f6b9bb79180a6f7def95a9aa2c3d6f2693d5f6ac1", size = 61345 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/3b/722ed868cb56f70264190ed479b38b3e46d14daa267d559a3fe3bd9061cf/openai-1.65.2-py3-none-any.whl", hash = "sha256:27d9fe8de876e31394c2553c4e6226378b6ed85e480f586ccfe25b7193fb1750", size = 473206 }, + { url = "https://files.pythonhosted.org/packages/d6/1a/3db906ddab0b87f7488edb077d36c7433f234b2dfc7b224b56bc516fff09/openfeature_sdk-0.8.1-py3-none-any.whl", hash = "sha256:8320724d4567bcc4af638475d56a888866006cdea44a973fc4d7307412687489", size = 37271 }, ] [[package]] @@ -2080,11 +2307,11 @@ wheels = [ [[package]] name = "platformdirs" -version = "4.3.6" +version = "3.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +sdist = { url = "https://files.pythonhosted.org/packages/d3/e3/aa14d6b2c379fbb005993514988d956f1b9fdccd9cbe78ec0dbe5fb79bf5/platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", size = 19914 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, + { url = "https://files.pythonhosted.org/packages/56/29/3ec311dc18804409ecf0d2b09caa976f3ae6215559306b5b530004e11156/platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e", size = 17579 }, ] [[package]] @@ -2259,6 +2486,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/ab/882b861cfcf83d7faffe583e1e092117cd66eacc86fb4517d27973e52f35/psycopg_binary-3.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:2cbb8649cfdacbd14e17f5ab78edc52d33350013888518c73e90c5d17d7bea55", size = 2782504 }, ] +[[package]] +name = "psycopg2-binary" +version = "2.9.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/bdc8274dc0585090b4e3432267d7be4dfbfd8971c0fa59167c711105a6bf/psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2", size = 385764 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/7d/465cc9795cf76f6d329efdafca74693714556ea3891813701ac1fee87545/psycopg2_binary-2.9.10-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0", size = 3044771 }, + { url = "https://files.pythonhosted.org/packages/8b/31/6d225b7b641a1a2148e3ed65e1aa74fc86ba3fee850545e27be9e1de893d/psycopg2_binary-2.9.10-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a", size = 3275336 }, + { url = "https://files.pythonhosted.org/packages/30/b7/a68c2b4bff1cbb1728e3ec864b2d92327c77ad52edcd27922535a8366f68/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539", size = 2851637 }, + { url = "https://files.pythonhosted.org/packages/0b/b1/cfedc0e0e6f9ad61f8657fd173b2f831ce261c02a08c0b09c652b127d813/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526", size = 3082097 }, + { url = "https://files.pythonhosted.org/packages/18/ed/0a8e4153c9b769f59c02fb5e7914f20f0b2483a19dae7bf2db54b743d0d0/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1", size = 3264776 }, + { url = "https://files.pythonhosted.org/packages/10/db/d09da68c6a0cdab41566b74e0a6068a425f077169bed0946559b7348ebe9/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e", size = 3020968 }, + { url = "https://files.pythonhosted.org/packages/94/28/4d6f8c255f0dfffb410db2b3f9ac5218d959a66c715c34cac31081e19b95/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f", size = 2872334 }, + { url = "https://files.pythonhosted.org/packages/05/f7/20d7bf796593c4fea95e12119d6cc384ff1f6141a24fbb7df5a668d29d29/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00", size = 2822722 }, + { url = "https://files.pythonhosted.org/packages/4d/e4/0c407ae919ef626dbdb32835a03b6737013c3cc7240169843965cada2bdf/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5", size = 2920132 }, + { url = "https://files.pythonhosted.org/packages/2d/70/aa69c9f69cf09a01da224909ff6ce8b68faeef476f00f7ec377e8f03be70/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47", size = 2959312 }, + { url = "https://files.pythonhosted.org/packages/d3/bd/213e59854fafe87ba47814bf413ace0dcee33a89c8c8c814faca6bc7cf3c/psycopg2_binary-2.9.10-cp312-cp312-win32.whl", hash = "sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64", size = 1025191 }, + { url = "https://files.pythonhosted.org/packages/92/29/06261ea000e2dc1e22907dbbc483a1093665509ea586b29b8986a0e56733/psycopg2_binary-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0", size = 1164031 }, +] + [[package]] name = "ptyprocess" version = "0.7.0" @@ -2277,6 +2524,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, ] +[[package]] +name = "pyanalyze" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ast-decompiler" }, + { name = "asynq" }, + { name = "codemod" }, + { name = "qcore" }, + { name = "tomli" }, + { name = "typeshed-client" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/67/30f07c61d86a2a29fe44556fa8b41040e8d77232c41674b6af2d9ace567f/pyanalyze-0.13.1.tar.gz", hash = "sha256:a5a17b348a1d929e35fd5c37bacb2899d625c8e2cdc9aaad0981213570277b65", size = 335918 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/57/a08077ff3d3ec4e01185b85351aeedb801b781c8f1331175590c7320316d/pyanalyze-0.13.1-py3-none-any.whl", hash = "sha256:8d2670cf361a0ac3e381da2c8b0efcb708181783f371d7d7c9bbcac461e64042", size = 375069 }, +] + [[package]] name = "pycnite" version = "2024.7.31" @@ -2445,6 +2710,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4b/72/2f30cf26664fcfa0bd8ec5ee62ec90c03bd485e4a294d92aabc76c5203a5/python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090", size = 14924 }, ] +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 }, +] + [[package]] name = "pytype" version = "2024.10.11" @@ -2539,6 +2813,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/55/09/f37e707937cce328944c1d57e5e50ab905011d35252a0745c4f7e5822a76/pyzmq-26.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:e5e33b1491555843ba98d5209439500556ef55b6ab635f3a01148545498355e5", size = 558303 }, ] +[[package]] +name = "qcore" +version = "1.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/0c/aad40d2a44366390aef0a5c8313da0201481c9f743a96059c042a3688c86/qcore-1.11.1.tar.gz", hash = "sha256:c98ef47209a5d2a0f1bedda716e47325b8a42c1f148a36262e038be1a74c1efc", size = 53575 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/f8/6e4376405fa23029be1ec35318a042210ebd0f9236d62bb84c307187926a/qcore-1.11.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:680e410b427665e05290298fb163cbbe0d2f4bbfcfb3653d27400c748734d9d7", size = 496903 }, + { url = "https://files.pythonhosted.org/packages/d6/9d/070c0584425ae2884d3f990b19f4048e9ee8743845a6653d5a2f79b62bb0/qcore-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd17cace8e06c82655688834dbc43c34a244d814de6cb015cfba256bd6bc9095", size = 2658396 }, + { url = "https://files.pythonhosted.org/packages/83/22/2098336cf0c5666f492ba42a0e29d9f807680044e2a180b23cd4889f53d3/qcore-1.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5ddca505be0ed50f3175fb8278d5358020d568d8303dd79a3ba793411902840", size = 2504133 }, + { url = "https://files.pythonhosted.org/packages/80/3b/c6e1efe2747a53b48eef431e51f3e0d8707986b738bc92680ee3a972718b/qcore-1.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:874f22c3cef33d40fe3faca8c14875bfba249d5a69ef05bdcd36d3e045e6c82f", size = 2520414 }, + { url = "https://files.pythonhosted.org/packages/34/f8/5dbf821f2da2166c6ac04a4d40d35938fd178855e7af363b80254a5bc93d/qcore-1.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5f30cc77193a677040036563bcb470b3b4a9972609d75a1ad6737728d47a80be", size = 2615112 }, + { url = "https://files.pythonhosted.org/packages/36/b1/8164e2d3be46e2feade7a13e0dae6e8097f57be7609c8a858a072aac6584/qcore-1.11.1-cp312-cp312-win32.whl", hash = "sha256:6405978e1a63712077c7aa515365f8dedc681c3ea0501c20d6fe15b664f2a5f7", size = 391058 }, + { url = "https://files.pythonhosted.org/packages/ae/49/8b6decdceab3a6c2ddef4a4d8f743f77b0db4205657f62895d2de36f77ed/qcore-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:754ab7287eda46ba09dee7ee5bce7384a45752f0ff0df89fb50d8d68c4fbf24b", size = 439916 }, +] + [[package]] name = "rapidfuzz" version = "3.12.1" @@ -2562,6 +2851,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/df/3f51a0a277185b3f28b2941e071aff62908a6b81527efc67a643bcb59fb8/rapidfuzz-3.12.1-cp312-cp312-win_arm64.whl", hash = "sha256:43bb17056c5d1332f517b888c4e57846c4b5f936ed304917eeb5c9ac85d940d4", size = 864251 }, ] +[[package]] +name = "redis" +version = "6.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/d6/e8b92798a5bd67d659d51a18170e91c16ac3b59738d91894651ee255ed49/redis-6.4.0.tar.gz", hash = "sha256:b01bc7282b8444e28ec36b261df5375183bb47a07eb9c603f284e89cbc5ef010", size = 4647399 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/02/89e2ed7e85db6c93dfa9e8f691c5087df4e3551ab39081a4d7c6d1f90e05/redis-6.4.0-py3-none-any.whl", hash = "sha256:f0544fa9604264e9464cdf4814e7d4830f74b165d52f2a330a760a88dd248b7f", size = 279847 }, +] + [[package]] name = "referencing" version = "0.36.2" @@ -2756,6 +3054,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6d/9e/ca0ffc3fc4788c6e1367b96a70f2d6ee33f91d580664a8142ba7ee292ef2/scalar_fastapi-1.0.3-py3-none-any.whl", hash = "sha256:4a47a140795097ad034518ce0e32940f2c54f0f4bc60e4c3289ca30a7e6f954d", size = 4579 }, ] +[[package]] +name = "semver" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912 }, +] + [[package]] name = "send2trash" version = "1.8.3" @@ -2937,6 +3244,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/78/d1a1a026ef3af911159398c939b1509d5c36fe524c7b644f34a5146c4e16/spacy_loggers-1.0.5-py3-none-any.whl", hash = "sha256:196284c9c446cc0cdb944005384270d775fdeaf4f494d8e269466cfa497ef645", size = 22343 }, ] +[[package]] +name = "sqlalchemy" +version = "2.0.42" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/03/a0af991e3a43174d6b83fca4fb399745abceddd1171bdabae48ce877ff47/sqlalchemy-2.0.42.tar.gz", hash = "sha256:160bedd8a5c28765bd5be4dec2d881e109e33b34922e50a3b881a7681773ac5f", size = 9749972 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/66/ac31a9821fc70a7376321fb2c70fdd7eadbc06dadf66ee216a22a41d6058/sqlalchemy-2.0.42-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:09637a0872689d3eb71c41e249c6f422e3e18bbd05b4cd258193cfc7a9a50da2", size = 2132203 }, + { url = "https://files.pythonhosted.org/packages/fc/ba/fd943172e017f955d7a8b3a94695265b7114efe4854feaa01f057e8f5293/sqlalchemy-2.0.42-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3cb3ec67cc08bea54e06b569398ae21623534a7b1b23c258883a7c696ae10df", size = 2120373 }, + { url = "https://files.pythonhosted.org/packages/ea/a2/b5f7d233d063ffadf7e9fff3898b42657ba154a5bec95a96f44cba7f818b/sqlalchemy-2.0.42-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87e6a5ef6f9d8daeb2ce5918bf5fddecc11cae6a7d7a671fcc4616c47635e01", size = 3317685 }, + { url = "https://files.pythonhosted.org/packages/86/00/fcd8daab13a9119d41f3e485a101c29f5d2085bda459154ba354c616bf4e/sqlalchemy-2.0.42-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b718011a9d66c0d2f78e1997755cd965f3414563b31867475e9bc6efdc2281d", size = 3326967 }, + { url = "https://files.pythonhosted.org/packages/a3/85/e622a273d648d39d6771157961956991a6d760e323e273d15e9704c30ccc/sqlalchemy-2.0.42-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:16d9b544873fe6486dddbb859501a07d89f77c61d29060bb87d0faf7519b6a4d", size = 3255331 }, + { url = "https://files.pythonhosted.org/packages/3a/a0/2c2338b592c7b0a61feffd005378c084b4c01fabaf1ed5f655ab7bd446f0/sqlalchemy-2.0.42-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21bfdf57abf72fa89b97dd74d3187caa3172a78c125f2144764a73970810c4ee", size = 3291791 }, + { url = "https://files.pythonhosted.org/packages/41/19/b8a2907972a78285fdce4c880ecaab3c5067eb726882ca6347f7a4bf64f6/sqlalchemy-2.0.42-cp312-cp312-win32.whl", hash = "sha256:78b46555b730a24901ceb4cb901c6b45c9407f8875209ed3c5d6bcd0390a6ed1", size = 2096180 }, + { url = "https://files.pythonhosted.org/packages/48/1f/67a78f3dfd08a2ed1c7be820fe7775944f5126080b5027cc859084f8e223/sqlalchemy-2.0.42-cp312-cp312-win_amd64.whl", hash = "sha256:4c94447a016f36c4da80072e6c6964713b0af3c8019e9c4daadf21f61b81ab53", size = 2123533 }, + { url = "https://files.pythonhosted.org/packages/ee/55/ba2546ab09a6adebc521bf3974440dc1d8c06ed342cceb30ed62a8858835/sqlalchemy-2.0.42-py3-none-any.whl", hash = "sha256:defcdff7e661f0043daa381832af65d616e060ddb54d3fe4476f51df7eaa1835", size = 1922072 }, +] + [[package]] name = "sqlvalidator" version = "0.0.20" @@ -3250,6 +3578,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] +[[package]] +name = "ty" +version = "0.0.0a8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/aa/0700b67af527edfe6d35d5bd82e6019c65363390bea9f8e4995c78e480d8/ty-0.0.0a8.tar.gz", hash = "sha256:f00c19020d8c7d5806d54564d4a1fe7e5c6efd5743cefddf619575451491496e", size = 2843192 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/43/8af99166cfbe993fdcf3bb42d2583876a0ec7bf9c1aac6b9bfb517f8711d/ty-0.0.0a8-py3-none-linux_armv6l.whl", hash = "sha256:b1a86035380fd85ad7428dd8a1001d03b5bc31ef8453ef75c712b12511f4edaa", size = 6182530 }, + { url = "https://files.pythonhosted.org/packages/f6/e5/0e165822733a5dccc74abc840ac546568fcd0253fb9ef0e52e9d243a9703/ty-0.0.0a8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0b7522562908da2a2189441cc787646479aceb95ab6296bc805e2d89ef867b43", size = 6279778 }, + { url = "https://files.pythonhosted.org/packages/01/b0/740cae6ad23db80f70abccd0fe675eb4c836affd5e772cc9a5336f473ab4/ty-0.0.0a8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b2725a5bc8924578a9687bebbb840187f9ae2a2ae5583129aac4e037934b2eea", size = 5942076 }, + { url = "https://files.pythonhosted.org/packages/54/29/34ae8567ba4e2acea27fddea3261b2d7d74140a47c950a1ed47844658d9c/ty-0.0.0a8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98174efc5cd8991b64b141eb0531f055460f7f2f37b24c11d84c37b79c5942a6", size = 6068046 }, + { url = "https://files.pythonhosted.org/packages/cb/b0/9649d3bc9a6be61eddb28d2d4cee7bc395a29b6c5adc7b78a34ea6b99a84/ty-0.0.0a8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55d69343312b615631152a1a5748bb6b42799f09f1732720e080220ea54ef1f5", size = 6042137 }, + { url = "https://files.pythonhosted.org/packages/06/b3/a12be911a3f027dd67cc6a4d23b4db95be1d14a17cda53a44e15d992bf18/ty-0.0.0a8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f9bc829ef45ea3ce0427f58fcab7a7c9d00b3f9696066a0f3002db43d7a4e52", size = 6744589 }, + { url = "https://files.pythonhosted.org/packages/64/ea/388681a052fe27a4f923037e27a2c0c84431fdb90f7fb412389dbf7bf7f6/ty-0.0.0a8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:0635e72feb984944d7477035b78dcf38618a9f9f01bd5c45204c9d92eef6e1b8", size = 7169411 }, + { url = "https://files.pythonhosted.org/packages/36/cf/6ab82918008db4be191df6efd585b329a5a7b814e5a4e29adf4f4cfa07e6/ty-0.0.0a8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1eba8ea7e2d820d304883b6608e464700c5ae3b4fee391800f286e062f8212d4", size = 6811515 }, + { url = "https://files.pythonhosted.org/packages/44/79/c2f780e26d00906ec0f9561ec421d99cc60ac54be9eef6c21ec2c90c68cf/ty-0.0.0a8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea51192cef819b7f9fc84586bccdccbcde5221a2041e736db7cf3bf3611e3336", size = 7615265 }, + { url = "https://files.pythonhosted.org/packages/c1/f8/17e52152c384a1804466b989b97dc15e392885b97b6051bec86bcb9d8311/ty-0.0.0a8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aeedb99ede34bc16081d5540b5e08e96a52fb6bfc2b1e3ce57908ea1013e5ea", size = 6551290 }, + { url = "https://files.pythonhosted.org/packages/c8/ce/143a14814e12d94377059707b1a7026fe96ee1bdd3c7397f49e29ac8b2ab/ty-0.0.0a8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33851d860d9044249f81aec19ac02e7b0bff13f94d713482328927142f20fbaf", size = 5987829 }, + { url = "https://files.pythonhosted.org/packages/55/36/e4fab57a67fba2cc666be03be692b8f90ab2adc7d398eea951e60d9c1d18/ty-0.0.0a8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aa7140d67b6a4b2a1cbe2c7536d3af1be16d095cc36da87cdd1986084a80eab9", size = 6069987 }, + { url = "https://files.pythonhosted.org/packages/72/61/1c6acfefb880781c78312fdd77911340aad170e55446482afcf1012ad258/ty-0.0.0a8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:35c5422739cb04198163539b0d7e0cd867b5c19a083499d92b79b0565da1b014", size = 6458886 }, + { url = "https://files.pythonhosted.org/packages/0d/c7/76ee868b54e8d34db6ad28af155a9bb3af6a37edf67132b8550d2bf92892/ty-0.0.0a8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ec7ce7d8e5b274b7496ffe04ac63db7455d6e7afd1a037d584ea98b4fd61c095", size = 6609876 }, + { url = "https://files.pythonhosted.org/packages/b3/70/deb7acea25321bef0c789626515835bda2110e68cff3b999771850ac6596/ty-0.0.0a8-py3-none-win32.whl", hash = "sha256:1d537231769bb0ae6c678a696ed0cf93a56cf998ce27a3ffc1cf36b5f02b629b", size = 5882195 }, + { url = "https://files.pythonhosted.org/packages/ad/be/6ce577f3063e9bbba8df14b23fb0348d6a56df3af2c2307f7adda9f46405/ty-0.0.0a8-py3-none-win_amd64.whl", hash = "sha256:5f2f4d836c569ed7d50fef5eaf342fd869868341ae6181a31ac7a474e00cdc75", size = 6353690 }, + { url = "https://files.pythonhosted.org/packages/dc/4d/6da3b067af63fabf612025c32df639b8e146298600b58cf7c015faab503f/ty-0.0.0a8-py3-none-win_arm64.whl", hash = "sha256:9420018ea3dae0138d6d5c6a508bc7051a2ec7d3ced69bc2ec6517096bb88e29", size = 6016368 }, +] + [[package]] name = "typer" version = "0.15.2" @@ -3283,6 +3636,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, ] +[[package]] +name = "typeshed-client" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/1e/f20e33447be772486acf028295cdd21437454a051adb602d52ddb5334f9e/typeshed_client-2.7.0.tar.gz", hash = "sha256:e63df1e738588ad39f1226de042f4407ab6a99c456f0837063afd83b1415447c", size = 433569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/39/4702c2901899c018189b9aa7eb75aa8eb54527aed71c3f285895190dc664/typeshed_client-2.7.0-py3-none-any.whl", hash = "sha256:97084e5abc58a76ace2c4618ecaebd625f2d19bbd85aa1b3fb86216bf174bbea", size = 624417 }, +] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -3301,6 +3667,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026 }, +] + [[package]] name = "unique-namer" version = "1.6.1" @@ -3310,6 +3688,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fb/72/e06078006bbc3635490b872e8647294cf5921f378634de43520012b7c09e/unique_namer-1.6.1-py3-none-any.whl", hash = "sha256:6e76751c0886244625b43a8e5e7c18168a9205f5a944c0dbbbd9eb219c4812f2", size = 71111 }, ] +[[package]] +name = "unleashclient" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "apscheduler" }, + { name = "fcache" }, + { name = "importlib-metadata" }, + { name = "mmh3" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "semver" }, + { name = "yggdrasil-engine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1e/84/41ce9c66b79b85f0bc8aed1928b4994a2f63a3c823dd29be757a4c7370da/unleashclient-6.2.1.tar.gz", hash = "sha256:dffb332eb6782263c9570115d3c7f00ebfccfe5074e5c8246c9002d15111d1b9", size = 39525 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/cb/ceed301730c0e78262970da7e1d00c85772730f31b3097888795010070c1/unleashclient-6.2.1-py3-none-any.whl", hash = "sha256:ff465882df7e27c1d14173b29e093fd717b92f98b3229e5d30407f318985ddf2", size = 30888 }, +] + [[package]] name = "uri-template" version = "1.3.0" @@ -3339,15 +3736,15 @@ wheels = [ [[package]] name = "uvicorn" -version = "0.34.0" +version = "0.29.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 } +sdist = { url = "https://files.pythonhosted.org/packages/49/8d/5005d39cd79c9ae87baf7d7aafdcdfe0b13aa69d9a1e3b7f1c984a2ac6d2/uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0", size = 40894 } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 }, + { url = "https://files.pythonhosted.org/packages/73/f5/cbb16fcbe277c1e0b8b3ddd188f2df0e0947f545c49119b589643632d156/uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de", size = 60813 }, ] [[package]] @@ -3451,6 +3848,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, ] +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437 }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096 }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332 }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152 }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096 }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523 }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790 }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165 }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160 }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395 }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841 }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, +] + [[package]] name = "widgetsnbextension" version = "4.0.13" @@ -3533,6 +3950,61 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, ] +[[package]] +name = "yggdrasil-engine" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/5e/d84e94e487bfef5a8f656c4458feb8b9bbf8f7569ff5e3c316115d9bc662/yggdrasil_engine-0.1.6-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:1282d86c97b3c2ba78a3ff855590482a383aa9bf00e3d797142041bf1163f756", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/5f/de/4419c646e686cf8fafaa68c2dbf2c3c2d10613fd199cd02d4914b0075653/yggdrasil_engine-0.1.6-cp310-abi3-macosx_11_0_x86_64.whl", hash = "sha256:8e022749987cd8916ce9ac0aa9e39342a3c5196def108954808305cc87aaacec", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/29/c7/27db6deaf5785f2ed9b44a7c3b82082c4e53f14d1726376c546ce8af7576/yggdrasil_engine-0.1.6-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:4b62ed2b00168ebe1aaa92b616c1d30279107b23a9fa57f33c858dd19a4d5c4b", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/d3/36/fff3b72ef3dcf2ce4b927371cca8b70dcb7d31600b4b03da620bdbdf7733/yggdrasil_engine-0.1.6-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:861a58dd16d18d9ddc615d32b09c080af9ae7ae43edf1d38b9b914cd14fb8563", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/bf/33/eb182c0400504c1e03128ac974b23b51f56363d992d25d6af7d166d184ae/yggdrasil_engine-0.1.6-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:a77686cb8b864220a90edd52c86011f3bf48f6a3364573591537cff73ae2333e", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/1f/8b/2cb01abc7382b6b5410273c8e244324b15eb053b20e8a0f1f0a013006d67/yggdrasil_engine-0.1.6-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:eefbe8d9833df036ab99ca57798568bec2414779f11c5161c268d8d1fe706a70", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/0e/35/c9708fe4d9220ad35c84033822b5cf2f958b608a4580650464f07e6dce2a/yggdrasil_engine-0.1.6-cp310-abi3-win_amd64.whl", hash = "sha256:483fb9d8eac615efc76b37db64206aa99937235d4349fecf002b36bac2e43093", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/99/82/870689bc91f0944325fa650519ea0e5a712f7b5b645902bf593cd9e59833/yggdrasil_engine-0.1.6-cp310-abi3-win_arm64.whl", hash = "sha256:088dd75e5f155654d4b6ea83475648cf5112dd33ebc91fb030aacf66a57987af", size = 1206841 }, + { url = "https://files.pythonhosted.org/packages/a1/72/2409bc22731ba861b8cdaed74bfe6cac844935fd7fb162f1b071595d4327/yggdrasil_engine-0.1.6-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:454cb09b232d1083db7206c1c29d38e94fd38f3ec4a8c3718fc46f1c26116c8c", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/fb/0e/496fb42ad8dbaba82bd924cc0df286518d9cfdc16e7892d7bf45c47d9b6c/yggdrasil_engine-0.1.6-cp311-abi3-macosx_11_0_x86_64.whl", hash = "sha256:ab2fbb026d6b18a2eaa23fdb91fe692c71cd3d279c3140fe32f9d35b21b0ffbb", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/9a/44/74a33301bc6dd865e536bfac91e623c2270d79e25d90eae31852ed41bf5e/yggdrasil_engine-0.1.6-cp311-abi3-manylinux2014_aarch64.whl", hash = "sha256:106bd725ccb9487cdc0c6c3074b50149cc58c88ca0420a76197209b7de8bc181", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/a9/2f/746ba0952672cd6e11a9ce1e826e1fbbbfedd2672170bf8a0c456f212008/yggdrasil_engine-0.1.6-cp311-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe17318019f6c020bb259a06f239827ab3738cb625638fc05d311fd63a27975d", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/b1/e2/452f80f1bc054385634fe18defa5d0b21046a0f4a2590be740e78e8930e0/yggdrasil_engine-0.1.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:be601545b56f8fc4d54714ca11cf235dc51e53094bf7e3ed7e2005e5b7687c7c", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/85/f1/81b347ef88c69a8e58a6082839705842274b60fa7a899dc9ee320737ad43/yggdrasil_engine-0.1.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:31f4f00407de4636450dfddddc08c3109a646de1cebfacb0552f17aeb630292a", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/1d/d9/06a9a0906e5a12d2178aa56a5ff0ea1df1e5d0ee5a355962ba5ef79447ea/yggdrasil_engine-0.1.6-cp311-abi3-win_amd64.whl", hash = "sha256:ef8a5aeedb7e17f9d0813b01094dee0cd983e70efabe6784b3525a74d6955c1d", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/86/d5/ee55e8892a9205b6dd8a9478f6cadbef3a58687bb4369fb57a58bc1c27d2/yggdrasil_engine-0.1.6-cp311-abi3-win_arm64.whl", hash = "sha256:6b28b0117b98109897cf58692731aa8425b942d8d8a055ef4f89f25dabc8f5f4", size = 1206841 }, + { url = "https://files.pythonhosted.org/packages/cf/df/8a39e091f07f0ad68177414c3cf2e85df96744ce8259c4b713803092f6e7/yggdrasil_engine-0.1.6-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:ae724d72b5e40e52063b1d4652832ced412d1c9837fb2893dc91238bdf6328c8", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/ee/a8/04b527cc9c96bdc2f65f83c2112e34858dbc037a6cc5f51738d824343830/yggdrasil_engine-0.1.6-cp312-abi3-macosx_11_0_x86_64.whl", hash = "sha256:f9e3fa04593fadc62288810071f77ae36e3947b26cc692399368c6b635bd601f", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/b3/04/82694aee946a87d88b8046b22fbe5fa788beb7e9e234d1a53d4f73ac1311/yggdrasil_engine-0.1.6-cp312-abi3-manylinux2014_aarch64.whl", hash = "sha256:636c2da91b8b18e52f9874527ecbfb9e3cad83e91088c7049d85bc7ce0a39168", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/fa/59/f6ca77ffe367959c125340737bbd232b19303e3fdaaffc5ae66f10dcc59f/yggdrasil_engine-0.1.6-cp312-abi3-manylinux2014_x86_64.whl", hash = "sha256:88088edf1c3a56a47d2ea9f0c1cf2ae6c54f1f0f7ff4df87a908c573c61f3d97", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/e8/32/7c5ba2b6cff177b1d64dbb0c57027018b8877f82f3a8e457e82b8727192f/yggdrasil_engine-0.1.6-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dff30bd34fab76d848dfc9f85c4e9c5ebee028a6dca7760b7c2c855cc2a4b760", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/a4/55/ae9a3c14efc39b85a5bff5d2e5315b68164921166a04ae7f6529ee3e924f/yggdrasil_engine-0.1.6-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f07aae78330d478d220d400d28394bc82d2bee761341d80380b905539829f99a", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/a4/ef/118e856332e733ac6dff4167589ea9d902d9ee2eb0d2c8b67fe3c7106999/yggdrasil_engine-0.1.6-cp312-abi3-win_amd64.whl", hash = "sha256:bfc0d880e1e44d16fde257405b2499b6c900516a17ff031abd67edcdabcca9f7", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/ca/b9/c3eaac1a378c11079f3d7886c34667de8e1486c4c1f0a0095fa78cdb03c7/yggdrasil_engine-0.1.6-cp312-abi3-win_arm64.whl", hash = "sha256:f614606eb922440bc01e4c968b37ff283219b26cfa2ac69b041083be4fcb0390", size = 1206841 }, + { url = "https://files.pythonhosted.org/packages/69/f5/61a1e0454840a0ecca682a3787e42b4c37f11061bdbaf8171c279ae21ced/yggdrasil_engine-0.1.6-cp313-abi3-macosx_11_0_arm64.whl", hash = "sha256:e9f1c5aa2e5e609c004efb807a5c6d4b2a2c9dbdf4a08cb703059f16c794585d", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/9d/1a/b788604d5f268d719b4dbf167404f9c465af54c0d8a1582fe787b7c14554/yggdrasil_engine-0.1.6-cp313-abi3-macosx_11_0_x86_64.whl", hash = "sha256:a8bec6097357eb67158eced362d2ae4a450adef5ac98e9f49f6425afb9f39ae2", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/a8/77/28d3a9b8c9dbbbc96fd262eee82c29c81eb977d31d0b76979515acf2858d/yggdrasil_engine-0.1.6-cp313-abi3-manylinux2014_aarch64.whl", hash = "sha256:a6974482ccee32028efc2618928c1a89bfe3e43062a9613b62fbc93c818f6399", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/41/ed/d11cac7cdec59427e53334ab596d279e88050211d16edd5d4c06c72d3539/yggdrasil_engine-0.1.6-cp313-abi3-manylinux2014_x86_64.whl", hash = "sha256:7cc48e14da17824d6e4a755b553bbdca18ca14b9dedc8df89a3bf0c5457af090", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/6b/a8/2b326ce51353dc8f2aacea7b476d80fbbf20173873cdacd9746115c355fb/yggdrasil_engine-0.1.6-cp313-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:34d29e6163c2e6d99741111711a317735802076f68b47d83446f23588f7f54fc", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/52/98/dbb90d3a3b52747e97be2d9e2fa060239a5244d05bfe970975f0e63683d1/yggdrasil_engine-0.1.6-cp313-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9f6b4eda8503f83f473f62d155e85e65eb56af88bc48992516418e2276a3de43", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/53/ec/2d9daa769ded3d3d95aefd0dc536a3e59b9abed2bcd7f51e7e6ad908c08c/yggdrasil_engine-0.1.6-cp313-abi3-win_amd64.whl", hash = "sha256:83d993bcd4e490c5a81399ea3a14c21fd3215f735d9ff77be642498897a9e986", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/30/6f/c6aa198ad4e544c4cb3221f9649a702a42e8b6246c99c47e6b0400b6b700/yggdrasil_engine-0.1.6-cp313-abi3-win_arm64.whl", hash = "sha256:c141ca351488a967f7b04dfa9b74dc831bb6926c2605ff338344042e1f4c1b4f", size = 1206841 }, + { url = "https://files.pythonhosted.org/packages/9f/74/aec987e12e5b7e585eb3547cebe53792fdd8e70ca9d624c37f8cd69eb341/yggdrasil_engine-0.1.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6d47f6128069882034f5842fae83bf7224cf9ba327bdf0b2e3bec80d17c10acb", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/f1/2f/0921e917a18b45bd7acb69054d985d7102ce6e21ff01018cce4152b37931/yggdrasil_engine-0.1.6-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:7877cfd6b14cce685620f16666e95546fa46b6768303dcf3241c846b0e5bfb88", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/88/04/5e5c410536841d64e9d1ecf21e28e387c015a41285d424eecf73ffabcca0/yggdrasil_engine-0.1.6-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:7492b8e26cf82562aa0f0b5c82f35a26bc771e596bcaade049b6e7f752ab395b", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/40/a6/f7d237e249893c00855617d91b81cabd0f631f9b2db3a79605e58120b2f8/yggdrasil_engine-0.1.6-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:ece45d5f3d6ccf553e9d143b2048c7dc762de79cb69ff81c8bb332edaa9dd7d2", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/48/c3/1fdbed9a6a57e60429b47336ea9d4b2164ccfcf92f0be50b059d57696499/yggdrasil_engine-0.1.6-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f0fa1f056feea15a441e05436ecfaa87ae727bd816171d8e67a6743a55b59d05", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/fb/68/8df99c406d904e4ff57d8d5c64c4d0bff37a14649f5fce97682fb3be3622/yggdrasil_engine-0.1.6-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:70060cba2672c574d467bac21184810fd85bc38fb19235249ec23b0ff6d190ed", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/57/16/1a7292697139a138cf8f4c6919e3d5da2543bd42dcdf4d62b7fdf104877a/yggdrasil_engine-0.1.6-cp38-abi3-win_amd64.whl", hash = "sha256:a67976617bbeea3537b1d3e2b27476b0182f0a81f0da7c3d8f666113472b9121", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/e7/fd/f0bfa588588cf78025f7067a17f2a44e881c10e22a8ae5140be783bf788b/yggdrasil_engine-0.1.6-cp38-abi3-win_arm64.whl", hash = "sha256:86fe526fbe2b8a691a4d000b95ea1d66a942cdc3c8876afc9f41c8d15d2ef18c", size = 1206841 }, + { url = "https://files.pythonhosted.org/packages/37/30/7612126765c0d6b129afe598d25cc08252eba07de3f2d2cc8da16036e529/yggdrasil_engine-0.1.6-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:4ceee8b032501dbeaa15017c591d4a5bf93c7f57136279412a7337014f616657", size = 1604256 }, + { url = "https://files.pythonhosted.org/packages/f4/0b/a7bdf2ee13b1fa49cfa566eef2377afbdbd8cfad9b09dd671f08315bcbea/yggdrasil_engine-0.1.6-cp39-abi3-macosx_11_0_x86_64.whl", hash = "sha256:504f5469f6f1d9019e0f6c6d01e493fbc3ee75e26ab4f44da5d0b2a8ad2f4fd9", size = 1621937 }, + { url = "https://files.pythonhosted.org/packages/2c/25/0aa5b674e7f7534e53f2d2ed3a4773f511a539dc504a164ee5a4965c937b/yggdrasil_engine-0.1.6-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:74a760f4962b53dda6ae8625dbdfa95f9a4b56c69d2f7efe9df94642910e7f77", size = 1822803 }, + { url = "https://files.pythonhosted.org/packages/ba/59/4f0410080f5c31730ebb5f9f3e4630de21ba13096c9a99772e9cbe85fca3/yggdrasil_engine-0.1.6-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:bb9b7e09dde622b41a5358774a6518739c5805425b740f09e7d12c27790fc17e", size = 1806770 }, + { url = "https://files.pythonhosted.org/packages/e5/2f/ab91a112e2e5f5be23fcaa95e7c7ae59770b16338595b4619b058fc02765/yggdrasil_engine-0.1.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1b9d45dec8a1e10c27cf36d6fd84bd6ec53e03bfc2b7163631a621c57311aca6", size = 1808459 }, + { url = "https://files.pythonhosted.org/packages/84/ef/4f65a4b3bd3f7c407e8fabefb0dd7bb432a6541aa620284f38a46272b5a9/yggdrasil_engine-0.1.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:05d13ef5897c005472df4e4d11893e203a20c0029cacb4b7d688a1259aba4884", size = 1801570 }, + { url = "https://files.pythonhosted.org/packages/b8/4f/858b2724183086fa58c74f1d25fbfc10fc83bafe21d140143c00a6947f0e/yggdrasil_engine-0.1.6-cp39-abi3-win_amd64.whl", hash = "sha256:e185d8ad9c22566573736cad35d9d9f4da0de0488b7fe317bebd7a0419927e76", size = 2981318 }, + { url = "https://files.pythonhosted.org/packages/99/d1/fcbe83c106168c67c9f163806d50f988e42143e249d93105412075c0d82b/yggdrasil_engine-0.1.6-cp39-abi3-win_arm64.whl", hash = "sha256:9ce5deb460b7ba1ac285aae0f3e8c38bf008fd0ec9902a4fb73c09b581914f36", size = 1206841 }, +] + [[package]] name = "zipp" version = "3.21.0" diff --git a/src/analytics/AGENTS.md b/src/analytics/AGENTS.md new file mode 100644 index 000000000..5a38d9ac2 --- /dev/null +++ b/src/analytics/AGENTS.md @@ -0,0 +1,78 @@ +# AGENTS.md - analytics + +This directory contains the Metabase analytics service for the Julep platform. + +Key Uses +- Bash commands: + - cd analytics + - docker compose up analytics + - docker buildx bake analytics +- Core files: + - `docker-compose.yml` for service deployment + - `Dockerfile` for Metabase container + - `README.md` for detailed documentation +- Configuration guidelines: + - Set `MEMORY_STORE_PASSWORD` for database access + - Configure `JULEP_HOST` for proper URL generation + - Uses same PostgreSQL instance as agents-api +- Testing instructions: + - Health check: `curl http://localhost:3001/api/health` + - Access dashboard: `http://localhost:3001` or `https:///analytics` +- Repository etiquette: + - Don't commit Metabase database files + - Keep sensitive configuration in environment variables +- Developer environment: + - Requires Docker and Docker Compose + - Connects to memory-store PostgreSQL service +- Unexpected behaviors: + - First run shows setup wizard (this is normal) + - Metabase creates its own database for metadata + +# Analytics Service + +## Overview +The analytics service provides business intelligence capabilities using Metabase, allowing users to create dashboards, run queries, and analyze data from the Julep platform's PostgreSQL database. + +## Architecture +- **Analytics Engine**: Metabase (open-source BI tool) +- **Database**: Shared PostgreSQL instance with agents-api +- **Routing**: Exposed via Traefik at `/analytics` path +- **Authentication**: Metabase's built-in user management + +## Key Components + +### Metabase Configuration +- **Application Database**: Stores Metabase metadata in PostgreSQL +- **Data Source**: Connects to Julep's main PostgreSQL database +- **Site URL**: Configured for proper link generation +- **SSL**: Handled by Traefik gateway + +### Environment Variables +- `MEMORY_STORE_PASSWORD`: PostgreSQL password +- `JULEP_HOST`: Host domain for URL configuration +- `TAG`: Docker image tag for versioning + +## Integration Points +- **PostgreSQL**: Direct connection to memory-store service +- **Traefik Gateway**: Reverse proxy with SSL termination +- **Docker Network**: Shares julep-network with other services + +## Security Features +- User authentication via Metabase +- SSL/TLS via Traefik +- Database credentials in environment variables +- Network isolation via Docker + +## Development Workflow +1. Build image: `docker buildx bake analytics` +2. Deploy service: `docker compose up -d analytics` +3. Access dashboard: Navigate to `/analytics` +4. Complete setup wizard on first run +5. Connect to Julep database + +## Monitoring +- Health endpoint at `/api/health` +- Container health checks every 30s +- Logs available via Docker + +## AIDEV-NOTE: Metabase service for Julep analytics and reporting \ No newline at end of file diff --git a/src/analytics/README.md b/src/analytics/README.md new file mode 100644 index 000000000..b707bce3a --- /dev/null +++ b/src/analytics/README.md @@ -0,0 +1,129 @@ +# Julep Analytics Service + +This service provides a Metabase analytics dashboard for the Julep platform, allowing users to visualize and analyze data from the PostgreSQL database. + +## Overview + +The analytics service uses Metabase, an open-source business intelligence tool, to provide: +- Interactive dashboards and visualizations +- SQL query interface for data exploration +- Scheduled reports and alerts +- User access management + +## Architecture + +- **Service**: Metabase (latest version) +- **Database**: Connects to the same PostgreSQL instance as agents-api +- **Routing**: Exposed via Traefik gateway at `/analytics` +- **SSL**: Automatically handled by Traefik with Let's Encrypt + +## Configuration + +### Environment Variables + +- `MEMORY_STORE_PASSWORD`: Password for PostgreSQL connection (default: `julep_secure_password`) +- `JULEP_HOST`: Host domain for the analytics URL (default: `localhost`) +- `TAG`: Docker image tag (default: `dev`) + +### Database Connection + +Metabase connects to the PostgreSQL database with: +- Host: `memory-store` +- Port: `5432` +- Database: `postgres` (for Julep data), `metabase` (for Metabase metadata) +- Username: `postgres` +- Password: Value of `MEMORY_STORE_PASSWORD` + +## Deployment + +### Using Docker Compose + +```bash +# Deploy with other services +docker compose --profile multi-tenant up -d + +# Deploy only analytics +docker compose -f analytics/docker-compose.yml up -d +``` + +### Building the Image + +```bash +# Using docker-bake +docker buildx bake analytics + +# Using docker build +docker build -t julepai/analytics:dev analytics/ +``` + +## Access + +Once deployed, the analytics dashboard is available at: +- Local: `http://localhost:3001` +- Via Gateway: `https:///analytics` + +### Initial Setup + +1. Navigate to the analytics URL +2. Create an admin account +3. Connect to the Julep database: + - Database Type: PostgreSQL + - Host: `memory-store` + - Port: `5432` + - Database: `postgres` + - Username: `postgres` + - Password: (use `MEMORY_STORE_PASSWORD` value) + +## Security + +- Authentication is handled by Metabase's built-in user management +- SSL/TLS is provided by Traefik gateway +- Database credentials are managed via environment variables +- CORS headers are configured in Traefik + +## Monitoring + +Health check endpoint: `http://analytics:3000/api/health` + +## Development + +### Local Development + +```bash +# Run Metabase locally +docker run -d -p 3000:3000 \ + -e MB_DB_TYPE=postgres \ + -e MB_DB_HOST=localhost \ + -e MB_DB_PORT=5432 \ + -e MB_DB_DBNAME=metabase \ + -e MB_DB_USER=postgres \ + -e MB_DB_PASS=your_password \ + --name metabase metabase/metabase +``` + +### Customization + +To customize Metabase: +1. Modify environment variables in `docker-compose.yml` +2. Add custom plugins or themes via Dockerfile +3. Configure additional settings via Metabase admin panel + +## Troubleshooting + +### Common Issues + +1. **Cannot connect to database** + - Verify PostgreSQL is running + - Check network connectivity between containers + - Confirm credentials are correct + +2. **Analytics not accessible via gateway** + - Check Traefik configuration + - Verify analytics service is healthy + - Review gateway logs + +3. **Metabase setup wizard appears** + - This is normal on first run + - Complete the setup to initialize Metabase + +## AIDEV-NOTE: Analytics service integrated with existing Julep infrastructure \ No newline at end of file diff --git a/src/analytics/docker-compose.yml b/src/analytics/docker-compose.yml new file mode 100644 index 000000000..a825dc54d --- /dev/null +++ b/src/analytics/docker-compose.yml @@ -0,0 +1,58 @@ +name: julep-analytics + +services: + analytics: + image: metabase/metabase:latest + container_name: julep-analytics + profiles: + - multi-tenant + environment: + # Metabase application database (for storing Metabase's own data) + MB_DB_TYPE: postgres + MB_DB_DBNAME: metabase + MB_DB_PORT: 5432 + MB_DB_USER: postgres + MB_DB_PASS: ${METABASE_DB_PASSWORD:-metabase_secure_password} + MB_DB_HOST: analytics-db + + # Metabase settings + MB_SITE_URL: https://${JULEP_HOST:-localhost}/analytics + MB_SITE_NAME: "Julep Analytics" + MB_APPLICATION_NAME: "Julep Analytics" + + # AIDEV-NOTE: Metabase configured to use same postgres instance as agents-api + ports: + - "3001:3000" # Expose on different port to avoid conflicts + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + depends_on: + analytics-db: + condition: service_healthy + + analytics-db: + image: postgres:latest + container_name: julep-analytics-db + profiles: + - multi-tenant + hostname: analytics-db + restart: unless-stopped + volumes: + - analytics-db-data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=postgres + - POSTGRES_DB=metabase + - POSTGRES_PASSWORD=${METABASE_DB_PASSWORD:-metabase_secure_password} + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres -d metabase'] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + analytics-db-data: + external: true diff --git a/blob-store/.gitignore b/src/blob-store/.gitignore similarity index 100% rename from blob-store/.gitignore rename to src/blob-store/.gitignore diff --git a/src/blob-store/AGENTS.md b/src/blob-store/AGENTS.md new file mode 100644 index 000000000..fdf11f1ea --- /dev/null +++ b/src/blob-store/AGENTS.md @@ -0,0 +1,87 @@ +# AGENTS.md - blob-store + +This directory contains the blob storage service configuration using SeaweedFS for S3-compatible object storage. + +Key Uses +- Bash commands: + - cd blob-store + - docker-compose up seaweedfs + - docker-compose -f docker-compose-ha.yml up # High availability mode +- Core files: + - `docker-compose.yml` for single-instance deployment + - `docker-compose-ha.yml` for high-availability deployment + - `entrypoint.sh` for container initialization + - `s3.json.template` for S3 API configuration +- Configuration guidelines: + - Set `S3_ACCESS_KEY` and `S3_SECRET_KEY` environment variables + - Use `DEBUG=true` for troubleshooting (prints config in logs) +- Testing instructions: + - Health check: `curl http://localhost:9333/cluster/healthz` + - S3 API test: `curl http://localhost:8333/` +- Repository etiquette: + - Don't commit actual S3 credentials to version control +- Developer environment: + - Requires Docker and Docker Compose +- Unexpected behaviors: + - SeaweedFS data persists in named Docker volume `seaweedfs_data` + +# Blob Store Service + +## Overview +The blob-store service provides S3-compatible object storage using SeaweedFS, serving as the file storage backend for the Julep platform. It handles file uploads, downloads, and storage for agents, tasks, and user content. + +## Architecture +- **Storage Engine**: SeaweedFS distributed file system +- **API Interface**: S3-compatible REST API +- **Data Persistence**: Docker volume-backed storage +- **Deployment**: Containerized with Docker Compose + +## Key Components + +### SeaweedFS Services +- **Master**: Cluster coordination and metadata (port 9333) +- **Volume**: Data storage and replication (port 28080) +- **Filer**: File system interface (port 8888) +- **S3 Gateway**: S3-compatible API (port 8333) + +### Configuration Files +- `s3.json.template`: S3 API configuration template +- `entrypoint.sh`: Container startup script with validation +- `docker-compose.yml`: Single-instance deployment +- `docker-compose-ha.yml`: High-availability deployment + +## Storage Features +- S3-compatible API for seamless integration +- Distributed storage with automatic replication +- Horizontal scaling support +- Built-in data integrity and consistency +- Metrics endpoint for monitoring (port 9321) + +## Environment Variables +- `S3_ACCESS_KEY`: S3 API access key (required) +- `S3_SECRET_KEY`: S3 API secret key (required) +- `DEBUG`: Enable debug logging (optional, default: false) +- `TAG`: Docker image tag (optional, default: dev) + +## API Endpoints +- `http://localhost:8333/`: S3-compatible API +- `http://localhost:9333/cluster/healthz`: Health check +- `http://localhost:8888/`: Filer web interface +- `http://localhost:9321/metrics`: Prometheus metrics + +## Deployment Modes +1. **Single Instance**: Basic deployment for development +2. **High Availability**: Multi-node deployment for production +3. **External Volume**: Persistent data storage across container restarts + +## Integration Points +- Used by `agents-api` for file storage via S3 client +- Integrates with file upload/download endpoints +- Supports large payload storage for Temporal workflows +- Provides persistent storage for agent knowledge bases + +## Monitoring +- Health checks via HTTP endpoints +- Prometheus metrics for storage and performance monitoring +- Docker container health checks with automatic restart +- Volume usage and replication status monitoring \ No newline at end of file diff --git a/src/blob-store/CLAUDE.md b/src/blob-store/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/blob-store/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/blob-store/Dockerfile b/src/blob-store/Dockerfile similarity index 100% rename from blob-store/Dockerfile rename to src/blob-store/Dockerfile diff --git a/blob-store/docker-compose-ha.yml b/src/blob-store/docker-compose-ha.yml similarity index 52% rename from blob-store/docker-compose-ha.yml rename to src/blob-store/docker-compose-ha.yml index 6634357ea..dd894d447 100644 --- a/blob-store/docker-compose-ha.yml +++ b/src/blob-store/docker-compose-ha.yml @@ -12,7 +12,7 @@ services: ports: - 9333:9333 - 19333:19333 - command: "master -ip=seaweedfs-master -ip.bind=0.0.0.0 -port=9333 -metricsPort=9321 -raftBootstrap" + command: "master -volumeSizeLimitMB=30000 -ip=seaweedfs-master -ip.bind=0.0.0.0 -port=9333 -metricsPort=9321 -raftBootstrap" healthcheck: test: [ "CMD", "wget", "-qSO", "-", "http://0.0.0.0:9333/cluster/healthz" ] interval: 60s @@ -25,8 +25,8 @@ services: <<: *seaweedfs-base ports: - 28080:28080 # Since 8080 is already used by agents-api, we use 28080 - - 18081:18080 - command: 'volume -mserver="seaweedfs-master:9333" -dir=/data -ip.bind=0.0.0.0 -port=28080 -ip=seaweedfs-volume -metricsPort=9321 -preStopSeconds=3' + # - 18081:18080 + command: 'volume -max=8 -mserver="seaweedfs-master:9333" -dir=/data -ip.bind=0.0.0.0 -port=28080 -ip=seaweedfs-volume -metricsPort=9321 -preStopSeconds=3' healthcheck: test: [ "CMD", "wget", "-qSO", "-", "http://0.0.0.0:28080/healthz" ] interval: 60s @@ -34,13 +34,49 @@ services: timeout: 30s start_period: 30s start_interval: 10s + depends_on: + seaweedfs-master: + condition: service_healthy + volumes: + - seaweedfs_data:/data + seaweedfs-volume2: + <<: *seaweedfs-base + ports: + - 28081:28081 + # - 18082:18081 + command: 'volume -max=8 -mserver="seaweedfs-master:9333" -dir=/data -ip.bind=0.0.0.0 -port=28081 -ip=seaweedfs-volume2 -metricsPort=9322 -preStopSeconds=3' + healthcheck: + test: [ "CMD", "wget", "-qSO", "-", "http://0.0.0.0:28081/healthz" ] + interval: 60s + retries: 6 + timeout: 30s + start_period: 30s + start_interval: 10s depends_on: seaweedfs-master: condition: service_healthy + volumes: + - seaweedfs_data2:/data + seaweedfs-volume3: + <<: *seaweedfs-base + ports: + - 28082:28082 + # - 18083:18083 + command: 'volume -max=8 -mserver="seaweedfs-master:9333" -dir=/data -ip.bind=0.0.0.0 -port=28082 -ip=seaweedfs-volume3 -metricsPort=9323 -preStopSeconds=3' + healthcheck: + test: [ "CMD", "wget", "-qSO", "-", "http://0.0.0.0:28082/healthz" ] + interval: 60s + retries: 6 + timeout: 30s + start_period: 30s + start_interval: 10s + depends_on: + seaweedfs-master: + condition: service_healthy volumes: - - seaweedfs_data:/data + - seaweedfs_data3:/data seaweedfs-filer: <<: *seaweedfs-base @@ -64,7 +100,7 @@ services: seaweedfs-volume: condition: service_healthy - seaweedfs-s3: + seaweedfs: <<: *seaweedfs-base ports: - 8333:8333 @@ -74,9 +110,17 @@ services: condition: service_healthy seaweedfs-volume: condition: service_healthy + seaweedfs-volume2: + condition: service_healthy + seaweedfs-volume3: + condition: service_healthy seaweedfs-filer: condition: service_healthy volumes: seaweedfs_data: external: true + seaweedfs_data2: + external: true + seaweedfs_data3: + external: true diff --git a/blob-store/docker-compose.yml b/src/blob-store/docker-compose.yml similarity index 100% rename from blob-store/docker-compose.yml rename to src/blob-store/docker-compose.yml diff --git a/blob-store/entrypoint.sh b/src/blob-store/entrypoint.sh similarity index 100% rename from blob-store/entrypoint.sh rename to src/blob-store/entrypoint.sh diff --git a/blob-store/s3.json.template b/src/blob-store/s3.json.template similarity index 100% rename from blob-store/s3.json.template rename to src/blob-store/s3.json.template diff --git a/cli/.gitignore b/src/cli/.gitignore similarity index 100% rename from cli/.gitignore rename to src/cli/.gitignore diff --git a/cli/CLAUDE.md b/src/cli/AGENTS.md similarity index 80% rename from cli/CLAUDE.md rename to src/cli/AGENTS.md index 16da7d278..efae43655 100644 --- a/cli/CLAUDE.md +++ b/src/cli/AGENTS.md @@ -1,3 +1,31 @@ +# AGENTS.md - cli + +This directory contains the Julep CLI implementation (`julep_cli`). + +Key Uses +- Bash commands: + - cd cli + - source .venv/bin/activate + - poe format + - poe lint + - poe typecheck + - poe test + - poe check +- Core files and utilities: + - `src/julep_cli/` contains command and subcommand handlers. +- Code style guidelines: + - Follows root `AGENTS.md` Python standards (FastAPI style not directly relevant). + - CLI functions and flags use snake_case and kebab-case respectively. +- Testing instructions: + - Tests in `cli/tests/` using `ward` and `pytest`. + - Run specific tests: `poe test --search "pattern" --fail-limit 1`. +- Repository etiquette: + - Version CLI via `julep.yaml` and bump in lockfile. +- Developer environment: + - Ensure `PYTHONPATH=$PWD` when invoking commands. +- Unexpected behaviors: + - Autogenerated CLI docs should be manually reviewed in `README.md`. + # Julep CLI Architecture ## Overview @@ -93,4 +121,4 @@ The Julep CLI is a command-line interface tool for interacting with the Julep pl - Julep SDK used for all API communication - Rate limiting and error handling via SDK features - Authenticated via JWT tokens stored in config -- Environment-aware (production, dev) endpoint selection \ No newline at end of file +- Environment-aware (production, dev) endpoint selection diff --git a/src/cli/CLAUDE.md b/src/cli/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/cli/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/cli/README.md b/src/cli/README.md similarity index 99% rename from cli/README.md rename to src/cli/README.md index 7252c2cc1..6b3100dce 100644 --- a/cli/README.md +++ b/src/cli/README.md @@ -70,7 +70,6 @@ The `julep` CLI tool provides a comprehensive command-line interface for interac - [Standard Input/Output Handling](#standard-inputoutput-handling) - [Quiet Mode](#quiet-mode) - [Color Output](#color-output) - - [TODO](#todo) --- @@ -965,6 +964,13 @@ julep run --task "Generate Story" --input '{"idea": "A cat who learns to fly"}' 1. Submits the task for execution with the provided input. 2. If `--wait` is specified, waits for the task to complete and outputs the final result. +**Error handling example:** + +```bash +julep run --task invalid-id --input '{}' +# -> Error creating execution: Task not found +``` + --- ### Execution Management @@ -1238,6 +1244,3 @@ julep agents list --color # Force enable colored output - `NO_COLOR`: Set this to any value to disable color output - `FORCE_COLOR`: Set this to any value to force color output -## TODO - -- [x] Add `julep import agent --id --output=` \ No newline at end of file diff --git a/cli/cli-reference.md b/src/cli/cli-reference.md similarity index 100% rename from cli/cli-reference.md rename to src/cli/cli-reference.md diff --git a/cli/poe_tasks.toml b/src/cli/poe_tasks.toml similarity index 66% rename from cli/poe_tasks.toml rename to src/cli/poe_tasks.toml index 57bca97b2..5be2a6733 100644 --- a/cli/poe_tasks.toml +++ b/src/cli/poe_tasks.toml @@ -1,7 +1,7 @@ [tasks] format = "ruff format" lint = "ruff check" -typecheck = "pyright --threads 8 --skipunannotated julep_cli" +typecheck = "ty check" check = [ "lint", "format", @@ -10,4 +10,4 @@ check = [ [tasks.test] env = { JULEP_CLI_TESTING = "true", PYTHONPATH = "{PYTHONPATH}:." } -cmd = "ward test --exclude .venv" +cmd = "pytest tests/ -v" diff --git a/cli/pyproject.toml b/src/cli/pyproject.toml similarity index 62% rename from cli/pyproject.toml rename to src/cli/pyproject.toml index 0195f0a02..d9a181316 100644 --- a/cli/pyproject.toml +++ b/src/cli/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "julep-cli" -version = "0.1.13" +version = "0.2.1-alpha0" description = "Julep CLI" readme = "README.md" requires-python = ">=3.11,<3.13" @@ -27,7 +27,7 @@ dependencies = [ "textual>=1.0.0", "trogon[typer]>=0.6.0", "typer-config[yaml]>=1.4.2", - "julep>=1.56.0", + "julep>=2,<3", "questionary>=2.1.0", "db-sqlite3>=0.0.1", "stringcase>=1.2.0", @@ -46,12 +46,13 @@ dev = [ "ipywidgets>=8.1.5", "jupyterlab>=4.3.1", "pip>=24.3.1", - "poethepoet>=0.31.1", - "pyinstaller>=6.11.1", - "pyright>=1.1.391", - "ruff>=0.8.4", + "poethepoet>=0.34,<1", + "pyinstaller>=6.14,<7", + "ruff>=0.11,<1", "textual-dev>=1.7.0", - "ward>=0.68.0b0", + "ty>=0.0.1a8", + "pytest>=8.0.0", + "pytest-mock>=3.14.0", ] [tool.setuptools] @@ -62,3 +63,21 @@ py-modules = [ [tool.setuptools.packages.find] where = ["src"] +[tool.ty.src] +root = "./src" + +[tool.ty.rules] +invalid-argument-type = "ignore" +invalid-assignment = "ignore" +invalid-parameter-default = "ignore" +invalid-type-form = "ignore" +missing-argument = "ignore" +no-matching-overload = "ignore" +not-iterable = "ignore" +possibly-unbound-attribute = "ignore" +possibly-unbound-import = "ignore" +redundant-cast = "ignore" +unknown-argument = "ignore" +unresolved-attribute = "ignore" +unsupported-operator = "ignore" +unused-ignore-comment = "ignore" diff --git a/cli/spec.md b/src/cli/spec.md similarity index 99% rename from cli/spec.md rename to src/cli/spec.md index 995db71c6..63f85a28e 100644 --- a/cli/spec.md +++ b/src/cli/spec.md @@ -71,7 +71,6 @@ The `julep-cli` CLI tool provides a comprehensive command-line interface for int - [Standard Input/Output Handling](#standard-inputoutput-handling) - [Quiet Mode](#quiet-mode) - [Color Output](#color-output) - - [TODO](#todo) --- @@ -1225,4 +1224,3 @@ julep agents list --color # Force enable colored output --- -## TODO \ No newline at end of file diff --git a/cli/src/julep_cli/__init__.py b/src/cli/src/julep_cli/__init__.py similarity index 100% rename from cli/src/julep_cli/__init__.py rename to src/cli/src/julep_cli/__init__.py diff --git a/cli/src/julep_cli/__main__.py b/src/cli/src/julep_cli/__main__.py similarity index 100% rename from cli/src/julep_cli/__main__.py rename to src/cli/src/julep_cli/__main__.py diff --git a/cli/src/julep_cli/agents.py b/src/cli/src/julep_cli/agents.py similarity index 100% rename from cli/src/julep_cli/agents.py rename to src/cli/src/julep_cli/agents.py diff --git a/cli/src/julep_cli/app.py b/src/cli/src/julep_cli/app.py similarity index 100% rename from cli/src/julep_cli/app.py rename to src/cli/src/julep_cli/app.py diff --git a/cli/src/julep_cli/auth.py b/src/cli/src/julep_cli/auth.py similarity index 100% rename from cli/src/julep_cli/auth.py rename to src/cli/src/julep_cli/auth.py diff --git a/cli/src/julep_cli/chat.py b/src/cli/src/julep_cli/chat.py similarity index 100% rename from cli/src/julep_cli/chat.py rename to src/cli/src/julep_cli/chat.py diff --git a/cli/src/julep_cli/executions.py b/src/cli/src/julep_cli/executions.py similarity index 100% rename from cli/src/julep_cli/executions.py rename to src/cli/src/julep_cli/executions.py diff --git a/cli/src/julep_cli/importt.py b/src/cli/src/julep_cli/importt.py similarity index 99% rename from cli/src/julep_cli/importt.py rename to src/cli/src/julep_cli/importt.py index 236df4b7b..fec7f2d22 100644 --- a/cli/src/julep_cli/importt.py +++ b/src/cli/src/julep_cli/importt.py @@ -73,9 +73,7 @@ def importt( ), ] = False, ): - """ - Import an agent from the Julep platform using the --agent option. - """ + """Import entities from the Julep platform. Currently only agents are supported.""" output = output or source / "src/agents" diff --git a/cli/src/julep_cli/init.py b/src/cli/src/julep_cli/init.py similarity index 100% rename from cli/src/julep_cli/init.py rename to src/cli/src/julep_cli/init.py diff --git a/cli/src/julep_cli/logs.py b/src/cli/src/julep_cli/logs.py similarity index 100% rename from cli/src/julep_cli/logs.py rename to src/cli/src/julep_cli/logs.py diff --git a/cli/src/julep_cli/ls.py b/src/cli/src/julep_cli/ls.py similarity index 100% rename from cli/src/julep_cli/ls.py rename to src/cli/src/julep_cli/ls.py diff --git a/cli/src/julep_cli/models.py b/src/cli/src/julep_cli/models.py similarity index 100% rename from cli/src/julep_cli/models.py rename to src/cli/src/julep_cli/models.py diff --git a/src/cli/src/julep_cli/run.py b/src/cli/src/julep_cli/run.py new file mode 100644 index 000000000..aea475623 --- /dev/null +++ b/src/cli/src/julep_cli/run.py @@ -0,0 +1,134 @@ +import json +from pathlib import Path +from typing import Annotated +from uuid import UUID + +import julep +import typer +from rich.progress import Progress, SpinnerColumn, TextColumn + +from .app import app, console, error_console +from .executions import create_execution +from .logs import logs +from .utils import get_julep_client + + +@app.command() +def run( + task: Annotated[ + UUID, + typer.Option( + "--task", + "-t", + help="ID of the task to execute", + ), + ], + input: Annotated[ + str | None, + typer.Option( + "--input", + help="JSON string representing the input for the task (defaults to {})", + ), + ] = None, + input_file: Annotated[ + Path | None, + typer.Option( + "--input-file", + help="Path to a file containing the input for the task", + ), + ] = None, + wait: Annotated[ + bool, + typer.Option( + "--wait", + help="Wait for the task to complete before exiting, stream logs to stdout", + ), + ] = False, +): + """Run a defined task with specified input parameters""" + + # Parse input + task_input = {} + if input and input_file: + msg = "Cannot specify both --input and --input-file" + raise typer.BadParameter(msg) + + if input: + try: + task_input = json.loads(input) + if not isinstance(task_input, dict): + msg = "Input must be a JSON object (dictionary)" + raise typer.BadParameter(msg) + except json.JSONDecodeError as e: + msg = f"Input must be valid JSON: {e}" + raise typer.BadParameter(msg) + elif input_file: + try: + with open(input_file) as f: + task_input = json.load(f) + if not isinstance(task_input, dict): + msg = "Input file must contain a JSON object (dictionary)" + raise typer.BadParameter(msg) + except FileNotFoundError as e: + msg = f"Input file not found: {e}" + raise typer.BadParameter(msg) + except json.JSONDecodeError as e: + msg = f"Input file must be valid JSON: {e}" + raise typer.BadParameter(msg) + + client = get_julep_client() + + # AIDEV-NOTE: Execute task via Julep API and surface errors clearly + with Progress( + SpinnerColumn(), + TextColumn("[progress.description]{task.description}"), + transient=True, + console=console, + ) as progress: + try: + run_task = progress.add_task("Creating execution...", start=False) + progress.start_task(run_task) + + execution = create_execution(client, str(task), task_input) + except Exception as e: + error_console.print( + f"[bold red]Error creating execution: {e}[/bold red]", + highlight=True, + ) + raise typer.Exit(1) + + console.print( + f"Execution created successfully! Execution ID: {execution.id}", + ) + + # AIDEV-NOTE: Execute task via Julep API with specific error handling for different failure types + with Progress( + SpinnerColumn(), + TextColumn("[progress.description]{task.description}"), + transient=True, + console=console, + ) as progress: + try: + run_task = progress.add_task("Creating execution...", start=False) + progress.start_task(run_task) + + execution = create_execution(client, str(task), task_input) + except julep.NotFoundError as e: + error_console.print( + f"[bold red]Task not found: {e}[/bold red]", + highlight=True, + ) + raise typer.Exit(1) + except Exception as e: + error_console.print( + f"[bold red]Error creating execution: {e}[/bold red]", + highlight=True, + ) + raise typer.Exit(1) + + console.print( + f"Execution created successfully! Execution ID: {execution.id}", + ) + + if wait: + logs(execution_id=execution.id, tailing=True) diff --git a/cli/src/julep_cli/sync.py b/src/cli/src/julep_cli/sync.py similarity index 100% rename from cli/src/julep_cli/sync.py rename to src/cli/src/julep_cli/sync.py diff --git a/cli/src/julep_cli/tasks.py b/src/cli/src/julep_cli/tasks.py similarity index 100% rename from cli/src/julep_cli/tasks.py rename to src/cli/src/julep_cli/tasks.py diff --git a/cli/src/julep_cli/tools.py b/src/cli/src/julep_cli/tools.py similarity index 100% rename from cli/src/julep_cli/tools.py rename to src/cli/src/julep_cli/tools.py diff --git a/cli/src/julep_cli/utils.py b/src/cli/src/julep_cli/utils.py similarity index 99% rename from cli/src/julep_cli/utils.py rename to src/cli/src/julep_cli/utils.py index 17b0e86ca..8062c52de 100644 --- a/cli/src/julep_cli/utils.py +++ b/src/cli/src/julep_cli/utils.py @@ -176,7 +176,7 @@ def get_entity_from_lock_file( type: str, id: str, project_dir: Path = Path.cwd(), -) -> LockedEntity: +) -> LockedEntity | None: """ Get the contents of lock file """ diff --git a/cli/src/julep_cli/wrapper.py b/src/cli/src/julep_cli/wrapper.py similarity index 100% rename from cli/src/julep_cli/wrapper.py rename to src/cli/src/julep_cli/wrapper.py diff --git a/integrations-service/integrations/routers/__init__.py b/src/cli/tests/__init__.py similarity index 100% rename from integrations-service/integrations/routers/__init__.py rename to src/cli/tests/__init__.py diff --git a/src/cli/tests/test_auth.py b/src/cli/tests/test_auth.py new file mode 100644 index 000000000..5cba1214d --- /dev/null +++ b/src/cli/tests/test_auth.py @@ -0,0 +1,178 @@ +from pathlib import Path +from unittest.mock import patch + +from julep_cli import app +from typer.testing import CliRunner + + +def create_runner(env: dict | None = None): + env = env or {} + return CliRunner(env=env) + + +mock_config_dir = Path("/tmp/mock/.config/julep") + + +def test_auth_command_should_save_api_key_when_provided_via_command_line(): + test_api_key = "test-api-key-123" + + runner = create_runner() + + with ( + patch("julep_cli.auth.save_config") as mock_save, + patch("julep_cli.auth.get_julep_client") as mock_client, + patch("julep_cli.auth.get_config") as mock_get_config, + ): + # Mock config to return empty dict + mock_get_config.return_value = {} + # Mock the client to simulate successful authentication + mock_client.return_value.agents.list.return_value = [] + + result = runner.invoke( + app, + ["auth", "--api-key", test_api_key, "--environment", "production", "--no-verify"], + ) + + assert result.exit_code == 0 + assert "Successfully authenticated with production environment!" in result.stdout + mock_save.assert_called_once_with({ + "environment": "production", + "api_key": test_api_key, + }) + + +def test_auth_command_should_use_api_key_from_environment_if_not_provided(): + test_api_key = "test-env-api-key-456" + + runner = create_runner({"JULEP_API_KEY": test_api_key}) + + with ( + patch("julep_cli.auth.save_config") as mock_save, + patch("julep_cli.auth.get_julep_client") as mock_client, + patch("julep_cli.auth.get_config") as mock_get_config, + ): + # Mock config to return empty dict + mock_get_config.return_value = {} + # Mock the client to simulate successful authentication + mock_client.return_value.agents.list.return_value = [] + + result = runner.invoke(app, ["auth", "--environment", "production", "--no-verify"]) + + assert result.exit_code == 0 + assert "Successfully authenticated with production environment!" in result.stdout + mock_save.assert_called_once_with({ + "environment": "production", + "api_key": test_api_key, + }) + + +def test_auth_command_should_fail_when_no_api_key_is_provided(): + runner = create_runner() + + with patch("julep_cli.auth.get_config") as mock_get_config: + # Mock config to return empty dict + mock_get_config.return_value = {} + + result = runner.invoke(app, ["auth", "--environment", "production"]) + + # Typer exits with code 2 for missing required options when using the CLI runner + assert result.exit_code == 2 + assert "Error" in result.stderr or "Missing option" in result.stderr + + +def test_auth_command_with_environment_dev(): + test_api_key = "test-dev-key-789" + + runner = create_runner() + + with ( + patch("julep_cli.auth.save_config") as mock_save, + patch("julep_cli.auth.get_julep_client") as mock_client, + patch("julep_cli.auth.get_config") as mock_get_config, + ): + # Mock config to return empty dict + mock_get_config.return_value = {} + # Mock the client to simulate successful authentication + mock_client.return_value.agents.list.return_value = [] + + result = runner.invoke( + app, ["auth", "--api-key", test_api_key, "--environment", "dev", "--no-verify"] + ) + + assert result.exit_code == 0 + assert "Successfully authenticated with dev environment!" in result.stdout + mock_save.assert_called_once_with({"environment": "dev", "api_key": test_api_key}) + + +def test_auth_command_with_verification(): + test_api_key = "test-verify-key-101" + + runner = create_runner() + + with ( + patch("julep_cli.auth.save_config") as mock_save, + patch("julep_cli.auth.get_julep_client") as mock_client, + patch("julep_cli.auth.get_config") as mock_get_config, + ): + # Mock config to return empty dict + mock_get_config.return_value = {} + # Mock the client to simulate successful authentication + mock_client.return_value.agents.list.return_value = [] + + result = runner.invoke( + app, ["auth", "--api-key", test_api_key, "--environment", "production"] + ) + + assert result.exit_code == 0 + assert "Successfully authenticated with production environment!" in result.stdout + assert "Verifying API key" in result.stdout # Progress spinner text + mock_save.assert_called_once_with({ + "environment": "production", + "api_key": test_api_key, + }) + + +def test_auth_command_verification_fails(): + # Use a valid JWT format for testing + test_api_key = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + + runner = create_runner() + + with ( + patch("julep_cli.auth.get_julep_client") as mock_client, + patch("julep_cli.auth.get_config") as mock_get_config, + ): + # Mock config to return empty dict + mock_get_config.return_value = {} + # Mock the client to simulate failed authentication + mock_client.return_value.agents.list.side_effect = Exception("Invalid API key") + + result = runner.invoke( + app, ["auth", "--api-key", test_api_key, "--environment", "production"] + ) + + assert result.exit_code == 1 + assert "Error verifying API key" in result.stderr + + +def test_auth_command_invalid_jwt_format(): + invalid_api_key = "not-a-jwt" + + runner = create_runner() + + with patch("julep_cli.auth.get_config") as mock_get_config: + # Mock config to return empty dict + mock_get_config.return_value = {} + + # Since the validation is done inside the command through the wrapper's prompting, + # and 'not-a-jwt' is not a valid JWT, the command will fail validation + result = runner.invoke( + app, ["auth", "--api-key", invalid_api_key, "--environment", "production"] + ) + + # The JWT validation happens during verification + assert result.exit_code == 1 + assert ( + "Error verifying API key" in result.stderr + and "invalid token format" in result.stderr + ) diff --git a/src/cli/uv.lock b/src/cli/uv.lock new file mode 100644 index 000000000..6d426b8a6 --- /dev/null +++ b/src/cli/uv.lock @@ -0,0 +1,2603 @@ +version = 1 +revision = 2 +requires-python = ">=3.11, <3.13" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version < '3.12'", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/ad/5b0f3451c2275af09966f1d7c0965facd4729a5b7efdc2eb728654679f85/aiohttp-3.12.9.tar.gz", hash = "sha256:2c9914c8914ff40b68c6e4ed5da33e88d4e8f368fddd03ceb0eb3175905ca782", size = 7810207, upload-time = "2025-06-04T16:26:40.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/6a/9df1a8463e19d1ad2f349c81c0a05a1d5762f42855fec3aae3bd88f9eefe/aiohttp-3.12.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:301eebd8e1134a8457151b451841a47d3440ce79fa9a0d1c70650bda624cbd69", size = 707827, upload-time = "2025-06-04T16:23:49.629Z" }, + { url = "https://files.pythonhosted.org/packages/44/a4/080e5aa0aabcd2cf75320169727b5ef0ffadd1774d1b07a27903b513f972/aiohttp-3.12.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d8ba7652d815bd5b99189d5b685db5509a08f1282e047a849b7f4353df8a95c", size = 480110, upload-time = "2025-06-04T16:23:51.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/3e/d2e3f6864ca88f8b91afb20558fdcd43e11224fc4b4aad2103f05f37c98f/aiohttp-3.12.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:998a6e143b2a4ffee14fb2c2ff5a3338d70d811be3f5d4a13a305ee0f4c6ac42", size = 468371, upload-time = "2025-06-04T16:23:53.817Z" }, + { url = "https://files.pythonhosted.org/packages/83/c0/3347524ee435e13a9bfa54ae59a9e479f7cd05bf5062bee8471a6b39d933/aiohttp-3.12.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d011b13f3bfcf711ce9007ea08305a582135ee2105dc3202b011c055c1ac6f1", size = 1738567, upload-time = "2025-06-04T16:23:56.431Z" }, + { url = "https://files.pythonhosted.org/packages/98/af/96f10bc9f71aa806cdb1e4af3aa00352e20dc0e70b53a7147526b2f95e81/aiohttp-3.12.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3c7b314d565e235051893a46e14ea14ab05bb17fe99bdb2cf85e9adc62b4836c", size = 1687239, upload-time = "2025-06-04T16:23:58.428Z" }, + { url = "https://files.pythonhosted.org/packages/c7/f8/049a08282f9e5a45e903cc81ded19de718133daf21924c715ef0435038b3/aiohttp-3.12.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2bb6408bc2cb8ee5be4efb18bcfcfce4d76448f62237074917e146a425daf425", size = 1786031, upload-time = "2025-06-04T16:24:00.988Z" }, + { url = "https://files.pythonhosted.org/packages/26/3a/dc6ce1731d6a116d927c6c47e9f8dab283582d2e8fb31f49615ea2447b4c/aiohttp-3.12.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9ad4fe8d068544ba5d77500ea2d450f130109a4b0caf6d9197167303250f683", size = 1825076, upload-time = "2025-06-04T16:24:03.072Z" }, + { url = "https://files.pythonhosted.org/packages/d6/49/9e635c2f0a4d296e204ef87858ec2d6c590c944d5c3166c01d19813d3dc1/aiohttp-3.12.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55721245164191ac92808ad39f3b2876195b1e6521ead0aad7f1c9ae69568b1a", size = 1727537, upload-time = "2025-06-04T16:24:05.062Z" }, + { url = "https://files.pythonhosted.org/packages/67/92/64cbc47a73282eefca62e44ca44d771ccd40441e295b6b33531eed2d9f8f/aiohttp-3.12.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5c5fbc9217578f5c9b5a65f27dfb044283b437cfa9cf52531f3ce94dca1e912", size = 1664613, upload-time = "2025-06-04T16:24:08.56Z" }, + { url = "https://files.pythonhosted.org/packages/11/52/8e78137d1145f5bc5e77d39a4072da3bbe4216ddc13624a91d4061913846/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5c7e03f6dd8210b76587cb17088b3e5e0dabfc6787d42db58bc933da932230b7", size = 1712887, upload-time = "2025-06-04T16:24:10.806Z" }, + { url = "https://files.pythonhosted.org/packages/07/e9/beb9b75a38be8746242d76d5d4671d5467e54e53208d654ee921cb331fc5/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c892b2400c0795bbf00303282029c66e8ba912dc9fabf4728ba69a63046c8020", size = 1708045, upload-time = "2025-06-04T16:24:14.321Z" }, + { url = "https://files.pythonhosted.org/packages/f9/14/91da26fd19abf723b61f0861a73a917b15f25b6473191a5d597b67ff9c4e/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4de97019fec6f236671ee5d5831cebf67fbd52ee6bd47e2b8c9941cd39698db1", size = 1688229, upload-time = "2025-06-04T16:24:16.459Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a4/d8a68c5c3f618e29ae978497c93d05718a98614659336672bbac37d227d9/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:941cd1ce3d1f605fd062857b339f7c3cde5ce83392bfb1029c3de782b8f98b52", size = 1781830, upload-time = "2025-06-04T16:24:19.363Z" }, + { url = "https://files.pythonhosted.org/packages/bb/4a/2e526757885e0d69ef796c470b470084073d2f9286784f34457139a8c2a5/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:43f3d4d6264629d97d44a6d75603923c2c63dad6aff2f72b172635c43db739db", size = 1802292, upload-time = "2025-06-04T16:24:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/5269deb655ee3ec8b48551b228ceccaa21e4fd61d44e7b6720618f09b958/aiohttp-3.12.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bbe5ab33a6810e9839270b3673eba683b9f91ed011be66feb4823f9fecf1bb73", size = 1715349, upload-time = "2025-06-04T16:24:23.873Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a6/6be201fbeee6d80d4e84e7eae04a55a5b4ecce25aab012427094144bab26/aiohttp-3.12.9-cp311-cp311-win32.whl", hash = "sha256:9ec207177e0adc694ed4a41ca8ebdb4008edb8d475a8b94d71d73414fc4707b6", size = 425412, upload-time = "2025-06-04T16:24:25.882Z" }, + { url = "https://files.pythonhosted.org/packages/12/a3/8419c2493d19acba6fb13f4618ba71fb22ddd6178303f565aa8814792f87/aiohttp-3.12.9-cp311-cp311-win_amd64.whl", hash = "sha256:965d93b08eed59359721a324b998ebf5354c9049b17cd93d9de50c14092b6ace", size = 449801, upload-time = "2025-06-04T16:24:27.92Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/3234b91245a6f6cd0445c02604ac46c9e1d97cf50cfe421219533f061092/aiohttp-3.12.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7ae744b61b395e04b3d1acbbd301d98249397333f49419039517226ff32f3aa7", size = 698923, upload-time = "2025-06-04T16:24:30.016Z" }, + { url = "https://files.pythonhosted.org/packages/63/d0/a81d09aea9d1aef10582c4d8fbc0158898ce2247f326a9c9922c9556212c/aiohttp-3.12.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d467a2049c4405853799dea41474b0ea9852fd465e7e2df819d3a33ac53214e8", size = 473547, upload-time = "2025-06-04T16:24:32.131Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/a282806eac098ddbd922038b1c2c5711ea4bb10fdb282f65986ae59c9096/aiohttp-3.12.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba7a8b5f02c2826eb29e8d6c38f1bc509efb506a2862131079b5b8d880ed4b62", size = 466383, upload-time = "2025-06-04T16:24:34.201Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2d/c6e796e6d7e57a3935772333d80e0407d66e551e2c7c2b930b7e18f527a4/aiohttp-3.12.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bfe590ddb0dca3cdb601787079276545f00cfb9493f73f00fa011e71dae6f5fd", size = 1713182, upload-time = "2025-06-04T16:24:36.314Z" }, + { url = "https://files.pythonhosted.org/packages/93/b7/bf9010f6dfe633147d74e93d41ec982b2538bfebcb6521a4139d187d07e3/aiohttp-3.12.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fc441aba05efec5c72127393f56206d0f3fb113aadcd1685033c10da1ff582ad", size = 1695833, upload-time = "2025-06-04T16:24:38.599Z" }, + { url = "https://files.pythonhosted.org/packages/9e/b9/fe87b305d1a0272cb5c499402525c06571840349f2b2a4ffdc20e2996ac2/aiohttp-3.12.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a3f20a1b72643a0be5c9fcb97eb22607fcca32f1ca497f09a88d1ec3109daae", size = 1750928, upload-time = "2025-06-04T16:24:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/37/24/3ece3ca9c43b95a5836675c11f3be295fb65068ffffaad0e99a7a5b93c84/aiohttp-3.12.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3647dd1da43d595a52c5071b68fd8d39c0fd25b80f2cdd83eaabd9d59cd1f139", size = 1797083, upload-time = "2025-06-04T16:24:43.583Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d2/c153f7858d9c6db578b495b15f533182bd95f24c62ab125cc039d97bf588/aiohttp-3.12.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:970bae350cedbabb7c9d0fc8564b004a547d4a27cf12dc986be0abf7d8cc8d81", size = 1716522, upload-time = "2025-06-04T16:24:46.356Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a9/ecfffc1659d8e3f02e109afec4df58a600128a2f48819af7e76a398a1ad3/aiohttp-3.12.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ccc5a5a4ccfa0ef0191dad2926e9752c37f368d846a70e40095a8529c5fb6eb", size = 1632325, upload-time = "2025-06-04T16:24:48.639Z" }, + { url = "https://files.pythonhosted.org/packages/aa/07/69889c2e598661418f646038fc344769712a6dbc625c4b16f2d0191d872b/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:55197e86994682a332e8943eb01b462ae25630b10f245812e517251d7a922f25", size = 1693386, upload-time = "2025-06-04T16:24:51.032Z" }, + { url = "https://files.pythonhosted.org/packages/c3/fb/23e292231a5d6d7413c998d096ed7dae049e7fb2c3406019eb04cb93c5b7/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:94d0cf6606ed9f2373565b8d0005bb070afbb81525ef6fa6e0725b8aec0c0843", size = 1714841, upload-time = "2025-06-04T16:24:53.227Z" }, + { url = "https://files.pythonhosted.org/packages/80/bf/4d12162630ac2a39025c67bfeae94fdaeaec3b0438e65122f0012a570667/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0575d7ae9a9c206276a6aaa3ce364b467f29f0497c0db4449de060dc341d88d6", size = 1655490, upload-time = "2025-06-04T16:24:56Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/6c4f84197d9d04f548405d89d504afaef4c94dfea3842c52fa852f7f4c28/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9f44a4ebd717cc39796c4647495bc2901d0c168c71cd0132691ae3d0312215a9", size = 1735055, upload-time = "2025-06-04T16:24:59.458Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ae/6a9f1863e5d4b210890fb85b4b33e383351cc0588f1f30ea6866faef2141/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f9cdadfe84beb8ceafa98ab676e8c0caf1e5d60e8b33c385c11259ee0f7f2587", size = 1763027, upload-time = "2025-06-04T16:25:01.841Z" }, + { url = "https://files.pythonhosted.org/packages/5e/8c/7c0ca97b65f38d3453cee496da8d465a7b0b44d302c6b5c1da4d83b62f1b/aiohttp-3.12.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:995b5640969b1250e37be6fc92d185e523e8df446f8bfa723b347e52d7ae80f9", size = 1722637, upload-time = "2025-06-04T16:25:04.119Z" }, + { url = "https://files.pythonhosted.org/packages/4e/7b/9220a3c8d18398fa5195ece36970f71d8c5ba0b601c819b128dfe5171885/aiohttp-3.12.9-cp312-cp312-win32.whl", hash = "sha256:4cfa37e0797510fdb20ab0ee3ad483ae7cfacb27c6fb8de872a998705ad2286a", size = 420144, upload-time = "2025-06-04T16:25:06.369Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7e/adc99e6dd37bb2d762f4d78df3abd4635531e36bf489b4b580decb7166a1/aiohttp-3.12.9-cp312-cp312-win_amd64.whl", hash = "sha256:fdbd04e9b05885eaaefdb81c163b6dc1431eb13ee2da16d82ee980d4dd123890", size = 446243, upload-time = "2025-06-04T16:25:08.554Z" }, +] + +[[package]] +name = "aiohttp-jinja2" +version = "1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "jinja2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/39/da5a94dd89b1af7241fb7fc99ae4e73505b5f898b540b6aba6dc7afe600e/aiohttp-jinja2-1.6.tar.gz", hash = "sha256:a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2", size = 53057, upload-time = "2023-11-18T15:30:52.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/90/65238d4246307195411b87a07d03539049819b022c01bcc773826f600138/aiohttp_jinja2-1.6-py3-none-any.whl", hash = "sha256:0df405ee6ad1b58e5a068a105407dc7dcc1704544c559f1938babde954f945c7", size = 11736, upload-time = "2023-11-18T15:30:50.743Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424, upload-time = "2024-12-13T17:10:40.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597, upload-time = "2024-12-13T17:10:38.469Z" }, +] + +[[package]] +name = "altgraph" +version = "0.17.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/a8/7145824cf0b9e3c28046520480f207df47e927df83aa9555fb47f8505922/altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406", size = 48418, upload-time = "2023-09-25T09:04:52.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/3f/3bc3f1d83f6e4a7fcb834d3720544ca597590425be5ba9db032b2bf322a2/altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff", size = 21212, upload-time = "2023-09-25T09:04:50.691Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "antiorm" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/f8/71baa4824d9666c1be51d117119579a97f461ddbded48b2e01a6ad0554b5/antiorm-1.2.1.tar.gz", hash = "sha256:96eb1841ce5163db4cf1dc13f4499ec2d7cffc190cf724b78ffdd3e6b7c4ff93", size = 171953, upload-time = "2016-06-28T22:52:03.354Z" } + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "beartype" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/f9/21e5a9c731e14f08addd53c71fea2e70794e009de5b98e6a2c3d2f3015d6/beartype-0.21.0.tar.gz", hash = "sha256:f9a5078f5ce87261c2d22851d19b050b64f6a805439e8793aecf01ce660d3244", size = 1437066, upload-time = "2025-05-22T05:09:27.116Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/31/87045d1c66ee10a52486c9d2047bc69f00f2689f69401bb1e998afb4b205/beartype-0.21.0-py3-none-any.whl", hash = "sha256:b6a1bd56c72f31b0a496a36cc55df6e2f475db166ad07fa4acc7e74f4c7f34c0", size = 1191340, upload-time = "2025-05-22T05:09:24.606Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "certifi" +version = "2025.4.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "db" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antiorm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/22/f65d64c83e63790b3273c6adb3bff338ad594f46d84b41bd1f94593b40a6/db-0.1.1.tar.gz", hash = "sha256:980e772f15c1161d3b287ffec4f144e40961b0b3e6d5102809577870bf6c5808", size = 3350, upload-time = "2014-12-13T05:13:58.159Z" } + +[[package]] +name = "db-sqlite3" +version = "0.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "db" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/00/e1f3d7bf1e0bff7c0574c0d5535c041e139d4ce43db196147e4c62f52ed5/db-sqlite3-0.0.1.tar.gz", hash = "sha256:4dd410aa28a2c5b66de477f9dc62f523133217dd31c7ed7eb085214bea148db9", size = 1390, upload-time = "2013-06-10T06:13:49.316Z" } + +[[package]] +name = "debugpy" +version = "1.8.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, +] + +[[package]] +name = "email-validator" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, +] + +[[package]] +name = "environs" +version = "14.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/eb/805549ab44db6a9a8206973e8283b49734b903f85d3fed549db78b0817fc/environs-14.2.0.tar.gz", hash = "sha256:2b6c78a77dfefb57ca30d43a232270ecc82adabf67ab318e018084b9a3529e9b", size = 32317, upload-time = "2025-05-22T19:25:01.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/75/e309b90c6f95a6e01aa86425ff567d3c634eea33bde915f3ceb910092461/environs-14.2.0-py3-none-any.whl", hash = "sha256:22669a58d53c5b86a25d0231c4a41a6ebeb82d3942b8fbd9cf645890c92a1843", size = 15733, upload-time = "2025-05-22T19:24:59.666Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/bf/a812e2fe6cb3f6c6cfc8d0303bf1742f2286004e5ec41ac8c89cf68cdb54/frozenlist-1.6.2.tar.gz", hash = "sha256:effc641518696471cf4962e8e32050133bc1f7b2851ae8fd0cb8797dd70dc202", size = 43108, upload-time = "2025-06-03T21:48:04.467Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/40/1c79f0d110f294b27ba248876c0643792824617ddd9eba3ba1bf00bcc0e6/frozenlist-1.6.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb66c5d48b89701b93d58c31a48eb64e15d6968315a9ccc7dfbb2d6dc2c62ab7", size = 87206, upload-time = "2025-06-03T21:45:42.567Z" }, + { url = "https://files.pythonhosted.org/packages/d0/57/1ad332ca25dd379d8659bd38c2164ef53ba980eabac538ef9f73c182b63f/frozenlist-1.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8fb9aee4f7b495044b868d7e74fb110d8996e8fddc0bfe86409c7fc7bd5692f0", size = 50514, upload-time = "2025-06-03T21:45:43.814Z" }, + { url = "https://files.pythonhosted.org/packages/ec/a7/bffc1c7089812d432787f5539d59a18298ff1b43c3ac6d9134cb69eba7ab/frozenlist-1.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48dde536fc4d8198fad4e211f977b1a5f070e6292801decf2d6bc77b805b0430", size = 49164, upload-time = "2025-06-03T21:45:45.083Z" }, + { url = "https://files.pythonhosted.org/packages/a2/dc/af7b2d190cb8b553032b7b46e582eaad4563d6f3c30b7e2524a7cdfc3e11/frozenlist-1.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91dd2fb760f4a2c04b3330e0191787c3437283f9241f0b379017d4b13cea8f5e", size = 237242, upload-time = "2025-06-03T21:45:46.388Z" }, + { url = "https://files.pythonhosted.org/packages/27/0c/e8fcde735f8b62421f944e08e95191a88a065bb5cdc5e7a1c9b7806adb3f/frozenlist-1.6.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f01f34f8a5c7b4d74a1c65227678822e69801dcf68edd4c11417a7c83828ff6f", size = 228128, upload-time = "2025-06-03T21:45:47.88Z" }, + { url = "https://files.pythonhosted.org/packages/43/ea/0e7bf5c347387724fc4b77ef94cf4ca317f3720ac154adb1a97e8b68d7ef/frozenlist-1.6.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f43f872cc4cfc46d9805d0e71302e9c39c755d5ad7572198cd2ceb3a291176cc", size = 246343, upload-time = "2025-06-03T21:45:49.765Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ce/223a2fbdaaeeb72428063378b11ff356e801a4cf922cccfeb569fe8a21a4/frozenlist-1.6.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f96cc8ab3a73d42bcdb6d9d41c3dceffa8da8273ac54b71304b891e32de8b13", size = 240659, upload-time = "2025-06-03T21:45:51.216Z" }, + { url = "https://files.pythonhosted.org/packages/2f/9e/77c92740b33523b880683872971da1ed6fa4a30a7a84d3f43540d807b792/frozenlist-1.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c0b257123320832cce9bea9935c860e4fa625b0e58b10db49fdfef70087df81", size = 221329, upload-time = "2025-06-03T21:45:52.665Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c3/9dcfc63ae15a51132483fc34c2aad0ff32cabeedb6e51324553423cd2449/frozenlist-1.6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dc4def97ccc0232f491836050ae664d3d2352bb43ad4cd34cd3399ad8d1fc8", size = 236338, upload-time = "2025-06-03T21:45:54.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/d6/7eaf4bdafa61c227670832f2f21294ecae4505bba25a71a49f16db005a69/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fcf3663463c040315f025bd6a5f88b3748082cfe111e90fd422f71668c65de52", size = 239097, upload-time = "2025-06-03T21:45:55.599Z" }, + { url = "https://files.pythonhosted.org/packages/59/df/3350e94786babdd906ac7d8ca9646e38a97a81f7e1585b598dcabb6ea178/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:16b9e7b59ea6eef876a8a5fac084c95fd4bac687c790c4d48c0d53c6bcde54d1", size = 247310, upload-time = "2025-06-03T21:45:57.045Z" }, + { url = "https://files.pythonhosted.org/packages/ea/26/9a09169158ce073d04ff1851242e4f05df93e6eef4161997f9ff05da2f66/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:308b40d32a98a8d0d09bc28e4cbc13a0b803a0351041d4548564f28f6b148b05", size = 227829, upload-time = "2025-06-03T21:45:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/f1/da/a1e2db77514ffabeeb16c486af74580a1105162206386c6b826a69c0a040/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:baf585d8968eaad6c1aae99456c40978a9fa822ccbdb36fd4746b581ef338192", size = 247808, upload-time = "2025-06-03T21:46:00.462Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d2/457931890fab0f240d07eed45adc51c7be817d474a791d7f12799a5b93f2/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4dfdbdb671a6af6ea1a363b210373c8233df3925d9a7fb99beaa3824f6b99656", size = 247343, upload-time = "2025-06-03T21:46:02.491Z" }, + { url = "https://files.pythonhosted.org/packages/47/4c/34a28b01d8dab8f84630ce75004bcb4313866105248f942df5148604eaf0/frozenlist-1.6.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:94916e3acaeb8374d5aea9c37db777c9f0a2b9be46561f5de30064cbbbfae54a", size = 236482, upload-time = "2025-06-03T21:46:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/f7/42/f18ba85776f5eee10a2bf4890a53dde0f725bb548d7b04618cd3c57546db/frozenlist-1.6.2-cp311-cp311-win32.whl", hash = "sha256:0453e3d2d12616949cb2581068942a0808c7255f2abab0676d2da7db30f9ea11", size = 41249, upload-time = "2025-06-03T21:46:05.731Z" }, + { url = "https://files.pythonhosted.org/packages/0f/75/5dd6547beccdfd7a464b08f4058e353207432cb4cdf316af3f695f204b54/frozenlist-1.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:fb512753c4bbf0af03f6b9c7cc5ecc9bbac2e198a94f61aaabd26c3cf3229c8c", size = 45511, upload-time = "2025-06-03T21:46:07.639Z" }, + { url = "https://files.pythonhosted.org/packages/c3/50/4632c944c57945cc1960e10ab8d6120cefb97bf923fd89052a3bcf8dc605/frozenlist-1.6.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:48544d07404d7fcfccb6cc091922ae10de4d9e512c537c710c063ae8f5662b85", size = 85258, upload-time = "2025-06-03T21:46:08.919Z" }, + { url = "https://files.pythonhosted.org/packages/3a/f4/5be5dbb219f341a4e996588e8841806c1df0c880c440c1171d143c83ce39/frozenlist-1.6.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ee0cf89e7638de515c0bb2e8be30e8e2e48f3be9b6c2f7127bca4a1f35dff45", size = 49620, upload-time = "2025-06-03T21:46:10.658Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fe/6697c1242126dc344840a43bffd5d5013cf5d61b272567f68025274622e1/frozenlist-1.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e084d838693d73c0fe87d212b91af80c18068c95c3d877e294f165056cedfa58", size = 48129, upload-time = "2025-06-03T21:46:11.93Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cb/aa09a825abeabb8165282f3f79cb3f130847486ee6427d72d742efa604d6/frozenlist-1.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d918b01781c6ebb5b776c18a87dd3016ff979eb78626aaca928bae69a640c3", size = 241513, upload-time = "2025-06-03T21:46:13.26Z" }, + { url = "https://files.pythonhosted.org/packages/2c/a3/9c22011770ea8b423adf0e12ec34200cf68ff444348d6c7c3466acc6be53/frozenlist-1.6.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e2892d9ab060a847f20fab83fdb886404d0f213f648bdeaebbe76a6134f0973d", size = 234019, upload-time = "2025-06-03T21:46:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/88/39/83c077661ba708d28859dc01d299c9272c9adeb4b9e58dba85da2271cb08/frozenlist-1.6.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbd2225d7218e7d386f4953d11484b0e38e5d134e85c91f0a6b0f30fb6ae25c4", size = 247035, upload-time = "2025-06-03T21:46:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/78/9f/7153e16e51ee8d660e907ef43c5a73882e3dc96582f70b00ece7d8a69b43/frozenlist-1.6.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b679187cba0a99f1162c7ec1b525e34bdc5ca246857544d16c1ed234562df80", size = 244126, upload-time = "2025-06-03T21:46:18.253Z" }, + { url = "https://files.pythonhosted.org/packages/71/1f/e8e6b72f3b285f8a6cfe4c01d14c4bbbf477c40868c8386bd9617298c696/frozenlist-1.6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bceb7bd48849d4b76eac070a6d508aa3a529963f5d9b0a6840fd41fb381d5a09", size = 224463, upload-time = "2025-06-03T21:46:20.177Z" }, + { url = "https://files.pythonhosted.org/packages/69/b5/20ab79daba2e787c3426f6fa7bb2114edfcdffa4cfb2dd1c8e84f6964519/frozenlist-1.6.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b1b79ae86fdacc4bf842a4e0456540947abba64a84e61b5ae24c87adb089db", size = 240225, upload-time = "2025-06-03T21:46:21.615Z" }, + { url = "https://files.pythonhosted.org/packages/02/46/5d2e14cec6f577426f53e8726f824028da55703a5a6b41c6eb7a3cdf1372/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6c5c3c575148aa7308a38709906842039d7056bf225da6284b7a11cf9275ac5d", size = 237668, upload-time = "2025-06-03T21:46:23.143Z" }, + { url = "https://files.pythonhosted.org/packages/5d/35/d29a3297954c34b69842f63541833eaca71e50fb6ebbafd9eb95babc1508/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:16263bd677a31fe1a5dc2b803b564e349c96f804a81706a62b8698dd14dbba50", size = 248603, upload-time = "2025-06-03T21:46:28.592Z" }, + { url = "https://files.pythonhosted.org/packages/1e/30/bcb572840d112b22b89d2178168741674ab3766ad507c33e2549fdfee7f0/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2e51b2054886ff7db71caf68285c2cd936eb7a145a509965165a2aae715c92a7", size = 225855, upload-time = "2025-06-03T21:46:30.151Z" }, + { url = "https://files.pythonhosted.org/packages/ac/33/a0d3f75b126a18deb151f1cfb42ff64bbce22d8651fdda061e4fb56cd9b5/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ae1785b76f641cce4efd7e6f49ca4ae456aa230383af5ab0d4d3922a7e37e763", size = 246094, upload-time = "2025-06-03T21:46:32.709Z" }, + { url = "https://files.pythonhosted.org/packages/4d/7c/c5140e62f1b878a2982246505ed9461c4238f17fd53237ae25ddc9dbeb8d/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:30155cc481f73f92f47ab1e858a7998f7b1207f9b5cf3b3cba90ec65a7f224f5", size = 247984, upload-time = "2025-06-03T21:46:35.095Z" }, + { url = "https://files.pythonhosted.org/packages/77/da/32ac9c843ee126f8b2c3b164cf39a1bbf05e7a46e57659fef1db4f35e5dc/frozenlist-1.6.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e1a1d82f2eb3d2875a8d139ae3f5026f7797f9de5dce44f53811ab0a883e85e7", size = 239770, upload-time = "2025-06-03T21:46:36.55Z" }, + { url = "https://files.pythonhosted.org/packages/e0/2f/4c512f0f9db149609c7f7e7be108ddce93131bf56e81adddb64510919573/frozenlist-1.6.2-cp312-cp312-win32.whl", hash = "sha256:84105cb0f3479dfa20b85f459fb2db3b0ee52e2f84e86d447ea8b0de1fb7acdd", size = 40918, upload-time = "2025-06-03T21:46:39.547Z" }, + { url = "https://files.pythonhosted.org/packages/54/c9/abb008594e5474132398aa417522776bee64d1753f98634c97b541938566/frozenlist-1.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:eecc861bd30bc5ee3b04a1e6ebf74ed0451f596d91606843f3edbd2f273e2fe3", size = 45148, upload-time = "2025-06-03T21:46:40.787Z" }, + { url = "https://files.pythonhosted.org/packages/13/be/0ebbb283f2d91b72beaee2d07760b2c47dab875c49c286f5591d3d157198/frozenlist-1.6.2-py3-none-any.whl", hash = "sha256:947abfcc8c42a329bbda6df97a4b9c9cdb4e12c85153b3b57b9d2f02aa5877dc", size = 12582, upload-time = "2025-06-03T21:48:03.201Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, +] + +[[package]] +name = "ipython" +version = "9.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/09/4c7e06b96fbd203e06567b60fb41b06db606b6a82db6db7b2c85bb72a15c/ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8", size = 4426460, upload-time = "2025-05-31T16:34:55.678Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/99/9ed3d52d00f1846679e3aa12e2326ac7044b5e7f90dc822b60115fa533ca/ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04", size = 605320, upload-time = "2025-05-31T16:34:52.154Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/48/d3dbac45c2814cb73812f98dd6b38bbcc957a4e7bb31d6ea9c03bf94ed87/ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376", size = 116721, upload-time = "2025-05-05T12:42:03.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jiter" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/9d/ae7ddb4b8ab3fb1b51faf4deb36cb48a4fbbd7cb36bad6a5fca4741306f7/jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500", size = 162759, upload-time = "2025-05-18T19:04:59.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/dd/6cefc6bd68b1c3c979cecfa7029ab582b57690a31cd2f346c4d0ce7951b6/jiter-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3bebe0c558e19902c96e99217e0b8e8b17d570906e72ed8a87170bc290b1e978", size = 317473, upload-time = "2025-05-18T19:03:25.942Z" }, + { url = "https://files.pythonhosted.org/packages/be/cf/fc33f5159ce132be1d8dd57251a1ec7a631c7df4bd11e1cd198308c6ae32/jiter-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:558cc7e44fd8e507a236bee6a02fa17199ba752874400a0ca6cd6e2196cdb7dc", size = 321971, upload-time = "2025-05-18T19:03:27.255Z" }, + { url = "https://files.pythonhosted.org/packages/68/a4/da3f150cf1d51f6c472616fb7650429c7ce053e0c962b41b68557fdf6379/jiter-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d613e4b379a07d7c8453c5712ce7014e86c6ac93d990a0b8e7377e18505e98d", size = 345574, upload-time = "2025-05-18T19:03:28.63Z" }, + { url = "https://files.pythonhosted.org/packages/84/34/6e8d412e60ff06b186040e77da5f83bc158e9735759fcae65b37d681f28b/jiter-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f62cf8ba0618eda841b9bf61797f21c5ebd15a7a1e19daab76e4e4b498d515b2", size = 371028, upload-time = "2025-05-18T19:03:30.292Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d9/9ee86173aae4576c35a2f50ae930d2ccb4c4c236f6cb9353267aa1d626b7/jiter-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:919d139cdfa8ae8945112398511cb7fca58a77382617d279556b344867a37e61", size = 491083, upload-time = "2025-05-18T19:03:31.654Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2c/f955de55e74771493ac9e188b0f731524c6a995dffdcb8c255b89c6fb74b/jiter-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ddbc6ae311175a3b03bd8994881bc4635c923754932918e18da841632349db", size = 388821, upload-time = "2025-05-18T19:03:33.184Z" }, + { url = "https://files.pythonhosted.org/packages/81/5a/0e73541b6edd3f4aada586c24e50626c7815c561a7ba337d6a7eb0a915b4/jiter-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c440ea003ad10927a30521a9062ce10b5479592e8a70da27f21eeb457b4a9c5", size = 352174, upload-time = "2025-05-18T19:03:34.965Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c0/61eeec33b8c75b31cae42be14d44f9e6fe3ac15a4e58010256ac3abf3638/jiter-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc347c87944983481e138dea467c0551080c86b9d21de6ea9306efb12ca8f606", size = 391869, upload-time = "2025-05-18T19:03:36.436Z" }, + { url = "https://files.pythonhosted.org/packages/41/22/5beb5ee4ad4ef7d86f5ea5b4509f680a20706c4a7659e74344777efb7739/jiter-0.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13252b58c1f4d8c5b63ab103c03d909e8e1e7842d302473f482915d95fefd605", size = 523741, upload-time = "2025-05-18T19:03:38.168Z" }, + { url = "https://files.pythonhosted.org/packages/ea/10/768e8818538e5817c637b0df52e54366ec4cebc3346108a4457ea7a98f32/jiter-0.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d1bbf3c465de4a24ab12fb7766a0003f6f9bce48b8b6a886158c4d569452dc5", size = 514527, upload-time = "2025-05-18T19:03:39.577Z" }, + { url = "https://files.pythonhosted.org/packages/73/6d/29b7c2dc76ce93cbedabfd842fc9096d01a0550c52692dfc33d3cc889815/jiter-0.10.0-cp311-cp311-win32.whl", hash = "sha256:db16e4848b7e826edca4ccdd5b145939758dadf0dc06e7007ad0e9cfb5928ae7", size = 210765, upload-time = "2025-05-18T19:03:41.271Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c9/d394706deb4c660137caf13e33d05a031d734eb99c051142e039d8ceb794/jiter-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c9c1d5f10e18909e993f9641f12fe1c77b3e9b533ee94ffa970acc14ded3812", size = 209234, upload-time = "2025-05-18T19:03:42.918Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b5/348b3313c58f5fbfb2194eb4d07e46a35748ba6e5b3b3046143f3040bafa/jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b", size = 312262, upload-time = "2025-05-18T19:03:44.637Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4a/6a2397096162b21645162825f058d1709a02965606e537e3304b02742e9b/jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744", size = 320124, upload-time = "2025-05-18T19:03:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/2a/85/1ce02cade7516b726dd88f59a4ee46914bf79d1676d1228ef2002ed2f1c9/jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2", size = 345330, upload-time = "2025-05-18T19:03:47.596Z" }, + { url = "https://files.pythonhosted.org/packages/75/d0/bb6b4f209a77190ce10ea8d7e50bf3725fc16d3372d0a9f11985a2b23eff/jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026", size = 369670, upload-time = "2025-05-18T19:03:49.334Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f5/a61787da9b8847a601e6827fbc42ecb12be2c925ced3252c8ffcb56afcaf/jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c", size = 489057, upload-time = "2025-05-18T19:03:50.66Z" }, + { url = "https://files.pythonhosted.org/packages/12/e4/6f906272810a7b21406c760a53aadbe52e99ee070fc5c0cb191e316de30b/jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959", size = 389372, upload-time = "2025-05-18T19:03:51.98Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ba/77013b0b8ba904bf3762f11e0129b8928bff7f978a81838dfcc958ad5728/jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a", size = 352038, upload-time = "2025-05-18T19:03:53.703Z" }, + { url = "https://files.pythonhosted.org/packages/67/27/c62568e3ccb03368dbcc44a1ef3a423cb86778a4389e995125d3d1aaa0a4/jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95", size = 391538, upload-time = "2025-05-18T19:03:55.046Z" }, + { url = "https://files.pythonhosted.org/packages/c0/72/0d6b7e31fc17a8fdce76164884edef0698ba556b8eb0af9546ae1a06b91d/jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea", size = 523557, upload-time = "2025-05-18T19:03:56.386Z" }, + { url = "https://files.pythonhosted.org/packages/2f/09/bc1661fbbcbeb6244bd2904ff3a06f340aa77a2b94e5a7373fd165960ea3/jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b", size = 514202, upload-time = "2025-05-18T19:03:57.675Z" }, + { url = "https://files.pythonhosted.org/packages/1b/84/5a5d5400e9d4d54b8004c9673bbe4403928a00d28529ff35b19e9d176b19/jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01", size = 211781, upload-time = "2025-05-18T19:03:59.025Z" }, + { url = "https://files.pythonhosted.org/packages/9b/52/7ec47455e26f2d6e5f2ea4951a0652c06e5b995c291f723973ae9e724a65/jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49", size = 206176, upload-time = "2025-05-18T19:04:00.305Z" }, +] + +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "julep" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "ruamel-yaml" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/ff/1d0382d2a1ed45924c006e73bc02c75ef63a38557d160fd00245f8be49d6/julep-2.10.0.tar.gz", hash = "sha256:ebf999d86ea2fe3db38480283e83de835dae43b745fe76fc431eeae78aa04f90", size = 367802, upload-time = "2025-05-30T16:16:15.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/80/38a25f75ea7d00d07b09c6a8b33da55958403bbbc6793500d35571527569/julep-2.10.0-py3-none-any.whl", hash = "sha256:58a17d62ce34ec179d31ee2f1e2225817aee09521226411fc10c1562fa29461c", size = 381687, upload-time = "2025-05-30T16:16:13.93Z" }, +] + +[[package]] +name = "julep-cli" +version = "0.2.1a0" +source = { editable = "." } +dependencies = [ + { name = "anyio" }, + { name = "beartype" }, + { name = "db-sqlite3" }, + { name = "environs" }, + { name = "jsonschema" }, + { name = "julep" }, + { name = "openai" }, + { name = "pandas" }, + { name = "pydantic", extra = ["email"] }, + { name = "pyjwt" }, + { name = "questionary" }, + { name = "requests" }, + { name = "stringcase" }, + { name = "textual" }, + { name = "trogon", extra = ["typer"] }, + { name = "typer" }, + { name = "typer-config", extra = ["yaml"] }, + { name = "unique-namer" }, + { name = "uvloop" }, + { name = "watchdog" }, + { name = "xxhash" }, +] + +[package.dev-dependencies] +dev = [ + { name = "ipython" }, + { name = "ipywidgets" }, + { name = "jupyterlab" }, + { name = "pip" }, + { name = "poethepoet" }, + { name = "pyinstaller" }, + { name = "pytest" }, + { name = "pytest-mock" }, + { name = "ruff" }, + { name = "textual-dev" }, + { name = "ty" }, +] + +[package.metadata] +requires-dist = [ + { name = "anyio", specifier = ">=4.4.0" }, + { name = "beartype", specifier = ">=0.18.5" }, + { name = "db-sqlite3", specifier = ">=0.0.1" }, + { name = "environs", specifier = ">=10.3.0" }, + { name = "jsonschema", specifier = ">=4.22.0" }, + { name = "julep", specifier = ">=2,<3" }, + { name = "openai", specifier = ">=1.55.0" }, + { name = "pandas", specifier = ">=2.2.2" }, + { name = "pydantic", extras = ["email"], specifier = ">=2.10.2" }, + { name = "pyjwt", specifier = ">=2.10.1" }, + { name = "questionary", specifier = ">=2.1.0" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "stringcase", specifier = ">=1.2.0" }, + { name = "textual", specifier = ">=1.0.0" }, + { name = "trogon", extras = ["typer"], specifier = ">=0.6.0" }, + { name = "typer", specifier = ">=0.15.1" }, + { name = "typer-config", extras = ["yaml"], specifier = ">=1.4.2" }, + { name = "unique-namer", specifier = ">=1.6.1" }, + { name = "uvloop", specifier = ">=0.21.0" }, + { name = "watchdog", specifier = ">=6.0.0" }, + { name = "xxhash", specifier = ">=3.5.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "ipython", specifier = ">=8.30.0" }, + { name = "ipywidgets", specifier = ">=8.1.5" }, + { name = "jupyterlab", specifier = ">=4.3.1" }, + { name = "pip", specifier = ">=24.3.1" }, + { name = "poethepoet", specifier = ">=0.34,<1" }, + { name = "pyinstaller", specifier = ">=6.14,<7" }, + { name = "pytest", specifier = ">=8.0.0" }, + { name = "pytest-mock", specifier = ">=3.14.0" }, + { name = "ruff", specifier = ">=0.11,<1" }, + { name = "textual-dev", specifier = ">=1.7.0" }, + { name = "ty", specifier = ">=0.0.1a8" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/2d/d1678dcf2db66cb4a38a80d9e5fcf48c349f3ac12f2d38882993353ae768/jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2", size = 23032376, upload-time = "2025-05-26T11:18:00.996Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/4d/7dd5c2ffbb960930452a031dc8410746183c924580f2ab4e68ceb5b3043f/jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea", size = 12295480, upload-time = "2025-05-26T11:17:56.607Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/7d/160595ca88ee87ac6ba95d82177d29ec60aaa63821d3077babb22ce031a5/jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b", size = 213149, upload-time = "2025-05-05T12:32:31.004Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/6a/ca128561b22b60bd5a0c4ea26649e68c8556b82bc70a0c396eebc977fe86/jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c", size = 216571, upload-time = "2025-05-05T12:32:29.534Z" }, +] + +[[package]] +name = "linkify-it-py" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "uc-micro-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946, upload-time = "2024-02-04T14:48:04.179Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820, upload-time = "2024-02-04T14:48:02.496Z" }, +] + +[[package]] +name = "macholib" +version = "1.16.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "altgraph" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/ee/af1a3842bdd5902ce133bd246eb7ffd4375c38642aeb5dc0ae3a0329dfa2/macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30", size = 59309, upload-time = "2023-09-25T09:10:16.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/5d/c059c180c84f7962db0aeae7c3b9303ed1d73d76f2bfbc32bc231c8be314/macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c", size = 38094, upload-time = "2023-09-25T09:10:14.188Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, +] + +[package.optional-dependencies] +linkify = [ + { name = "linkify-it-py" }, +] +plugins = [ + { name = "mdit-py-plugins" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, +] + +[[package]] +name = "marshmallow" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/ff/26df5a9f5ac57ccf693a5854916ab47243039d2aa9e0fe5f5a0331e7b74b/marshmallow-4.0.0.tar.gz", hash = "sha256:3b6e80aac299a7935cfb97ed01d1854fb90b5079430969af92118ea1b12a8d55", size = 220507, upload-time = "2025-04-17T02:25:54.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/26/6cc45d156f44dbe1d5696d9e54042e4dcaf7b946c0b86df6a97d29706f32/marshmallow-4.0.0-py3-none-any.whl", hash = "sha256:e7b0528337e9990fd64950f8a6b3a1baabed09ad17a0dfb844d701151f92d203", size = 48420, upload-time = "2025-04-17T02:25:53.375Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542, upload-time = "2024-09-09T20:27:49.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316, upload-time = "2024-09-09T20:27:48.397Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260, upload-time = "2024-09-10T04:25:52.197Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803, upload-time = "2024-09-10T04:24:40.911Z" }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343, upload-time = "2024-09-10T04:24:50.283Z" }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408, upload-time = "2024-09-10T04:25:12.774Z" }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096, upload-time = "2024-09-10T04:24:37.245Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671, upload-time = "2024-09-10T04:25:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414, upload-time = "2024-09-10T04:25:27.552Z" }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759, upload-time = "2024-09-10T04:25:03.366Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405, upload-time = "2024-09-10T04:25:07.348Z" }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041, upload-time = "2024-09-10T04:25:48.311Z" }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538, upload-time = "2024-09-10T04:24:29.953Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871, upload-time = "2024-09-10T04:25:44.823Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421, upload-time = "2024-09-10T04:25:49.63Z" }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277, upload-time = "2024-09-10T04:24:48.562Z" }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222, upload-time = "2024-09-10T04:25:36.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971, upload-time = "2024-09-10T04:24:58.129Z" }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403, upload-time = "2024-09-10T04:25:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356, upload-time = "2024-09-10T04:25:31.406Z" }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028, upload-time = "2024-09-10T04:25:17.08Z" }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100, upload-time = "2024-09-10T04:25:08.993Z" }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254, upload-time = "2024-09-10T04:25:06.048Z" }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085, upload-time = "2024-09-10T04:25:01.494Z" }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347, upload-time = "2024-09-10T04:25:33.106Z" }, +] + +[[package]] +name = "multidict" +version = "6.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515, upload-time = "2025-05-19T14:14:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609, upload-time = "2025-05-19T14:14:21.538Z" }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871, upload-time = "2025-05-19T14:14:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661, upload-time = "2025-05-19T14:14:24.124Z" }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422, upload-time = "2025-05-19T14:14:25.437Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447, upload-time = "2025-05-19T14:14:26.793Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455, upload-time = "2025-05-19T14:14:28.149Z" }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666, upload-time = "2025-05-19T14:14:29.584Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392, upload-time = "2025-05-19T14:14:30.961Z" }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969, upload-time = "2025-05-19T14:14:32.672Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433, upload-time = "2025-05-19T14:14:34.016Z" }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418, upload-time = "2025-05-19T14:14:35.376Z" }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042, upload-time = "2025-05-19T14:14:36.723Z" }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280, upload-time = "2025-05-19T14:14:38.194Z" }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322, upload-time = "2025-05-19T14:14:40.015Z" }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070, upload-time = "2025-05-19T14:14:41.904Z" }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667, upload-time = "2025-05-19T14:14:43.534Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, +] + +[[package]] +name = "openai" +version = "1.84.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/a3/128caf24e116f48fad3e4d5122cdf84db06c5127911849d51663c66158c8/openai-1.84.0.tar.gz", hash = "sha256:4caa43bdab262cc75680ce1a2322cfc01626204074f7e8d9939ab372acf61698", size = 467066, upload-time = "2025-06-03T17:10:53.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/10/f245db006a860dbc1f2e2c8382e0a1762c7753e7971ba43a1dc3f3ec1404/openai-1.84.0-py3-none-any.whl", hash = "sha256:7ec4436c3c933d68dc0f5a0cef0cb3dbc0864a54d62bddaf2ed5f3d521844711", size = 725512, upload-time = "2025-06-03T17:10:51.195Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490, upload-time = "2025-06-05T03:27:54.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/1e/ba313812a699fe37bf62e6194265a4621be11833f5fce46d9eae22acb5d7/pandas-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8adff9f138fc614347ff33812046787f7d43b3cef7c0f0171b3340cae333f6ca", size = 11551836, upload-time = "2025-06-05T03:26:22.784Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cc/0af9c07f8d714ea563b12383a7e5bde9479cf32413ee2f346a9c5a801f22/pandas-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e5f08eb9a445d07720776df6e641975665c9ea12c9d8a331e0f6890f2dcd76ef", size = 10807977, upload-time = "2025-06-05T16:50:11.109Z" }, + { url = "https://files.pythonhosted.org/packages/ee/3e/8c0fb7e2cf4a55198466ced1ca6a9054ae3b7e7630df7757031df10001fd/pandas-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa35c266c8cd1a67d75971a1912b185b492d257092bdd2709bbdebe574ed228d", size = 11788230, upload-time = "2025-06-05T03:26:27.417Z" }, + { url = "https://files.pythonhosted.org/packages/14/22/b493ec614582307faf3f94989be0f7f0a71932ed6f56c9a80c0bb4a3b51e/pandas-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a0cc77b0f089d2d2ffe3007db58f170dae9b9f54e569b299db871a3ab5bf46", size = 12370423, upload-time = "2025-06-05T03:26:34.142Z" }, + { url = "https://files.pythonhosted.org/packages/9f/74/b012addb34cda5ce855218a37b258c4e056a0b9b334d116e518d72638737/pandas-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c06f6f144ad0a1bf84699aeea7eff6068ca5c63ceb404798198af7eb86082e33", size = 12990594, upload-time = "2025-06-06T00:00:13.934Z" }, + { url = "https://files.pythonhosted.org/packages/95/81/b310e60d033ab64b08e66c635b94076488f0b6ce6a674379dd5b224fc51c/pandas-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ed16339bc354a73e0a609df36d256672c7d296f3f767ac07257801aa064ff73c", size = 13745952, upload-time = "2025-06-05T03:26:39.475Z" }, + { url = "https://files.pythonhosted.org/packages/25/ac/f6ee5250a8881b55bd3aecde9b8cfddea2f2b43e3588bca68a4e9aaf46c8/pandas-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:fa07e138b3f6c04addfeaf56cc7fdb96c3b68a3fe5e5401251f231fce40a0d7a", size = 11094534, upload-time = "2025-06-05T03:26:43.23Z" }, + { url = "https://files.pythonhosted.org/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf", size = 11573865, upload-time = "2025-06-05T03:26:46.774Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027", size = 10702154, upload-time = "2025-06-05T16:50:14.439Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09", size = 11262180, upload-time = "2025-06-05T16:50:17.453Z" }, + { url = "https://files.pythonhosted.org/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d", size = 11991493, upload-time = "2025-06-05T03:26:51.813Z" }, + { url = "https://files.pythonhosted.org/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20", size = 12470733, upload-time = "2025-06-06T00:00:18.651Z" }, + { url = "https://files.pythonhosted.org/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b", size = 13212406, upload-time = "2025-06-05T03:26:55.992Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be", size = 10976199, upload-time = "2025-06-05T03:26:59.594Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "pastel" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555, upload-time = "2020-09-16T19:21:12.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955, upload-time = "2020-09-16T19:21:11.409Z" }, +] + +[[package]] +name = "pefile" +version = "2023.2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/78/c5/3b3c62223f72e2360737fd2a57c30e5b2adecd85e70276879609a7403334/pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc", size = 74854, upload-time = "2023-02-07T12:23:55.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/26/d0ad8b448476d0a1e8d3ea5622dc77b916db84c6aa3cb1e1c0965af948fc/pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6", size = 71791, upload-time = "2023-02-07T12:28:36.678Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pip" +version = "25.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/de/241caa0ca606f2ec5fe0c1f4261b0465df78d786a38da693864a116c37f4/pip-25.1.1.tar.gz", hash = "sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077", size = 1940155, upload-time = "2025-05-02T15:14:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/a2/d40fb2460e883eca5199c62cfc2463fd261f760556ae6290f88488c362c0/pip-25.1.1-py3-none-any.whl", hash = "sha256:2913a38a2abf4ea6b64ab507bd9e967f3b53dc1ede74b01b0931e1ce548751af", size = 1825227, upload-time = "2025-05-02T15:13:59.102Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "poethepoet" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pastel" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/f2/3853d6a9a0dac08aa680895839eeab8ec0ed63db375e1f782e623c9309b6/poethepoet-0.34.0.tar.gz", hash = "sha256:86203acce555bbfe45cb6ccac61ba8b16a5784264484195874da457ddabf5850", size = 64474, upload-time = "2025-04-21T13:38:20.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/d1/61431afe22577083fcb50614bc5e5aa73aa0ab35e3fc2ae49708a59ff70b/poethepoet-0.34.0-py3-none-any.whl", hash = "sha256:c472d6f0fdb341b48d346f4ccd49779840c15b30dfd6bc6347a80d6274b5e34e", size = 85851, upload-time = "2025-04-21T13:38:18.257Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "propcache" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload-time = "2025-03-26T03:06:12.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload-time = "2025-03-26T03:04:01.912Z" }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload-time = "2025-03-26T03:04:03.704Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload-time = "2025-03-26T03:04:05.257Z" }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload-time = "2025-03-26T03:04:07.044Z" }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload-time = "2025-03-26T03:04:08.676Z" }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload-time = "2025-03-26T03:04:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload-time = "2025-03-26T03:04:11.616Z" }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload-time = "2025-03-26T03:04:13.102Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload-time = "2025-03-26T03:04:14.658Z" }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload-time = "2025-03-26T03:04:16.207Z" }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload-time = "2025-03-26T03:04:18.11Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload-time = "2025-03-26T03:04:19.562Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload-time = "2025-03-26T03:04:21.065Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload-time = "2025-03-26T03:04:22.718Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload-time = "2025-03-26T03:04:24.039Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload-time = "2025-03-26T03:04:25.211Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload-time = "2025-03-26T03:04:26.436Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload-time = "2025-03-26T03:04:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload-time = "2025-03-26T03:04:30.659Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload-time = "2025-03-26T03:04:31.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload-time = "2025-03-26T03:04:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload-time = "2025-03-26T03:04:35.542Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload-time = "2025-03-26T03:04:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload-time = "2025-03-26T03:04:39.532Z" }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload-time = "2025-03-26T03:04:41.109Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload-time = "2025-03-26T03:04:42.544Z" }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload-time = "2025-03-26T03:04:44.06Z" }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload-time = "2025-03-26T03:04:45.983Z" }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload-time = "2025-03-26T03:04:47.699Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload-time = "2025-03-26T03:04:49.195Z" }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload-time = "2025-03-26T03:04:50.595Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload-time = "2025-03-26T03:04:51.791Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload-time = "2025-03-26T03:06:10.5Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, +] + +[package.optional-dependencies] +email = [ + { name = "email-validator" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, +] + +[[package]] +name = "pyinstaller" +version = "6.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "altgraph" }, + { name = "macholib", marker = "sys_platform == 'darwin'" }, + { name = "packaging" }, + { name = "pefile", marker = "sys_platform == 'win32'" }, + { name = "pyinstaller-hooks-contrib" }, + { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/dc/4ec9284d14952d3a4902c29b0c86314cad8de35104b5c1d6e001b914c0f5/pyinstaller-6.14.0.tar.gz", hash = "sha256:cc55cdc21491722d74133e35ab363a88679b37ee2d76f9d80adcbc0ae862d630", size = 4284182, upload-time = "2025-06-03T20:09:50.883Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/f6/7aaee3c4289ee3784b48229b2155d04936c514f66af29ced60cdf4c576b8/pyinstaller-6.14.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:20b4dcaf17a27cf5d5417f9dc53e81adf417d22e4d8c4afe50ae20dacdc1cde6", size = 999807, upload-time = "2025-06-03T20:08:45.713Z" }, + { url = "https://files.pythonhosted.org/packages/a9/bb/96a83e17c72cbe0eac385c6101b82881ba86c30f852b27824e98c99aaef1/pyinstaller-6.14.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:57982d0ebeb39e9a5dd8722bed871873ec59161613d8b09ca638adbd4fb4e592", size = 719439, upload-time = "2025-06-03T20:08:51.876Z" }, + { url = "https://files.pythonhosted.org/packages/66/ae/1415822212ca69fb29ac0b961ee6103ea90be2d8e5fe00b39db6340c8c7d/pyinstaller-6.14.0-py3-none-manylinux2014_i686.whl", hash = "sha256:d75492d4a7ece299b580837cb027cf7742cea5e92dfec0bb4c6064816c009b59", size = 729694, upload-time = "2025-06-03T20:08:56.136Z" }, + { url = "https://files.pythonhosted.org/packages/49/e3/757efe36330f79efcdd9b288514082f786e35832458da5ef84cf24905209/pyinstaller-6.14.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:ca5ad60e210a7eb1c968d09deb85b645963bf24dcb8ed4af93c293ea526a08e6", size = 727807, upload-time = "2025-06-03T20:08:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d4/17a7c81cc82d33119f0b3d751d30e253a14b04087059ae9fa15c7dd8707a/pyinstaller-6.14.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:af8c973543e976bd660f83a43089cabd3c41e98398f53fa179ef7eee4d5fe3b0", size = 724631, upload-time = "2025-06-03T20:09:04.035Z" }, + { url = "https://files.pythonhosted.org/packages/ff/03/eeb4af303f5eb0a2cb5cdc8ae1053894f53057c1e218d1252669aebcadde/pyinstaller-6.14.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:640f68e50d22684aa5970c2f3a6490d2e7c16bd5c20c63f5541c0e50e5bd2391", size = 724827, upload-time = "2025-06-03T20:09:08.328Z" }, + { url = "https://files.pythonhosted.org/packages/49/3d/26e860641655adb2bf4aed243351abefff258551a1811ffe60b03f5bb514/pyinstaller-6.14.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:3c2c88a355223d13704b5153dc341e02699523363cc18c49d872c8e82b5c6063", size = 724002, upload-time = "2025-06-03T20:09:12.121Z" }, + { url = "https://files.pythonhosted.org/packages/52/28/5f442033ed7f89badc93112421248c848470d5d1fbcd226fabd9d4e71475/pyinstaller-6.14.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:9af257dc72d6b2027ab8a4c217eda07a6e6efa8ae9223953fd721aa9baec9106", size = 723717, upload-time = "2025-06-03T20:09:16.192Z" }, + { url = "https://files.pythonhosted.org/packages/a1/38/5ad380af42229b77afd7536d8ecec0b89db37e7d83f9c80780db365d17bf/pyinstaller-6.14.0-py3-none-win32.whl", hash = "sha256:083d97ee52077bc21a8e8beaede394dfd8d19da8bafc03ebc6734949d63d74a1", size = 1299615, upload-time = "2025-06-03T20:09:21.979Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/e8b850913b998ac2999ffd75dc9b6c30ac7b341ba674f22b6fe8c962074c/pyinstaller-6.14.0-py3-none-win_amd64.whl", hash = "sha256:c62c3e0f768d4f90c0329c5e2616d8fff5c041dc4864a28e74d653d0e77aff1a", size = 1357494, upload-time = "2025-06-03T20:09:28.107Z" }, + { url = "https://files.pythonhosted.org/packages/fe/df/83e5fbcd247f1e9b38f381db6870dcba57078f24612b02b2604799e8b3fc/pyinstaller-6.14.0-py3-none-win_arm64.whl", hash = "sha256:adf130c72e98ced09df5c43d7ca271d701a730036980da75cae056325cbc2dcd", size = 1298477, upload-time = "2025-06-03T20:09:33.932Z" }, +] + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2025.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/94/dfc5c7903306211798f990e6794c2eb7b8685ac487b26979e9255790419c/pyinstaller_hooks_contrib-2025.4.tar.gz", hash = "sha256:5ce1afd1997b03e70f546207031cfdf2782030aabacc102190677059e2856446", size = 162628, upload-time = "2025-05-03T20:15:55.983Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/e1/ed48c7074145898e5c5b0072e87be975c5bd6a1d0f08c27a1daa7064fca0/pyinstaller_hooks_contrib-2025.4-py3-none-any.whl", hash = "sha256:6c2d73269b4c484eb40051fc1acee0beb113c2cfb3b37437b8394faae6f0d072", size = 434451, upload-time = "2025-05-03T20:15:54.579Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/aa/405082ce2749be5398045152251ac69c0f3578c7077efc53431303af97ce/pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6", size = 1515232, upload-time = "2025-06-02T17:36:30.03Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/de/afa024cbe022b1b318a3d224125aa24939e99b4ff6f22e0ba639a2eaee47/pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e", size = 363797, upload-time = "2025-06-02T17:36:27.859Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/28/67172c96ba684058a4d24ffe144d64783d2a270d0af0d9e792737bddc75c/pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e", size = 33241, upload-time = "2025-05-26T13:58:45.167Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/05/77b60e520511c53d1c1ca75f1930c7dd8e971d0c4379b7f4b3f9644685ba/pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0", size = 9923, upload-time = "2025-05-26T13:58:43.487Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115, upload-time = "2024-01-23T06:33:00.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863, upload-time = "2024-01-23T06:32:58.246Z" }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, +] + +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, +] + +[[package]] +name = "pyzmq" +version = "26.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, +] + +[[package]] +name = "questionary" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/b8/d16eb579277f3de9e56e5ad25280fab52fc5774117fb70362e8c2e016559/questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587", size = 26775, upload-time = "2024-12-29T11:49:17.802Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/3f/11dd4cd4f39e05128bfd20138faea57bec56f9ffba6185d276e3107ba5b2/questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec", size = 36747, upload-time = "2024-12-29T11:49:16.734Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload-time = "2025-03-30T14:15:14.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload-time = "2025-03-30T14:15:12.283Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/f9/0e3b3a678d087f8067249ecc9f2434428a93442004be86faed201ac7aeee/ruamel.yaml-0.18.13.tar.gz", hash = "sha256:b0d5ac0a2b0b4e39d87aed00ddff26e795de6750b064da364a8d009b97ce5f26", size = 145469, upload-time = "2025-06-06T14:22:43.83Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/ce/409888a3f8421600d778f926768ee1353cfe61b4850bef3622701bd82dad/ruamel.yaml-0.18.13-py3-none-any.whl", hash = "sha256:cf9628cfdfe9d88b78429cd093aa766e9a4c69242f9f3c86ac1d9e56437e5572", size = 118588, upload-time = "2025-06-06T14:22:40.787Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224, upload-time = "2024-10-20T10:12:45.162Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480, upload-time = "2024-10-20T10:12:46.758Z" }, + { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068, upload-time = "2024-10-20T10:12:48.605Z" }, + { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012, upload-time = "2024-10-20T10:12:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352, upload-time = "2024-10-21T11:26:41.438Z" }, + { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344, upload-time = "2024-10-21T11:26:43.62Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498, upload-time = "2024-12-11T19:58:15.592Z" }, + { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205, upload-time = "2024-10-20T10:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185, upload-time = "2024-10-20T10:12:54.652Z" }, + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload-time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload-time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload-time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload-time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload-time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload-time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload-time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload-time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload-time = "2024-10-20T10:13:02.768Z" }, +] + +[[package]] +name = "ruff" +version = "0.11.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/da/9c6f995903b4d9474b39da91d2d626659af3ff1eeb43e9ae7c119349dba6/ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514", size = 4282054, upload-time = "2025-06-05T21:00:15.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ce/a11d381192966e0b4290842cc8d4fac7dc9214ddf627c11c1afff87da29b/ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46", size = 10292516, upload-time = "2025-06-05T20:59:32.944Z" }, + { url = "https://files.pythonhosted.org/packages/78/db/87c3b59b0d4e753e40b6a3b4a2642dfd1dcaefbff121ddc64d6c8b47ba00/ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48", size = 11106083, upload-time = "2025-06-05T20:59:37.03Z" }, + { url = "https://files.pythonhosted.org/packages/77/79/d8cec175856ff810a19825d09ce700265f905c643c69f45d2b737e4a470a/ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b", size = 10436024, upload-time = "2025-06-05T20:59:39.741Z" }, + { url = "https://files.pythonhosted.org/packages/8b/5b/f6d94f2980fa1ee854b41568368a2e1252681b9238ab2895e133d303538f/ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a", size = 10646324, upload-time = "2025-06-05T20:59:42.185Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9c/b4c2acf24ea4426016d511dfdc787f4ce1ceb835f3c5fbdbcb32b1c63bda/ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc", size = 10174416, upload-time = "2025-06-05T20:59:44.319Z" }, + { url = "https://files.pythonhosted.org/packages/f3/10/e2e62f77c65ede8cd032c2ca39c41f48feabedb6e282bfd6073d81bb671d/ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629", size = 11724197, upload-time = "2025-06-05T20:59:46.935Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f0/466fe8469b85c561e081d798c45f8a1d21e0b4a5ef795a1d7f1a9a9ec182/ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933", size = 12511615, upload-time = "2025-06-05T20:59:49.534Z" }, + { url = "https://files.pythonhosted.org/packages/17/0e/cefe778b46dbd0cbcb03a839946c8f80a06f7968eb298aa4d1a4293f3448/ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165", size = 12117080, upload-time = "2025-06-05T20:59:51.654Z" }, + { url = "https://files.pythonhosted.org/packages/5d/2c/caaeda564cbe103bed145ea557cb86795b18651b0f6b3ff6a10e84e5a33f/ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71", size = 11326315, upload-time = "2025-06-05T20:59:54.469Z" }, + { url = "https://files.pythonhosted.org/packages/75/f0/782e7d681d660eda8c536962920c41309e6dd4ebcea9a2714ed5127d44bd/ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9", size = 11555640, upload-time = "2025-06-05T20:59:56.986Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d4/3d580c616316c7f07fb3c99dbecfe01fbaea7b6fd9a82b801e72e5de742a/ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc", size = 10507364, upload-time = "2025-06-05T20:59:59.154Z" }, + { url = "https://files.pythonhosted.org/packages/5a/dc/195e6f17d7b3ea6b12dc4f3e9de575db7983db187c378d44606e5d503319/ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7", size = 10141462, upload-time = "2025-06-05T21:00:01.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/8e/39a094af6967faa57ecdeacb91bedfb232474ff8c3d20f16a5514e6b3534/ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432", size = 11121028, upload-time = "2025-06-05T21:00:04.06Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c0/b0b508193b0e8a1654ec683ebab18d309861f8bd64e3a2f9648b80d392cb/ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492", size = 11602992, upload-time = "2025-06-05T21:00:06.249Z" }, + { url = "https://files.pythonhosted.org/packages/7c/91/263e33ab93ab09ca06ce4f8f8547a858cc198072f873ebc9be7466790bae/ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250", size = 10474944, upload-time = "2025-06-05T21:00:08.459Z" }, + { url = "https://files.pythonhosted.org/packages/46/f4/7c27734ac2073aae8efb0119cae6931b6fb48017adf048fdf85c19337afc/ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3", size = 11548669, upload-time = "2025-06-05T21:00:11.147Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/b273dd11673fed8a6bd46032c0ea2a04b2ac9bfa9c628756a5856ba113b0/ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b", size = 10683928, upload-time = "2025-06-05T21:00:13.758Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "stringcase" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/1f/1241aa3d66e8dc1612427b17885f5fcd9c9ee3079fc0d28e9a3aeeb36fa3/stringcase-1.2.0.tar.gz", hash = "sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008", size = 2958, upload-time = "2017-08-06T01:40:57.021Z" } + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "textual" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py", extra = ["linkify", "plugins"] }, + { name = "platformdirs" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/96/02751746cf6950e9e8968186cb42eed1e52d91e2c80cc52bb19589e25900/textual-3.3.0.tar.gz", hash = "sha256:aa162b92dde93c5231e3689cdf26b141e86a77ac0a5ba96069bc9547e44119ae", size = 1618996, upload-time = "2025-06-01T14:01:40.336Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/c2/c8be0b51bfce3278e057e1563a477bf128097bf5ce82ab21b0bbbcb30986/textual-3.3.0-py3-none-any.whl", hash = "sha256:463809791fd2c979c91ff0b54e25f2e57874828815e51a6503f32cb2e21e4eb0", size = 687997, upload-time = "2025-06-01T14:01:37.654Z" }, +] + +[[package]] +name = "textual-dev" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "click" }, + { name = "msgpack" }, + { name = "textual" }, + { name = "textual-serve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/d3/ed0b20f6de0af1b7062c402d59d256029c0daa055ad9e04c27471b450cdd/textual_dev-1.7.0.tar.gz", hash = "sha256:bf1a50eaaff4cd6a863535dd53f06dbbd62617c371604f66f56de3908220ccd5", size = 25935, upload-time = "2024-11-18T16:59:47.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/4b/3c1eb9cbc39f2f28d27e10ef2fe42bfe0cf3c2f8445a454c124948d6169b/textual_dev-1.7.0-py3-none-any.whl", hash = "sha256:a93a846aeb6a06edb7808504d9c301565f7f4bf2e7046d56583ed755af356c8d", size = 27221, upload-time = "2024-11-18T16:59:46.833Z" }, +] + +[[package]] +name = "textual-serve" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aiohttp-jinja2" }, + { name = "jinja2" }, + { name = "rich" }, + { name = "textual" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/41/09d5695b050d592ff58422be2ca5c9915787f59ff576ca91d9541d315406/textual_serve-1.1.2.tar.gz", hash = "sha256:0ccaf9b9df9c08d4b2d7a0887cad3272243ba87f68192c364f4bed5b683e4bd4", size = 892959, upload-time = "2025-04-16T12:11:41.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/fb/0006f86960ab8a2f69c9f496db657992000547f94f53a2f483fd611b4bd2/textual_serve-1.1.2-py3-none-any.whl", hash = "sha256:147d56b165dccf2f387203fe58d43ce98ccad34003fe3d38e6d2bc8903861865", size = 447326, upload-time = "2025-04-16T12:11:43.176Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "trogon" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "textual" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/ae/7367acac2194a215b092ba3fccde3b558272702110b8bb9bea164ab4ac42/trogon-0.6.0.tar.gz", hash = "sha256:fd1abfeb7b15d79d6e6cfc9e724aad2a2728812e4713a744d975f133e7ec73a4", size = 22902, upload-time = "2024-10-02T13:38:12.511Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/30/33035d5796a3b8b9624997fec7545e3febd2268c7b48df38a715a95cb5e4/trogon-0.6.0-py3-none-any.whl", hash = "sha256:fb5b6c25acd7a0eaba8d2cd32a57f1d80c26413cea737dad7a4eebcda56060e0", size = 26077, upload-time = "2024-10-02T13:38:11.09Z" }, +] + +[package.optional-dependencies] +typer = [ + { name = "typer" }, +] + +[[package]] +name = "ty" +version = "0.0.1a8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/71/755fba558d3e27d54deca88ec40bf3a7189dec82dea1b36c6d6791a1946d/ty-0.0.1a8.tar.gz", hash = "sha256:1f4d32833b7aa9d2c59bc702579e5193444877c1c53018f3ce41f358accc36cc", size = 2979218, upload-time = "2025-06-02T11:48:38.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/13/100038e8c386e7bed17fbbcd033cd633c0ab723ce1fecbd59905d71c738d/ty-0.0.1a8-py3-none-linux_armv6l.whl", hash = "sha256:7d6e7cc3640ad71e98d9fcc1c2ea0d393f0fc1805de0b484a4d1b22fd4242b48", size = 6391993, upload-time = "2025-06-02T11:48:01.835Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/5717175217eefd0096f7fc4c47b44045b6df485d786b5e9a4c5ca1a25fb2/ty-0.0.1a8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:51f48d870a6bf3bb890ba0416ccebb6e8bf51bc617279b73f75b50635317eb8e", size = 6503801, upload-time = "2025-06-02T11:48:04.497Z" }, + { url = "https://files.pythonhosted.org/packages/4f/51/ea027f052b16dd6b8e2612a965be624a85dc80827200d53f72faf4af2af9/ty-0.0.1a8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3c761edf00563690fd1af816377744bd31fdd3644ebc3ea313d4cbfacabbc40b", size = 6154405, upload-time = "2025-06-02T11:48:06.816Z" }, + { url = "https://files.pythonhosted.org/packages/5d/10/bc7dc9ef2478e024446d29bacc2fde00709c3dd980b194fb362b5ae6371b/ty-0.0.1a8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb05e007015e4f24dded70d5d96be8eb01eaab908b6b776d86b74138010505a", size = 6293666, upload-time = "2025-06-02T11:48:09.168Z" }, + { url = "https://files.pythonhosted.org/packages/bf/18/d733fc45774082244acc12ef6b12d94d3b64a5c6b903b8096ee301bee70a/ty-0.0.1a8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:630699eb2f1257883c2a575c599cdb78dfaf04c46108c0b6c7cacac7dd443b1c", size = 6266361, upload-time = "2025-06-02T11:48:11.536Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a9/33d1c82441af32a7d3e82663feeff08d5f428a6b512fc77f6e05081a4843/ty-0.0.1a8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0b0d2a575350a78ba7a8362f4c0b15af73d0639e5b2361a89a5724a78ba4ca5", size = 6990816, upload-time = "2025-06-02T11:48:13.706Z" }, + { url = "https://files.pythonhosted.org/packages/32/0a/5c73aa451fe25f8e377dfb5ccfaf97aa5624cfcb40a6b81370c2bf1c2145/ty-0.0.1a8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f650af6673d01184bf70f0a4d87c43443793f24f71d72a5fab336f25d3dc381c", size = 7410553, upload-time = "2025-06-02T11:48:16.056Z" }, + { url = "https://files.pythonhosted.org/packages/13/53/8404f9455ad3e823ea41e08a9d08ced9db4668f46a6b51bcf410fd0fcb0d/ty-0.0.1a8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5be1338a00f284d64a86155d9e00363e02f60a11c907882c6f5a652cea9a681", size = 7082017, upload-time = "2025-06-02T11:48:17.917Z" }, + { url = "https://files.pythonhosted.org/packages/92/eb/aea450e21d34561eca301e2fc192bdc72cb2b10ae5322b613145582c87e5/ty-0.0.1a8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eedfeb35fa7397cf417b7d78718647c1c040f54b3b1b930a6e6c195ffeec1a2", size = 6956916, upload-time = "2025-06-02T11:48:20.121Z" }, + { url = "https://files.pythonhosted.org/packages/c5/37/c631f7a70f99eb095a6f502818c665a0e45b0bcd2dfe21b632ea0448cfc1/ty-0.0.1a8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc1c28f6d561d7fb80097adcd55d6a52fe76c8febd7bcc75e46f62a0c6db059", size = 6800158, upload-time = "2025-06-02T11:48:22.428Z" }, + { url = "https://files.pythonhosted.org/packages/ea/34/78292d162bff41453c900468703eb2a5f15f34f9479049d789f132f0b662/ty-0.0.1a8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:67ecd00ad5b1db14a7e08350587b285a0959210112852cc6125a04d321dc8472", size = 6202713, upload-time = "2025-06-02T11:48:24.26Z" }, + { url = "https://files.pythonhosted.org/packages/df/f3/9c94ece5c20faae3ca41af33f09f4037bc5056b370b7836cb3d422e7b97e/ty-0.0.1a8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e9bba2fbb5faf286ae2686356cefda7dd925b128e9663b8dc9c7f30c4e911147", size = 6291526, upload-time = "2025-06-02T11:48:26.091Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5b/31e9535c76590f2727d360e15576a95c80149961f008f9041069eda5c85a/ty-0.0.1a8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:dbb559218ee4e8be33b6d5f2720b914a2c9c550cb6dfdba35d788de7d35a6779", size = 6681805, upload-time = "2025-06-02T11:48:28.209Z" }, + { url = "https://files.pythonhosted.org/packages/fb/36/c526961bda1894933342745ad4c38d995747c4092ec9a9eb45842a6162bc/ty-0.0.1a8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8f9158c56796bf5d7eee4ed67100ed57f0105454efe007014e6e357f4104d58e", size = 6862380, upload-time = "2025-06-02T11:48:30.548Z" }, + { url = "https://files.pythonhosted.org/packages/14/75/1684b8785b41f545b92cdf3e0a1aec9fad5ab115bd735a3b5dbedc584ae8/ty-0.0.1a8-py3-none-win32.whl", hash = "sha256:a72d551192a165fc25e0a4e10c5481964d0b5f7f4beeb4bbd2f9c052e9f4e9a8", size = 6083349, upload-time = "2025-06-02T11:48:32.835Z" }, + { url = "https://files.pythonhosted.org/packages/3f/12/6c53108b202bb65debaed69ee3f3dc0898ba454acc68057bec923bd4e47f/ty-0.0.1a8-py3-none-win_amd64.whl", hash = "sha256:97b28f8beef4aa10088f778b1fa75ec179b19fe70686e15cf9417e3b5ad9adb2", size = 6614195, upload-time = "2025-06-02T11:48:34.667Z" }, + { url = "https://files.pythonhosted.org/packages/86/60/e57a98a1685efde4aa83efd341450971c5e3278f0a7c0fc26bec33685f06/ty-0.0.1a8-py3-none-win_arm64.whl", hash = "sha256:fbd4a63ab7f219cf72c369ff4c494184f63d4c2f986176a3674ed780d144b3d6", size = 6256043, upload-time = "2025-06-02T11:48:36.487Z" }, +] + +[[package]] +name = "typer" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload-time = "2025-05-26T14:30:31.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload-time = "2025-05-26T14:30:30.523Z" }, +] + +[[package]] +name = "typer-config" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/af/78f802bc49eaa5855082cca10e9c9d7d03469c957c149aa159561dc3d744/typer_config-1.4.2.tar.gz", hash = "sha256:69dffc0e06095b57754bfe9fb3e4caf28ab9c2c430dade6433b0ca128510f600", size = 10919, upload-time = "2024-11-08T01:59:06.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/bd/2e9d407d7ed3f33a40d8211a481b76a0507ba4f117da9dec116c0de9871e/typer_config-1.4.2-py3-none-any.whl", hash = "sha256:b3e1f59bacc8276e5b830f35c9ca403cd85f14173169c23c3756fa816357a34f", size = 11698, upload-time = "2024-11-08T01:59:05.787Z" }, +] + +[package.optional-dependencies] +yaml = [ + { name = "pyyaml" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250516" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423, upload-time = "2025-06-02T14:52:11.399Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839, upload-time = "2025-06-02T14:52:10.026Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "uc-micro-py" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043, upload-time = "2024-02-09T16:52:01.654Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229, upload-time = "2024-02-09T16:52:00.371Z" }, +] + +[[package]] +name = "unique-namer" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/47/26e9f45b64ad2d7c77eefb48a0e84ae0c0070fa812bf6ab95584559ce53c/unique_namer-1.6.1.tar.gz", hash = "sha256:7f4e3143f923c24baaed56bb93726e10669333271caa71ffd5d8f1a928a5befe", size = 73334, upload-time = "2024-08-13T11:51:29.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/72/e06078006bbc3635490b872e8647294cf5921f378634de43520012b7c09e/unique_namer-1.6.1-py3-none-any.whl", hash = "sha256:6e76751c0886244625b43a8e5e7c18168a9205f5a944c0dbbbd9eb219c4812f2", size = 71111, upload-time = "2024-08-13T11:51:26.92Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/53/2e0253c5efd69c9656b1843892052a31c36d37ad42812b5da45c62191f7e/widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af", size = 1097428, upload-time = "2025-04-10T13:01:25.628Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, +] + +[[package]] +name = "xxhash" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/5e/d6e5258d69df8b4ed8c83b6664f2b47d30d2dec551a29ad72a6c69eafd31/xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f", size = 84241, upload-time = "2024-08-17T09:20:38.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/c7/afed0f131fbda960ff15eee7f304fa0eeb2d58770fade99897984852ef23/xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1", size = 31969, upload-time = "2024-08-17T09:18:00.852Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0c/7c3bc6d87e5235672fcc2fb42fd5ad79fe1033925f71bf549ee068c7d1ca/xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8", size = 30800, upload-time = "2024-08-17T09:18:01.863Z" }, + { url = "https://files.pythonhosted.org/packages/04/9e/01067981d98069eec1c20201f8c145367698e9056f8bc295346e4ea32dd1/xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166", size = 221566, upload-time = "2024-08-17T09:18:03.461Z" }, + { url = "https://files.pythonhosted.org/packages/d4/09/d4996de4059c3ce5342b6e1e6a77c9d6c91acce31f6ed979891872dd162b/xxhash-3.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28b2fdcee797e1c1961cd3bcd3d545cab22ad202c846235197935e1df2f8ef7", size = 201214, upload-time = "2024-08-17T09:18:05.616Z" }, + { url = "https://files.pythonhosted.org/packages/62/f5/6d2dc9f8d55a7ce0f5e7bfef916e67536f01b85d32a9fbf137d4cadbee38/xxhash-3.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:924361811732ddad75ff23e90efd9ccfda4f664132feecb90895bade6a1b4623", size = 429433, upload-time = "2024-08-17T09:18:06.957Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/9256303f10e41ab004799a4aa74b80b3c5977d6383ae4550548b24bd1971/xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89997aa1c4b6a5b1e5b588979d1da048a3c6f15e55c11d117a56b75c84531f5a", size = 194822, upload-time = "2024-08-17T09:18:08.331Z" }, + { url = "https://files.pythonhosted.org/packages/34/92/1a3a29acd08248a34b0e6a94f4e0ed9b8379a4ff471f1668e4dce7bdbaa8/xxhash-3.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:685c4f4e8c59837de103344eb1c8a3851f670309eb5c361f746805c5471b8c88", size = 208538, upload-time = "2024-08-17T09:18:10.332Z" }, + { url = "https://files.pythonhosted.org/packages/53/ad/7fa1a109663366de42f724a1cdb8e796a260dbac45047bce153bc1e18abf/xxhash-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbd2ecfbfee70bc1a4acb7461fa6af7748ec2ab08ac0fa298f281c51518f982c", size = 216953, upload-time = "2024-08-17T09:18:11.707Z" }, + { url = "https://files.pythonhosted.org/packages/35/02/137300e24203bf2b2a49b48ce898ecce6fd01789c0fcd9c686c0a002d129/xxhash-3.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25b5a51dc3dfb20a10833c8eee25903fd2e14059e9afcd329c9da20609a307b2", size = 203594, upload-time = "2024-08-17T09:18:13.799Z" }, + { url = "https://files.pythonhosted.org/packages/23/03/aeceb273933d7eee248c4322b98b8e971f06cc3880e5f7602c94e5578af5/xxhash-3.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a8fb786fb754ef6ff8c120cb96629fb518f8eb5a61a16aac3a979a9dbd40a084", size = 210971, upload-time = "2024-08-17T09:18:15.824Z" }, + { url = "https://files.pythonhosted.org/packages/e3/64/ed82ec09489474cbb35c716b189ddc1521d8b3de12b1b5ab41ce7f70253c/xxhash-3.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a905ad00ad1e1c34fe4e9d7c1d949ab09c6fa90c919860c1534ff479f40fd12d", size = 415050, upload-time = "2024-08-17T09:18:17.142Z" }, + { url = "https://files.pythonhosted.org/packages/71/43/6db4c02dcb488ad4e03bc86d70506c3d40a384ee73c9b5c93338eb1f3c23/xxhash-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:963be41bcd49f53af6d795f65c0da9b4cc518c0dd9c47145c98f61cb464f4839", size = 192216, upload-time = "2024-08-17T09:18:18.779Z" }, + { url = "https://files.pythonhosted.org/packages/22/6d/db4abec29e7a567455344433d095fdb39c97db6955bb4a2c432e486b4d28/xxhash-3.5.0-cp311-cp311-win32.whl", hash = "sha256:109b436096d0a2dd039c355fa3414160ec4d843dfecc64a14077332a00aeb7da", size = 30120, upload-time = "2024-08-17T09:18:20.009Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/fa3b61c0cf03e1da4767213672efe186b1dfa4fc901a4a694fb184a513d1/xxhash-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:b702f806693201ad6c0a05ddbbe4c8f359626d0b3305f766077d51388a6bac58", size = 30003, upload-time = "2024-08-17T09:18:21.052Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8e/9e6fc572acf6e1cc7ccb01973c213f895cb8668a9d4c2b58a99350da14b7/xxhash-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:c4dcb4120d0cc3cc448624147dba64e9021b278c63e34a38789b688fd0da9bf3", size = 26777, upload-time = "2024-08-17T09:18:22.809Z" }, + { url = "https://files.pythonhosted.org/packages/07/0e/1bfce2502c57d7e2e787600b31c83535af83746885aa1a5f153d8c8059d6/xxhash-3.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:14470ace8bd3b5d51318782cd94e6f94431974f16cb3b8dc15d52f3b69df8e00", size = 31969, upload-time = "2024-08-17T09:18:24.025Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d6/8ca450d6fe5b71ce521b4e5db69622383d039e2b253e9b2f24f93265b52c/xxhash-3.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59aa1203de1cb96dbeab595ded0ad0c0056bb2245ae11fac11c0ceea861382b9", size = 30787, upload-time = "2024-08-17T09:18:25.318Z" }, + { url = "https://files.pythonhosted.org/packages/5b/84/de7c89bc6ef63d750159086a6ada6416cc4349eab23f76ab870407178b93/xxhash-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08424f6648526076e28fae6ea2806c0a7d504b9ef05ae61d196d571e5c879c84", size = 220959, upload-time = "2024-08-17T09:18:26.518Z" }, + { url = "https://files.pythonhosted.org/packages/fe/86/51258d3e8a8545ff26468c977101964c14d56a8a37f5835bc0082426c672/xxhash-3.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61a1ff00674879725b194695e17f23d3248998b843eb5e933007ca743310f793", size = 200006, upload-time = "2024-08-17T09:18:27.905Z" }, + { url = "https://files.pythonhosted.org/packages/02/0a/96973bd325412feccf23cf3680fd2246aebf4b789122f938d5557c54a6b2/xxhash-3.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f2c61bee5844d41c3eb015ac652a0229e901074951ae48581d58bfb2ba01be", size = 428326, upload-time = "2024-08-17T09:18:29.335Z" }, + { url = "https://files.pythonhosted.org/packages/11/a7/81dba5010f7e733de88af9555725146fc133be97ce36533867f4c7e75066/xxhash-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d32a592cac88d18cc09a89172e1c32d7f2a6e516c3dfde1b9adb90ab5df54a6", size = 194380, upload-time = "2024-08-17T09:18:30.706Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7d/f29006ab398a173f4501c0e4977ba288f1c621d878ec217b4ff516810c04/xxhash-3.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70dabf941dede727cca579e8c205e61121afc9b28516752fd65724be1355cc90", size = 207934, upload-time = "2024-08-17T09:18:32.133Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6e/6e88b8f24612510e73d4d70d9b0c7dff62a2e78451b9f0d042a5462c8d03/xxhash-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5d0ddaca65ecca9c10dcf01730165fd858533d0be84c75c327487c37a906a27", size = 216301, upload-time = "2024-08-17T09:18:33.474Z" }, + { url = "https://files.pythonhosted.org/packages/af/51/7862f4fa4b75a25c3b4163c8a873f070532fe5f2d3f9b3fc869c8337a398/xxhash-3.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e5b5e16c5a480fe5f59f56c30abdeba09ffd75da8d13f6b9b6fd224d0b4d0a2", size = 203351, upload-time = "2024-08-17T09:18:34.889Z" }, + { url = "https://files.pythonhosted.org/packages/22/61/8d6a40f288f791cf79ed5bb113159abf0c81d6efb86e734334f698eb4c59/xxhash-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149b7914451eb154b3dfaa721315117ea1dac2cc55a01bfbd4df7c68c5dd683d", size = 210294, upload-time = "2024-08-17T09:18:36.355Z" }, + { url = "https://files.pythonhosted.org/packages/17/02/215c4698955762d45a8158117190261b2dbefe9ae7e5b906768c09d8bc74/xxhash-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:eade977f5c96c677035ff39c56ac74d851b1cca7d607ab3d8f23c6b859379cab", size = 414674, upload-time = "2024-08-17T09:18:38.536Z" }, + { url = "https://files.pythonhosted.org/packages/31/5c/b7a8db8a3237cff3d535261325d95de509f6a8ae439a5a7a4ffcff478189/xxhash-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa9f547bd98f5553d03160967866a71056a60960be00356a15ecc44efb40ba8e", size = 192022, upload-time = "2024-08-17T09:18:40.138Z" }, + { url = "https://files.pythonhosted.org/packages/78/e3/dd76659b2811b3fd06892a8beb850e1996b63e9235af5a86ea348f053e9e/xxhash-3.5.0-cp312-cp312-win32.whl", hash = "sha256:f7b58d1fd3551b8c80a971199543379be1cee3d0d409e1f6d8b01c1a2eebf1f8", size = 30170, upload-time = "2024-08-17T09:18:42.163Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6b/1c443fe6cfeb4ad1dcf231cdec96eb94fb43d6498b4469ed8b51f8b59a37/xxhash-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:fa0cafd3a2af231b4e113fba24a65d7922af91aeb23774a8b78228e6cd785e3e", size = 30040, upload-time = "2024-08-17T09:18:43.699Z" }, + { url = "https://files.pythonhosted.org/packages/0f/eb/04405305f290173acc0350eba6d2f1a794b57925df0398861a20fbafa415/xxhash-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:586886c7e89cb9828bcd8a5686b12e161368e0064d040e225e72607b43858ba2", size = 26796, upload-time = "2024-08-17T09:18:45.29Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload-time = "2025-04-17T00:45:14.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload-time = "2025-04-17T00:42:04.511Z" }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload-time = "2025-04-17T00:42:06.43Z" }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload-time = "2025-04-17T00:42:07.976Z" }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload-time = "2025-04-17T00:42:09.902Z" }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload-time = "2025-04-17T00:42:11.768Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload-time = "2025-04-17T00:42:13.983Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload-time = "2025-04-17T00:42:16.386Z" }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload-time = "2025-04-17T00:42:18.622Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload-time = "2025-04-17T00:42:20.9Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload-time = "2025-04-17T00:42:22.926Z" }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload-time = "2025-04-17T00:42:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload-time = "2025-04-17T00:42:27.475Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload-time = "2025-04-17T00:42:29.333Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload-time = "2025-04-17T00:42:31.668Z" }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload-time = "2025-04-17T00:42:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload-time = "2025-04-17T00:42:35.873Z" }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload-time = "2025-04-17T00:42:37.586Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload-time = "2025-04-17T00:42:39.602Z" }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload-time = "2025-04-17T00:42:41.469Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload-time = "2025-04-17T00:42:43.666Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload-time = "2025-04-17T00:42:45.391Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload-time = "2025-04-17T00:42:47.552Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload-time = "2025-04-17T00:42:49.406Z" }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload-time = "2025-04-17T00:42:51.588Z" }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload-time = "2025-04-17T00:42:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload-time = "2025-04-17T00:42:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload-time = "2025-04-17T00:42:57.895Z" }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload-time = "2025-04-17T00:43:00.094Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload-time = "2025-04-17T00:43:02.242Z" }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload-time = "2025-04-17T00:43:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload-time = "2025-04-17T00:43:06.609Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload-time = "2025-04-17T00:43:09.01Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload-time = "2025-04-17T00:43:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload-time = "2025-04-17T00:43:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload-time = "2025-04-17T00:45:12.199Z" }, +] diff --git a/src/feature-flags/docker-compose.yml b/src/feature-flags/docker-compose.yml new file mode 100644 index 000000000..7a062e5fc --- /dev/null +++ b/src/feature-flags/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.8' + +services: + unleash-db: + image: postgres:16 + profiles: ["feature-flags"] + environment: + POSTGRES_DB: ${UNLEASH_DB_NAME:-unleash} + POSTGRES_USER: ${UNLEASH_DB_USER:-unleash} + POSTGRES_PASSWORD: ${UNLEASH_DB_PASSWORD:-unleash_password} + volumes: + - unleash_db_data:/var/lib/postgresql/data + ports: + # Host port 5433 maps to container port 5432 + - "${UNLEASH_DB_PORT:-5433}:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${UNLEASH_DB_USER:-unleash}"] + interval: 10s + timeout: 5s + retries: 5 + + unleash: + image: unleashorg/unleash-server:latest + profiles: ["feature-flags"] + environment: + DATABASE_URL: postgres://${UNLEASH_DB_USER:-unleash}:${UNLEASH_DB_PASSWORD:-unleash_password}@unleash-db:5432/${UNLEASH_DB_NAME:-unleash} + DATABASE_SSL: "false" + LOG_LEVEL: ${UNLEASH_LOG_LEVEL:-info} + INIT_FRONTEND_API_TOKENS: ${UNLEASH_FRONTEND_TOKEN:-default:development.unleash-insecure-frontend-api-token} + INIT_CLIENT_API_TOKENS: ${UNLEASH_API_TOKEN:-default:development.unleash-insecure-api-token} + INIT_ADMIN_API_TOKENS: ${UNLEASH_ADMIN_TOKEN:-*:*.unleash-insecure-admin-api-token} + UNLEASH_URL: ${UNLEASH_URL:-http://localhost:4242} + AUTH_TYPE: ${UNLEASH_AUTH_TYPE:-open-source} + AUTH_ENABLE_API_TOKEN: "true" + ports: + # Bind only to localhost - not publicly accessible + - "${UNLEASH_PORT:-4242}:4242" + depends_on: + unleash-db: + condition: service_healthy + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4242/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + +volumes: + unleash_db_data: + external: true \ No newline at end of file diff --git a/src/feature-flags/env.example b/src/feature-flags/env.example new file mode 100644 index 000000000..3bdf142a3 --- /dev/null +++ b/src/feature-flags/env.example @@ -0,0 +1,27 @@ +# Julep Feature Flags Service Configuration +# Copy this file to .env and customize the values + +# Unleash Database Configuration +UNLEASH_DB_NAME=unleash +UNLEASH_DB_USER=unleash +UNLEASH_DB_PASSWORD=unleash_password +UNLEASH_DB_PORT=5433 + +# Unleash Server Configuration +UNLEASH_PORT=4242 +UNLEASH_URL=http://localhost:4242/api +UNLEASH_LOG_LEVEL=info + +# API Tokens (Change these in production!) +UNLEASH_API_TOKEN=default:development.unleash-insecure-api-token +UNLEASH_FRONTEND_TOKEN=default:development.unleash-insecure-frontend-api-token + +# Admin Security (Change these in production!) +UNLEASH_ADMIN_TOKEN=*:*.unleash-insecure-admin-api-token +UNLEASH_AUTH_TYPE=open-source + +# For agents-api integration +UNLEASH_APP_NAME=agents-api + +# Environment for feature flag context +DEPLOYMENT_ENV=development \ No newline at end of file diff --git a/src/gateway/AGENTS.md b/src/gateway/AGENTS.md new file mode 100644 index 000000000..07f08e9e0 --- /dev/null +++ b/src/gateway/AGENTS.md @@ -0,0 +1,113 @@ +# AGENTS.md - gateway + +This directory contains the API gateway service using Traefik for routing and middleware. + +Key Uses +- Bash commands: + - cd gateway + - docker-compose up gateway +- Core files: + - `docker-compose.yml` for container deployment + - `traefik.yml.template` for Traefik configuration template + - `entrypoint.sh` for container initialization + - `Dockerfile` for custom Traefik image +- Configuration guidelines: + - Set `JWT_SHARED_KEY` for authentication + - Configure `AGENTS_API_URL` for backend routing + - Set SSL/TLS environment variables for HTTPS +- Testing instructions: + - Health check: `curl http://localhost:80/api/healthz` + - API docs: `curl http://localhost:80/api/docs` +- Repository etiquette: + - Don't commit JWT keys or certificates to version control +- Developer environment: + - Requires Docker and Docker Compose + - LetsEncrypt volume for SSL certificates +- Unexpected behaviors: + - Routes have priority ordering for path matching + - JWT plugin requires custom Traefik build + +# Gateway Service + +## Overview +The gateway service provides a unified entry point for the Julep platform using Traefik as a reverse proxy. It handles routing, authentication, CORS, SSL termination, and load balancing for all platform services. + +## Architecture +- **Proxy Engine**: Traefik reverse proxy with dynamic configuration +- **Authentication**: JWT-based authentication middleware +- **SSL/TLS**: Let's Encrypt automatic certificate management +- **Load Balancing**: Service discovery and health checking + +## Key Components + +### Traefik Configuration +- **Routers**: Route definition and rule matching +- **Middlewares**: Request/response processing pipeline +- **Services**: Backend service configuration +- **Entrypoints**: Port and protocol listeners + +### Routing Rules +- `/api/*` → agents-api service (with JWT auth) +- `/api/temporal/*` → agents-api internal endpoints +- `/api/docs` → API documentation (no auth) +- `/api/healthz` → Health check endpoint +- `/tasks-ui/*` → Temporal UI service +- `/v1/graphql` → Hasura GraphQL endpoint +- `/` → Redirect to API documentation + +### Middleware Chain +1. **CORS Headers**: Cross-origin resource sharing +2. **JWT Authentication**: Token validation and user identification +3. **Header Injection**: API key and developer headers +4. **Path Stripping**: Clean URLs for backend services + +## Environment Variables +- `JWT_SHARED_KEY`: Shared secret for JWT validation (required) +- `AGENTS_API_URL`: Backend API service URL (default: http://agents-api-multi-tenant:8080) +- `TEMPORAL_UI_PUBLIC_URL`: Temporal UI service URL +- `HASURA_URL`: Hasura GraphQL service URL +- `AGENTS_API_KEY`: API key for backend authentication +- `TRAEFIK_LOG_LEVEL`: Logging verbosity (default: INFO) +- `GATEWAY_PORT`: Gateway listening port (default: 80) + +## Security Features +- JWT token validation with HS512 algorithm +- API key injection for backend services +- CORS policy enforcement +- SSL/TLS termination with automatic certificates +- Request rate limiting and health checks + +## Service Discovery +- **Agents API**: Main platform API with authentication +- **Temporal UI**: Workflow monitoring interface +- **Hasura**: GraphQL API for data access +- **Internal APIs**: System-level endpoints + +## SSL/TLS Configuration +- Let's Encrypt ACME challenge for automatic certificates +- Certificate storage in persistent volume +- HTTPS redirect and HSTS headers +- Configurable domains and certificate resolvers + +## Monitoring & Observability +- Health check endpoints on all routes +- Access logs with request/response details +- Metrics endpoint (localhost:8082) for Prometheus +- Service health checking and automatic failover + +## Development Features +- File watching for configuration reloads +- Debug logging for troubleshooting +- Local development without SSL +- Hot reload for template changes + +## Custom Plugins +- **JWT Plugin**: Custom authentication middleware +- **Header Manipulation**: Dynamic header injection +- **Path Rewriting**: URL transformation for backends + +## Integration Points +- Frontend applications connect via gateway +- Backend services receive authenticated requests +- Monitoring systems scrape metrics +- SSL certificates managed automatically \ No newline at end of file diff --git a/src/gateway/CLAUDE.md b/src/gateway/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/gateway/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/gateway/Dockerfile b/src/gateway/Dockerfile similarity index 100% rename from gateway/Dockerfile rename to src/gateway/Dockerfile diff --git a/gateway/docker-compose.yml b/src/gateway/docker-compose.yml similarity index 96% rename from gateway/docker-compose.yml rename to src/gateway/docker-compose.yml index e9358a36f..63caf1d58 100644 --- a/gateway/docker-compose.yml +++ b/src/gateway/docker-compose.yml @@ -12,6 +12,7 @@ services: - AGENTS_API_KEY=${AGENTS_API_KEY} - AGENTS_API_KEY_HEADER_NAME=${AGENTS_API_KEY_HEADER_NAME:-Authorization} - TRAEFIK_LOG_LEVEL=${TRAEFIK_LOG_LEVEL:-INFO} + - ANALYTICS_URL=${ANALYTICS_URL:-http://analytics:3000} container_name: gateway profiles: - multi-tenant diff --git a/gateway/entrypoint.sh b/src/gateway/entrypoint.sh similarity index 100% rename from gateway/entrypoint.sh rename to src/gateway/entrypoint.sh diff --git a/gateway/letsencrypt/.gitignore b/src/gateway/letsencrypt/.gitignore similarity index 100% rename from gateway/letsencrypt/.gitignore rename to src/gateway/letsencrypt/.gitignore diff --git a/gateway/letsencrypt/.gitkeep b/src/gateway/letsencrypt/.gitkeep similarity index 100% rename from gateway/letsencrypt/.gitkeep rename to src/gateway/letsencrypt/.gitkeep diff --git a/gateway/traefik.yml.template b/src/gateway/traefik.yml.template similarity index 61% rename from gateway/traefik.yml.template rename to src/gateway/traefik.yml.template index dbffb7745..8dc8b41f4 100644 --- a/gateway/traefik.yml.template +++ b/src/gateway/traefik.yml.template @@ -94,6 +94,65 @@ http: service: service-hasura priority: 3 + # Handle direct /app/ routes (when Metabase generates URLs without /analytics prefix) + # ONLY accessible via iframe from dashboard + analytics-app-direct: + entryPoints: + - web + rule: PathPrefix(`/app/`) + middlewares: + - corsHeaders + - analytics-cache-headers + service: service-analytics + priority: 5 + + # Handle double /app/ pattern for Metabase static assets + # ONLY accessible via iframe from dashboard + analytics-app-double-assets: + entryPoints: + - web + rule: PathRegexp(`^/analytics/app/app/(dist|fonts|img|css)/(.*)`) + middlewares: + - corsHeaders + - analytics-cache-headers + - analytics-strip-app-double + service: service-analytics + priority: 4 + + # Metabase static assets - keep /analytics prefix since Metabase is configured for it + # ONLY accessible via iframe from dashboard + analytics-static-assets: + entryPoints: + - web + rule: PathRegexp(`^/analytics/(dist|fonts|img|css|app/dist|app/fonts|app/img|app/css)/(.*)`) + middlewares: + - corsHeaders + - analytics-cache-headers + service: service-analytics + priority: 3 + + # Redirect /analytics to /analytics/ (without trailing slash to with trailing slash) + analytics-redirect: + entryPoints: + - web + rule: Path(`/analytics`) + middlewares: + - analytics-redirect-with-slash + service: service-analytics + priority: 2 + + # General Analytics/Metabase proxy - strip /analytics prefix for backend requests + # ONLY accessible via iframe from dashboard + analytics: + entryPoints: + - web + rule: PathPrefix(`/analytics/`) + middlewares: + - corsHeaders + - analytics-strip-prefix + service: service-analytics + priority: 1 + middlewares: corsHeaders: headers: @@ -146,6 +205,27 @@ http: - /tasks-ui forceSlash: false + analytics-strip-prefix: + stripprefix: + prefixes: + - /analytics + forceSlash: false + + analytics-strip-app-double: + replacepathregex: + regex: "^/analytics/app/app/(.*)" + replacement: "/app/$1" + + analytics-cache-headers: + headers: + customresponseheaders: + Cache-Control: "public, max-age=86400" + + analytics-redirect-with-slash: + redirectRegex: + regex: "^/analytics$" + replacement: "/analytics/" + services: service-agents-api: loadBalancer: @@ -165,6 +245,12 @@ http: servers: - url: $HASURA_URL + service-analytics: + loadBalancer: + passHostHeader: false + servers: + - url: $ANALYTICS_URL + experimental: localPlugins: jwt: diff --git a/hasura/docker-compose.yml b/src/hasura/docker-compose.yml similarity index 88% rename from hasura/docker-compose.yml rename to src/hasura/docker-compose.yml index 517b59fbe..609cc2272 100644 --- a/hasura/docker-compose.yml +++ b/src/hasura/docker-compose.yml @@ -15,7 +15,7 @@ services: HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_ADMIN_SECRET:-hasura} HASURA_GRAPHQL_UNAUTHORIZED_ROLE: "anonymous" - HASURA_GRAPHQL_JWT_SECRET: ${HASURA_JWT_SECRET:-{"type":"HS512", "key":"${JWT_SHARED_KEY:-secret}", "claims_map":${HASURA_CLAIMS_MAP}}} + HASURA_GRAPHQL_JWT_SECRET: ${HASURA_JWT_SECRET:-{"type":"HS512", "key":"${JWT_SHARED_KEY:-secret}", "allowed_skew":${JWT_ALLOWED_SKEW:-0}, "claims_map":${HASURA_CLAIMS_MAP}}} HASURA_GRAPHQL_CORS_DOMAIN: "*" restart: unless-stopped depends_on: diff --git a/hasura/metadata/hasura_metadata_2025_04_07_16_21_57_118.json b/src/hasura/metadata/hasura_metadata_2025_04_07_16_21_57_118.json similarity index 100% rename from hasura/metadata/hasura_metadata_2025_04_07_16_21_57_118.json rename to src/hasura/metadata/hasura_metadata_2025_04_07_16_21_57_118.json diff --git a/hasura/metadata/hasura_metadata_2025_04_24_14_57_23_154.json b/src/hasura/metadata/hasura_metadata_2025_04_24_14_57_23_154.json similarity index 100% rename from hasura/metadata/hasura_metadata_2025_04_24_14_57_23_154.json rename to src/hasura/metadata/hasura_metadata_2025_04_24_14_57_23_154.json diff --git a/integrations-service/.dockerignore b/src/integrations-service/.dockerignore similarity index 100% rename from integrations-service/.dockerignore rename to src/integrations-service/.dockerignore diff --git a/integrations-service/.python-version b/src/integrations-service/.python-version similarity index 100% rename from integrations-service/.python-version rename to src/integrations-service/.python-version diff --git a/integrations-service/CLAUDE.md b/src/integrations-service/AGENTS.md similarity index 72% rename from integrations-service/CLAUDE.md rename to src/integrations-service/AGENTS.md index b2ef4bb9e..c36c97f9c 100644 --- a/integrations-service/CLAUDE.md +++ b/src/integrations-service/AGENTS.md @@ -1,3 +1,30 @@ +# AGENTS.md - integrations-service + +This directory provides adapters and routers for external service integrations. + +Key Uses +- Bash commands: + - cd integrations-service + - source .venv/bin/activate + - poe format + - poe lint + - poe test + - poe check +- Core directories: + - `integrations/` for integration modules and routers. + - `tests/mocks/` for service mocks. +- Code style guidelines: + - Follows root Python standards (async httpx clients, ruff formatting). +- Testing instructions: + - Use pytest for integration tests. + - Mock external services with fixtures in `tests/mocks/`. +- Repository etiquette: + - Document external API versions and schema changes. +- Developer environment: + - Set env vars in `.env` for service credentials. +- Unexpected behaviors: + - Watch for rate limits; configure retry logic. + # Integrations Service Architecture ## Overview @@ -37,7 +64,9 @@ The integrations-service is a FastAPI-based microservice that provides a unified 4. Communications - `email` - Email sending capabilities + - `mailgun` - Mailgun email service integration - `weather` - Weather information + - `mcp` - Model Context Protocol client (stdio/http) ### API Structure - `/execute/{provider}` - Execute default method for a provider @@ -55,6 +84,11 @@ The integrations-service is a FastAPI-based microservice that provides a unified - Each provider has method implementations in `utils/integrations/` - Methods use `@beartype` for type validation and `@retry` for resilience - Async execution with consistent error handling + - MCP specifics: + - `mcp.list_tools` connects to the server and returns dynamic tool metadata + - `mcp.call_tool` invokes a named MCP tool with JSON arguments + - Supports `stdio` (via `command`/`args`) and `http` (via `http_url`/`http_headers`) + 3. **Dynamic Loading** - Provider modules loaded using `importlib` based on provider name @@ -82,4 +116,4 @@ The integrations-service is a FastAPI-based microservice that provides a unified ## Testing - Mock implementations in `tests/mocks/` - Provider execution tests in `test_provider_execution.py` -- Provider definition tests in `test_providers.py` \ No newline at end of file +- Provider definition tests in `test_providers.py` diff --git a/src/integrations-service/CLAUDE.md b/src/integrations-service/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/integrations-service/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/integrations-service/Dockerfile b/src/integrations-service/Dockerfile similarity index 100% rename from integrations-service/Dockerfile rename to src/integrations-service/Dockerfile diff --git a/integrations-service/README.md b/src/integrations-service/README.md similarity index 100% rename from integrations-service/README.md rename to src/integrations-service/README.md diff --git a/integrations-service/docker-compose.yml b/src/integrations-service/docker-compose.yml similarity index 94% rename from integrations-service/docker-compose.yml rename to src/integrations-service/docker-compose.yml index b0113e4e9..05826080d 100644 --- a/integrations-service/docker-compose.yml +++ b/src/integrations-service/docker-compose.yml @@ -20,6 +20,7 @@ x--shared-environment: &shared-environment MAILGUN_API_KEY: ${MAILGUN_API_KEY} GUNICORN_CPU_DIVISOR: ${GUNICORN_CPU_DIVISOR:-4} GUNICORN_WORKERS: ${GUNICORN_WORKERS} + JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON: ${JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON} services: integrations: diff --git a/integrations-service/gunicorn_conf.py b/src/integrations-service/gunicorn_conf.py similarity index 100% rename from integrations-service/gunicorn_conf.py rename to src/integrations-service/gunicorn_conf.py diff --git a/integrations-service/integrations/utils/__init__.py b/src/integrations-service/integrations/__init__.py similarity index 100% rename from integrations-service/integrations/utils/__init__.py rename to src/integrations-service/integrations/__init__.py diff --git a/integrations-service/integrations/__main__.py b/src/integrations-service/integrations/__main__.py similarity index 100% rename from integrations-service/integrations/__main__.py rename to src/integrations-service/integrations/__main__.py diff --git a/agents-api/agents_api/autogen/Agents.py b/src/integrations-service/integrations/autogen/Agents.py similarity index 92% rename from agents-api/agents_api/autogen/Agents.py rename to src/integrations-service/integrations/autogen/Agents.py index ab4c3523d..a59cbeeaa 100644 --- a/agents-api/agents_api/autogen/Agents.py +++ b/src/integrations-service/integrations/autogen/Agents.py @@ -27,6 +27,13 @@ class Agent(BaseModel): """ Name of the agent """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ canonical_name: Annotated[ str | None, Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), @@ -69,6 +76,13 @@ class CreateAgentRequest(BaseModel): """ Name of the agent """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ canonical_name: Annotated[ str | None, Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), @@ -108,6 +122,13 @@ class CreateOrUpdateAgentRequest(CreateAgentRequest): """ Name of the agent """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ canonical_name: Annotated[ str | None, Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), @@ -178,6 +199,13 @@ class PatchAgentRequest(BaseModel): """ Name of the agent """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ canonical_name: Annotated[ str | None, Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), @@ -220,6 +248,13 @@ class UpdateAgentRequest(BaseModel): """ Name of the agent """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the agent + """ canonical_name: Annotated[ str | None, Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), diff --git a/integrations-service/integrations/autogen/Chat.py b/src/integrations-service/integrations/autogen/Chat.py similarity index 95% rename from integrations-service/integrations/autogen/Chat.py rename to src/integrations-service/integrations/autogen/Chat.py index 3143e8a00..b0cb65da8 100644 --- a/integrations-service/integrations/autogen/Chat.py +++ b/src/integrations-service/integrations/autogen/Chat.py @@ -157,8 +157,7 @@ class Content(BaseModel): """ -class ContentItem(Content): - pass +ContentItem = Content class ContentItemModel(BaseModel): @@ -169,28 +168,22 @@ class ContentItemModel(BaseModel): source: Source -class ContentItemModel1(Content): - pass +ContentItemModel1 = Content -class ContentItemModel2(ContentItemModel): - pass +ContentItemModel2 = ContentItemModel -class ContentItemModel3(Content): - pass +ContentItemModel3 = Content -class ContentItemModel4(ContentItemModel): - pass +ContentItemModel4 = ContentItemModel -class ContentItemModel5(Content): - pass +ContentItemModel5 = Content -class ContentItemModel6(ContentItemModel): - pass +ContentItemModel6 = ContentItemModel class ContentModel(BaseModel): @@ -206,8 +199,7 @@ class ContentModel(BaseModel): content: list[ContentItem] | list[ContentItemModel] -class ContentModel1(Content): - pass +ContentModel1 = Content class ContentModel2(BaseModel): @@ -223,8 +215,7 @@ class ContentModel2(BaseModel): content: list[ContentItemModel1] | list[ContentItemModel2] -class ContentModel3(Content): - pass +ContentModel3 = Content class ContentModel4(BaseModel): @@ -240,8 +231,7 @@ class ContentModel4(BaseModel): content: list[ContentItemModel3] | list[ContentItemModel4] -class ContentModel5(Content): - pass +ContentModel5 = Content class ContentModel6(BaseModel): @@ -295,10 +285,6 @@ class Delta(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -361,10 +347,6 @@ class Message(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -594,3 +576,12 @@ class ChatInput(ChatInputData): """ Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. """ + metadata: dict[str, Any] | None = None + auto_run_tools: StrictBool = False + """ + Whether to automatically run tools and send the results back to the model (requires tools or agents with tools). + """ + recall_tools: StrictBool = True + """ + Whether to include tool requests and responses when recalling messages. + """ diff --git a/agents-api/agents_api/autogen/Common.py b/src/integrations-service/integrations/autogen/Common.py similarity index 90% rename from agents-api/agents_api/autogen/Common.py rename to src/integrations-service/integrations/autogen/Common.py index 16123e07a..f378474f3 100644 --- a/agents-api/agents_api/autogen/Common.py +++ b/src/integrations-service/integrations/autogen/Common.py @@ -9,6 +9,16 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel +class Content(RootModel[str]): + model_config = ConfigDict( + populate_by_name=True, + ) + root: Annotated[str, Field(max_length=30000)] + """ + Contents of a document + """ + + class JinjaTemplate(RootModel[str]): model_config = ConfigDict( populate_by_name=True, diff --git a/agents-api/agents_api/autogen/Docs.py b/src/integrations-service/integrations/autogen/Docs.py similarity index 75% rename from agents-api/agents_api/autogen/Docs.py rename to src/integrations-service/integrations/autogen/Docs.py index 9e5507357..df3f6d22f 100644 --- a/agents-api/agents_api/autogen/Docs.py +++ b/src/integrations-service/integrations/autogen/Docs.py @@ -8,23 +8,7 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool - -class BaseDocSearchRequest(BaseModel): - model_config = ConfigDict( - populate_by_name=True, - ) - limit: Annotated[int, Field(ge=1, le=50)] = 10 - """ - The limit of documents to return - """ - lang: str = "en-US" - """ - The language to be used for text-only search. Support for other languages coming soon. - """ - metadata_filter: dict[str, Any] = {} - """ - Metadata filter to apply to the search - """ +from .Common import Content class BulkDeleteDocsRequest(BaseModel): @@ -54,9 +38,9 @@ class CreateDocRequest(BaseModel): """ Title describing what this document contains """ - content: str | list[str] + content: Content | list[Content] """ - Contents of the document + Contents of the document. Each string is limited to 30k characters. """ embed_instruction: str | None = None """ @@ -159,37 +143,53 @@ class EmbedQueryResponse(BaseModel): """ -class HybridDocSearchRequest(BaseDocSearchRequest): +class HybridDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + limit: Annotated[int, Field(ge=1, le=50)] = 10 """ - The confidence cutoff level + The limit of documents to return """ - alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 + metadata_filter: dict[str, Any] = {} """ - The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response """ text: str """ - Text to use in the search. In `hybrid` search mode, either `text` or both `text` and `vector` fields are required. + Text to use in the search + """ + lang: str = "en-US" + """ + The language to be used for text search. Support for other languages coming soon. + """ + trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None + """ + Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. """ vector: list[float] """ Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. """ + confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5 """ MMR Strength (mmr_strength = 1 - mmr_lambda) """ - trigram_similarity_threshold: Annotated[float, Field(ge=0.0, le=1.0)] = 0.6 + alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5 """ - The trigram_similarity_threshold cutoff level + The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; """ - k_multiplier: Annotated[int, Field(ge=0)] = 7 + k_multiplier: Annotated[int, Field(ge=1, le=10)] = 5 """ - The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring + The k_multiplier to control how many intermediate results to fetch before final scoring """ @@ -230,32 +230,60 @@ class Snippet(BaseModel): embedding: list[float] | None = None -class TextOnlyDocSearchRequest(BaseDocSearchRequest): +class TextOnlyDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) + limit: Annotated[int, Field(ge=1, le=50)] = 10 + """ + The limit of documents to return + """ + metadata_filter: dict[str, Any] = {} + """ + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response + """ text: str """ - Text to use in the search. + Text to use in the search + """ + lang: str = "en-US" + """ + The language to be used for text search. Support for other languages coming soon. """ - trigram_similarity_threshold: Annotated[float, Field(ge=0.0, le=1.0)] = 0.6 + trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None """ - The trigram_similarity_threshold cutoff level + Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. """ -class VectorDocSearchRequest(BaseDocSearchRequest): +class VectorDocSearchRequest(BaseModel): model_config = ConfigDict( populate_by_name=True, ) - confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + limit: Annotated[int, Field(ge=1, le=50)] = 10 """ - The confidence cutoff level + The limit of documents to return + """ + metadata_filter: dict[str, Any] = {} + """ + Metadata filter to apply to the search + """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response """ vector: list[float] """ Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. """ + confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5 + """ + The confidence cutoff level + """ mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5 """ MMR Strength (mmr_strength = 1 - mmr_lambda) diff --git a/agents-api/agents_api/autogen/Entries.py b/src/integrations-service/integrations/autogen/Entries.py similarity index 94% rename from agents-api/agents_api/autogen/Entries.py rename to src/integrations-service/integrations/autogen/Entries.py index 164a37b28..6871cf3cf 100644 --- a/agents-api/agents_api/autogen/Entries.py +++ b/src/integrations-service/integrations/autogen/Entries.py @@ -48,7 +48,13 @@ class BaseEntry(BaseModel): ] ) source: Literal[ - "api_request", "api_response", "tool_response", "internal", "summarizer", "meta" + "api_request", + "api_response", + "tool_request", + "tool_response", + "internal", + "summarizer", + "meta", ] tokenizer: str token_count: int @@ -96,8 +102,7 @@ class Content(BaseModel): """ -class ContentItem(Content): - pass +ContentItem = Content class ContentItemModel(BaseModel): @@ -108,12 +113,10 @@ class ContentItemModel(BaseModel): source: Source -class ContentItemModel1(Content): - pass +ContentItemModel1 = Content -class ContentItemModel2(ContentItemModel): - pass +ContentItemModel2 = ContentItemModel class ContentModel(BaseModel): @@ -129,8 +132,7 @@ class ContentModel(BaseModel): content: list[ContentItem] | list[ContentItemModel] -class ContentModel1(Content): - pass +ContentModel1 = Content class ContentModel2(BaseModel): diff --git a/agents-api/agents_api/autogen/Executions.py b/src/integrations-service/integrations/autogen/Executions.py similarity index 100% rename from agents-api/agents_api/autogen/Executions.py rename to src/integrations-service/integrations/autogen/Executions.py diff --git a/integrations-service/integrations/autogen/Files.py b/src/integrations-service/integrations/autogen/Files.py similarity index 83% rename from integrations-service/integrations/autogen/Files.py rename to src/integrations-service/integrations/autogen/Files.py index b7640f8bc..5c1814699 100644 --- a/integrations-service/integrations/autogen/Files.py +++ b/src/integrations-service/integrations/autogen/Files.py @@ -39,6 +39,13 @@ class CreateFileRequest(BaseModel): """ Base64 encoded content of the file """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the file + """ class File(BaseModel): @@ -72,6 +79,13 @@ class File(BaseModel): """ Base64 encoded content of the file """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the file + """ size: Annotated[int, Field(ge=1, json_schema_extra={"readOnly": True})] """ Size of the file in bytes diff --git a/integrations-service/integrations/autogen/Jobs.py b/src/integrations-service/integrations/autogen/Jobs.py similarity index 100% rename from integrations-service/integrations/autogen/Jobs.py rename to src/integrations-service/integrations/autogen/Jobs.py diff --git a/src/integrations-service/integrations/autogen/Projects.py b/src/integrations-service/integrations/autogen/Projects.py new file mode 100644 index 000000000..2f6066a6a --- /dev/null +++ b/src/integrations-service/integrations/autogen/Projects.py @@ -0,0 +1,125 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateProjectRequest(BaseModel): + """ + Payload for creating a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class PatchProjectRequest(BaseModel): + """ + Payload for patching a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str | None, Field(max_length=255, min_length=1)] = None + """ + Display name of the project + """ + + +class Project(BaseModel): + """ + Project model + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + metadata: dict[str, Any] | None = None + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class UpdateProjectRequest(BaseModel): + """ + Payload for updating a project + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ + + +class CreateOrUpdateProjectRequest(CreateProjectRequest): + model_config = ConfigDict( + populate_by_name=True, + ) + id: UUID + metadata: dict[str, Any] | None = None + canonical_name: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Canonical name of the project (unique per developer) + """ + name: Annotated[str, Field(max_length=255, min_length=1)] + """ + Display name of the project + """ diff --git a/agents-api/agents_api/autogen/Responses.py b/src/integrations-service/integrations/autogen/Responses.py similarity index 100% rename from agents-api/agents_api/autogen/Responses.py rename to src/integrations-service/integrations/autogen/Responses.py diff --git a/src/integrations-service/integrations/autogen/Secrets.py b/src/integrations-service/integrations/autogen/Secrets.py new file mode 100644 index 000000000..24c31b203 --- /dev/null +++ b/src/integrations-service/integrations/autogen/Secrets.py @@ -0,0 +1,63 @@ +# generated by datamodel-codegen: +# filename: openapi-1.0.0.yaml + +from __future__ import annotations + +from typing import Annotated, Any +from uuid import UUID + +from pydantic import AwareDatetime, BaseModel, ConfigDict, Field + + +class CreateSecretRequest(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + metadata: dict[str, Any] | None = None + name: str + """ + Name of the secret + """ + description: str | None = None + """ + Description of what the secret is used for + """ + value: str + """ + The decrypted secret value + """ + + +class Secret(BaseModel): + """ + A secret that can be used in tasks and sessions + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + id: Annotated[UUID, Field(json_schema_extra={"readOnly": True})] + created_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was created as UTC date-time + """ + updated_at: Annotated[AwareDatetime, Field(json_schema_extra={"readOnly": True})] + """ + When this resource was updated as UTC date-time + """ + metadata: dict[str, Any] | None = None + name: str + """ + Name of the secret + """ + description: str | None = None + """ + Description of what the secret is used for + """ + value: str + """ + The decrypted secret value + """ + + +UpdateSecretRequest = CreateSecretRequest diff --git a/integrations-service/integrations/autogen/Sessions.py b/src/integrations-service/integrations/autogen/Sessions.py similarity index 98% rename from integrations-service/integrations/autogen/Sessions.py rename to src/integrations-service/integrations/autogen/Sessions.py index 1937624db..2a8f16174 100644 --- a/integrations-service/integrations/autogen/Sessions.py +++ b/src/integrations-service/integrations/autogen/Sessions.py @@ -33,10 +33,13 @@ class BaseDocSearch(BaseModel): """ The maximum query length to use for the search. """ + include_embeddings: StrictBool = True + """ + Whether to include embeddings in the response + """ -class BaseDocSearchUpdate(BaseDocSearch): - pass +BaseDocSearchUpdate = BaseDocSearch class CreateSessionRequest(BaseModel): diff --git a/agents-api/agents_api/autogen/Tasks.py b/src/integrations-service/integrations/autogen/Tasks.py similarity index 98% rename from agents-api/agents_api/autogen/Tasks.py rename to src/integrations-service/integrations/autogen/Tasks.py index 19f7da507..db1e2f84d 100644 --- a/agents-api/agents_api/autogen/Tasks.py +++ b/src/integrations-service/integrations/autogen/Tasks.py @@ -84,8 +84,7 @@ class Content(BaseModel): """ -class ContentItem(Content): - pass +ContentItem = Content class ContentItemModel(BaseModel): @@ -96,12 +95,10 @@ class ContentItemModel(BaseModel): source: Source -class ContentItemModel1(Content): - pass +ContentItemModel1 = Content -class ContentItemModel2(ContentItemModel): - pass +ContentItemModel2 = ContentItemModel class ContentModel(BaseModel): @@ -131,12 +128,10 @@ class ContentModel1(BaseModel): content: list[ContentItem] | list[ContentItemModel] -class ContentModel2(Content): - pass +ContentModel2 = Content -class ContentModel3(ContentModel): - pass +ContentModel3 = ContentModel class ContentModel4(BaseModel): @@ -855,10 +850,6 @@ class PromptItem(BaseModel): """ Name """ - continue_: Annotated[StrictBool | None, Field(alias="continue")] = None - """ - Whether to continue this message or return a new one - """ tool_calls: ( list[ ChosenFunctionCall @@ -907,10 +898,10 @@ class PromptStep(BaseModel): """ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` """ - auto_run_tools: StrictBool = True + auto_run_tools: StrictBool = False """ Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. @@ -955,10 +946,10 @@ class PromptStepUpdateItem(BaseModel): """ Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` """ - auto_run_tools: StrictBool = True + auto_run_tools: StrictBool = False """ Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. diff --git a/agents-api/agents_api/autogen/Tools.py b/src/integrations-service/integrations/autogen/Tools.py similarity index 77% rename from agents-api/agents_api/autogen/Tools.py rename to src/integrations-service/integrations/autogen/Tools.py index 3afe3e097..7a55e8270 100644 --- a/agents-api/agents_api/autogen/Tools.py +++ b/src/integrations-service/integrations/autogen/Tools.py @@ -130,6 +130,10 @@ class ApiCallDef(BaseModel): """ The headers to send with the request """ + secrets: dict[str, SecretRef] | None = None + """ + Secret references to use in templates (available only at setup time, not during execution) + """ content: str | None = None """ The content as base64 to send with the request @@ -154,6 +158,10 @@ class ApiCallDef(BaseModel): """ The parameters to send with the request """ + params_schema: ParameterSchema | None = None + """ + The schema of the parameters + """ follow_redirects: StrictBool | None = None """ Follow redirects @@ -205,6 +213,10 @@ class ApiCallDefUpdate(BaseModel): """ The headers to send with the request """ + secrets: dict[str, SecretRefUpdate] | None = None + """ + Secret references to use in templates (available only at setup time, not during execution) + """ content: str | None = None """ The content as base64 to send with the request @@ -229,6 +241,10 @@ class ApiCallDefUpdate(BaseModel): """ The parameters to send with the request """ + params_schema: ParameterSchemaUpdate | None = None + """ + The schema of the parameters + """ follow_redirects: StrictBool | None = None """ Follow redirects @@ -368,6 +384,8 @@ class BaseIntegrationDef(BaseModel): "arxiv", "unstructured", "algolia", + "mcp", + "google_sheets", ] """ The provider of the integration @@ -411,6 +429,8 @@ class BaseIntegrationDefUpdate(BaseModel): "arxiv", "unstructured", "algolia", + "mcp", + "google_sheets", ] | None ) = None @@ -439,8 +459,7 @@ class Bash20241022Def(BaseModel): name: str = "bash" -class Bash20241022DefUpdate(Bash20241022Def): - pass +Bash20241022DefUpdate = Bash20241022Def class BraveIntegrationDef(BaseIntegrationDef): @@ -659,12 +678,10 @@ class BrowserbaseGetSessionArgumentsUpdate(BaseModel): id: str | None = None -class BrowserbaseGetSessionLiveUrlsArguments(BrowserbaseGetSessionArguments): - pass +BrowserbaseGetSessionLiveUrlsArguments = BrowserbaseGetSessionArguments -class BrowserbaseGetSessionLiveUrlsArgumentsUpdate(BrowserbaseGetSessionArgumentsUpdate): - pass +BrowserbaseGetSessionLiveUrlsArgumentsUpdate = BrowserbaseGetSessionArgumentsUpdate class BrowserbaseListSessionsArguments(BaseModel): @@ -988,10 +1005,7 @@ class Computer20241022Def(BaseModel): """ -class Computer20241022DefUpdate(Computer20241022Def): - """ - Anthropic new tools - """ +Computer20241022DefUpdate = Computer20241022Def class CreateToolRequest(BaseModel): @@ -1049,6 +1063,8 @@ class CreateToolRequest(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -1284,83 +1300,595 @@ class FfmpegIntegrationDefUpdate(BaseIntegrationDefUpdate): """ setup: Any | None = None """ - The setup parameters for Ffmpeg + The setup parameters for Ffmpeg + """ + arguments: FfmpegSearchArgumentsUpdate | None = None + """ + The arguments for Ffmpeg Search + """ + + +class FfmpegSearchArguments(BaseModel): + """ + Arguments for Ffmpeg CMD + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + cmd: str + """ + The bash command string + """ + file: str | list[str] | None = None + """ + The base64 string of the file + """ + + +class FfmpegSearchArgumentsUpdate(BaseModel): + """ + Arguments for Ffmpeg CMD + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + cmd: str | None = None + """ + The bash command string + """ + file: str | list[str] | None = None + """ + The base64 string of the file + """ + + +class FunctionCallOption(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the function + """ + arguments: str | None = None + """ + The parameters to pass to the function + """ + + +class FunctionDef(BaseModel): + """ + Function definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + name: Any | None = None + """ + DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + """ + description: Any | None = None + """ + DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + """ + parameters: dict[str, Any] | None = None + """ + The parameters the function accepts + """ + + +class GoogleSheetsAppendArguments(BaseModel): + """ + Arguments for appending values to a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to append to + """ + range: str + """ + The A1 notation of the range to start appending from + """ + values: list[list] + """ + The values to append (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "INSERT_ROWS" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsAppendArgumentsUpdate(BaseModel): + """ + Arguments for appending values to a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to append to + """ + range: str | None = None + """ + The A1 notation of the range to start appending from + """ + values: list[list] | None = None + """ + The values to append (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "INSERT_ROWS" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsBatchReadArguments(BaseModel): + """ + Arguments for batch reading values from multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to read from + """ + ranges: list[str] + """ + The A1 notation of the ranges to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = "FORMATTED_STRING" + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsBatchReadArgumentsUpdate(BaseModel): + """ + Arguments for batch reading values from multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to read from + """ + ranges: list[str] | None = None + """ + The A1 notation of the ranges to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = "FORMATTED_STRING" + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsBatchWriteArguments(BaseModel): + """ + Arguments for batch updating values in multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to write to + """ + data: list[GoogleSheetsValueRange] + """ + The data to write to each range + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsBatchWriteArgumentsUpdate(BaseModel): + """ + Arguments for batch updating values in multiple ranges + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to write to + """ + data: list[GoogleSheetsValueRange] | None = None + """ + The data to write to each range + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response + """ + + +class GoogleSheetsClearArguments(BaseModel): + """ + Arguments for clearing values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to clear values from + """ + range: str + """ + The A1 notation of the range to clear + """ + + +class GoogleSheetsClearArgumentsUpdate(BaseModel): + """ + Arguments for clearing values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to clear values from + """ + range: str | None = None + """ + The A1 notation of the range to clear + """ + + +class GoogleSheetsIntegrationDef(BaseIntegrationDef): + """ + Google Sheets integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["google_sheets"] = "google_sheets" + """ + The provider must be "google_sheets" + """ + method: ( + Literal[ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write", + ] + | None + ) = None + """ + The specific method of the integration to call + """ + setup: GoogleSheetsSetup | None = None + """ + The setup parameters for Google Sheets + """ + arguments: ( + GoogleSheetsReadArguments + | GoogleSheetsWriteArguments + | GoogleSheetsAppendArguments + | GoogleSheetsClearArguments + | GoogleSheetsBatchReadArguments + | GoogleSheetsBatchWriteArguments + | None + ) = None + """ + The arguments for the method + """ + + +class GoogleSheetsIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + Google Sheets integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["google_sheets"] = "google_sheets" + """ + The provider must be "google_sheets" + """ + method: ( + Literal[ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write", + ] + | None + ) = None + """ + The specific method of the integration to call + """ + setup: GoogleSheetsSetupUpdate | None = None + """ + The setup parameters for Google Sheets + """ + arguments: ( + GoogleSheetsReadArgumentsUpdate + | GoogleSheetsWriteArgumentsUpdate + | GoogleSheetsAppendArgumentsUpdate + | GoogleSheetsClearArgumentsUpdate + | GoogleSheetsBatchReadArgumentsUpdate + | GoogleSheetsBatchWriteArgumentsUpdate + | None + ) = None + """ + The arguments for the method + """ + + +class GoogleSheetsReadArguments(BaseModel): + """ + Arguments for reading values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str + """ + The ID of the spreadsheet to read from + """ + range: str + """ + The A1 notation of the range to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = "FORMATTED_STRING" + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsReadArgumentsUpdate(BaseModel): + """ + Arguments for reading values from a spreadsheet + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + spreadsheet_id: str | None = None + """ + The ID of the spreadsheet to read from + """ + range: str | None = None + """ + The A1 notation of the range to read + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension that results should use + """ + value_render_option: Literal["FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA"] = ( + "FORMATTED_VALUE" + ) + """ + How values should be represented in the output + """ + date_time_render_option: Literal["SERIAL_NUMBER", "FORMATTED_STRING"] = "FORMATTED_STRING" + """ + How dates, times, and durations should be represented + """ + + +class GoogleSheetsSetup(BaseModel): + """ + Setup parameters for Google Sheets integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + use_julep_service: StrictBool + """ + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. + """ + service_account_json: str | None = None + """ + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. """ - arguments: FfmpegSearchArgumentsUpdate | None = None + default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3 """ - The arguments for Ffmpeg Search + Default number of retry attempts for API calls """ -class FfmpegSearchArguments(BaseModel): +class GoogleSheetsSetupUpdate(BaseModel): """ - Arguments for Ffmpeg CMD + Setup parameters for Google Sheets integration """ model_config = ConfigDict( populate_by_name=True, ) - cmd: str + use_julep_service: StrictBool | None = None """ - The bash command string + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. """ - file: str | list[str] | None = None + service_account_json: str | None = None """ - The base64 string of the file + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. + """ + default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3 + """ + Default number of retry attempts for API calls """ -class FfmpegSearchArgumentsUpdate(BaseModel): +class GoogleSheetsValueRange(BaseModel): """ - Arguments for Ffmpeg CMD + Represents a range of values to write """ model_config = ConfigDict( populate_by_name=True, ) - cmd: str | None = None + range: str """ - The bash command string + The A1 notation of the range """ - file: str | list[str] | None = None + values: list[list] """ - The base64 string of the file + The values for the range (2D array) + """ + major_dimension: Literal["ROWS", "COLUMNS"] = "ROWS" + """ + The major dimension of the values """ -class FunctionCallOption(BaseModel): +class GoogleSheetsWriteArguments(BaseModel): + """ + Arguments for writing values to a spreadsheet + """ + model_config = ConfigDict( populate_by_name=True, ) - name: str + spreadsheet_id: str """ - The name of the function + The ID of the spreadsheet to write to """ - arguments: str | None = None + range: str """ - The parameters to pass to the function + The A1 notation of the range to write to + """ + values: list[list] + """ + The values to write (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "OVERWRITE" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response """ -class FunctionDef(BaseModel): +class GoogleSheetsWriteArgumentsUpdate(BaseModel): """ - Function definition + Arguments for writing values to a spreadsheet """ model_config = ConfigDict( populate_by_name=True, ) - name: Any | None = None + spreadsheet_id: str | None = None """ - DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. + The ID of the spreadsheet to write to """ - description: Any | None = None + range: str | None = None """ - DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. + The A1 notation of the range to write to """ - parameters: dict[str, Any] | None = None + values: list[list] | None = None """ - The parameters the function accepts + The values to write (2D array) + """ + value_input_option: Literal["RAW", "USER_ENTERED"] = "USER_ENTERED" + """ + How the input data should be interpreted + """ + insert_data_option: Literal["OVERWRITE", "INSERT_ROWS"] = "OVERWRITE" + """ + How the input data should be inserted + """ + include_values_in_response: StrictBool = False + """ + Whether to include the values in the response """ @@ -1652,6 +2180,192 @@ class MailgunSetupUpdate(BaseModel): """ +class McpCallToolArguments(BaseModel): + """ + Arguments to call a named tool on the MCP server + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + tool_name: str + """ + The MCP tool name to invoke + """ + arguments: dict[str, Any] = {} + """ + JSON-serializable arguments to pass to the MCP tool + """ + timeout_seconds: int = 60 + """ + Optional per-call timeout in seconds + """ + + +class McpCallToolArgumentsUpdate(BaseModel): + """ + Arguments to call a named tool on the MCP server + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + tool_name: str | None = None + """ + The MCP tool name to invoke + """ + arguments: dict[str, Any] = {} + """ + JSON-serializable arguments to pass to the MCP tool + """ + timeout_seconds: int = 60 + """ + Optional per-call timeout in seconds + """ + + +class McpIntegrationDef(BaseIntegrationDef): + """ + MCP integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["mcp"] = "mcp" + """ + The provider must be "mcp" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: McpSetup | None = None + """ + The setup parameters for MCP + """ + arguments: McpCallToolArguments | McpListToolsArguments | None = None + """ + The arguments for MCP methods + """ + + +class McpIntegrationDefUpdate(BaseIntegrationDefUpdate): + """ + MCP integration definition + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + provider: Literal["mcp"] = "mcp" + """ + The provider must be "mcp" + """ + method: str | None = None + """ + The specific method of the integration to call + """ + setup: McpSetupUpdate | None = None + """ + The setup parameters for MCP + """ + arguments: McpCallToolArgumentsUpdate | McpListToolsArgumentsUpdate | None = None + """ + The arguments for MCP methods + """ + + +class McpListToolsArguments(BaseModel): + """ + Arguments to list available tools + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + dummy: str = "dummy" + + +McpListToolsArgumentsUpdate = McpListToolsArguments + + +class McpSetup(BaseModel): + """ + Setup parameters for MCP integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + transport: Literal["sse", "http"] + """ + Transport used to connect to the MCP server + """ + command: str | None = None + """ + (stdio) Executable or command to launch the server + """ + args: list[str] = [] + """ + (stdio) Arguments for the server command + """ + cwd: str | None = None + """ + (stdio) Working directory for the server process + """ + env: dict[str, str] = {} + """ + (stdio) Environment variables for the server process + """ + http_url: AnyUrl | None = None + """ + (http) Base URL for the MCP server (usually ends with /mcp) + """ + http_headers: dict[str, str] = {} + """ + (http) Optional HTTP headers to include (e.g., Authorization) + """ + + +class McpSetupUpdate(BaseModel): + """ + Setup parameters for MCP integration + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + transport: Literal["sse", "http"] | None = None + """ + Transport used to connect to the MCP server + """ + command: str | None = None + """ + (stdio) Executable or command to launch the server + """ + args: list[str] = [] + """ + (stdio) Arguments for the server command + """ + cwd: str | None = None + """ + (stdio) Working directory for the server process + """ + env: dict[str, str] = {} + """ + (stdio) Environment variables for the server process + """ + http_url: AnyUrl | None = None + """ + (http) Base URL for the MCP server (usually ends with /mcp) + """ + http_headers: dict[str, str] = {} + """ + (http) Optional HTTP headers to include (e.g., Authorization) + """ + + class NamedToolChoice(BaseModel): model_config = ConfigDict( populate_by_name=True, @@ -1659,6 +2373,62 @@ class NamedToolChoice(BaseModel): function: FunctionCallOption | None = None +class ParameterSchema(BaseModel): + """ + JSON Schema for API call parameters + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str = "object" + """ + Schema type (usually 'object') + """ + properties: dict[str, PropertyDefinition] + """ + Properties definition for parameters + """ + required: list[str] = [] + """ + List of required property names + """ + additional_properties: Annotated[StrictBool | None, Field(alias="additionalProperties")] = ( + None + ) + """ + Whether to allow additional properties + """ + + +class ParameterSchemaUpdate(BaseModel): + """ + JSON Schema for API call parameters + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str = "object" + """ + Schema type (usually 'object') + """ + properties: dict[str, PropertyDefinitionUpdate] | None = None + """ + Properties definition for parameters + """ + required: list[str] = [] + """ + List of required property names + """ + additional_properties: Annotated[StrictBool | None, Field(alias="additionalProperties")] = ( + None + ) + """ + Whether to allow additional properties + """ + + class PatchToolRequest(BaseModel): """ Payload for patching a tool @@ -1717,6 +2487,8 @@ class PatchToolRequest(BaseModel): | ArxivIntegrationDefUpdate | UnstructuredIntegrationDefUpdate | AlgoliaIntegrationDefUpdate + | McpIntegrationDefUpdate + | GoogleSheetsIntegrationDefUpdate | None ) = None """ @@ -1738,6 +2510,58 @@ class PatchToolRequest(BaseModel): bash_20241022: Bash20241022DefUpdate | None = None +class PropertyDefinition(BaseModel): + """ + Property definition for parameter schema + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str + """ + Type of the property + """ + description: str | None = None + """ + Description of the property + """ + enum: list[str] | None = None + """ + Enum values if applicable + """ + items: PropertyDefinition | None = None + """ + Items definition for array types + """ + + +class PropertyDefinitionUpdate(BaseModel): + """ + Property definition for parameter schema + """ + + model_config = ConfigDict( + populate_by_name=True, + ) + type: str | None = None + """ + Type of the property + """ + description: str | None = None + """ + Description of the property + """ + enum: list[str] | None = None + """ + Enum values if applicable + """ + items: PropertyDefinitionUpdate | None = None + """ + Items definition for array types + """ + + class RemoteBrowserArguments(BaseModel): """ The arguments for the remote browser @@ -1869,6 +2693,26 @@ class RemoteBrowserSetup(BaseModel): """ +class SecretRef(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str + """ + The name of the secret to reference + """ + + +class SecretRefUpdate(BaseModel): + model_config = ConfigDict( + populate_by_name=True, + ) + name: str | None = None + """ + The name of the secret to reference + """ + + class SpiderFetchArguments(BaseModel): """ Arguments for Spider integration @@ -2096,8 +2940,7 @@ class TextEditor20241022Def(BaseModel): name: str = "str_replace_editor" -class TextEditor20241022DefUpdate(TextEditor20241022Def): - pass +TextEditor20241022DefUpdate = TextEditor20241022Def class Tool(BaseModel): @@ -2151,6 +2994,8 @@ class Tool(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -2411,6 +3256,8 @@ class UpdateToolRequest(BaseModel): | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef | None ) = None """ @@ -3072,3 +3919,7 @@ class CloudinaryUploadIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate): ) method: Literal["media_upload"] = "media_upload" arguments: CloudinaryUploadArgumentsUpdate | None = None + + +PropertyDefinition.model_rebuild() +PropertyDefinitionUpdate.model_rebuild() diff --git a/agents-api/agents_api/autogen/Users.py b/src/integrations-service/integrations/autogen/Users.py similarity index 79% rename from agents-api/agents_api/autogen/Users.py rename to src/integrations-service/integrations/autogen/Users.py index 720e21846..68ffa4175 100644 --- a/agents-api/agents_api/autogen/Users.py +++ b/src/integrations-service/integrations/autogen/Users.py @@ -32,6 +32,13 @@ class CreateUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class PatchUserRequest(BaseModel): @@ -57,6 +64,13 @@ class PatchUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class UpdateUserRequest(BaseModel): @@ -82,6 +96,13 @@ class UpdateUserRequest(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class User(BaseModel): @@ -112,6 +133,13 @@ class User(BaseModel): """ About the user """ + project: Annotated[ + str | None, + Field(max_length=255, min_length=1, pattern="^[a-zA-Z][a-zA-Z0-9_]*$"), + ] = None + """ + Project canonical name of the user + """ class CreateOrUpdateUserRequest(CreateUserRequest): diff --git a/integrations-service/integrations/autogen/__init__.py b/src/integrations-service/integrations/autogen/__init__.py similarity index 100% rename from integrations-service/integrations/autogen/__init__.py rename to src/integrations-service/integrations/autogen/__init__.py diff --git a/integrations-service/integrations/env.py b/src/integrations-service/integrations/env.py similarity index 92% rename from integrations-service/integrations/env.py rename to src/integrations-service/integrations/env.py index b3b077364..18ebc5768 100644 --- a/integrations-service/integrations/env.py +++ b/src/integrations-service/integrations/env.py @@ -22,6 +22,9 @@ unstructured_api_key = env.str("UNSTRUCTURED_API_KEY", default=None) algolia_api_key = env.str("ALGOLIA_API_KEY", default=None) algolia_application_id = env.str("ALGOLIA_APPLICATION_ID", default=None) +julep_google_sheets_service_account_json = env.str( + "JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON", default=None +) # Gunicorn gunicorn_cpu_divisor: int = env.int("GUNICORN_CPU_DIVISOR", default=4) diff --git a/integrations-service/integrations/models/__init__.py b/src/integrations-service/integrations/models/__init__.py similarity index 72% rename from integrations-service/integrations/models/__init__.py rename to src/integrations-service/integrations/models/__init__.py index 0f2b51808..bb0610d3f 100644 --- a/integrations-service/integrations/models/__init__.py +++ b/src/integrations-service/integrations/models/__init__.py @@ -49,8 +49,35 @@ ) from .email import EmailOutput as EmailOutput from .ffmpeg import FfmpegSearchOutput as FfmpegSearchOutput +from .google_sheets import ( + GoogleSheetsBatchReadOutput as GoogleSheetsBatchReadOutput, +) +from .google_sheets import ( + GoogleSheetsBatchWriteOutput as GoogleSheetsBatchWriteOutput, +) +from .google_sheets import ( + GoogleSheetsClearOutput as GoogleSheetsClearOutput, +) +from .google_sheets import ( + GoogleSheetsReadOutput as GoogleSheetsReadOutput, +) +from .google_sheets import ( + GoogleSheetsUpdateResponse as GoogleSheetsUpdateResponse, +) +from .google_sheets import ( + GoogleSheetsValueRangeOutput as GoogleSheetsValueRangeOutput, +) +from .google_sheets import ( + GoogleSheetsWriteOutput as GoogleSheetsWriteOutput, +) from .llama_parse import LlamaParseFetchOutput as LlamaParseFetchOutput from .mailgun import MailgunSendEmailOutput as MailgunSendEmailOutput +from .mcp import ( + McpListToolsOutput as McpListToolsOutput, +) +from .mcp import ( + McpToolCallOutput as McpToolCallOutput, +) from .remote_browser import RemoteBrowserOutput as RemoteBrowserOutput from .spider import ( SpiderOutput as SpiderOutput, diff --git a/integrations-service/integrations/models/algolia.py b/src/integrations-service/integrations/models/algolia.py similarity index 100% rename from integrations-service/integrations/models/algolia.py rename to src/integrations-service/integrations/models/algolia.py diff --git a/integrations-service/integrations/models/arxiv.py b/src/integrations-service/integrations/models/arxiv.py similarity index 100% rename from integrations-service/integrations/models/arxiv.py rename to src/integrations-service/integrations/models/arxiv.py diff --git a/integrations-service/integrations/models/base_models.py b/src/integrations-service/integrations/models/base_models.py similarity index 100% rename from integrations-service/integrations/models/base_models.py rename to src/integrations-service/integrations/models/base_models.py diff --git a/integrations-service/integrations/models/brave.py b/src/integrations-service/integrations/models/brave.py similarity index 100% rename from integrations-service/integrations/models/brave.py rename to src/integrations-service/integrations/models/brave.py diff --git a/integrations-service/integrations/models/browserbase.py b/src/integrations-service/integrations/models/browserbase.py similarity index 100% rename from integrations-service/integrations/models/browserbase.py rename to src/integrations-service/integrations/models/browserbase.py diff --git a/integrations-service/integrations/models/cloudinary.py b/src/integrations-service/integrations/models/cloudinary.py similarity index 100% rename from integrations-service/integrations/models/cloudinary.py rename to src/integrations-service/integrations/models/cloudinary.py diff --git a/integrations-service/integrations/models/email.py b/src/integrations-service/integrations/models/email.py similarity index 100% rename from integrations-service/integrations/models/email.py rename to src/integrations-service/integrations/models/email.py diff --git a/integrations-service/integrations/models/execution.py b/src/integrations-service/integrations/models/execution.py similarity index 76% rename from integrations-service/integrations/models/execution.py rename to src/integrations-service/integrations/models/execution.py index 246d00944..26e32f87e 100644 --- a/integrations-service/integrations/models/execution.py +++ b/src/integrations-service/integrations/models/execution.py @@ -22,14 +22,25 @@ EmailArguments, EmailSetup, FfmpegSearchArguments, + GoogleSheetsAppendArguments, + GoogleSheetsBatchReadArguments, + GoogleSheetsBatchWriteArguments, + GoogleSheetsClearArguments, + GoogleSheetsReadArguments, + GoogleSheetsSetup, + GoogleSheetsWriteArguments, LlamaParseFetchArguments, LlamaParseSetup, MailgunSendEmailArguments, MailgunSetup, + McpCallToolArguments, + McpListToolsArguments, + McpSetup, RemoteBrowserArguments, RemoteBrowserSetup, SpiderFetchArguments, SpiderSetup, + UnstructuredPartitionArguments, UnstructuredSetup, WeatherGetArguments, WeatherSetup, @@ -50,8 +61,17 @@ from .cloudinary import CloudinaryEditOutput, CloudinaryUploadOutput from .email import EmailOutput from .ffmpeg import FfmpegSearchOutput +from .google_sheets import ( + GoogleSheetsBatchReadOutput, + GoogleSheetsBatchWriteOutput, + GoogleSheetsClearOutput, + GoogleSheetsReadOutput, + GoogleSheetsValueRangeOutput, + GoogleSheetsWriteOutput, +) from .llama_parse import LlamaParseFetchOutput from .mailgun import MailgunSendEmailOutput +from .mcp import McpListToolsOutput, McpToolCallOutput from .remote_browser import RemoteBrowserOutput from .spider import SpiderOutput from .unstructured import UnstructuredParseOutput @@ -79,6 +99,8 @@ class ExecutionError(BaseModel): | SpiderSetup | UnstructuredSetup | WeatherSetup + | McpSetup + | GoogleSheetsSetup ) # Argument configurations @@ -101,8 +123,17 @@ class ExecutionError(BaseModel): | MailgunSendEmailArguments | RemoteBrowserArguments | SpiderFetchArguments + | UnstructuredPartitionArguments | WeatherGetArguments | WikipediaSearchArguments + | McpCallToolArguments + | McpListToolsArguments + | GoogleSheetsReadArguments + | GoogleSheetsWriteArguments + | GoogleSheetsAppendArguments + | GoogleSheetsClearArguments + | GoogleSheetsBatchReadArguments + | GoogleSheetsBatchWriteArguments ) ExecutionResponse = ( @@ -128,6 +159,14 @@ class ExecutionError(BaseModel): | SpiderOutput | UnstructuredParseOutput | AlgoliaSearchOutput + | McpToolCallOutput + | McpListToolsOutput + | GoogleSheetsReadOutput + | GoogleSheetsWriteOutput + | GoogleSheetsClearOutput + | GoogleSheetsBatchReadOutput + | GoogleSheetsBatchWriteOutput + | GoogleSheetsValueRangeOutput ) diff --git a/integrations-service/integrations/models/ffmpeg.py b/src/integrations-service/integrations/models/ffmpeg.py similarity index 100% rename from integrations-service/integrations/models/ffmpeg.py rename to src/integrations-service/integrations/models/ffmpeg.py diff --git a/src/integrations-service/integrations/models/google_sheets.py b/src/integrations-service/integrations/models/google_sheets.py new file mode 100644 index 000000000..c4e37d962 --- /dev/null +++ b/src/integrations-service/integrations/models/google_sheets.py @@ -0,0 +1,98 @@ +from typing import Any + +from pydantic import ConfigDict, Field + +from .base_models import BaseOutput + + +class GoogleSheetsReadOutput(BaseOutput): + """Output model for reading values from Google Sheets""" + + model_config = ConfigDict(extra="allow") + + range: str = Field(description="The range that was read") + major_dimension: str = Field(description="The major dimension of the values") + values: list[list[Any]] = Field(description="The values read from the spreadsheet") + + +class GoogleSheetsWriteOutput(BaseOutput): + """Output model for writing/appending values to Google Sheets""" + + model_config = ConfigDict(extra="allow") + + spreadsheet_id: str = Field(description="The spreadsheet ID that was updated") + updated_range: str | None = Field(default=None, description="The range that was updated") + updated_rows: int | None = Field(default=None, description="The number of rows updated") + updated_columns: int | None = Field( + default=None, description="The number of columns updated" + ) + updated_cells: int | None = Field(default=None, description="The number of cells updated") + updated_values: list[list[Any]] | None = Field( + default=None, description="The values that were written (if requested)" + ) + + +class GoogleSheetsClearOutput(BaseOutput): + """Output model for clearing values from Google Sheets""" + + model_config = ConfigDict(extra="allow") + + spreadsheet_id: str = Field(description="The spreadsheet ID that was cleared") + cleared_range: str = Field(description="The range that was cleared") + + +class GoogleSheetsValueRangeOutput(BaseOutput): + """Represents a range of values that was read""" + + model_config = ConfigDict(extra="allow") + + range: str = Field(description="The range that was read") + major_dimension: str = Field(description="The major dimension of the values") + values: list[list[Any]] = Field(description="The values read from the range") + + +class GoogleSheetsBatchReadOutput(BaseOutput): + """Output model for batch reading from Google Sheets""" + + model_config = ConfigDict(extra="allow") + + spreadsheet_id: str = Field(description="The spreadsheet ID that was read") + value_ranges: list[GoogleSheetsValueRangeOutput] = Field( + description="The value ranges that were read" + ) + + +class GoogleSheetsUpdateResponse(BaseOutput): + """Details about a single range update in batch operations""" + + model_config = ConfigDict(extra="allow") + + updated_range: str | None = Field(default=None, description="The range that was updated") + updated_rows: int | None = Field(default=None, description="The number of rows updated") + updated_columns: int | None = Field( + default=None, description="The number of columns updated" + ) + updated_cells: int | None = Field(default=None, description="The number of cells updated") + + +class GoogleSheetsBatchWriteOutput(BaseOutput): + """Output model for batch writing to Google Sheets""" + + model_config = ConfigDict(extra="allow") + + spreadsheet_id: str = Field(description="The spreadsheet ID that was updated") + total_updated_sheets: int | None = Field( + default=None, description="Total number of sheets updated" + ) + total_updated_rows: int | None = Field( + default=None, description="Total number of rows updated" + ) + total_updated_columns: int | None = Field( + default=None, description="Total number of columns updated" + ) + total_updated_cells: int | None = Field( + default=None, description="Total number of cells updated" + ) + responses: list[GoogleSheetsUpdateResponse] | None = Field( + default=None, description="Details about each range that was updated" + ) diff --git a/integrations-service/integrations/models/llama_parse.py b/src/integrations-service/integrations/models/llama_parse.py similarity index 100% rename from integrations-service/integrations/models/llama_parse.py rename to src/integrations-service/integrations/models/llama_parse.py diff --git a/integrations-service/integrations/models/mailgun.py b/src/integrations-service/integrations/models/mailgun.py similarity index 100% rename from integrations-service/integrations/models/mailgun.py rename to src/integrations-service/integrations/models/mailgun.py diff --git a/src/integrations-service/integrations/models/mcp.py b/src/integrations-service/integrations/models/mcp.py new file mode 100644 index 000000000..beb148c21 --- /dev/null +++ b/src/integrations-service/integrations/models/mcp.py @@ -0,0 +1,34 @@ +from typing import Any + +from pydantic import Field + +from .base_models import BaseOutput + + +class McpToolCallOutput(BaseOutput): + text: str | None = Field( + default=None, + description="Concatenated textual content, if any was returned.", + ) + structured: dict[str, Any] | list[Any] | None = Field( + default=None, + description="Structured content returned by the server, if present.", + ) + content: list[dict[str, Any]] = Field( + default_factory=list, + description="Raw content items as returned by MCP (best-effort JSON form).", + ) + is_error: bool = Field( + default=False, + description="Whether the server indicated an error for this call.", + ) + + +class McpToolInfo(BaseOutput): + name: str + description: str | None = None + input_schema: dict[str, Any] | None = None + + +class McpListToolsOutput(BaseOutput): + tools: list[McpToolInfo] diff --git a/integrations-service/integrations/models/remote_browser.py b/src/integrations-service/integrations/models/remote_browser.py similarity index 100% rename from integrations-service/integrations/models/remote_browser.py rename to src/integrations-service/integrations/models/remote_browser.py diff --git a/integrations-service/integrations/models/spider.py b/src/integrations-service/integrations/models/spider.py similarity index 100% rename from integrations-service/integrations/models/spider.py rename to src/integrations-service/integrations/models/spider.py diff --git a/integrations-service/integrations/models/unstructured.py b/src/integrations-service/integrations/models/unstructured.py similarity index 100% rename from integrations-service/integrations/models/unstructured.py rename to src/integrations-service/integrations/models/unstructured.py diff --git a/integrations-service/integrations/models/weather.py b/src/integrations-service/integrations/models/weather.py similarity index 100% rename from integrations-service/integrations/models/weather.py rename to src/integrations-service/integrations/models/weather.py diff --git a/integrations-service/integrations/models/wikipedia.py b/src/integrations-service/integrations/models/wikipedia.py similarity index 100% rename from integrations-service/integrations/models/wikipedia.py rename to src/integrations-service/integrations/models/wikipedia.py diff --git a/integrations-service/integrations/providers.py b/src/integrations-service/integrations/providers.py similarity index 77% rename from integrations-service/integrations/providers.py rename to src/integrations-service/integrations/providers.py index 487eb4932..652b4a81d 100644 --- a/integrations-service/integrations/providers.py +++ b/src/integrations-service/integrations/providers.py @@ -17,10 +17,20 @@ EmailArguments, EmailSetup, FfmpegSearchArguments, + GoogleSheetsAppendArguments, + GoogleSheetsBatchReadArguments, + GoogleSheetsBatchWriteArguments, + GoogleSheetsClearArguments, + GoogleSheetsReadArguments, + GoogleSheetsSetup, + GoogleSheetsWriteArguments, LlamaParseFetchArguments, LlamaParseSetup, MailgunSendEmailArguments, MailgunSetup, + McpCallToolArguments, + McpListToolsArguments, + McpSetup, RemoteBrowserArguments, RemoteBrowserSetup, SpiderFetchArguments, @@ -47,8 +57,15 @@ CloudinaryUploadOutput, EmailOutput, FfmpegSearchOutput, + GoogleSheetsBatchReadOutput, + GoogleSheetsBatchWriteOutput, + GoogleSheetsClearOutput, + GoogleSheetsReadOutput, + GoogleSheetsWriteOutput, LlamaParseFetchOutput, MailgunSendEmailOutput, + McpListToolsOutput, + McpToolCallOutput, ProviderInfo, RemoteBrowserOutput, SpiderOutput, @@ -374,6 +391,81 @@ ), ) +# MCP provider: dynamic protocol-backed tool execution +mcp = BaseProvider( + provider="mcp", + setup=McpSetup, + methods=[ + BaseProviderMethod( + method="list_tools", + description="List tools exposed by an MCP server", + arguments=McpListToolsArguments, + output=McpListToolsOutput, + ), + BaseProviderMethod( + method="call_tool", + description="Call a named tool on an MCP server", + arguments=McpCallToolArguments, + output=McpToolCallOutput, + ), + ], + info=ProviderInfo( + friendly_name="Model Context Protocol", + url="https://modelcontextprotocol.io/", + docs="https://spec.modelcontextprotocol.io/", + icon="https://modelcontextprotocol.io/favicon.ico", + ), +) + +google_sheets = BaseProvider( + provider="google_sheets", + setup=GoogleSheetsSetup, + methods=[ + BaseProviderMethod( + method="read_values", + description="Read values from a specific range in a Google Sheets spreadsheet", + arguments=GoogleSheetsReadArguments, + output=GoogleSheetsReadOutput, + ), + BaseProviderMethod( + method="write_values", + description="Write or update values in a specific range in a Google Sheets spreadsheet", + arguments=GoogleSheetsWriteArguments, + output=GoogleSheetsWriteOutput, + ), + BaseProviderMethod( + method="append_values", + description="Append new rows of data to a Google Sheets spreadsheet", + arguments=GoogleSheetsAppendArguments, + output=GoogleSheetsWriteOutput, + ), + BaseProviderMethod( + method="clear_values", + description="Clear values from a specific range in a Google Sheets spreadsheet", + arguments=GoogleSheetsClearArguments, + output=GoogleSheetsClearOutput, + ), + BaseProviderMethod( + method="batch_read", + description="Read values from multiple ranges in a Google Sheets spreadsheet", + arguments=GoogleSheetsBatchReadArguments, + output=GoogleSheetsBatchReadOutput, + ), + BaseProviderMethod( + method="batch_write", + description="Write values to multiple ranges in a Google Sheets spreadsheet", + arguments=GoogleSheetsBatchWriteArguments, + output=GoogleSheetsBatchWriteOutput, + ), + ], + info=ProviderInfo( + url="https://sheets.google.com/", + docs="https://developers.google.com/sheets/api", + icon="https://www.gstatic.com/images/branding/product/1x/sheets_2020q4_48dp.png", + friendly_name="Google Sheets", + ), +) + available_providers: dict[str, BaseProvider] = { "wikipedia": wikipedia, "weather": weather, @@ -389,4 +481,6 @@ "unstructured": unstructured, "algolia": algolia, "mailgun": mailgun, + "mcp": mcp, + "google_sheets": google_sheets, } diff --git a/integrations-service/integrations/utils/integrations/__init__.py b/src/integrations-service/integrations/routers/__init__.py similarity index 100% rename from integrations-service/integrations/utils/integrations/__init__.py rename to src/integrations-service/integrations/routers/__init__.py diff --git a/integrations-service/integrations/routers/execution/__init__.py b/src/integrations-service/integrations/routers/execution/__init__.py similarity index 100% rename from integrations-service/integrations/routers/execution/__init__.py rename to src/integrations-service/integrations/routers/execution/__init__.py diff --git a/integrations-service/integrations/routers/execution/execute.py b/src/integrations-service/integrations/routers/execution/execute.py similarity index 100% rename from integrations-service/integrations/routers/execution/execute.py rename to src/integrations-service/integrations/routers/execution/execute.py diff --git a/integrations-service/integrations/routers/integrations/router.py b/src/integrations-service/integrations/routers/execution/router.py similarity index 100% rename from integrations-service/integrations/routers/integrations/router.py rename to src/integrations-service/integrations/routers/execution/router.py diff --git a/integrations-service/integrations/routers/integrations/__init__.py b/src/integrations-service/integrations/routers/integrations/__init__.py similarity index 100% rename from integrations-service/integrations/routers/integrations/__init__.py rename to src/integrations-service/integrations/routers/integrations/__init__.py diff --git a/integrations-service/integrations/routers/integrations/get_integration.py b/src/integrations-service/integrations/routers/integrations/get_integration.py similarity index 100% rename from integrations-service/integrations/routers/integrations/get_integration.py rename to src/integrations-service/integrations/routers/integrations/get_integration.py diff --git a/integrations-service/integrations/routers/integrations/get_integration_tool.py b/src/integrations-service/integrations/routers/integrations/get_integration_tool.py similarity index 100% rename from integrations-service/integrations/routers/integrations/get_integration_tool.py rename to src/integrations-service/integrations/routers/integrations/get_integration_tool.py diff --git a/integrations-service/integrations/routers/integrations/get_integrations.py b/src/integrations-service/integrations/routers/integrations/get_integrations.py similarity index 100% rename from integrations-service/integrations/routers/integrations/get_integrations.py rename to src/integrations-service/integrations/routers/integrations/get_integrations.py diff --git a/src/integrations-service/integrations/routers/integrations/router.py b/src/integrations-service/integrations/routers/integrations/router.py new file mode 100644 index 000000000..5c3ec9311 --- /dev/null +++ b/src/integrations-service/integrations/routers/integrations/router.py @@ -0,0 +1,3 @@ +from fastapi import APIRouter + +router: APIRouter = APIRouter() diff --git a/scripts/__init__.py b/src/integrations-service/integrations/utils/__init__.py similarity index 100% rename from scripts/__init__.py rename to src/integrations-service/integrations/utils/__init__.py diff --git a/integrations-service/integrations/utils/execute_integration.py b/src/integrations-service/integrations/utils/execute_integration.py similarity index 100% rename from integrations-service/integrations/utils/execute_integration.py rename to src/integrations-service/integrations/utils/execute_integration.py diff --git a/monitoring/grafana/provisioning/dashboards/main.yaml b/src/integrations-service/integrations/utils/integrations/__init__.py old mode 100755 new mode 100644 similarity index 100% rename from monitoring/grafana/provisioning/dashboards/main.yaml rename to src/integrations-service/integrations/utils/integrations/__init__.py diff --git a/integrations-service/integrations/utils/integrations/algolia.py b/src/integrations-service/integrations/utils/integrations/algolia.py similarity index 84% rename from integrations-service/integrations/utils/integrations/algolia.py rename to src/integrations-service/integrations/utils/integrations/algolia.py index e86182428..450c75f8e 100644 --- a/integrations-service/integrations/utils/integrations/algolia.py +++ b/src/integrations-service/integrations/utils/integrations/algolia.py @@ -5,7 +5,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import AlgoliaSearchArguments, AlgoliaSetup -from ...env import algolia_api_key, algolia_application_id from ...models import AlgoliaSearchOutput @@ -20,11 +19,8 @@ async def search(setup: AlgoliaSetup, arguments: AlgoliaSearchArguments) -> Algo Searches for content in an Algolia index asynchronously. """ - # Use walrus operator to simplify assignment and condition - if (api_key := setup.algolia_api_key) == "DEMO_API_KEY": - api_key = algolia_api_key - if (application_id := setup.algolia_application_id) == "DEMO_APPLICATION_ID": - application_id = algolia_application_id + api_key = setup.algolia_api_key + application_id = setup.algolia_application_id # Build the search request search_params = { diff --git a/integrations-service/integrations/utils/integrations/arxiv.py b/src/integrations-service/integrations/utils/integrations/arxiv.py similarity index 100% rename from integrations-service/integrations/utils/integrations/arxiv.py rename to src/integrations-service/integrations/utils/integrations/arxiv.py diff --git a/integrations-service/integrations/utils/integrations/assets/cursor-small.png b/src/integrations-service/integrations/utils/integrations/assets/cursor-small.png similarity index 100% rename from integrations-service/integrations/utils/integrations/assets/cursor-small.png rename to src/integrations-service/integrations/utils/integrations/assets/cursor-small.png diff --git a/integrations-service/integrations/utils/integrations/assets/cursor.png b/src/integrations-service/integrations/utils/integrations/assets/cursor.png similarity index 100% rename from integrations-service/integrations/utils/integrations/assets/cursor.png rename to src/integrations-service/integrations/utils/integrations/assets/cursor.png diff --git a/integrations-service/integrations/utils/integrations/brave.py b/src/integrations-service/integrations/utils/integrations/brave.py similarity index 73% rename from integrations-service/integrations/utils/integrations/brave.py rename to src/integrations-service/integrations/utils/integrations/brave.py index a89b51c70..d073c44bc 100644 --- a/integrations-service/integrations/utils/integrations/brave.py +++ b/src/integrations-service/integrations/utils/integrations/brave.py @@ -5,7 +5,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import BraveSearchArguments, BraveSearchSetup -from ...env import brave_api_key # Import env to access environment variables from ...models import BraveSearchOutput, SearchResult @@ -20,11 +19,7 @@ async def search(setup: BraveSearchSetup, arguments: BraveSearchArguments) -> Br Searches Brave Search with the provided query. """ - # Use walrus operator to simplify assignment and condition - if (api_key := setup.brave_api_key) == "DEMO_API_KEY": - api_key = brave_api_key - - tool = BraveSearch.from_api_key(api_key=api_key, search_kwargs={"count": 3}) + tool = BraveSearch.from_api_key(api_key=setup.brave_api_key, search_kwargs={"count": 3}) result = tool.run(arguments.query) diff --git a/integrations-service/integrations/utils/integrations/browserbase.py b/src/integrations-service/integrations/utils/integrations/browserbase.py similarity index 94% rename from integrations-service/integrations/utils/integrations/browserbase.py rename to src/integrations-service/integrations/utils/integrations/browserbase.py index 3148946ea..040a188b8 100644 --- a/integrations-service/integrations/utils/integrations/browserbase.py +++ b/src/integrations-service/integrations/utils/integrations/browserbase.py @@ -1,3 +1,4 @@ +import asyncio import contextlib import os import tempfile @@ -20,10 +21,6 @@ BrowserbaseListSessionsArguments, BrowserbaseSetup, ) -from ...env import ( - browserbase_api_key, - browserbase_project_id, -) from ...models import ( BrowserbaseCompleteSessionOutput, BrowserbaseCreateSessionOutput, @@ -35,11 +32,6 @@ def get_browserbase_client(setup: BrowserbaseSetup) -> Browserbase: - setup.api_key = browserbase_api_key if setup.api_key == "DEMO_API_KEY" else setup.api_key - setup.project_id = ( - browserbase_project_id if setup.project_id == "DEMO_PROJECT_ID" else setup.project_id - ) - return Browserbase( api_key=setup.api_key, ) @@ -82,9 +74,6 @@ async def create_session( ) -> BrowserbaseCreateSessionOutput: client = get_browserbase_client(setup) - if arguments.project_id == "DEMO_PROJECT_ID": - arguments.project_id = browserbase_project_id - # Convert browser settings using TypeAdapter browser_settings = TypeAdapter(BrowserSettings).validate_python(arguments.browser_settings) @@ -189,7 +178,7 @@ async def get_live_urls( client = get_browserbase_client(setup) try: # Use the debug() method to get live URLs - urls: SessionLiveURLs = client.sessions.debug(id=arguments.id) + urls: SessionLiveURLs = await asyncio.to_thread(client.sessions.debug, id=arguments.id) return BrowserbaseGetSessionLiveUrlsOutput(urls=urls) except Exception as e: print(f"Error getting debug URLs: {e}") diff --git a/integrations-service/integrations/utils/integrations/cloudinary.py b/src/integrations-service/integrations/utils/integrations/cloudinary.py similarity index 82% rename from integrations-service/integrations/utils/integrations/cloudinary.py rename to src/integrations-service/integrations/utils/integrations/cloudinary.py index 1ec13ae03..2b457666a 100644 --- a/integrations-service/integrations/utils/integrations/cloudinary.py +++ b/src/integrations-service/integrations/utils/integrations/cloudinary.py @@ -12,11 +12,6 @@ CloudinarySetup, CloudinaryUploadArguments, ) -from ...env import ( # Import env to access environment variables - cloudinary_api_key, - cloudinary_api_secret, - cloudinary_cloud_name, -) from ...models.cloudinary import CloudinaryEditOutput, CloudinaryUploadOutput @@ -33,13 +28,9 @@ async def media_upload( """ Upload media to Cloudinary. """ - # Use walrus operator to simplify assignment and condition - if (api_key := setup.cloudinary_api_key) == "DEMO_API_KEY": - api_key = cloudinary_api_key - if (api_secret := setup.cloudinary_api_secret) == "DEMO_API_SECRET": - api_secret = cloudinary_api_secret - if (cloud_name := setup.cloudinary_cloud_name) == "DEMO_CLOUD_NAME": - cloud_name = cloudinary_cloud_name + api_key = setup.cloudinary_api_key + api_secret = setup.cloudinary_api_secret + cloud_name = setup.cloudinary_cloud_name try: # Configure Cloudinary with credentials @@ -105,13 +96,9 @@ async def media_edit( """ Edit media in Cloudinary. """ - # Use walrus operator to simplify assignment and condition - if (api_key := setup.cloudinary_api_key) == "DEMO_API_KEY": - api_key = cloudinary_api_key - if (api_secret := setup.cloudinary_api_secret) == "DEMO_API_SECRET": - api_secret = cloudinary_api_secret - if (cloud_name := setup.cloudinary_cloud_name) == "DEMO_CLOUD_NAME": - cloud_name = cloudinary_cloud_name + api_key = setup.cloudinary_api_key + api_secret = setup.cloudinary_api_secret + cloud_name = setup.cloudinary_cloud_name try: # Configure Cloudinary with credentials diff --git a/src/integrations-service/integrations/utils/integrations/email.py b/src/integrations-service/integrations/utils/integrations/email.py new file mode 100644 index 000000000..118a31492 --- /dev/null +++ b/src/integrations-service/integrations/utils/integrations/email.py @@ -0,0 +1,81 @@ +import asyncio +from email.message import EmailMessage +from smtplib import SMTP + +import aiosmtplib +from beartype import beartype +from tenacity import retry, stop_after_attempt, wait_exponential + +from ...autogen.Tools import EmailArguments, EmailSetup +from ...models import EmailOutput + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def send(setup: EmailSetup, arguments: EmailArguments) -> EmailOutput: + """ + Sends an email with the provided details using async SMTP. + """ + # AIDEV-NOTE: Using aiosmtplib for async email sending to prevent timeout issues + + message = EmailMessage() + # AIDEV-NOTE: Enhanced HTML detection and proper charset setting for HTML emails + # Check if body contains HTML tags to determine content type + html_indicators = [ + "", + " GoogleSheetsReadOutput: + """ + Read values from a specific range in a Google Sheets spreadsheet. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsReadArguments with spreadsheet ID and range + + Returns: + GoogleSheetsReadOutput with the values read from the spreadsheet + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Call the Sheets API to read values + result = ( + sheet.values() + .get( + spreadsheetId=arguments.spreadsheet_id, + range=arguments.range, + majorDimension=arguments.major_dimension, + valueRenderOption=arguments.value_render_option, + dateTimeRenderOption=arguments.date_time_render_option, + ) + .execute() + ) + + # Extract values and metadata + values = result.get("values", []) + range_str = result.get("range", arguments.range) + major_dimension = result.get("majorDimension", arguments.major_dimension) + + return GoogleSheetsReadOutput( + range=range_str, + major_dimension=major_dimension, + values=values, + ) + + except HttpError as error: + msg = f"An error occurred while reading from Google Sheets: {error}" + raise RuntimeError(msg) from error + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def write_values( + setup: GoogleSheetsSetup, arguments: GoogleSheetsWriteArguments +) -> GoogleSheetsWriteOutput: + """ + Write or update values in a specific range in a Google Sheets spreadsheet. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsWriteArguments with spreadsheet ID, range, and values + + Returns: + GoogleSheetsWriteOutput with information about the update + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Prepare the request body + body = {"values": arguments.values} + + # Call the Sheets API to update values + result = ( + sheet.values() + .update( + spreadsheetId=arguments.spreadsheet_id, + range=arguments.range, + valueInputOption=arguments.value_input_option, + body=body, + includeValuesInResponse=arguments.include_values_in_response, + responseValueRenderOption=( + "FORMATTED_VALUE" if arguments.include_values_in_response else None + ), + ) + .execute() + ) + + # Extract update information + return GoogleSheetsWriteOutput( + spreadsheet_id=arguments.spreadsheet_id, + updated_range=result.get("updatedRange"), + updated_rows=result.get("updatedRows"), + updated_columns=result.get("updatedColumns"), + updated_cells=result.get("updatedCells"), + updated_values=( + result.get("updatedData", {}).get("values") + if arguments.include_values_in_response + else None + ), + ) + + except HttpError as error: + msg = f"An error occurred while writing to Google Sheets: {error}" + raise RuntimeError(msg) from error + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def append_values( + setup: GoogleSheetsSetup, arguments: GoogleSheetsAppendArguments +) -> GoogleSheetsWriteOutput: + """ + Append new rows of data to a Google Sheets spreadsheet. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsAppendArguments with spreadsheet ID, range, and values + + Returns: + GoogleSheetsWriteOutput with information about the append operation + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Prepare the request body + body = {"values": arguments.values} + + # Call the Sheets API to append values + result = ( + sheet.values() + .append( + spreadsheetId=arguments.spreadsheet_id, + range=arguments.range, + valueInputOption=arguments.value_input_option, + insertDataOption=arguments.insert_data_option, + body=body, + includeValuesInResponse=arguments.include_values_in_response, + responseValueRenderOption=( + "FORMATTED_VALUE" if arguments.include_values_in_response else None + ), + ) + .execute() + ) + + # Extract update information + updates = result.get("updates", {}) + return GoogleSheetsWriteOutput( + spreadsheet_id=arguments.spreadsheet_id, + updated_range=updates.get("updatedRange"), + updated_rows=updates.get("updatedRows"), + updated_columns=updates.get("updatedColumns"), + updated_cells=updates.get("updatedCells"), + updated_values=( + updates.get("updatedData", {}).get("values") + if arguments.include_values_in_response + else None + ), + ) + + except HttpError as error: + msg = f"An error occurred while appending to Google Sheets: {error}" + raise RuntimeError(msg) from error + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def clear_values( + setup: GoogleSheetsSetup, arguments: GoogleSheetsClearArguments +) -> GoogleSheetsClearOutput: + """ + Clear values from a specific range in a Google Sheets spreadsheet. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsClearArguments with spreadsheet ID and range + + Returns: + GoogleSheetsClearOutput with information about the clear operation + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Call the Sheets API to clear values + result = ( + sheet.values() + .clear( + spreadsheetId=arguments.spreadsheet_id, + range=arguments.range, + body={}, + ) + .execute() + ) + + # Extract clear information + return GoogleSheetsClearOutput( + spreadsheet_id=arguments.spreadsheet_id, + cleared_range=result.get("clearedRange", arguments.range), + ) + + except HttpError as error: + msg = f"An error occurred while clearing Google Sheets: {error}" + raise RuntimeError(msg) from error + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def batch_read( + setup: GoogleSheetsSetup, arguments: GoogleSheetsBatchReadArguments +) -> GoogleSheetsBatchReadOutput: + """ + Read values from multiple ranges in a Google Sheets spreadsheet in a single request. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsBatchReadArguments with spreadsheet ID and ranges + + Returns: + GoogleSheetsBatchReadOutput with the values read from all specified ranges + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Call the Sheets API to batch get values + result = ( + sheet.values() + .batchGet( + spreadsheetId=arguments.spreadsheet_id, + ranges=arguments.ranges, + majorDimension=arguments.major_dimension, + valueRenderOption=arguments.value_render_option, + dateTimeRenderOption=arguments.date_time_render_option, + ) + .execute() + ) + + # Extract value ranges + value_ranges = [ + GoogleSheetsValueRangeOutput( + range=value_range.get("range", ""), + major_dimension=value_range.get("majorDimension", arguments.major_dimension), + values=value_range.get("values", []), + ) + for value_range in result.get("valueRanges", []) + ] + + return GoogleSheetsBatchReadOutput( + spreadsheet_id=arguments.spreadsheet_id, + value_ranges=value_ranges, + ) + + except HttpError as error: + msg = f"An error occurred during batch read from Google Sheets: {error}" + raise RuntimeError(msg) from error + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def batch_write( + setup: GoogleSheetsSetup, arguments: GoogleSheetsBatchWriteArguments +) -> GoogleSheetsBatchWriteOutput: + """ + Write values to multiple ranges in a Google Sheets spreadsheet in a single request. + + Args: + setup: The GoogleSheetsSetup containing authentication credentials + arguments: The GoogleSheetsBatchWriteArguments with spreadsheet ID and data + + Returns: + GoogleSheetsBatchWriteOutput with information about all updates + """ + try: + service = get_sheets_service(setup) + sheet = service.spreadsheets() + + # Prepare the value ranges for the request + value_ranges = [] + for data_item in arguments.data: + value_range = { + "range": data_item.range, + "values": data_item.values, + } + if data_item.major_dimension: + value_range["majorDimension"] = data_item.major_dimension + value_ranges.append(value_range) + + # Prepare the request body + body = { + "valueInputOption": arguments.value_input_option, + "data": value_ranges, + "includeValuesInResponse": arguments.include_values_in_response, + } + + if arguments.include_values_in_response: + body["responseValueRenderOption"] = "FORMATTED_VALUE" + + # Call the Sheets API to batch update values + result = ( + sheet.values() + .batchUpdate( + spreadsheetId=arguments.spreadsheet_id, + body=body, + ) + .execute() + ) + + # Extract update information + responses = [ + GoogleSheetsUpdateResponse( + updated_range=response.get("updatedRange"), + updated_rows=response.get("updatedRows"), + updated_columns=response.get("updatedColumns"), + updated_cells=response.get("updatedCells"), + ) + for response in result.get("responses", []) + ] + + return GoogleSheetsBatchWriteOutput( + spreadsheet_id=arguments.spreadsheet_id, + total_updated_sheets=result.get("totalUpdatedSheets"), + total_updated_rows=result.get("totalUpdatedRows"), + total_updated_columns=result.get("totalUpdatedColumns"), + total_updated_cells=result.get("totalUpdatedCells"), + responses=responses, + ) + + except HttpError as error: + msg = f"An error occurred during batch write to Google Sheets: {error}" + raise RuntimeError(msg) from error diff --git a/integrations-service/integrations/utils/integrations/llama_parse.py b/src/integrations-service/integrations/utils/integrations/llama_parse.py similarity index 85% rename from integrations-service/integrations/utils/integrations/llama_parse.py rename to src/integrations-service/integrations/utils/integrations/llama_parse.py index ec8aaede4..67fbf5bf6 100644 --- a/integrations-service/integrations/utils/integrations/llama_parse.py +++ b/src/integrations-service/integrations/utils/integrations/llama_parse.py @@ -6,9 +6,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import LlamaParseFetchArguments, LlamaParseSetup -from ...env import ( - llama_api_key, # Import env to access environment variables -) from ...models import LlamaParseFetchOutput @@ -26,9 +23,7 @@ async def parse( Parse and extract content from files using LlamaParse. """ - # Use walrus operator to simplify assignment and condition - if (api_key := setup.llamaparse_api_key) == "DEMO_API_KEY": - api_key = llama_api_key + api_key = setup.llamaparse_api_key # get the additional params params = ( diff --git a/integrations-service/integrations/utils/integrations/mailgun.py b/src/integrations-service/integrations/utils/integrations/mailgun.py similarity index 93% rename from integrations-service/integrations/utils/integrations/mailgun.py rename to src/integrations-service/integrations/utils/integrations/mailgun.py index 2ca02c589..836c5f347 100644 --- a/integrations-service/integrations/utils/integrations/mailgun.py +++ b/src/integrations-service/integrations/utils/integrations/mailgun.py @@ -5,7 +5,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import MailgunSendEmailArguments, MailgunSetup -from ...env import mailgun_api_key # Import env to access environment variables from ...models import MailgunSendEmailOutput @@ -71,8 +70,8 @@ async def send_email( if not domain.startswith("email."): domain = "email." + domain - # Use API key from env or from setup - api_key = mailgun_api_key if setup.api_key == "DEMO_API_KEY" else setup.api_key + # Use API key from setup + api_key = setup.api_key # API URL url = f"https://api.mailgun.net/v3/{domain}/messages" diff --git a/src/integrations-service/integrations/utils/integrations/mcp.py b/src/integrations-service/integrations/utils/integrations/mcp.py new file mode 100644 index 000000000..a49158006 --- /dev/null +++ b/src/integrations-service/integrations/utils/integrations/mcp.py @@ -0,0 +1,329 @@ +""" +MCP (Model Context Protocol) Integration for Julep + +This module provides a native MCP client integration that allows Julep agents to: +1. Connect to MCP servers using HTTP or SSE (Server-Sent Events) transports +2. Dynamically discover available tools from the server +3. Execute tools with proper error handling and retry logic + +The MCP integration enables Julep to interface with external tools and services +through a standardized protocol, making it extensible without hardcoding specific integrations. + +Transport Options: +- HTTP: Standard request-response pattern using streamablehttp_client +- SSE: Server-Sent Events for streaming responses using dedicated sse_client + +Note: Both transports require mcp>=1.8.0. The HTTP transport uses streamablehttp_client +which supports both regular HTTP and streaming responses. The SSE transport uses a +dedicated sse_client for proper event stream handling. Stdio transport has been +removed for security reasons. +""" + +from __future__ import annotations + +import asyncio +import contextlib +import importlib.metadata +from typing import Any + +from beartype import beartype +from packaging import version +from tenacity import retry, stop_after_attempt, wait_exponential + +from ...autogen.Tools import McpCallToolArguments, McpListToolsArguments, McpSetup +from ...models import McpListToolsOutput, McpToolCallOutput + + +def _ensure_mcp_available() -> None: + """ + Check if the MCP SDK is installed and available. + + This is a runtime check to provide clear error messages if the MCP + dependency is missing, rather than cryptic import errors later. + """ + try: + import mcp # noqa: F401 + except Exception as e: # pragma: no cover - import path validation + msg = ( + "The 'mcp' Python package is required for MCP integration. " + "Add 'mcp' to integrations-service dependencies and install it." + ) + raise RuntimeError(msg) from e + + +# Module-level dynamic import for MCP clients with version check +try: + mcp_version = importlib.metadata.version("mcp") + if version.parse(mcp_version) < version.parse("1.8.0"): + msg = ( + f"Your installed 'mcp' SDK version {mcp_version} does not support required transports. " + f"Required: mcp>=1.8.0. Please update with: pip install 'mcp>=1.8.0'." + ) + raise RuntimeError(msg) + from mcp.client.sse import sse_client + from mcp.client.streamable_http import streamablehttp_client +except ImportError as e: + msg = ( + f"MCP transports require mcp>=1.8.0. Underlying import error: {e}. " + f"Please update with: pip install 'mcp>=1.8.0'." + ) + raise RuntimeError(msg) from e + + +@retry( + wait=wait_exponential(multiplier=1, min=4, max=16), + reraise=True, + stop=stop_after_attempt(5), +) +async def _connect_session(setup: McpSetup): + """ + Create and initialize an MCP client session for the given setup. + + This function establishes connections to MCP servers using either: + - streamablehttp_client for HTTP transport (standard request/response) + - sse_client for SSE transport (Server-Sent Events streaming) + + The session management pattern ensures proper cleanup of resources. + + Args: + setup: MCP setup configuration with transport type and connection details + + Returns: + tuple: (session, aclose) where session is the active MCP client and + aclose is an async cleanup function that must be called when done + + Raises: + ValueError: If required configuration is missing or transport type is unknown + RuntimeError: If connection to the MCP server fails + """ + _ensure_mcp_available() + + from mcp import ClientSession + + transport = setup.transport + + if transport in ("http", "sse"): + if not setup.http_url: + msg = f"McpSetup.http_url is required for {transport} transport" + raise ValueError(msg) + + headers = setup.http_headers or {} + + # Use different clients for SSE vs HTTP transports + if transport == "sse": + # SSE transport uses the dedicated sse_client for proper event stream handling + # Add SSE-specific headers to ensure proper content negotiation + headers = { + **headers, + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + # Create the SSE context + client_ctx = sse_client(str(setup.http_url), headers=headers) + else: + # HTTP transport uses streamablehttp_client + client_ctx = streamablehttp_client(str(setup.http_url), headers=headers) + + # Manually enter the async context to avoid task boundary issues + try: + # Enter the context manager + result = await client_ctx.__aenter__() + # Handle both tuple and direct stream returns + if isinstance(result, tuple): + read, write = result[:2] # Take first two items, ignore rest + else: + # Some versions might return a different structure + read = result + write = result + except Exception as e: + error_msg = ( + f"Failed to connect to {transport.upper()} endpoint {setup.http_url}: {e}" + ) + raise RuntimeError(error_msg) from e + + session = ClientSession(read, write) + + # Store references for cleanup + session_entered = False + try: + await session.__aenter__() + session_entered = True + await session.initialize() + except Exception as e: + # Clean up on failure + if session_entered: + with contextlib.suppress(Exception): + await session.__aexit__(type(e), e, e.__traceback__) + with contextlib.suppress(Exception): + await client_ctx.__aexit__(type(e), e, e.__traceback__) + + # Add context about transport type in error + error_msg = ( + f"Failed to establish {transport.upper()} connection to {setup.http_url}: {e}" + ) + raise RuntimeError(error_msg) from e + + # Create cleanup function that will be called later + async def aclose() -> None: + with contextlib.suppress(Exception): + await session.__aexit__(None, None, None) # type: ignore[attr-defined] + with contextlib.suppress(Exception): + await client_ctx.__aexit__(None, None, None) + + return session, aclose + + msg = f"Unknown MCP transport: {transport}" + raise ValueError(msg) + + +def _serialize_content_item(item: Any) -> dict[str, Any]: + """ + Best-effort conversion of MCP content item to JSON-serializable dict. + + MCP servers can return various content types (text, images, structured data). + This function normalizes them into a consistent format that can be serialized to JSON + and passed back through our API. The fallback chain ensures we never lose data, + even if it's in an unexpected format. + """ + try: + # Most MCP SDK objects support model_dump() for Pydantic-style serialization + return item.model_dump() # type: ignore[attr-defined] + except Exception: + try: + # Fallback to dict conversion for simpler objects + return dict(item) + except Exception: + # Last resort: string representation to preserve some information + return {"repr": repr(item)} + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=1, max=8), + reraise=True, + stop=stop_after_attempt(1), +) +async def list_tools(setup: McpSetup, arguments: McpListToolsArguments) -> McpListToolsOutput: + """ + Discover available tools from an MCP server. + + This is the key innovation of MCP integration - instead of hardcoding tools, + we dynamically discover what's available from any MCP server. This makes Julep + infinitely extensible - just point it at a new MCP server and all its tools + become available to your agents automatically. + + The retry logic handles transient network issues, especially important for + remote HTTP-based MCP servers. + + Args: + setup: MCP connection configuration (transport type, URL, headers) + arguments: Arguments for listing tools (currently unused, reserved for future filtering) + + Returns: + McpListToolsOutput: List of discovered tools with their names, descriptions, and schemas + + Raises: + RuntimeError: If connection to the MCP server fails + ValueError: If configuration is invalid + """ + # AIDEV-NOTE: Debug logging for MCP tool discovery - remove in production + session, aclose = await _connect_session(setup) + try: + # Query the MCP server for its tool catalog + tools = await session.list_tools() + # Transform MCP tool format to Julep's internal format + # Extract the essential fields that Julep needs to present tools to agents + out = [ + { + "name": t.name, + "description": getattr(t, "description", None), + "input_schema": getattr(t, "inputSchema", None), # JSON Schema for validation + } + for t in tools.tools + ] + return McpListToolsOutput(tools=out) # type: ignore[arg-type] + finally: + await aclose() + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=1, max=8), + reraise=True, + stop=stop_after_attempt(3), +) +async def call_tool(setup: McpSetup, arguments: McpCallToolArguments) -> McpToolCallOutput: + """ + Execute a specific tool on an MCP server with the provided arguments. + + This allows Julep agents to call any tool exposed by an MCP server without + knowing its implementation details. The tool could be running Python, Node.js, + Rust, or any language - MCP abstracts that away. + + Key features: + - Automatic retry on failure (network issues, timeouts) + - Timeout support for long-running tools + - Response normalization for consistent handling + + Args: + setup: MCP connection configuration (transport type, URL, headers) + arguments: Contains tool_name, arguments dict, and optional timeout_seconds + + Returns: + McpToolCallOutput: Normalized tool response with: + - text: Concatenated text content from the response + - structured: Any structured data returned by the tool + - content: Raw content items as JSON-serializable dicts + - is_error: Whether the tool execution resulted in an error + + Raises: + asyncio.TimeoutError: If the tool execution exceeds the specified timeout + RuntimeError: If connection to the MCP server fails + ValueError: If configuration is invalid + """ + # AIDEV-NOTE: Debug logging for MCP tool execution - remove in production + session, aclose = await _connect_session(setup) + try: + # Enforce timeout per call if provided + async def _invoke(): + return await session.call_tool( + arguments.tool_name, arguments=arguments.arguments or {} + ) + + if arguments.timeout_seconds and arguments.timeout_seconds > 0: + result = await asyncio.wait_for(_invoke(), timeout=arguments.timeout_seconds) + else: + result = await _invoke() + + # Normalize result content + text_parts: list[str] = [] + content_items: list[dict[str, Any]] = [] + structured = getattr(result, "structuredContent", None) + is_error = getattr(result, "isError", False) + + try: + from mcp import types as mcp_types # type: ignore + except Exception: + mcp_types = None # type: ignore + + for item in getattr(result, "content", []) or []: + # Extract text content if type info is available + if mcp_types is not None and isinstance( + item, getattr(mcp_types, "TextContent", ()) + ): + text = getattr(item, "text", None) + if text: + text_parts.append(text) + elif hasattr(item, "text") and item.text: + text_parts.append(item.text) + content_items.append(_serialize_content_item(item)) + + return McpToolCallOutput( + text="\n".join(text_parts) if text_parts else None, + structured=structured, # type: ignore[arg-type] + content=content_items, + is_error=bool(is_error), + ) + finally: + await aclose() diff --git a/integrations-service/integrations/utils/integrations/remote_browser.py b/src/integrations-service/integrations/utils/integrations/remote_browser.py similarity index 100% rename from integrations-service/integrations/utils/integrations/remote_browser.py rename to src/integrations-service/integrations/utils/integrations/remote_browser.py diff --git a/integrations-service/integrations/utils/integrations/spider.py b/src/integrations-service/integrations/utils/integrations/spider.py similarity index 92% rename from integrations-service/integrations/utils/integrations/spider.py rename to src/integrations-service/integrations/utils/integrations/spider.py index 8c297fd33..248b355d3 100644 --- a/integrations-service/integrations/utils/integrations/spider.py +++ b/src/integrations-service/integrations/utils/integrations/spider.py @@ -3,9 +3,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import SpiderFetchArguments, SpiderSetup -from ...env import ( - spider_api_key, # Import env to access environment variables -) from ...models import SpiderOutput, SpiderResponse @@ -29,9 +26,7 @@ async def execute_spider_method( setup: SpiderSetup, arguments: SpiderFetchArguments, ) -> SpiderOutput: - # Use walrus operator to simplify assignment and condition - if (api_key := setup.spider_api_key) == "DEMO_API_KEY": - api_key = spider_api_key + api_key = setup.spider_api_key # Initialize the final result list final_result = [] # Initialize the results variable diff --git a/src/integrations-service/integrations/utils/integrations/unstructured.py b/src/integrations-service/integrations/utils/integrations/unstructured.py new file mode 100644 index 000000000..b7a16d935 --- /dev/null +++ b/src/integrations-service/integrations/utils/integrations/unstructured.py @@ -0,0 +1,132 @@ +import base64 +import uuid +from typing import Any + +import unstructured_client +from beartype import beartype +from tenacity import retry, stop_after_attempt, wait_exponential +from unstructured_client.models import operations, shared + +from ...autogen.Tools import UnstructuredPartitionArguments, UnstructuredSetup +from ...models import UnstructuredParseOutput + + +def to_unstructured_strategy( + value: Any, default: shared.Strategy | None = None +) -> shared.Strategy | None: + """ + Convert a user-provided strategy (string/enum) to unstructured_client.models.shared.Strategy. + + Accepts common aliases and ignores case, spaces, and dashes. + Returns `default` if value is None or unrecognized. + """ + if value is None: + return default + if isinstance(value, shared.Strategy): + return value + + s = str(value).strip().lower().replace("-", "_").replace(" ", "_") + aliases = { + "hires": "hi_res", + "hires_ocr": "hi_res", + "highres": "hi_res", + "high_res": "hi_res", + "ocr": "ocr_only", + "ocronly": "ocr_only", + "od": "od_only", + "odonly": "od_only", + "object_detection_only": "od_only", + } + s = aliases.get(s, s) + + mapping = { + "fast": shared.Strategy.FAST, + "hi_res": shared.Strategy.HI_RES, + "auto": shared.Strategy.AUTO, + "ocr_only": shared.Strategy.OCR_ONLY, + "od_only": shared.Strategy.OD_ONLY, + "vlm": shared.Strategy.VLM, + } + return mapping.get(s, default) + + +@beartype +@retry( + wait=wait_exponential(multiplier=1, min=4, max=10), + reraise=True, + stop=stop_after_attempt(4), +) +async def parse( + setup: UnstructuredSetup, + arguments: UnstructuredPartitionArguments, +) -> UnstructuredParseOutput: + """ + Parse documents into structured elements using Unstructured.io. + """ + # AIDEV-NOTE: Extract and convert strategy/chunking_strategy explicitly for proper API handling + params = ( + arguments.partition_params + if hasattr(arguments, "partition_params") and arguments.partition_params + else {} + ) + + # Extract strategy and chunking_strategy for explicit handling + # AIDEV-NOTE: Use .get() instead of .pop() to avoid mutating params on retries + strategy = to_unstructured_strategy(params.get("strategy", None)) + chunking_strategy = params.get("chunking_strategy", None) + + api_key = setup.unstructured_api_key + + # Create a new client with all available parameters + client = unstructured_client.UnstructuredClient( + api_key_auth=api_key, + server_url=setup.server_url, + server=setup.server, + url_params=setup.url_params, + timeout_ms=setup.timeout_ms, + ) + + # Decode the base64 encoded file + try: + decoded_file = base64.b64decode(arguments.file) + except Exception as e: + msg = f"Failed to decode base64 encoded file: {e}" + raise RuntimeError(msg) + + # Process file + # Build partition parameters with explicit strategy and chunking_strategy + partition_params = { + "files": shared.Files( + content=decoded_file, + file_name=arguments.filename or f"{uuid.uuid4()}.txt", + ), + } + + # Add strategy and chunking_strategy explicitly if provided + if strategy is not None: + partition_params["strategy"] = strategy + if chunking_strategy is not None: + partition_params["chunking_strategy"] = chunking_strategy + + # Spread the rest of the parameters (excluding strategy and chunking_strategy) + partition_params.update({ + k: v for k, v in params.items() if k not in ["strategy", "chunking_strategy"] + }) + + req = operations.PartitionRequest( + partition_parameters=shared.PartitionParameters(**partition_params) + ) + + try: + # Make the API call + result = await client.general.partition_async(request=req) + return UnstructuredParseOutput( + content_type=result.content_type, + status_code=result.status_code, + csv_elements=result.csv_elements or None, + content=result.elements or None, + ) + except Exception as e: + # Return error information instead of raising HTTP exception + msg = f"Error executing Unstructured method: {e}" + raise RuntimeError(msg) diff --git a/integrations-service/integrations/utils/integrations/weather.py b/src/integrations-service/integrations/utils/integrations/weather.py similarity index 67% rename from integrations-service/integrations/utils/integrations/weather.py rename to src/integrations-service/integrations/utils/integrations/weather.py index c45898123..3fbfab41f 100644 --- a/integrations-service/integrations/utils/integrations/weather.py +++ b/src/integrations-service/integrations/utils/integrations/weather.py @@ -3,7 +3,6 @@ from tenacity import retry, stop_after_attempt, wait_exponential from ...autogen.Tools import WeatherGetArguments, WeatherSetup -from ...env import openweather_api_key # Import env to access environment variables from ...models import WeatherGetOutput @@ -20,10 +19,6 @@ async def get(setup: WeatherSetup, arguments: WeatherGetArguments) -> WeatherGet location = arguments.location - # Use walrus operator to simplify assignment and condition - if (api_key := setup.openweathermap_api_key) == "DEMO_API_KEY": - api_key = openweather_api_key - - weather = OpenWeatherMapAPIWrapper(openweathermap_api_key=api_key) + weather = OpenWeatherMapAPIWrapper(openweathermap_api_key=setup.openweathermap_api_key) result = weather.run(location) return WeatherGetOutput(result=result) diff --git a/integrations-service/integrations/utils/integrations/wikipedia.py b/src/integrations-service/integrations/utils/integrations/wikipedia.py similarity index 100% rename from integrations-service/integrations/utils/integrations/wikipedia.py rename to src/integrations-service/integrations/utils/integrations/wikipedia.py diff --git a/integrations-service/integrations/web.py b/src/integrations-service/integrations/web.py similarity index 100% rename from integrations-service/integrations/web.py rename to src/integrations-service/integrations/web.py diff --git a/integrations-service/poe_tasks.toml b/src/integrations-service/poe_tasks.toml similarity index 100% rename from integrations-service/poe_tasks.toml rename to src/integrations-service/poe_tasks.toml diff --git a/integrations-service/pyproject.toml b/src/integrations-service/pyproject.toml similarity index 80% rename from integrations-service/pyproject.toml rename to src/integrations-service/pyproject.toml index 1a13604cd..e22adccee 100644 --- a/integrations-service/pyproject.toml +++ b/src/integrations-service/pyproject.toml @@ -7,9 +7,10 @@ requires-python = ">=3.12,<3.13" dependencies = [ "langchain-community~=0.3.0", "fastapi~=0.115.0", + "sse-starlette>=2.0.0", "uvicorn~=0.30.6", "langchain~=0.3.0", - "pydantic[email]~=2.9.2", + "pydantic[email]>=2.11.2,<3.0.0", "duckduckgo-search~=6.2.13", "openai~=1.47.1", "tweepy~=4.14.0", @@ -33,8 +34,14 @@ dependencies = [ "environs~=11.2.1", "arxiv~=2.1.3", "sentry-sdk[flask]>=2.19.0", - "unstructured-client>=0.28.1", + "unstructured-client==0.42.3", "algoliasearch>=4.14.0", + "mcp>=1.8.0", + "google-api-python-client>=2.181.0", + "google-auth>=2.40.3", + "google-auth-oauthlib>=1.2.2", + "google-auth-httplib2>=0.2.0", + "aiosmtplib>=3.0.1", ] [dependency-groups] diff --git a/integrations-service/pytest.ini b/src/integrations-service/pytest.ini similarity index 100% rename from integrations-service/pytest.ini rename to src/integrations-service/pytest.ini diff --git a/integrations-service/pytype.toml b/src/integrations-service/pytype.toml similarity index 100% rename from integrations-service/pytype.toml rename to src/integrations-service/pytype.toml diff --git a/integrations-service/tests/__init__.py b/src/integrations-service/tests/__init__.py similarity index 100% rename from integrations-service/tests/__init__.py rename to src/integrations-service/tests/__init__.py diff --git a/integrations-service/tests/conftest.py b/src/integrations-service/tests/conftest.py similarity index 100% rename from integrations-service/tests/conftest.py rename to src/integrations-service/tests/conftest.py diff --git a/integrations-service/tests/mocks/__init__.py b/src/integrations-service/tests/mocks/__init__.py similarity index 100% rename from integrations-service/tests/mocks/__init__.py rename to src/integrations-service/tests/mocks/__init__.py diff --git a/integrations-service/tests/mocks/brave.py b/src/integrations-service/tests/mocks/brave.py similarity index 100% rename from integrations-service/tests/mocks/brave.py rename to src/integrations-service/tests/mocks/brave.py diff --git a/integrations-service/tests/mocks/email.py b/src/integrations-service/tests/mocks/email.py similarity index 100% rename from integrations-service/tests/mocks/email.py rename to src/integrations-service/tests/mocks/email.py diff --git a/integrations-service/tests/mocks/llama_parse.py b/src/integrations-service/tests/mocks/llama_parse.py similarity index 100% rename from integrations-service/tests/mocks/llama_parse.py rename to src/integrations-service/tests/mocks/llama_parse.py diff --git a/integrations-service/tests/mocks/spider.py b/src/integrations-service/tests/mocks/spider.py similarity index 100% rename from integrations-service/tests/mocks/spider.py rename to src/integrations-service/tests/mocks/spider.py diff --git a/integrations-service/tests/mocks/weather.py b/src/integrations-service/tests/mocks/weather.py similarity index 100% rename from integrations-service/tests/mocks/weather.py rename to src/integrations-service/tests/mocks/weather.py diff --git a/integrations-service/tests/mocks/wikipedia.py b/src/integrations-service/tests/mocks/wikipedia.py similarity index 100% rename from integrations-service/tests/mocks/wikipedia.py rename to src/integrations-service/tests/mocks/wikipedia.py diff --git a/src/integrations-service/tests/test_mcp.py b/src/integrations-service/tests/test_mcp.py new file mode 100644 index 000000000..bf6855aed --- /dev/null +++ b/src/integrations-service/tests/test_mcp.py @@ -0,0 +1,430 @@ +from types import SimpleNamespace +from unittest.mock import patch + +import pytest +from integrations.models import BaseProvider +from integrations.providers import available_providers +from integrations.utils.execute_integration import execute_integration +from integrations.utils.integrations import mcp as mcp_utils + + +@pytest.mark.asyncio +async def test_mcp_provider_in_registry(): + assert "mcp" in available_providers + provider = available_providers["mcp"] + assert isinstance(provider, BaseProvider) + methods = {m.method for m in provider.methods} + assert {"list_tools", "call_tool"}.issubset(methods) + + +@pytest.mark.asyncio +async def test_mcp_list_tools_exec(monkeypatch): + # Patch connector to avoid requiring real MCP server + + class FakeSession: + async def initialize(self): # pragma: no cover - not used + pass + + async def list_tools(self): + return SimpleNamespace( + tools=[ + SimpleNamespace( + name="echo", description="Echo tool", inputSchema={"type": "object"} + ), + SimpleNamespace(name="ping", description="Ping tool", inputSchema=None), + ] + ) + + async def __aexit__(self, *_): # pragma: no cover - not used + return None + + async def fake_connect(_setup): + async def aclose(): + return None + + return FakeSession(), aclose + + monkeypatch.setattr(mcp_utils, "_connect_session", fake_connect) + + # Build arguments via autogen classes at runtime + from integrations.autogen.Tools import McpListToolsArguments, McpSetup + + setup = McpSetup(transport="http", http_url="http://localhost:9999/mcp") + args = McpListToolsArguments() + + result = await execute_integration( + provider="mcp", + method="list_tools", + setup=setup, + arguments=args, + ) + + assert hasattr(result, "tools") + assert len(result.tools) == 2 + assert {t.name for t in result.tools} == {"echo", "ping"} + + +@pytest.mark.asyncio +async def test_mcp_call_tool_exec(monkeypatch): + # Patch connector and session.call_tool + + class FakeCallResult: + def __init__(self): + self.content = [SimpleNamespace(kind="text", text="hello"), {"json": True}] + self.structuredContent = {"ok": True} + self.isError = False + + class FakeSession: + async def call_tool(self, tool_name: str, arguments): + assert tool_name == "echo" + return FakeCallResult() + + async def fake_connect(_setup): + async def aclose(): + return None + + return FakeSession(), aclose + + monkeypatch.setattr(mcp_utils, "_connect_session", fake_connect) + + from integrations.autogen.Tools import McpCallToolArguments, McpSetup + + setup = McpSetup(transport="http", http_url="http://localhost:9999/mcp") + args = McpCallToolArguments(tool_name="echo", arguments={"value": "hi"}) + + result = await execute_integration( + provider="mcp", + method="call_tool", + setup=setup, + arguments=args, + ) + + # We expect normalized fields present + assert result.is_error is False + assert result.structured == {"ok": True} + assert isinstance(result.content, list) + assert len(result.content) >= 1 + + +from unittest.mock import AsyncMock + +import pytest +from integrations.autogen.Tools import McpCallToolArguments, McpListToolsArguments, McpSetup + + +@pytest.mark.asyncio +@patch("integrations.utils.integrations.mcp.streamablehttp_client") +async def test_http_session_management(mock_client): + """ + Test that HTTP transport uses streamablehttp_client correctly + """ + setup = McpSetup(transport="http", http_url="http://test.example/mcp") + + # Mock the async context manager + mock_ctx = AsyncMock() + mock_read = AsyncMock() + mock_write = AsyncMock() + mock_ctx.__aenter__.return_value = (mock_read, mock_write, None) + mock_ctx.__aexit__.return_value = None + + mock_client.return_value = mock_ctx + + # Mock ClientSession initialization + mock_session = AsyncMock() + mock_session.initialize = AsyncMock() + mock_session.__aenter__ = AsyncMock(return_value=mock_session) + mock_session.__aexit__ = AsyncMock() + + with patch("mcp.ClientSession") as MockClientSession: + MockClientSession.return_value = mock_session + + # Trigger the connection + from integrations.utils.integrations.mcp import _connect_session + + _session, aclose = await _connect_session(setup) + + # Verify streamablehttp_client was called for HTTP transport + mock_client.assert_called_once_with("http://test.example/mcp", headers={}) + + # Verify session was created and initialized + MockClientSession.assert_called_once_with(mock_read, mock_write) + mock_session.initialize.assert_awaited_once() + + # Verify cleanup function exists + assert callable(aclose) + await aclose() + + +@pytest.mark.asyncio +@patch("mcp.ClientSession") +@patch("integrations.utils.integrations.mcp.streamablehttp_client") +async def test_http_connection_retry_logic(mock_client, mock_session_cls): + """ + Test that HTTP connection uses retry logic + """ + setup = McpSetup(transport="http", http_url="http://test.example/mcp") + + # Mock successful connection + mock_ctx = AsyncMock() + mock_read = AsyncMock() + mock_write = AsyncMock() + mock_ctx.__aenter__.return_value = (mock_read, mock_write) + mock_ctx.__aexit__.return_value = None + mock_client.return_value = mock_ctx + + # Mock ClientSession + mock_session = AsyncMock() + mock_session.initialize = AsyncMock() + mock_session.__aenter__ = AsyncMock(return_value=mock_session) + mock_session.__aexit__ = AsyncMock() + mock_session_cls.return_value = mock_session + + from integrations.utils.integrations.mcp import _connect_session + + # Test that connection works + session, aclose = await _connect_session(setup) + assert session is not None + assert callable(aclose) + + # Verify streamablehttp_client was called + mock_client.assert_called_once() + + # Clean up + await aclose() + + +def test_mcp_sdk_version_check(): + """ + Test that missing MCP SDK raises proper error message + """ + # Test that _ensure_mcp_available provides clear error if mcp is missing + from integrations.utils.integrations.mcp import _ensure_mcp_available + + with ( + patch("builtins.__import__", side_effect=ImportError("mcp not found")), + pytest.raises(RuntimeError, match=r"The 'mcp' Python package is required"), + ): + _ensure_mcp_available() + + +@pytest.mark.parametrize("transport", ["http", "sse"]) +def test_mcp_setup_transport_validation(transport): + """ + Test that McpSetup accepts valid transport types (http and sse) + """ + from integrations.autogen.Tools import McpSetup + + # Valid transports should not raise validation errors + setup = McpSetup(transport=transport) + assert setup.transport == transport + assert setup.transport in ["http", "sse"] + + +def test_mcp_setup_invalid_transport(): + """ + Test that invalid transport types raise validation error + """ + from integrations.autogen.Tools import McpSetup + from pydantic import ValidationError + + # Invalid transport should raise validation error + with pytest.raises(ValidationError, match="Input should be 'sse' or 'http'"): + McpSetup(transport="invalid") + + +@pytest.mark.asyncio +async def test_mcp_tool_response_normalization(): + """ + Test that MCP tool responses are properly normalized + """ + from integrations.autogen.Tools import McpSetup + from integrations.models import McpToolCallOutput + + setup = McpSetup(transport="http", http_url="http://test.example/mcp") + args = McpCallToolArguments(tool_name="test_tool", arguments={"test": "data"}) + + # Mock the entire connection and tool call + with patch("integrations.utils.integrations.mcp._connect_session") as mock_connect: + mock_session = AsyncMock() + mock_result = SimpleNamespace( + content=[ + SimpleNamespace(text="Hello world"), + {"structured": True}, + SimpleNamespace(text="Second message"), + ], + structuredContent={"key": "value"}, + isError=False, + ) + mock_session.call_tool.return_value = mock_result + + mock_acontext = AsyncMock() + mock_connect.return_value = (mock_session, mock_acontext) + + from integrations.utils.integrations.mcp import call_tool + + result = await call_tool(setup, args) + + # Verify normalization + assert isinstance(result, McpToolCallOutput) + assert result.text == "Hello world\nSecond message" + assert result.structured == {"key": "value"} + assert result.is_error is False + assert len(result.content) == 3 + assert "Hello world" in str(result.content[0]) + assert "structured" in str(result.content[1]) + assert "Second message" in str(result.content[2]) + + +@pytest.mark.asyncio +async def test_mcp_list_tools_integration(): + """ + Test end-to-end tool discovery integration + """ + from integrations.autogen.Tools import McpSetup + from integrations.models import McpListToolsOutput + + setup = McpSetup(transport="http", http_url="http://test.example/mcp") + args = McpListToolsArguments() + + # Mock connection and session + with patch("integrations.utils.integrations.mcp._connect_session") as mock_connect: + mock_session = AsyncMock() + mock_tools = SimpleNamespace( + tools=[ + SimpleNamespace( + name="tool1", description="First tool", inputSchema={"type": "object"} + ), + SimpleNamespace(name="tool2", description="Second tool", inputSchema=None), + ] + ) + mock_session.list_tools.return_value = mock_tools + + mock_acontext = AsyncMock() + mock_connect.return_value = (mock_session, mock_acontext) + + from integrations.utils.integrations.mcp import list_tools + + result = await list_tools(setup, args) + + # Verify integration works end-to-end + assert isinstance(result, McpListToolsOutput) + assert len(result.tools) == 2 + assert result.tools[0].name == "tool1" + assert result.tools[0].description == "First tool" + assert result.tools[1].name == "tool2" + assert result.tools[1].input_schema is None + + +@pytest.mark.asyncio +async def test_mcp_timeout_handling(): + """ + Test that tool calls respect timeout_seconds parameter + """ + from unittest.mock import AsyncMock + + from integrations.autogen.Tools import McpSetup + + setup = McpSetup(transport="http", http_url="http://test.example/mcp") + args = McpCallToolArguments( + tool_name="slow_tool", + arguments={"data": "test"}, + timeout_seconds=5, # 5 second timeout + ) + + with patch("integrations.utils.integrations.mcp._connect_session") as mock_connect: + mock_session = AsyncMock() + mock_session.call_tool = AsyncMock( + side_effect=AsyncMock( + return_value=SimpleNamespace(content=[], structuredContent={}, isError=False) + ) + ) + + mock_acontext = AsyncMock() + mock_connect.return_value = (mock_session, mock_acontext) + + from asyncio import wait_for + + from integrations.utils.integrations.mcp import call_tool + + # Should complete without timeout + result = await wait_for(call_tool(setup, args), timeout=10) + + # Verify timeout was respected (no exception) + assert result is not None + mock_session.call_tool.assert_awaited_once() + # The asyncio.wait_for in call_tool should have used timeout_seconds=5 + + +@pytest.mark.asyncio +async def test_mcp_sse_transport_connection(): + """ + Test that SSE transport establishes connection with proper headers + """ + from integrations.autogen.Tools import McpSetup + from integrations.utils.integrations.mcp import _connect_session + + setup = McpSetup(transport="sse", http_url="http://test.example/sse") + + with patch("integrations.utils.integrations.mcp.sse_client") as mock_client: + mock_ctx = AsyncMock() + mock_read = AsyncMock() + mock_write = AsyncMock() + mock_ctx.__aenter__.return_value = (mock_read, mock_write, None) + mock_ctx.__aexit__.return_value = None + mock_client.return_value = mock_ctx + + mock_session = AsyncMock() + mock_session.initialize = AsyncMock() + mock_session.__aenter__ = AsyncMock(return_value=mock_session) + mock_session.__aexit__ = AsyncMock() + + with patch("mcp.ClientSession", return_value=mock_session): + _session, aclose = await _connect_session(setup) + + # Verify SSE-specific headers were added + call_args = mock_client.call_args + headers = call_args[1]["headers"] + + assert "Accept" in headers + assert headers["Accept"] == "text/event-stream" + assert "Cache-Control" in headers + assert headers["Cache-Control"] == "no-cache" + + # Verify session was properly initialized + mock_session.initialize.assert_awaited_once() + + # Clean up + await aclose() + + +@pytest.mark.asyncio +async def test_mcp_sse_connection_error_handling(): + """ + Test that SSE connection failures provide clear error messages + """ + from integrations.autogen.Tools import McpSetup + from integrations.utils.integrations.mcp import _connect_session + + setup = McpSetup(transport="sse", http_url="http://test.example/sse") + + with patch("integrations.utils.integrations.mcp.sse_client") as mock_client: + mock_ctx = AsyncMock() + mock_read = AsyncMock() + mock_write = AsyncMock() + mock_ctx.__aenter__.return_value = (mock_read, mock_write, None) + mock_ctx.__aexit__.return_value = None + mock_client.return_value = mock_ctx + + mock_session = AsyncMock() + # Simulate connection failure + mock_session.initialize = AsyncMock(side_effect=Exception("Connection refused")) + mock_session.__aenter__ = AsyncMock(return_value=mock_session) + mock_session.__aexit__ = AsyncMock() + + with ( + patch("mcp.ClientSession", return_value=mock_session), + pytest.raises( + RuntimeError, match=r"Failed to establish SSE connection.*Connection refused" + ), + ): + await _connect_session(setup) diff --git a/src/integrations-service/tests/test_mcp_sse_server.py b/src/integrations-service/tests/test_mcp_sse_server.py new file mode 100644 index 000000000..ad8df45e8 --- /dev/null +++ b/src/integrations-service/tests/test_mcp_sse_server.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python3 +""" +Simple MCP SSE server for testing the SSE transport implementation. + +This server implements the MCP protocol with SSE transport according to the +specification. It provides basic tools for testing purposes. + +To run this server: + python tests/test_mcp_sse_server.py + +Then connect to it using: + http://localhost:8001/sse +""" + +import asyncio +import json +import logging +import uuid +from collections.abc import AsyncIterator +from contextlib import asynccontextmanager + +from fastapi import FastAPI, Request +from fastapi.middleware.cors import CORSMiddleware +from sse_starlette.sse import EventSourceResponse + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + """Application lifespan manager.""" + logger.info("MCP SSE test server starting on http://localhost:8001") + yield + logger.info("MCP SSE test server shutting down") + + +app = FastAPI(lifespan=lifespan) + +# Add CORS middleware for testing +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Session storage for stateful operations +sessions = {} + + +async def sse_generator(request: Request) -> AsyncIterator[dict]: + """Generate SSE events for the MCP protocol.""" + session_id = str(uuid.uuid4()) + sessions[session_id] = {"initialized": False} + + # Send initial endpoint event to tell client where to POST messages + yield { + "event": "endpoint", + "data": json.dumps({ + "url": f"http://localhost:8001/messages/{session_id}", + "method": "POST", + }), + } + + # Keep connection alive with periodic pings + try: + while True: + await asyncio.sleep(30) # Send ping every 30 seconds + if await request.is_disconnected(): + break + yield { + "event": "ping", + "data": json.dumps({"timestamp": asyncio.get_event_loop().time()}), + } + finally: + # Clean up session + sessions.pop(session_id, None) + logger.info(f"SSE connection closed for session {session_id}") + + +@app.get("/sse") +async def sse_endpoint(request: Request): + """SSE endpoint for MCP protocol.""" + logger.info("New SSE connection established") + return EventSourceResponse(sse_generator(request)) + + +@app.post("/messages/{session_id}") +async def message_endpoint(session_id: str, request: Request): + """Handle MCP JSON-RPC messages.""" + body = await request.json() + logger.info(f"Received message for session {session_id}: {body}") + + method = body.get("method") + id_ = body.get("id") + + # Handle MCP protocol methods + if method == "initialize": + sessions[session_id]["initialized"] = True + return { + "jsonrpc": "2.0", + "id": id_, + "result": { + "protocolVersion": "2024-11-05", + "capabilities": {"tools": {"listChanged": False}}, + "serverInfo": {"name": "test-mcp-sse-server", "version": "1.0.0"}, + }, + } + + if method == "tools/list": + if not sessions.get(session_id, {}).get("initialized"): + return { + "jsonrpc": "2.0", + "id": id_, + "error": {"code": -32002, "message": "Session not initialized"}, + } + + return { + "jsonrpc": "2.0", + "id": id_, + "result": { + "tools": [ + { + "name": "test_echo", + "description": "Echo back the input message", + "inputSchema": { + "type": "object", + "properties": {"message": {"type": "string"}}, + "required": ["message"], + }, + }, + { + "name": "test_add", + "description": "Add two numbers", + "inputSchema": { + "type": "object", + "properties": {"a": {"type": "number"}, "b": {"type": "number"}}, + "required": ["a", "b"], + }, + }, + ] + }, + } + + if method == "tools/call": + if not sessions.get(session_id, {}).get("initialized"): + return { + "jsonrpc": "2.0", + "id": id_, + "error": {"code": -32002, "message": "Session not initialized"}, + } + + params = body.get("params", {}) + tool_name = params.get("name") + arguments = params.get("arguments", {}) + + if tool_name == "test_echo": + message = arguments.get("message", "") + return { + "jsonrpc": "2.0", + "id": id_, + "result": {"content": [{"type": "text", "text": f"Echo: {message}"}]}, + } + + if tool_name == "test_add": + a = arguments.get("a", 0) + b = arguments.get("b", 0) + return { + "jsonrpc": "2.0", + "id": id_, + "result": {"content": [{"type": "text", "text": f"Result: {a + b}"}]}, + } + + return { + "jsonrpc": "2.0", + "id": id_, + "error": {"code": -32601, "message": f"Unknown tool: {tool_name}"}, + } + + return { + "jsonrpc": "2.0", + "id": id_, + "error": {"code": -32601, "message": f"Method not found: {method}"}, + } + + +@app.get("/health") +async def health(): + """Health check endpoint.""" + return {"status": "ok", "server": "test-mcp-sse-server"} + + +if __name__ == "__main__": + import uvicorn + + uvicorn.run( + app, + host="0.0.0.0", + port=8001, + log_level="info", + ) diff --git a/integrations-service/tests/test_provider_execution.py b/src/integrations-service/tests/test_provider_execution.py similarity index 100% rename from integrations-service/tests/test_provider_execution.py rename to src/integrations-service/tests/test_provider_execution.py diff --git a/integrations-service/tests/test_providers.py b/src/integrations-service/tests/test_providers.py similarity index 100% rename from integrations-service/tests/test_providers.py rename to src/integrations-service/tests/test_providers.py diff --git a/src/integrations-service/tests/working_mcp_sse_server.py b/src/integrations-service/tests/working_mcp_sse_server.py new file mode 100644 index 000000000..f63769974 --- /dev/null +++ b/src/integrations-service/tests/working_mcp_sse_server.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python3 +""" +A working MCP SSE server that properly implements the protocol. +Based on the FastMCP framework patterns. + +To run: + python tests/working_mcp_sse_server.py + +Then connect at: + http://localhost:8080/sse +""" + +import asyncio +import logging +import os +from datetime import UTC, datetime +from typing import Any + +from mcp import Tool +from mcp.server import Server +from mcp.server.sse import sse_server + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Create MCP server instance +mcp_server = Server("working-mcp-sse") + + +@mcp_server.list_tools() +async def list_tools() -> list[Tool]: + """List available tools""" + return [ + Tool( + name="get_time", + description="Get the current time", + inputSchema={ + "type": "object", + "properties": { + "timezone": { + "type": "string", + "description": "Timezone (e.g., 'UTC', 'EST', 'PST')", + "default": "UTC", + } + }, + "required": [], + }, + ), + Tool( + name="echo", + description="Echo back a message", + inputSchema={ + "type": "object", + "properties": {"message": {"type": "string", "description": "Message to echo"}}, + "required": ["message"], + }, + ), + Tool( + name="calculate", + description="Perform basic arithmetic", + inputSchema={ + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": ["add", "subtract", "multiply", "divide"], + "description": "Operation to perform", + }, + "a": {"type": "number", "description": "First number"}, + "b": {"type": "number", "description": "Second number"}, + }, + "required": ["operation", "a", "b"], + }, + ), + Tool( + name="list_files", + description="List files in the current directory", + inputSchema={ + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Directory path (default: current)", + "default": ".", + }, + "pattern": { + "type": "string", + "description": "File pattern (e.g., '*.txt')", + "default": "*", + }, + }, + "required": [], + }, + ), + ] + + +@mcp_server.call_tool() +async def call_tool(name: str, arguments: dict[str, Any]) -> list: + """Execute a tool""" + logger.info(f"Tool called: {name} with args: {arguments}") + + if name == "get_time": + tz_name = arguments.get("timezone", "UTC") + current_time = datetime.now(tz=UTC).isoformat() + return [{"type": "text", "text": f"Current time ({tz_name}): {current_time}"}] + + if name == "echo": + message = arguments.get("message", "") + return [{"type": "text", "text": f"Echo: {message}"}] + + if name == "calculate": + operation = arguments.get("operation") + a = arguments.get("a", 0) + b = arguments.get("b", 0) + + result = 0 + if operation == "add": + result = a + b + elif operation == "subtract": + result = a - b + elif operation == "multiply": + result = a * b + elif operation == "divide": + if b != 0: + result = a / b + else: + return [{"type": "text", "text": "Error: Division by zero"}] + + return [{"type": "text", "text": f"Result of {a} {operation} {b} = {result}"}] + + if name == "list_files": + import glob + + path = arguments.get("path", ".") + pattern = arguments.get("pattern", "*") + + try: + files = glob.glob(os.path.join(path, pattern))[:20] # Limit to 20 files + file_list = "\n".join(files) if files else "No files found" + return [{"type": "text", "text": f"Files in {path}/{pattern}:\n{file_list}"}] + except Exception as e: + return [{"type": "text", "text": f"Error listing files: {e}"}] + + else: + return [{"type": "text", "text": f"Unknown tool: {name}"}] + + +async def main(): + """Start the SSE server""" + host = "0.0.0.0" + port = 8080 + + logger.info(f"Starting MCP SSE server on http://{host}:{port}/sse") + logger.info("Tools available: get_time, echo, calculate, list_files") + + # Start SSE server using MCP SDK + async with sse_server(mcp_server, host=host, port=port, endpoint="/sse"): + logger.info(f"Server running. Connect at: http://localhost:{port}/sse") + logger.info("Press Ctrl+C to stop") + + # Keep server running + try: + await asyncio.Future() # Run forever until interrupted + except KeyboardInterrupt: + logger.info("Shutting down server...") + + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + logger.info("Server stopped") diff --git a/src/integrations-service/uv.lock b/src/integrations-service/uv.lock new file mode 100644 index 000000000..c90dc2a67 --- /dev/null +++ b/src/integrations-service/uv.lock @@ -0,0 +1,2810 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" + +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/e7/d92a237d8802ca88483906c388f7c201bbe96cd80a165ffd0ac2f6a8d59f/aiohttp-3.12.15.tar.gz", hash = "sha256:4fc61385e9c98d72fcdf47e6dd81833f47b2f77c114c29cd64a361be57a763a2", size = 7823716, upload-time = "2025-07-29T05:52:32.215Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/97/77cb2450d9b35f517d6cf506256bf4f5bda3f93a66b4ad64ba7fc917899c/aiohttp-3.12.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:802d3868f5776e28f7bf69d349c26fc0efadb81676d0afa88ed00d98a26340b7", size = 702333, upload-time = "2025-07-29T05:50:46.507Z" }, + { url = "https://files.pythonhosted.org/packages/83/6d/0544e6b08b748682c30b9f65640d006e51f90763b41d7c546693bc22900d/aiohttp-3.12.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2800614cd560287be05e33a679638e586a2d7401f4ddf99e304d98878c29444", size = 476948, upload-time = "2025-07-29T05:50:48.067Z" }, + { url = "https://files.pythonhosted.org/packages/3a/1d/c8c40e611e5094330284b1aea8a4b02ca0858f8458614fa35754cab42b9c/aiohttp-3.12.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8466151554b593909d30a0a125d638b4e5f3836e5aecde85b66b80ded1cb5b0d", size = 469787, upload-time = "2025-07-29T05:50:49.669Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/b76438e70319796bfff717f325d97ce2e9310f752a267bfdf5192ac6082b/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e5a495cb1be69dae4b08f35a6c4579c539e9b5706f606632102c0f855bcba7c", size = 1716590, upload-time = "2025-07-29T05:50:51.368Z" }, + { url = "https://files.pythonhosted.org/packages/79/b1/60370d70cdf8b269ee1444b390cbd72ce514f0d1cd1a715821c784d272c9/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6404dfc8cdde35c69aaa489bb3542fb86ef215fc70277c892be8af540e5e21c0", size = 1699241, upload-time = "2025-07-29T05:50:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/a3/2b/4968a7b8792437ebc12186db31523f541943e99bda8f30335c482bea6879/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ead1c00f8521a5c9070fcb88f02967b1d8a0544e6d85c253f6968b785e1a2ab", size = 1754335, upload-time = "2025-07-29T05:50:55.394Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c1/49524ed553f9a0bec1a11fac09e790f49ff669bcd14164f9fab608831c4d/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6990ef617f14450bc6b34941dba4f12d5613cbf4e33805932f853fbd1cf18bfb", size = 1800491, upload-time = "2025-07-29T05:50:57.202Z" }, + { url = "https://files.pythonhosted.org/packages/de/5e/3bf5acea47a96a28c121b167f5ef659cf71208b19e52a88cdfa5c37f1fcc/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd736ed420f4db2b8148b52b46b88ed038d0354255f9a73196b7bbce3ea97545", size = 1719929, upload-time = "2025-07-29T05:50:59.192Z" }, + { url = "https://files.pythonhosted.org/packages/39/94/8ae30b806835bcd1cba799ba35347dee6961a11bd507db634516210e91d8/aiohttp-3.12.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c5092ce14361a73086b90c6efb3948ffa5be2f5b6fbcf52e8d8c8b8848bb97c", size = 1635733, upload-time = "2025-07-29T05:51:01.394Z" }, + { url = "https://files.pythonhosted.org/packages/7a/46/06cdef71dd03acd9da7f51ab3a9107318aee12ad38d273f654e4f981583a/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aaa2234bb60c4dbf82893e934d8ee8dea30446f0647e024074237a56a08c01bd", size = 1696790, upload-time = "2025-07-29T05:51:03.657Z" }, + { url = "https://files.pythonhosted.org/packages/02/90/6b4cfaaf92ed98d0ec4d173e78b99b4b1a7551250be8937d9d67ecb356b4/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6d86a2fbdd14192e2f234a92d3b494dd4457e683ba07e5905a0b3ee25389ac9f", size = 1718245, upload-time = "2025-07-29T05:51:05.911Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/2593751670fa06f080a846f37f112cbe6f873ba510d070136a6ed46117c6/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a041e7e2612041a6ddf1c6a33b883be6a421247c7afd47e885969ee4cc58bd8d", size = 1658899, upload-time = "2025-07-29T05:51:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/8f/28/c15bacbdb8b8eb5bf39b10680d129ea7410b859e379b03190f02fa104ffd/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5015082477abeafad7203757ae44299a610e89ee82a1503e3d4184e6bafdd519", size = 1738459, upload-time = "2025-07-29T05:51:09.56Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/c269cbc4faa01fb10f143b1670633a8ddd5b2e1ffd0548f7aa49cb5c70e2/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:56822ff5ddfd1b745534e658faba944012346184fbfe732e0d6134b744516eea", size = 1766434, upload-time = "2025-07-29T05:51:11.423Z" }, + { url = "https://files.pythonhosted.org/packages/52/b0/4ff3abd81aa7d929b27d2e1403722a65fc87b763e3a97b3a2a494bfc63bc/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2acbbfff69019d9014508c4ba0401822e8bae5a5fdc3b6814285b71231b60f3", size = 1726045, upload-time = "2025-07-29T05:51:13.689Z" }, + { url = "https://files.pythonhosted.org/packages/71/16/949225a6a2dd6efcbd855fbd90cf476052e648fb011aa538e3b15b89a57a/aiohttp-3.12.15-cp312-cp312-win32.whl", hash = "sha256:d849b0901b50f2185874b9a232f38e26b9b3d4810095a7572eacea939132d4e1", size = 423591, upload-time = "2025-07-29T05:51:15.452Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d8/fa65d2a349fe938b76d309db1a56a75c4fb8cc7b17a398b698488a939903/aiohttp-3.12.15-cp312-cp312-win_amd64.whl", hash = "sha256:b390ef5f62bb508a9d67cb3bba9b8356e23b3996da7062f1a57ce1a79d2b3d34", size = 450266, upload-time = "2025-07-29T05:51:17.239Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "aiosmtplib" +version = "4.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/e1/cc58e0be242f0b410707e001ed22c689435964fcaab42108887426e44fff/aiosmtplib-4.0.2.tar.gz", hash = "sha256:f0b4933e7270a8be2b588761e5b12b7334c11890ee91987c2fb057e72f566da6", size = 61052, upload-time = "2025-08-25T02:39:07.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/2f/db9414bbeacee48ab0c7421a0319b361b7c15b5c3feebcd38684f5d5f849/aiosmtplib-4.0.2-py3-none-any.whl", hash = "sha256:72491f96e6de035c28d29870186782eccb2f651db9c5f8a32c9db689327f5742", size = 27048, upload-time = "2025-08-25T02:39:06.089Z" }, +] + +[[package]] +name = "algoliasearch" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "async-timeout" }, + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/35/597663bf6124f4b372faa8924f171b0bef2cd54c440931e2e95012a6e166/algoliasearch-4.26.0.tar.gz", hash = "sha256:456816c774a482b6ca15d432e0ea2c9997096f9b95f97a2c628825ab7fee92f0", size = 370361, upload-time = "2025-09-03T10:57:09.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/86/4e03d90fcaf74030ec8ec2925d2792735a9f9b7a6d9b07e8bc607b24309f/algoliasearch-4.26.0-py3-none-any.whl", hash = "sha256:aeb00d0aaf9bfddd7f7693edf19241d2137223188c79c9ee6dae8b65779a6929", size = 979219, upload-time = "2025-09-03T10:57:07.721Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/b4/636b3b65173d3ce9a38ef5f0522789614e590dab6a8d505340a4efe4c567/anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6", size = 213252, upload-time = "2025-08-04T08:54:26.451Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/12/e5e0282d673bb9746bacfb6e2dba8719989d3660cdb2ea79aee9a9651afb/anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1", size = 107213, upload-time = "2025-08-04T08:54:24.882Z" }, +] + +[[package]] +name = "argcomplete" +version = "3.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/0f/861e168fc813c56a78b35f3c30d91c6757d1fd185af1110f1aec784b35d0/argcomplete-3.6.2.tar.gz", hash = "sha256:d0519b1bc867f5f4f4713c41ad0aba73a4a5f007449716b16f385f2166dc6adf", size = 73403, upload-time = "2025-04-03T04:57:03.52Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/da/e42d7a9d8dd33fa775f467e4028a47936da2f01e4b0e561f9ba0d74cb0ca/argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591", size = 43708, upload-time = "2025-04-03T04:57:01.591Z" }, +] + +[[package]] +name = "arxiv" +version = "2.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "feedparser" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/59/fe41f54bdfed776c2e9bcd6289e4c71349eb938241d89b4c97d0f33e8013/arxiv-2.1.3.tar.gz", hash = "sha256:32365221994d2cf05657c1fadf63a26efc8ccdec18590281ee03515bfef8bc4e", size = 16747, upload-time = "2024-06-25T02:56:20.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/7b/7bf42178d227b26d3daf94cdd22a72a4ed5bf235548c4f5aea49c51c6458/arxiv-2.1.3-py3-none-any.whl", hash = "sha256:6f43673ab770a9e848d7d4fc1894824df55edeac3c3572ea280c9ba2e3c0f39f", size = 11478, upload-time = "2024-06-25T02:56:17.032Z" }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "beartype" +version = "0.19.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/e1/00515b97afa3993b4a314e4bc168fbde0917fd5845435cb6f16a19770746/beartype-0.19.0.tar.gz", hash = "sha256:de42dfc1ba5c3710fde6c3002e3bd2cad236ed4d2aabe876345ab0b4234a6573", size = 1294480, upload-time = "2024-09-26T07:06:17.308Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/69/f6db6e4cb2fe2f887dead40b76caa91af4844cb647dd2c7223bb010aa416/beartype-0.19.0-py3-none-any.whl", hash = "sha256:33b2694eda0daf052eb2aff623ed9a8a586703bbf0a90bbc475a83bbf427f699", size = 1039760, upload-time = "2024-09-26T07:06:13.546Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/2e/3e5079847e653b1f6dc647aa24549d68c6addb4c595cc0d902d1b19308ad/beautifulsoup4-4.13.5.tar.gz", hash = "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", size = 622954, upload-time = "2025-08-24T14:06:13.168Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/eb/f4151e0c7377a6e08a38108609ba5cede57986802757848688aeedd1b9e8/beautifulsoup4-4.13.5-py3-none-any.whl", hash = "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a", size = 105113, upload-time = "2025-08-24T14:06:14.884Z" }, +] + +[[package]] +name = "black" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" }, +] + +[[package]] +name = "browserbase" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/df/17ac5e1116ab8f1264c6a9718f935358d20bdcd8ae0e3d1f18fd580cd871/browserbase-1.4.0.tar.gz", hash = "sha256:e2ed36f513c8630b94b826042c4bb9f497c333f3bd28e5b76cb708c65b4318a0", size = 122103, upload-time = "2025-05-16T20:50:40.802Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/13/4191423982a2ec69dc8c10a1c4b94a50a0861f49be81ffc19621b75841bc/browserbase-1.4.0-py3-none-any.whl", hash = "sha256:ea9f1fb4a88921975b8b9606835c441a59d8ce82ce00313a6d48bbe8e30f79fb", size = 98044, upload-time = "2025-05-16T20:50:39.331Z" }, +] + +[[package]] +name = "cachetools" +version = "5.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, +] + +[[package]] +name = "certifi" +version = "2025.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "cloudinary" +version = "1.41.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "six" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/ca/2e47a67a08ef44860d0c69d4b4126c281333979c169645f4ebb08fa6631a/cloudinary-1.41.0.tar.gz", hash = "sha256:e189739a796a7d2ad15c19971741d33a9300816b16c0282b4b14ccf1dd2948c0", size = 177501, upload-time = "2024-08-01T21:15:41.328Z" } + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.10.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/14/70/025b179c993f019105b79575ac6edb5e084fb0f0e63f15cdebef4e454fb5/coverage-7.10.6.tar.gz", hash = "sha256:f644a3ae5933a552a29dbb9aa2f90c677a875f80ebea028e5a52a4f429044b90", size = 823736, upload-time = "2025-08-29T15:35:16.668Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/06/263f3305c97ad78aab066d116b52250dd316e74fcc20c197b61e07eb391a/coverage-7.10.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5b2dd6059938063a2c9fee1af729d4f2af28fd1a545e9b7652861f0d752ebcea", size = 217324, upload-time = "2025-08-29T15:33:29.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/60/1e1ded9a4fe80d843d7d53b3e395c1db3ff32d6c301e501f393b2e6c1c1f/coverage-7.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:388d80e56191bf846c485c14ae2bc8898aa3124d9d35903fef7d907780477634", size = 217560, upload-time = "2025-08-29T15:33:30.748Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/52136173c14e26dfed8b106ed725811bb53c30b896d04d28d74cb64318b3/coverage-7.10.6-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:90cb5b1a4670662719591aa92d0095bb41714970c0b065b02a2610172dbf0af6", size = 249053, upload-time = "2025-08-29T15:33:32.041Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1d/ae25a7dc58fcce8b172d42ffe5313fc267afe61c97fa872b80ee72d9515a/coverage-7.10.6-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:961834e2f2b863a0e14260a9a273aff07ff7818ab6e66d2addf5628590c628f9", size = 251802, upload-time = "2025-08-29T15:33:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/f5/7a/1f561d47743710fe996957ed7c124b421320f150f1d38523d8d9102d3e2a/coverage-7.10.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf9a19f5012dab774628491659646335b1928cfc931bf8d97b0d5918dd58033c", size = 252935, upload-time = "2025-08-29T15:33:34.909Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ad/8b97cd5d28aecdfde792dcbf646bac141167a5cacae2cd775998b45fabb5/coverage-7.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99c4283e2a0e147b9c9cc6bc9c96124de9419d6044837e9799763a0e29a7321a", size = 250855, upload-time = "2025-08-29T15:33:36.922Z" }, + { url = "https://files.pythonhosted.org/packages/33/6a/95c32b558d9a61858ff9d79580d3877df3eb5bc9eed0941b1f187c89e143/coverage-7.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:282b1b20f45df57cc508c1e033403f02283adfb67d4c9c35a90281d81e5c52c5", size = 248974, upload-time = "2025-08-29T15:33:38.175Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9c/8ce95dee640a38e760d5b747c10913e7a06554704d60b41e73fdea6a1ffd/coverage-7.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cdbe264f11afd69841bd8c0d83ca10b5b32853263ee62e6ac6a0ab63895f972", size = 250409, upload-time = "2025-08-29T15:33:39.447Z" }, + { url = "https://files.pythonhosted.org/packages/04/12/7a55b0bdde78a98e2eb2356771fd2dcddb96579e8342bb52aa5bc52e96f0/coverage-7.10.6-cp312-cp312-win32.whl", hash = "sha256:a517feaf3a0a3eca1ee985d8373135cfdedfbba3882a5eab4362bda7c7cf518d", size = 219724, upload-time = "2025-08-29T15:33:41.172Z" }, + { url = "https://files.pythonhosted.org/packages/36/4a/32b185b8b8e327802c9efce3d3108d2fe2d9d31f153a0f7ecfd59c773705/coverage-7.10.6-cp312-cp312-win_amd64.whl", hash = "sha256:856986eadf41f52b214176d894a7de05331117f6035a28ac0016c0f63d887629", size = 220536, upload-time = "2025-08-29T15:33:42.524Z" }, + { url = "https://files.pythonhosted.org/packages/08/3a/d5d8dc703e4998038c3099eaf77adddb00536a3cec08c8dcd556a36a3eb4/coverage-7.10.6-cp312-cp312-win_arm64.whl", hash = "sha256:acf36b8268785aad739443fa2780c16260ee3fa09d12b3a70f772ef100939d80", size = 219171, upload-time = "2025-08-29T15:33:43.974Z" }, + { url = "https://files.pythonhosted.org/packages/44/0c/50db5379b615854b5cf89146f8f5bd1d5a9693d7f3a987e269693521c404/coverage-7.10.6-py3-none-any.whl", hash = "sha256:92c4ecf6bf11b2e85fd4d8204814dc26e6a19f0c9d938c207c5cb0eadfcabbe3", size = 208986, upload-time = "2025-08-29T15:35:14.506Z" }, +] + +[[package]] +name = "cryptography" +version = "45.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/35/c495bffc2056f2dadb32434f1feedd79abde2a7f8363e1974afa9c33c7e2/cryptography-45.0.7.tar.gz", hash = "sha256:4b1654dfc64ea479c242508eb8c724044f1e964a47d1d1cacc5132292d851971", size = 744980, upload-time = "2025-09-01T11:15:03.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/91/925c0ac74362172ae4516000fe877912e33b5983df735ff290c653de4913/cryptography-45.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:3be4f21c6245930688bd9e162829480de027f8bf962ede33d4f8ba7d67a00cee", size = 7041105, upload-time = "2025-09-01T11:13:59.684Z" }, + { url = "https://files.pythonhosted.org/packages/fc/63/43641c5acce3a6105cf8bd5baeceeb1846bb63067d26dae3e5db59f1513a/cryptography-45.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:67285f8a611b0ebc0857ced2081e30302909f571a46bfa7a3cc0ad303fe015c6", size = 4205799, upload-time = "2025-09-01T11:14:02.517Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/c238dd9107f10bfde09a4d1c52fd38828b1aa353ced11f358b5dd2507d24/cryptography-45.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:577470e39e60a6cd7780793202e63536026d9b8641de011ed9d8174da9ca5339", size = 4430504, upload-time = "2025-09-01T11:14:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/62/62/24203e7cbcc9bd7c94739428cd30680b18ae6b18377ae66075c8e4771b1b/cryptography-45.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4bd3e5c4b9682bc112d634f2c6ccc6736ed3635fc3319ac2bb11d768cc5a00d8", size = 4209542, upload-time = "2025-09-01T11:14:06.309Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e3/e7de4771a08620eef2389b86cd87a2c50326827dea5528feb70595439ce4/cryptography-45.0.7-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:465ccac9d70115cd4de7186e60cfe989de73f7bb23e8a7aa45af18f7412e75bf", size = 3889244, upload-time = "2025-09-01T11:14:08.152Z" }, + { url = "https://files.pythonhosted.org/packages/96/b8/bca71059e79a0bb2f8e4ec61d9c205fbe97876318566cde3b5092529faa9/cryptography-45.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:16ede8a4f7929b4b7ff3642eba2bf79aa1d71f24ab6ee443935c0d269b6bc513", size = 4461975, upload-time = "2025-09-01T11:14:09.755Z" }, + { url = "https://files.pythonhosted.org/packages/58/67/3f5b26937fe1218c40e95ef4ff8d23c8dc05aa950d54200cc7ea5fb58d28/cryptography-45.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8978132287a9d3ad6b54fcd1e08548033cc09dc6aacacb6c004c73c3eb5d3ac3", size = 4209082, upload-time = "2025-09-01T11:14:11.229Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e4/b3e68a4ac363406a56cf7b741eeb80d05284d8c60ee1a55cdc7587e2a553/cryptography-45.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b6a0e535baec27b528cb07a119f321ac024592388c5681a5ced167ae98e9fff3", size = 4460397, upload-time = "2025-09-01T11:14:12.924Z" }, + { url = "https://files.pythonhosted.org/packages/22/49/2c93f3cd4e3efc8cb22b02678c1fad691cff9dd71bb889e030d100acbfe0/cryptography-45.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:a24ee598d10befaec178efdff6054bc4d7e883f615bfbcd08126a0f4931c83a6", size = 4337244, upload-time = "2025-09-01T11:14:14.431Z" }, + { url = "https://files.pythonhosted.org/packages/04/19/030f400de0bccccc09aa262706d90f2ec23d56bc4eb4f4e8268d0ddf3fb8/cryptography-45.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:fa26fa54c0a9384c27fcdc905a2fb7d60ac6e47d14bc2692145f2b3b1e2cfdbd", size = 4568862, upload-time = "2025-09-01T11:14:16.185Z" }, + { url = "https://files.pythonhosted.org/packages/29/56/3034a3a353efa65116fa20eb3c990a8c9f0d3db4085429040a7eef9ada5f/cryptography-45.0.7-cp311-abi3-win32.whl", hash = "sha256:bef32a5e327bd8e5af915d3416ffefdbe65ed975b646b3805be81b23580b57b8", size = 2936578, upload-time = "2025-09-01T11:14:17.638Z" }, + { url = "https://files.pythonhosted.org/packages/b3/61/0ab90f421c6194705a99d0fa9f6ee2045d916e4455fdbb095a9c2c9a520f/cryptography-45.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:3808e6b2e5f0b46d981c24d79648e5c25c35e59902ea4391a0dcb3e667bf7443", size = 3405400, upload-time = "2025-09-01T11:14:18.958Z" }, + { url = "https://files.pythonhosted.org/packages/63/e8/c436233ddf19c5f15b25ace33979a9dd2e7aa1a59209a0ee8554179f1cc0/cryptography-45.0.7-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bfb4c801f65dd61cedfc61a83732327fafbac55a47282e6f26f073ca7a41c3b2", size = 7021824, upload-time = "2025-09-01T11:14:20.954Z" }, + { url = "https://files.pythonhosted.org/packages/bc/4c/8f57f2500d0ccd2675c5d0cc462095adf3faa8c52294ba085c036befb901/cryptography-45.0.7-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:81823935e2f8d476707e85a78a405953a03ef7b7b4f55f93f7c2d9680e5e0691", size = 4202233, upload-time = "2025-09-01T11:14:22.454Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ac/59b7790b4ccaed739fc44775ce4645c9b8ce54cbec53edf16c74fd80cb2b/cryptography-45.0.7-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3994c809c17fc570c2af12c9b840d7cea85a9fd3e5c0e0491f4fa3c029216d59", size = 4423075, upload-time = "2025-09-01T11:14:24.287Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/d4f07ea21434bf891faa088a6ac15d6d98093a66e75e30ad08e88aa2b9ba/cryptography-45.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dad43797959a74103cb59c5dac71409f9c27d34c8a05921341fb64ea8ccb1dd4", size = 4204517, upload-time = "2025-09-01T11:14:25.679Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ac/924a723299848b4c741c1059752c7cfe09473b6fd77d2920398fc26bfb53/cryptography-45.0.7-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ce7a453385e4c4693985b4a4a3533e041558851eae061a58a5405363b098fcd3", size = 3882893, upload-time = "2025-09-01T11:14:27.1Z" }, + { url = "https://files.pythonhosted.org/packages/83/dc/4dab2ff0a871cc2d81d3ae6d780991c0192b259c35e4d83fe1de18b20c70/cryptography-45.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b04f85ac3a90c227b6e5890acb0edbaf3140938dbecf07bff618bf3638578cf1", size = 4450132, upload-time = "2025-09-01T11:14:28.58Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/b2882b65db8fc944585d7fb00d67cf84a9cef4e77d9ba8f69082e911d0de/cryptography-45.0.7-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:48c41a44ef8b8c2e80ca4527ee81daa4c527df3ecbc9423c41a420a9559d0e27", size = 4204086, upload-time = "2025-09-01T11:14:30.572Z" }, + { url = "https://files.pythonhosted.org/packages/5d/fa/1d5745d878048699b8eb87c984d4ccc5da4f5008dfd3ad7a94040caca23a/cryptography-45.0.7-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f3df7b3d0f91b88b2106031fd995802a2e9ae13e02c36c1fc075b43f420f3a17", size = 4449383, upload-time = "2025-09-01T11:14:32.046Z" }, + { url = "https://files.pythonhosted.org/packages/36/8b/fc61f87931bc030598e1876c45b936867bb72777eac693e905ab89832670/cryptography-45.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dd342f085542f6eb894ca00ef70236ea46070c8a13824c6bde0dfdcd36065b9b", size = 4332186, upload-time = "2025-09-01T11:14:33.95Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/09700ddad7443ccb11d674efdbe9a832b4455dc1f16566d9bd3834922ce5/cryptography-45.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1993a1bb7e4eccfb922b6cd414f072e08ff5816702a0bdb8941c247a6b1b287c", size = 4561639, upload-time = "2025-09-01T11:14:35.343Z" }, + { url = "https://files.pythonhosted.org/packages/71/ed/8f4c1337e9d3b94d8e50ae0b08ad0304a5709d483bfcadfcc77a23dbcb52/cryptography-45.0.7-cp37-abi3-win32.whl", hash = "sha256:18fcf70f243fe07252dcb1b268a687f2358025ce32f9f88028ca5c364b123ef5", size = 2926552, upload-time = "2025-09-01T11:14:36.929Z" }, + { url = "https://files.pythonhosted.org/packages/bc/ff/026513ecad58dacd45d1d24ebe52b852165a26e287177de1d545325c0c25/cryptography-45.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:7285a89df4900ed3bfaad5679b1e668cb4b38a8de1ccbfc84b05f34512da0a90", size = 3392742, upload-time = "2025-09-01T11:14:38.368Z" }, +] + +[[package]] +name = "dataclasses-json" +version = "0.6.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, + { name = "typing-inspect" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/a4/f71d9cf3a5ac257c993b5ca3f93df5f7fb395c725e7f1e6479d2514173c3/dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0", size = 32227, upload-time = "2024-06-09T16:20:19.103Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686, upload-time = "2024-06-09T16:20:16.715Z" }, +] + +[[package]] +name = "datamodel-code-generator" +version = "0.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argcomplete" }, + { name = "black" }, + { name = "genson" }, + { name = "inflect" }, + { name = "isort" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/a0/3f81c5c0c31d6f25f459e370e04553810f096e5dbd3cf7eda2a67709cd78/datamodel_code_generator-0.33.0.tar.gz", hash = "sha256:7635ef788201d69bd3e98ba88ce6afe479400dc2737fe9d5e21f87408f352c08", size = 458695, upload-time = "2025-08-14T13:50:36.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/d0/acd7a19dad4dc4118d2b6ba06df9a4a3725729e91fa3f2c63a765d4e7d44/datamodel_code_generator-0.33.0-py3-none-any.whl", hash = "sha256:e229264aa612b2d5bb4901bcd6c520a799ae0d5c19262577a0f876eb48afaaa3", size = 121148, upload-time = "2025-08-14T13:50:35.306Z" }, +] + +[[package]] +name = "deprecated" +version = "1.2.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744, upload-time = "2025-01-27T10:46:25.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload-time = "2025-01-27T10:46:09.186Z" }, +] + +[[package]] +name = "dirtyjson" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/04/d24f6e645ad82ba0ef092fa17d9ef7a21953781663648a01c9371d9e8e98/dirtyjson-1.0.8.tar.gz", hash = "sha256:90ca4a18f3ff30ce849d100dcf4a003953c79d3a2348ef056f1d9c22231a25fd", size = 30782, upload-time = "2022-11-28T23:32:33.319Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/69/1bcf70f81de1b4a9f21b3a62ec0c83bdff991c88d6cc2267d02408457e88/dirtyjson-1.0.8-py3-none-any.whl", hash = "sha256:125e27248435a58acace26d5c2c4c11a1c0de0a9c5124c5a94ba78e517d74f53", size = 25197, upload-time = "2022-11-28T23:32:31.219Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, +] + +[[package]] +name = "duckduckgo-search" +version = "6.2.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "primp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/2e/fe93c096b2b2bfcbd0a4f3a1de47d9a1c4b0dd4c7573d9f6c2b5c80ce6dc/duckduckgo_search-6.2.13.tar.gz", hash = "sha256:f89a9782f0f47d18c01a761c83453d0aef7a4335d1b6466fc47709652d5ca791", size = 33075, upload-time = "2024-09-23T19:20:38.499Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/07/c0a6d0b1192790364ee9cf655c72c47ad13d68971570f19401f220cac50d/duckduckgo_search-6.2.13-py3-none-any.whl", hash = "sha256:a6618fb2744fa1d081b1bf2e47ef8051de993276a15c20f4e879a150726472de", size = 27468, upload-time = "2024-09-23T19:20:37.064Z" }, +] + +[[package]] +name = "email-validator" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload-time = "2025-08-26T13:09:06.831Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" }, +] + +[[package]] +name = "environs" +version = "11.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/77/08/2b7d9cacf2b27482c9218ee6762336aa47bdb9d07ee26a136d072a328297/environs-11.2.1.tar.gz", hash = "sha256:e068ae3174cef52ba4b95ead22e639056a02465f616e62323e04ae08e86a75a4", size = 27485, upload-time = "2024-11-20T17:38:40.795Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/21/1e0d8de234e9d0c675ea8fd50f9e7ad66fae32c207bc982f1d14f7c0835b/environs-11.2.1-py3-none-any.whl", hash = "sha256:9d2080cf25807a26fc0d4301e2d7b62c64fbf547540f21e3a30cc02bc5fbe948", size = 12923, upload-time = "2024-11-20T17:38:39.013Z" }, +] + +[[package]] +name = "fastapi" +version = "0.115.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/53/8c38a874844a8b0fa10dd8adf3836ac154082cf88d3f22b544e9ceea0a15/fastapi-0.115.14.tar.gz", hash = "sha256:b1de15cdc1c499a4da47914db35d0e4ef8f1ce62b624e94e0e5824421df99739", size = 296263, upload-time = "2025-06-26T15:29:08.21Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/50/b1222562c6d270fea83e9c9075b8e8600b8479150a18e4516a6138b980d1/fastapi-0.115.14-py3-none-any.whl", hash = "sha256:6c0c8bf9420bd58f565e585036d971872472b4f7d3f6c73b698e10cffdefb3ca", size = 95514, upload-time = "2025-06-26T15:29:06.49Z" }, +] + +[[package]] +name = "feedparser" +version = "6.0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sgmllib3k" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/aa/7af346ebeb42a76bf108027fe7f3328bb4e57a3a96e53e21fd9ef9dd6dd0/feedparser-6.0.11.tar.gz", hash = "sha256:c9d0407b64c6f2a065d0ebb292c2b35c01050cc0dc33757461aaabdc4c4184d5", size = 286197, upload-time = "2023-12-10T16:03:20.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/d4/8c31aad9cc18f451c49f7f9cfb5799dadffc88177f7917bc90a66459b1d7/feedparser-6.0.11-py3-none-any.whl", hash = "sha256:0be7ee7b395572b19ebeb1d6aafb0028dee11169f1c934e0ed67d54992f4ad45", size = 81343, upload-time = "2023-12-10T16:03:19.484Z" }, +] + +[[package]] +name = "filetype" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020, upload-time = "2022-11-02T17:34:04.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970, upload-time = "2022-11-02T17:34:01.425Z" }, +] + +[[package]] +name = "fire" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "termcolor" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/1b/84c63f592ecdfbb3d77d22a8d93c9b92791e4fa35677ad71a7d6449100f8/fire-0.6.0.tar.gz", hash = "sha256:54ec5b996ecdd3c0309c800324a0703d6da512241bc73b553db959d98de0aa66", size = 88439, upload-time = "2024-03-11T19:52:00.293Z" } + +[[package]] +name = "flask" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "markupsafe" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, + { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, + { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, + { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, + { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, + { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, + { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/e0/bab50af11c2d75c9c4a2a26a5254573c0bd97cea152254401510950486fa/fsspec-2025.9.0.tar.gz", hash = "sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19", size = 304847, upload-time = "2025-09-02T19:10:49.215Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/71/70db47e4f6ce3e5c37a607355f80da8860a33226be640226ac52cb05ef2e/fsspec-2025.9.0-py3-none-any.whl", hash = "sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7", size = 199289, upload-time = "2025-09-02T19:10:47.708Z" }, +] + +[[package]] +name = "genson" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/cf/2303c8ad276dcf5ee2ad6cf69c4338fd86ef0f471a5207b069adf7a393cf/genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37", size = 34919, upload-time = "2024-05-15T22:08:49.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/5c/e226de133afd8bb267ec27eead9ae3d784b95b39a287ed404caab39a5f50/genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7", size = 21470, upload-time = "2024-05-15T22:08:47.056Z" }, +] + +[[package]] +name = "geojson" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/8d/c42d3fe6f9b5e5bd6a55d9f03813d674d65d853cb12e6bc56f154a2ceca0/geojson-2.5.0.tar.gz", hash = "sha256:6e4bb7ace4226a45d9c8c8b1348b3fc43540658359f93c3f7e03efa9f15f658a", size = 23086, upload-time = "2019-08-09T20:32:37.448Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/8d/9e28e9af95739e6d2d2f8d4bef0b3432da40b7c3588fbad4298c1be09e48/geojson-2.5.0-py2.py3-none-any.whl", hash = "sha256:ccbd13368dd728f4e4f13ffe6aaf725b6e802c692ba0dde628be475040c534ba", size = 14839, upload-time = "2019-08-09T20:32:15.536Z" }, +] + +[[package]] +name = "google-api-core" +version = "2.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/21/e9d043e88222317afdbdb567165fdbc3b0aad90064c7e0c9eb0ad9955ad8/google_api_core-2.25.1.tar.gz", hash = "sha256:d2aaa0b13c78c61cb3f4282c464c046e45fbd75755683c9c525e6e8f7ed0a5e8", size = 165443, upload-time = "2025-06-12T20:52:20.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/4b/ead00905132820b623732b175d66354e9d3e69fcf2a5dcdab780664e7896/google_api_core-2.25.1-py3-none-any.whl", hash = "sha256:8a2a56c1fef82987a524371f99f3bd0143702fecc670c72e600c1cda6bf8dbb7", size = 160807, upload-time = "2025-06-12T20:52:19.334Z" }, +] + +[[package]] +name = "google-api-python-client" +version = "2.181.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-auth-httplib2" }, + { name = "httplib2" }, + { name = "uritemplate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/96/5561a5d7e37781c880ca90975a70d61940ec1648b2b12e991311a9e39f83/google_api_python_client-2.181.0.tar.gz", hash = "sha256:d7060962a274a16a2c6f8fb4b1569324dbff11bfbca8eb050b88ead1dd32261c", size = 13545438, upload-time = "2025-09-02T15:41:33.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/03/72b7acf374a2cde9255df161686f00d8370117ac33e2bdd8fdadfe30272a/google_api_python_client-2.181.0-py3-none-any.whl", hash = "sha256:348730e3ece46434a01415f3d516d7a0885c8e624ce799f50f2d4d86c2475fb7", size = 14111793, upload-time = "2025-09-02T15:41:31.322Z" }, +] + +[[package]] +name = "google-auth" +version = "2.40.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/9b/e92ef23b84fa10a64ce4831390b7a4c2e53c0132568d99d4ae61d04c8855/google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77", size = 281029, upload-time = "2025-06-04T18:04:57.577Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/63/b19553b658a1692443c62bd07e5868adaa0ad746a0751ba62c59568cd45b/google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca", size = 216137, upload-time = "2025-06-04T18:04:55.573Z" }, +] + +[[package]] +name = "google-auth-httplib2" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "httplib2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/be/217a598a818567b28e859ff087f347475c807a5649296fb5a817c58dacef/google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05", size = 10842, upload-time = "2023-12-12T17:40:30.722Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/8a/fe34d2f3f9470a27b01c9e76226965863f153d5fbe276f83608562e49c04/google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d", size = 9253, upload-time = "2023-12-12T17:40:13.055Z" }, +] + +[[package]] +name = "google-auth-oauthlib" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/87/e10bf24f7bcffc1421b84d6f9c3377c30ec305d082cd737ddaa6d8f77f7c/google_auth_oauthlib-1.2.2.tar.gz", hash = "sha256:11046fb8d3348b296302dd939ace8af0a724042e8029c1b872d87fabc9f41684", size = 20955, upload-time = "2025-04-22T16:40:29.172Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/84/40ee070be95771acd2f4418981edb834979424565c3eec3cd88b6aa09d24/google_auth_oauthlib-1.2.2-py3-none-any.whl", hash = "sha256:fd619506f4b3908b5df17b65f39ca8d66ea56986e5472eb5978fd8f3786f00a2", size = 19072, upload-time = "2025-04-22T16:40:28.174Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/24/33db22342cf4a2ea27c9955e6713140fedd51e8b141b5ce5260897020f1a/googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257", size = 145903, upload-time = "2025-04-14T10:17:02.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530, upload-time = "2025-04-14T10:17:01.271Z" }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022, upload-time = "2024-09-20T18:21:04.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260, upload-time = "2024-09-20T17:08:07.301Z" }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064, upload-time = "2024-09-20T17:36:47.628Z" }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420, upload-time = "2024-09-20T17:39:21.258Z" }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035, upload-time = "2024-09-20T17:44:26.501Z" }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105, upload-time = "2024-09-20T17:08:42.048Z" }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077, upload-time = "2024-09-20T17:08:33.707Z" }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975, upload-time = "2024-09-20T17:44:15.989Z" }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955, upload-time = "2024-09-20T17:09:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655, upload-time = "2024-09-20T17:21:22.427Z" }, +] + +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httplib2" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/75/1d10a90b3411f707c10c226fa918cf4f5e0578113caa223369130f702b6b/httplib2-0.30.0.tar.gz", hash = "sha256:d5b23c11fcf8e57e00ff91b7008656af0f6242c8886fd97065c97509e4e548c5", size = 249764, upload-time = "2025-08-29T18:58:36.497Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/7c/f35bd530a35654ef3ff81f5e102572b8b620361659e090beb85a73a3bcc9/httplib2-0.30.0-py3-none-any.whl", hash = "sha256:d10443a2bdfe0ea5dbb17e016726146d48b574208dafd41e854cf34e7d78842c", size = 91101, upload-time = "2025-08-29T18:58:33.224Z" }, +] + +[[package]] +name = "httpx" +version = "0.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, + { name = "sniffio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189, upload-time = "2024-08-27T12:54:01.334Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395, upload-time = "2024-08-27T12:53:59.653Z" }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/fa/66bd985dd0b7c109a3bcb89272ee0bfb7e2b4d06309ad7b38ff866734b2a/httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e", size = 12998, upload-time = "2025-06-24T13:21:05.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054, upload-time = "2025-06-24T13:21:04.772Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "immutabledict" +version = "4.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/c5/4240186fbabc58fba41bbe17c5f0cd37ffd4c0b85a5029ab104f946df175/immutabledict-4.2.1.tar.gz", hash = "sha256:d91017248981c72eb66c8ff9834e99c2f53562346f23e7f51e7a5ebcf66a3bcc", size = 6228, upload-time = "2024-11-17T13:25:21.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/56/25ca7b848164b7d93dbd5fc97dd7751700c93e324fe854afbeb562ee2f98/immutabledict-4.2.1-py3-none-any.whl", hash = "sha256:c56a26ced38c236f79e74af3ccce53772827cef5c3bce7cab33ff2060f756373", size = 4700, upload-time = "2024-11-17T13:25:19.52Z" }, +] + +[[package]] +name = "importlab" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "networkx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/22/ab9494dccf1e237276f98364d53673bc0ab97ebe5cb671e960f18710457d/importlab-0.8.1.tar.gz", hash = "sha256:b3893853b1f6eb027da509c3b40e6787e95dd66b4b66f1b3613aad77556e1465", size = 28856, upload-time = "2023-10-06T22:43:40.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/1e/cc7360b4259f283b1a2de153335ce15ac9e710d66145aa471cffefe4b394/importlab-0.8.1-py2.py3-none-any.whl", hash = "sha256:124cfa00e8a34fefe8aac1a5e94f56c781b178c9eb61a1d3f60f7e03b77338d3", size = 21671, upload-time = "2023-10-06T22:43:38.997Z" }, +] + +[[package]] +name = "inflect" +version = "7.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "more-itertools" }, + { name = "typeguard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/c6/943357d44a21fd995723d07ccaddd78023eace03c1846049a2645d4324a3/inflect-7.5.0.tar.gz", hash = "sha256:faf19801c3742ed5a05a8ce388e0d8fe1a07f8d095c82201eb904f5d27ad571f", size = 73751, upload-time = "2024-12-28T17:11:18.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl", hash = "sha256:2aea70e5e70c35d8350b8097396ec155ffd68def678c7ff97f51aa69c1d92344", size = 35197, upload-time = "2024-12-28T17:11:15.931Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "integrations" +version = "1.0.0" +source = { virtual = "." } +dependencies = [ + { name = "aiosmtplib" }, + { name = "algoliasearch" }, + { name = "arxiv" }, + { name = "beartype" }, + { name = "browserbase" }, + { name = "cloudinary" }, + { name = "duckduckgo-search" }, + { name = "environs" }, + { name = "fastapi" }, + { name = "fire" }, + { name = "google-api-python-client" }, + { name = "google-auth" }, + { name = "google-auth-httplib2" }, + { name = "google-auth-oauthlib" }, + { name = "gunicorn" }, + { name = "httpx" }, + { name = "langchain" }, + { name = "langchain-community" }, + { name = "llama-index" }, + { name = "llama-parse" }, + { name = "mcp" }, + { name = "openai" }, + { name = "pillow" }, + { name = "playwright" }, + { name = "pydantic", extra = ["email"] }, + { name = "pyowm" }, + { name = "selenium" }, + { name = "sentry-sdk", extra = ["flask"] }, + { name = "setuptools" }, + { name = "spider-client" }, + { name = "sse-starlette" }, + { name = "tenacity" }, + { name = "tweepy" }, + { name = "unstructured-client" }, + { name = "uvicorn" }, + { name = "uvloop" }, + { name = "wikipedia" }, +] + +[package.dev-dependencies] +dev = [ + { name = "datamodel-code-generator" }, + { name = "poethepoet" }, + { name = "pyright" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, + { name = "pytype" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiosmtplib", specifier = ">=3.0.1" }, + { name = "algoliasearch", specifier = ">=4.14.0" }, + { name = "arxiv", specifier = "~=2.1.3" }, + { name = "beartype", specifier = "~=0.19.0" }, + { name = "browserbase", specifier = ">=1.0.5" }, + { name = "cloudinary", specifier = "~=1.41.0" }, + { name = "duckduckgo-search", specifier = "~=6.2.13" }, + { name = "environs", specifier = "~=11.2.1" }, + { name = "fastapi", specifier = "~=0.115.0" }, + { name = "fire", specifier = "~=0.6.0" }, + { name = "google-api-python-client", specifier = ">=2.181.0" }, + { name = "google-auth", specifier = ">=2.40.3" }, + { name = "google-auth-httplib2", specifier = ">=0.2.0" }, + { name = "google-auth-oauthlib", specifier = ">=1.2.2" }, + { name = "gunicorn", specifier = "~=23.0.0" }, + { name = "httpx", specifier = "~=0.27.2" }, + { name = "langchain", specifier = "~=0.3.0" }, + { name = "langchain-community", specifier = "~=0.3.0" }, + { name = "llama-index", specifier = "~=0.11.22" }, + { name = "llama-parse", specifier = "~=0.5.13" }, + { name = "mcp", specifier = ">=1.8.0" }, + { name = "openai", specifier = "~=1.47.1" }, + { name = "pillow", specifier = "~=11.0.0" }, + { name = "playwright", specifier = "~=1.48.0" }, + { name = "pydantic", extras = ["email"], specifier = ">=2.11.2,<3.0.0" }, + { name = "pyowm", specifier = "~=3.3.0" }, + { name = "selenium", specifier = "~=4.25.0" }, + { name = "sentry-sdk", extras = ["flask"], specifier = ">=2.19.0" }, + { name = "setuptools", specifier = "~=75.1.0" }, + { name = "spider-client", specifier = "~=0.0.70" }, + { name = "sse-starlette", specifier = ">=2.0.0" }, + { name = "tenacity", specifier = ">=8.2.0,<8.4.0" }, + { name = "tweepy", specifier = "~=4.14.0" }, + { name = "unstructured-client", specifier = "==0.42.3" }, + { name = "uvicorn", specifier = "~=0.30.6" }, + { name = "uvloop", specifier = "~=0.21.0" }, + { name = "wikipedia", specifier = "~=1.4.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "datamodel-code-generator", specifier = ">=0.26.3" }, + { name = "poethepoet", specifier = ">=0.31.1" }, + { name = "pyright", specifier = ">=1.1.389" }, + { name = "pytest", specifier = ">=8.3.3" }, + { name = "pytest-asyncio", specifier = ">=0.24.0" }, + { name = "pytest-cov", specifier = ">=6.0.0" }, + { name = "pytype", specifier = ">=2024.10.11" }, + { name = "ruff", specifier = ">=0.9.0" }, +] + +[[package]] +name = "isort" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955, upload-time = "2025-02-26T21:13:16.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186, upload-time = "2025-02-26T21:13:14.911Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jiter" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/9d/ae7ddb4b8ab3fb1b51faf4deb36cb48a4fbbd7cb36bad6a5fca4741306f7/jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500", size = 162759, upload-time = "2025-05-18T19:04:59.73Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/b5/348b3313c58f5fbfb2194eb4d07e46a35748ba6e5b3b3046143f3040bafa/jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b", size = 312262, upload-time = "2025-05-18T19:03:44.637Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4a/6a2397096162b21645162825f058d1709a02965606e537e3304b02742e9b/jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744", size = 320124, upload-time = "2025-05-18T19:03:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/2a/85/1ce02cade7516b726dd88f59a4ee46914bf79d1676d1228ef2002ed2f1c9/jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2", size = 345330, upload-time = "2025-05-18T19:03:47.596Z" }, + { url = "https://files.pythonhosted.org/packages/75/d0/bb6b4f209a77190ce10ea8d7e50bf3725fc16d3372d0a9f11985a2b23eff/jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026", size = 369670, upload-time = "2025-05-18T19:03:49.334Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f5/a61787da9b8847a601e6827fbc42ecb12be2c925ced3252c8ffcb56afcaf/jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c", size = 489057, upload-time = "2025-05-18T19:03:50.66Z" }, + { url = "https://files.pythonhosted.org/packages/12/e4/6f906272810a7b21406c760a53aadbe52e99ee070fc5c0cb191e316de30b/jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959", size = 389372, upload-time = "2025-05-18T19:03:51.98Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ba/77013b0b8ba904bf3762f11e0129b8928bff7f978a81838dfcc958ad5728/jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a", size = 352038, upload-time = "2025-05-18T19:03:53.703Z" }, + { url = "https://files.pythonhosted.org/packages/67/27/c62568e3ccb03368dbcc44a1ef3a423cb86778a4389e995125d3d1aaa0a4/jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95", size = 391538, upload-time = "2025-05-18T19:03:55.046Z" }, + { url = "https://files.pythonhosted.org/packages/c0/72/0d6b7e31fc17a8fdce76164884edef0698ba556b8eb0af9546ae1a06b91d/jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea", size = 523557, upload-time = "2025-05-18T19:03:56.386Z" }, + { url = "https://files.pythonhosted.org/packages/2f/09/bc1661fbbcbeb6244bd2904ff3a06f340aa77a2b94e5a7373fd165960ea3/jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b", size = 514202, upload-time = "2025-05-18T19:03:57.675Z" }, + { url = "https://files.pythonhosted.org/packages/1b/84/5a5d5400e9d4d54b8004c9673bbe4403928a00d28529ff35b19e9d176b19/jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01", size = 211781, upload-time = "2025-05-18T19:03:59.025Z" }, + { url = "https://files.pythonhosted.org/packages/9b/52/7ec47455e26f2d6e5f2ea4951a0652c06e5b995c291f723973ae9e724a65/jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49", size = 206176, upload-time = "2025-05-18T19:04:00.305Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699, upload-time = "2023-06-26T12:07:29.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898, upload-time = "2023-06-16T21:01:28.466Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "langchain" +version = "0.3.27" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, + { name = "langchain-text-splitters" }, + { name = "langsmith" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/f6/f4f7f3a56626fe07e2bb330feb61254dbdf06c506e6b59a536a337da51cf/langchain-0.3.27.tar.gz", hash = "sha256:aa6f1e6274ff055d0fd36254176770f356ed0a8994297d1df47df341953cec62", size = 10233809, upload-time = "2025-07-24T14:42:32.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/d5/4861816a95b2f6993f1360cfb605aacb015506ee2090433a71de9cca8477/langchain-0.3.27-py3-none-any.whl", hash = "sha256:7b20c4f338826acb148d885b20a73a16e410ede9ee4f19bb02011852d5f98798", size = 1018194, upload-time = "2025-07-24T14:42:30.23Z" }, +] + +[[package]] +name = "langchain-community" +version = "0.3.29" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dataclasses-json" }, + { name = "httpx-sse" }, + { name = "langchain" }, + { name = "langchain-core" }, + { name = "langsmith" }, + { name = "numpy" }, + { name = "pydantic-settings" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/71/72ddc8802d5edcd3b31bc4f0eb62cdf85c30c9b845e34cc879dab0b45679/langchain_community-0.3.29.tar.gz", hash = "sha256:1f3d37973b10458052bb3cc02dce9773a8ffbd02961698c6d395b8c8d7f9e004", size = 33238072, upload-time = "2025-08-27T15:29:14.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/3c/107819dbed0be3f7a041245bce861c8dd4883ed08040ed482d278a274f22/langchain_community-0.3.29-py3-none-any.whl", hash = "sha256:c876ec7ef40b46353af164197f4e08e157650e8a02c9fb9d49351cdc16c839fe", size = 2530803, upload-time = "2025-08-27T15:29:12.52Z" }, +] + +[[package]] +name = "langchain-core" +version = "0.3.75" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpatch" }, + { name = "langsmith" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "tenacity" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/63/270b71a23e849984505ddc7c5c9fd3f4bd9cb14b1a484ee44c4e51c33cc2/langchain_core-0.3.75.tar.gz", hash = "sha256:ab0eb95a06ed6043f76162e6086b45037690cb70b7f090bd83b5ebb8a05b70ed", size = 570876, upload-time = "2025-08-26T15:24:12.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/42/0d0221cce6f168f644d7d96cb6c87c4e42fc55d2941da7a36e970e3ab8ab/langchain_core-0.3.75-py3-none-any.whl", hash = "sha256:03ca1fadf955ee3c7d5806a841f4b3a37b816acea5e61a7e6ba1298c05eea7f5", size = 443986, upload-time = "2025-08-26T15:24:10.883Z" }, +] + +[[package]] +name = "langchain-text-splitters" +version = "0.3.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "langchain-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/43/dcda8fd25f0b19cb2835f2f6bb67f26ad58634f04ac2d8eae00526b0fa55/langchain_text_splitters-0.3.11.tar.gz", hash = "sha256:7a50a04ada9a133bbabb80731df7f6ddac51bc9f1b9cab7fa09304d71d38a6cc", size = 46458, upload-time = "2025-08-31T23:02:58.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/0d/41a51b40d24ff0384ec4f7ab8dd3dcea8353c05c973836b5e289f1465d4f/langchain_text_splitters-0.3.11-py3-none-any.whl", hash = "sha256:cf079131166a487f1372c8ab5d0bfaa6c0a4291733d9c43a34a16ac9bcd6a393", size = 33845, upload-time = "2025-08-31T23:02:57.195Z" }, +] + +[[package]] +name = "langsmith" +version = "0.4.23" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "orjson", marker = "platform_python_implementation != 'PyPy'" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "requests-toolbelt" }, + { name = "zstandard" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/59/1f92c84585da3bad6d76050f32811198dd2bb4e6a0a63f7b0041b75344ee/langsmith-0.4.23.tar.gz", hash = "sha256:d8af9c6bf69c377a5a0a1c56bd742ab6acfce794e3c4a6993b08e76ee2397998", size = 939141, upload-time = "2025-09-02T22:06:38.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/63/c132d3e356702668bf3103771e2398fee963c22715a88501d55361761f8f/langsmith-0.4.23-py3-none-any.whl", hash = "sha256:2b7cc692c537d5e48c2932277a69c35a89ff5b153828281194e2af34aeda985f", size = 378757, upload-time = "2025-09-02T22:06:36.621Z" }, +] + +[[package]] +name = "libcst" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/aa/b52d195b167958fe1bd106a260f64cc80ec384f6ac2a9cda874d8803df06/libcst-1.8.2.tar.gz", hash = "sha256:66e82cedba95a6176194a817be4232c720312f8be6d2c8f3847f3317d95a0c7f", size = 881534, upload-time = "2025-06-13T20:56:37.915Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/2d/8726bf8ea8252e8fd1e48980753eef5449622c5f6cf731102bc43dcdc2c6/libcst-1.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2e8c1dfa854e700fcf6cd79b2796aa37d55697a74646daf5ea47c7c764bac31c", size = 2185942, upload-time = "2025-06-13T20:55:26.105Z" }, + { url = "https://files.pythonhosted.org/packages/99/b3/565d24db8daed66eae7653c1fc1bc97793d49d5d3bcef530450ee8da882c/libcst-1.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b5c57a3c1976c365678eb0730bcb140d40510990cb77df9a91bb5c41d587ba6", size = 2072622, upload-time = "2025-06-13T20:55:27.548Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d6/5a433e8a58eeb5c5d46635cfe958d0605f598d87977d4560484e3662d438/libcst-1.8.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:0f23409add2aaebbb6d8e881babab43c2d979f051b8bd8aed5fe779ea180a4e8", size = 2402738, upload-time = "2025-06-13T20:55:29.539Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/0dd752c1880b570118fa91ac127589e6cf577ddcb2eef1aaf8b81ecc3f79/libcst-1.8.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:b88e9104c456590ad0ef0e82851d4fc03e9aa9d621fa8fdd4cd0907152a825ae", size = 2219932, upload-time = "2025-06-13T20:55:31.17Z" }, + { url = "https://files.pythonhosted.org/packages/42/bc/fceae243c6a329477ac6d4edb887bcaa2ae7a3686158d8d9b9abb3089c37/libcst-1.8.2-cp312-cp312-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5ba3ea570c8fb6fc44f71aa329edc7c668e2909311913123d0d7ab8c65fc357", size = 2191891, upload-time = "2025-06-13T20:55:33.066Z" }, + { url = "https://files.pythonhosted.org/packages/7d/7d/eb341bdc11f1147e7edeccffd0f2f785eff014e72134f5e46067472012b0/libcst-1.8.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:460fcf3562f078781e1504983cb11909eb27a1d46eaa99e65c4b0fafdc298298", size = 2311927, upload-time = "2025-06-13T20:55:34.614Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/78bfc7aa5a542574d2ab0768210d084901dec5fc373103ca119905408cf2/libcst-1.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1381ddbd1066d543e05d580c15beacf671e1469a0b2adb6dba58fec311f4eed", size = 2281098, upload-time = "2025-06-13T20:55:36.089Z" }, + { url = "https://files.pythonhosted.org/packages/83/37/a41788a72dc06ed3566606f7cf50349c9918cee846eeae45d1bac03d54c2/libcst-1.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a70e40ce7600e1b32e293bb9157e9de3b69170e2318ccb219102f1abb826c94a", size = 2387649, upload-time = "2025-06-13T20:55:37.797Z" }, + { url = "https://files.pythonhosted.org/packages/bb/df/7a49576c9fd55cdfd8bcfb725273aa4ee7dc41e87609f3451a4901d68057/libcst-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:3ece08ba778b6eeea74d9c705e9af2d1b4e915e9bc6de67ad173b962e575fcc0", size = 2094574, upload-time = "2025-06-13T20:55:39.833Z" }, + { url = "https://files.pythonhosted.org/packages/29/60/27381e194d2af08bfd0fed090c905b2732907b69da48d97d86c056d70790/libcst-1.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:5efd1bf6ee5840d1b0b82ec8e0b9c64f182fa5a7c8aad680fbd918c4fa3826e0", size = 1984568, upload-time = "2025-06-13T20:55:41.511Z" }, +] + +[[package]] +name = "llama-cloud" +version = "0.1.40" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "httpx" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/22/f2397932cc0261b12a87d0d04548c0fce09a65ef377ac36ca72c3f1e6eee/llama_cloud-0.1.40.tar.gz", hash = "sha256:cdce43ca2e406525f2b694c751b18fec3db73ef2b1ee52c3bae1d5532a6eb696", size = 112321, upload-time = "2025-08-29T21:23:09.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/db/2b4028eb6f16a44a783a09909de21b0a658085f5bb19416d4079d2e1c097/llama_cloud-0.1.40-py3-none-any.whl", hash = "sha256:7c44fb726be74348d1c3ae8511cebe3bb1250fb9038061ae1bf798986912267a", size = 322593, upload-time = "2025-08-29T21:23:08.449Z" }, +] + +[[package]] +name = "llama-index" +version = "0.11.23" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-agent-openai" }, + { name = "llama-index-cli" }, + { name = "llama-index-core" }, + { name = "llama-index-embeddings-openai" }, + { name = "llama-index-indices-managed-llama-cloud" }, + { name = "llama-index-legacy" }, + { name = "llama-index-llms-openai" }, + { name = "llama-index-multi-modal-llms-openai" }, + { name = "llama-index-program-openai" }, + { name = "llama-index-question-gen-openai" }, + { name = "llama-index-readers-file" }, + { name = "llama-index-readers-llama-parse" }, + { name = "nltk" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/17/5131d4325a9da85e761249080f217d99478a28c9586a13b06aab4a692371/llama_index-0.11.23.tar.gz", hash = "sha256:e02118dfe060568cf40c9ed109c16d559911b2e19eac5e6babc04ed6b57ede02", size = 7803, upload-time = "2024-11-12T05:05:15.616Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/73/57407a49da1bf6a3e441d7ceb84577a9e8c10295c810ab40a6952bcf599e/llama_index-0.11.23-py3-none-any.whl", hash = "sha256:08513b86fed8e4295b52dc204c193e7186a2e65fc09d581deeb6a74afaaf74fe", size = 6823, upload-time = "2024-11-12T05:05:13.777Z" }, +] + +[[package]] +name = "llama-index-agent-openai" +version = "0.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "llama-index-llms-openai" }, + { name = "openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/b2/95121d8ea4da363dabdacca7b340dfae4353b099a6b6b910de948f9684af/llama_index_agent_openai-0.3.4.tar.gz", hash = "sha256:80e3408d97121bebca3fa3ffd14b51285870c1c3c73d4ee04d3d18cfe6040466", size = 10401, upload-time = "2024-09-19T22:23:24.797Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/69/69857756c139897f209a2c372380509f718fb147170e2f2287cf4d77314a/llama_index_agent_openai-0.3.4-py3-none-any.whl", hash = "sha256:3720ce9bb12417a99a3fe84e52cce23e762b13f88a2dfc4292c76f4df9b26b4a", size = 13036, upload-time = "2024-09-19T22:23:22.307Z" }, +] + +[[package]] +name = "llama-index-cli" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "llama-index-embeddings-openai" }, + { name = "llama-index-llms-openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/d2/5894ccc0f86c4e95d557c8c7ef0c15d19c67e0ad3d4628247684350c7363/llama_index_cli-0.3.1.tar.gz", hash = "sha256:1890dd687cf440f3651365a549e303363162c167b8efbd87a3aa10058d6d5c77", size = 24450, upload-time = "2024-09-09T23:40:02.723Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/58/fb9d85d8f29d7379e953caf50278e095d302231a508d3e46dafd3a4bea1e/llama_index_cli-0.3.1-py3-none-any.whl", hash = "sha256:2111fbb6973f5b1eabce0d6cca3986499f0f2f625b13d7f48269a49c64c027d4", size = 27767, upload-time = "2024-09-09T23:40:01.078Z" }, +] + +[[package]] +name = "llama-index-core" +version = "0.11.23" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dataclasses-json" }, + { name = "deprecated" }, + { name = "dirtyjson" }, + { name = "filetype" }, + { name = "fsspec" }, + { name = "httpx" }, + { name = "nest-asyncio" }, + { name = "networkx" }, + { name = "nltk" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy", extra = ["asyncio"] }, + { name = "tenacity" }, + { name = "tiktoken" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "typing-inspect" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/4f/496d43c467ca2497f9c7632ac8ebd15049beb05115e9f0546de3e19ddddd/llama_index_core-0.11.23.tar.gz", hash = "sha256:e150859696a0eae169fe19323f46e9a31af2c12c3182012e4d0353ea8eb06d24", size = 1325843, upload-time = "2024-11-12T03:15:39.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/67/96ed984ebf472fe085bd5d2847c4f284cfe416805c1d6e705682a559c9fc/llama_index_core-0.11.23-py3-none-any.whl", hash = "sha256:25a0cb4a055bfb348655ca4acd1b475529bd8537a7b81874ef14ed13f56e06c1", size = 1576555, upload-time = "2024-11-12T03:15:35.646Z" }, +] + +[[package]] +name = "llama-index-embeddings-openai" +version = "0.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/06/35969946f229212c17133ca5aa446824381e309141f8ae952d0d40bfa8f5/llama_index_embeddings_openai-0.2.5.tar.gz", hash = "sha256:0047dd71d747068645ed728c29312aa91b65bbe4c6142180034c64dfc5c6f6e8", size = 5395, upload-time = "2024-09-13T19:52:39.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/4e/2cabf16c4ef7dda74c233d14d017ba57e933c4dea8a9807b90d145177e88/llama_index_embeddings_openai-0.2.5-py3-none-any.whl", hash = "sha256:823c8311e556349ba19dda408a64a314fa3dafe0e5759709c54d33a0269aa6ba", size = 6089, upload-time = "2024-09-13T19:52:37.838Z" }, +] + +[[package]] +name = "llama-index-indices-managed-llama-cloud" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-cloud" }, + { name = "llama-index-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/db/ac9dcd4e8993172c69b9c59430ca4b957c3a68c560ed6c57023c02231503/llama_index_indices_managed_llama_cloud-0.6.0.tar.gz", hash = "sha256:fe32aecb87ffd81eb824fc64509cc991c3cde574455e53e73a4dbe30961c4f21", size = 10564, upload-time = "2024-11-17T23:01:32.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/04/382c7498d3d108d9dee77ece610075c71ef6e3762084d8f983b1fed040cc/llama_index_indices_managed_llama_cloud-0.6.0-py3-none-any.whl", hash = "sha256:18a3bbb386c4fbda8883cf40339bde402637e4cd5e06bcf3870d8c174b9baa3a", size = 11083, upload-time = "2024-11-17T23:01:31.629Z" }, +] + +[[package]] +name = "llama-index-legacy" +version = "0.9.48.post4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "dataclasses-json" }, + { name = "deprecated" }, + { name = "dirtyjson" }, + { name = "fsspec" }, + { name = "httpx" }, + { name = "nest-asyncio" }, + { name = "networkx" }, + { name = "nltk" }, + { name = "numpy" }, + { name = "openai" }, + { name = "pandas" }, + { name = "requests" }, + { name = "sqlalchemy", extra = ["asyncio"] }, + { name = "tenacity" }, + { name = "tiktoken" }, + { name = "typing-extensions" }, + { name = "typing-inspect" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/18/9a276184d281876707ee257716eef5a80dab897624058eb1b539f7a678d0/llama_index_legacy-0.9.48.post4.tar.gz", hash = "sha256:f8a9764e7e134a52bfef5e53d2d62561bfc01fc09874c51cc001df6f5302ae30", size = 781650, upload-time = "2024-11-07T16:01:07.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/47/ffb4a02d6d499a1207c89f0214e8a72f0437fb7da46ec4927d239ec10520/llama_index_legacy-0.9.48.post4-py3-none-any.whl", hash = "sha256:4b817d7c343fb5f7f00c4410eff519f320013b8d5f24c4fedcf270c471f92038", size = 1200763, upload-time = "2024-11-07T16:01:05.338Z" }, +] + +[[package]] +name = "llama-index-llms-openai" +version = "0.2.16" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/e7/46f16e0f3ad25f49a050f1421a20b738ec312a5003bd07d749095eedb235/llama_index_llms_openai-0.2.16.tar.gz", hash = "sha256:7c666dd27056c278a079ff45d53f1fbfc8ed363764aa7baeee2e03df47f9072a", size = 13437, upload-time = "2024-10-22T21:52:47.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/49/bae3a019eba473a0b9bf21ad911786f86941e86dd0dac3c3e909352eaf54/llama_index_llms_openai-0.2.16-py3-none-any.whl", hash = "sha256:413466acbb894bd81f8dab2037f595e92392d869eec6d8274a16d43123cac8b6", size = 13623, upload-time = "2024-10-22T21:52:45.67Z" }, +] + +[[package]] +name = "llama-index-multi-modal-llms-openai" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "llama-index-llms-openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/03/26/298362f1c9531c637b46466847d8aad967aac3b8561c8a0dc859921f6feb/llama_index_multi_modal_llms_openai-0.2.3.tar.gz", hash = "sha256:8eb9b7f1ff3956ef0979e21bc83e6a885e40987b7199f195e46525d06e3ae402", size = 5098, upload-time = "2024-10-22T21:53:01.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/e2/3e2b639880baf5fd5ca0f88abd68719d2ed7af4d5076698cb5aff612505c/llama_index_multi_modal_llms_openai-0.2.3-py3-none-any.whl", hash = "sha256:96b36beb2c3fca4faca80c59ecf7c6c6629ecdb96c288ef89777b592ec43f872", size = 5886, upload-time = "2024-10-22T21:52:59.734Z" }, +] + +[[package]] +name = "llama-index-program-openai" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-agent-openai" }, + { name = "llama-index-core" }, + { name = "llama-index-llms-openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/c2/7a136b2f60c281767399149d6bec03f0df7a8a8455ead5da438745236d37/llama_index_program_openai-0.2.0.tar.gz", hash = "sha256:4139935541c011257fbfeb9662b3bf1237b729ef4b1c8f4ddf5b6789d2374ac4", size = 4870, upload-time = "2024-08-22T11:34:16.016Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/67/45422d24aad29191f3a9eb621afa0feb491653f1cb012d51083824d36c7b/llama_index_program_openai-0.2.0-py3-none-any.whl", hash = "sha256:2e10d0c8f21af2e9443eb79e81bb31e7b73835b7c7bbd7ddf20e0a9c846cd368", size = 5295, upload-time = "2024-08-22T11:34:15.001Z" }, +] + +[[package]] +name = "llama-index-question-gen-openai" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "llama-index-llms-openai" }, + { name = "llama-index-program-openai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/20/fca16fb6914c2b94b79a1a6191698c489a2a11ade056fac3215624c3242b/llama_index_question_gen_openai-0.2.0.tar.gz", hash = "sha256:3dde1cecbd651000639c20031d7ea23334276aabb181cac40ff424f35e10465e", size = 2605, upload-time = "2024-08-22T14:13:38.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/97/64691f3b3a5be2bea75102b189818276c7b2ddf688050e387954b176623a/llama_index_question_gen_openai-0.2.0-py3-none-any.whl", hash = "sha256:a16e68fc5434e9a793f1dfd0cc0354ee19afd167f1d499403b0085b11c5406c0", size = 2902, upload-time = "2024-08-22T14:13:37.519Z" }, +] + +[[package]] +name = "llama-index-readers-file" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "llama-index-core" }, + { name = "pandas" }, + { name = "pypdf" }, + { name = "striprtf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/5f/f5f3fbd83f36f34d463c61d379865ae11ce15fc4d53fb82f9897cbd0def8/llama_index_readers_file-0.3.0.tar.gz", hash = "sha256:6c675fcd2f0599a131f89e1c5ed3521dde31338a9b724a7721f5dfd7243ea8d8", size = 21941, upload-time = "2024-11-11T15:34:40.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/93/d07302de4886e2fa2d7406f7d7dde94376c2b27ab4808b9544cdbdeb8318/llama_index_readers_file-0.3.0-py3-none-any.whl", hash = "sha256:259ee195ea8285f8421b381ec3a64f5fae68de69435970ae64e544f07a4403ad", size = 38890, upload-time = "2024-11-11T15:34:39.045Z" }, +] + +[[package]] +name = "llama-index-readers-llama-parse" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llama-index-core" }, + { name = "llama-parse" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/33/dba0313ac42ca5082e2931a6d15ebfd2e0ffb34390da199639ef6ff378e3/llama_index_readers_llama_parse-0.3.0.tar.gz", hash = "sha256:a5feada0895714dcc41d65dd512c1c38cf70d8ae19947cff82b80d58e6aa367e", size = 2471, upload-time = "2024-09-02T17:36:49.507Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/b2/174bb131b767f9873b9f95b6c216043ccde4cfbeb3bcaf01fa23594f810a/llama_index_readers_llama_parse-0.3.0-py3-none-any.whl", hash = "sha256:1973cc710dbd5e110c7500c9983ecb45787ad1ff92e6b2113f94a57cf48f3038", size = 2474, upload-time = "2024-09-02T17:36:48.231Z" }, +] + +[[package]] +name = "llama-parse" +version = "0.5.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "llama-index-core" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/52/dc9ef71a43eddb8f7b7f6d887feb4e04e61f07bb99359c4aa1dd112c715b/llama_parse-0.5.20.tar.gz", hash = "sha256:649e256431d3753025b9a320bb03b76849ce4b5a1121394c803df543e6c1006f", size = 16941, upload-time = "2025-01-22T21:04:22.226Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/7c/203b7ffc633b9c0823f0d0701e361e002b93bf4e493f4c494d4bd5934c0b/llama_parse-0.5.20-py3-none-any.whl", hash = "sha256:9617edb3428d3218ea01f1708f0b6105f3ffef142fedbeb8c98d50082c37e226", size = 16163, upload-time = "2025-01-22T21:04:20.751Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, +] + +[[package]] +name = "marshmallow" +version = "3.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/5e/5e53d26b42ab75491cda89b871dab9e97c840bf12c63ec58a1919710cd06/marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6", size = 221825, upload-time = "2025-02-03T15:32:25.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/75/51952c7b2d3873b44a0028b1bd26a25078c18f92f256608e8d1dc61b39fd/marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", size = 50878, upload-time = "2025-02-03T15:32:22.295Z" }, +] + +[[package]] +name = "mcp" +version = "1.12.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "python-multipart" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/88/f6cb7e7c260cd4b4ce375f2b1614b33ce401f63af0f49f7141a2e9bf0a45/mcp-1.12.4.tar.gz", hash = "sha256:0765585e9a3a5916a3c3ab8659330e493adc7bd8b2ca6120c2d7a0c43e034ca5", size = 431148, upload-time = "2025-08-07T20:31:18.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/68/316cbc54b7163fa22571dcf42c9cc46562aae0a021b974e0a8141e897200/mcp-1.12.4-py3-none-any.whl", hash = "sha256:7aa884648969fab8e78b89399d59a683202972e12e6bc9a1c88ce7eda7743789", size = 160145, upload-time = "2025-08-07T20:31:15.69Z" }, +] + +[[package]] +name = "more-itertools" +version = "10.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, +] + +[[package]] +name = "msgspec" +version = "0.19.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/9b/95d8ce458462b8b71b8a70fa94563b2498b89933689f3a7b8911edfae3d7/msgspec-0.19.0.tar.gz", hash = "sha256:604037e7cd475345848116e89c553aa9a233259733ab51986ac924ab1b976f8e", size = 216934, upload-time = "2024-12-27T17:40:28.597Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/5f/a70c24f075e3e7af2fae5414c7048b0e11389685b7f717bb55ba282a34a7/msgspec-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f98bd8962ad549c27d63845b50af3f53ec468b6318400c9f1adfe8b092d7b62f", size = 190485, upload-time = "2024-12-27T17:39:44.974Z" }, + { url = "https://files.pythonhosted.org/packages/89/b0/1b9763938cfae12acf14b682fcf05c92855974d921a5a985ecc197d1c672/msgspec-0.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:43bbb237feab761b815ed9df43b266114203f53596f9b6e6f00ebd79d178cdf2", size = 183910, upload-time = "2024-12-27T17:39:46.401Z" }, + { url = "https://files.pythonhosted.org/packages/87/81/0c8c93f0b92c97e326b279795f9c5b956c5a97af28ca0fbb9fd86c83737a/msgspec-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cfc033c02c3e0aec52b71710d7f84cb3ca5eb407ab2ad23d75631153fdb1f12", size = 210633, upload-time = "2024-12-27T17:39:49.099Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ef/c5422ce8af73928d194a6606f8ae36e93a52fd5e8df5abd366903a5ca8da/msgspec-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d911c442571605e17658ca2b416fd8579c5050ac9adc5e00c2cb3126c97f73bc", size = 213594, upload-time = "2024-12-27T17:39:51.204Z" }, + { url = "https://files.pythonhosted.org/packages/19/2b/4137bc2ed45660444842d042be2cf5b18aa06efd2cda107cff18253b9653/msgspec-0.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:757b501fa57e24896cf40a831442b19a864f56d253679f34f260dcb002524a6c", size = 214053, upload-time = "2024-12-27T17:39:52.866Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e6/8ad51bdc806aac1dc501e8fe43f759f9ed7284043d722b53323ea421c360/msgspec-0.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5f0f65f29b45e2816d8bded36e6b837a4bf5fb60ec4bc3c625fa2c6da4124537", size = 219081, upload-time = "2024-12-27T17:39:55.142Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ef/27dd35a7049c9a4f4211c6cd6a8c9db0a50647546f003a5867827ec45391/msgspec-0.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:067f0de1c33cfa0b6a8206562efdf6be5985b988b53dd244a8e06f993f27c8c0", size = 187467, upload-time = "2024-12-27T17:39:56.531Z" }, +] + +[[package]] +name = "multidict" +version = "6.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/7f/0652e6ed47ab288e3756ea9c0df8b14950781184d4bd7883f4d87dd41245/multidict-6.6.4.tar.gz", hash = "sha256:d2d4e4787672911b48350df02ed3fa3fffdc2f2e8ca06dd6afdf34189b76a9dd", size = 101843, upload-time = "2025-08-11T12:08:48.217Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/f6/512ffd8fd8b37fb2680e5ac35d788f1d71bbaf37789d21a820bdc441e565/multidict-6.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0ffb87be160942d56d7b87b0fdf098e81ed565add09eaa1294268c7f3caac4c8", size = 76516, upload-time = "2025-08-11T12:06:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/99/58/45c3e75deb8855c36bd66cc1658007589662ba584dbf423d01df478dd1c5/multidict-6.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d191de6cbab2aff5de6c5723101705fd044b3e4c7cfd587a1929b5028b9714b3", size = 45394, upload-time = "2025-08-11T12:06:54.555Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/e8c4472a93a26e4507c0b8e1f0762c0d8a32de1328ef72fd704ef9cc5447/multidict-6.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38a0956dd92d918ad5feff3db8fcb4a5eb7dba114da917e1a88475619781b57b", size = 43591, upload-time = "2025-08-11T12:06:55.672Z" }, + { url = "https://files.pythonhosted.org/packages/05/51/edf414f4df058574a7265034d04c935aa84a89e79ce90fcf4df211f47b16/multidict-6.6.4-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:6865f6d3b7900ae020b495d599fcf3765653bc927951c1abb959017f81ae8287", size = 237215, upload-time = "2025-08-11T12:06:57.213Z" }, + { url = "https://files.pythonhosted.org/packages/c8/45/8b3d6dbad8cf3252553cc41abea09ad527b33ce47a5e199072620b296902/multidict-6.6.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a2088c126b6f72db6c9212ad827d0ba088c01d951cee25e758c450da732c138", size = 258299, upload-time = "2025-08-11T12:06:58.946Z" }, + { url = "https://files.pythonhosted.org/packages/3c/e8/8ca2e9a9f5a435fc6db40438a55730a4bf4956b554e487fa1b9ae920f825/multidict-6.6.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0f37bed7319b848097085d7d48116f545985db988e2256b2e6f00563a3416ee6", size = 242357, upload-time = "2025-08-11T12:07:00.301Z" }, + { url = "https://files.pythonhosted.org/packages/0f/84/80c77c99df05a75c28490b2af8f7cba2a12621186e0a8b0865d8e745c104/multidict-6.6.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:01368e3c94032ba6ca0b78e7ccb099643466cf24f8dc8eefcfdc0571d56e58f9", size = 268369, upload-time = "2025-08-11T12:07:01.638Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e9/920bfa46c27b05fb3e1ad85121fd49f441492dca2449c5bcfe42e4565d8a/multidict-6.6.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fe323540c255db0bffee79ad7f048c909f2ab0edb87a597e1c17da6a54e493c", size = 269341, upload-time = "2025-08-11T12:07:02.943Z" }, + { url = "https://files.pythonhosted.org/packages/af/65/753a2d8b05daf496f4a9c367fe844e90a1b2cac78e2be2c844200d10cc4c/multidict-6.6.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8eb3025f17b0a4c3cd08cda49acf312a19ad6e8a4edd9dbd591e6506d999402", size = 256100, upload-time = "2025-08-11T12:07:04.564Z" }, + { url = "https://files.pythonhosted.org/packages/09/54/655be13ae324212bf0bc15d665a4e34844f34c206f78801be42f7a0a8aaa/multidict-6.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bbc14f0365534d35a06970d6a83478b249752e922d662dc24d489af1aa0d1be7", size = 253584, upload-time = "2025-08-11T12:07:05.914Z" }, + { url = "https://files.pythonhosted.org/packages/5c/74/ab2039ecc05264b5cec73eb018ce417af3ebb384ae9c0e9ed42cb33f8151/multidict-6.6.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:75aa52fba2d96bf972e85451b99d8e19cc37ce26fd016f6d4aa60da9ab2b005f", size = 251018, upload-time = "2025-08-11T12:07:08.301Z" }, + { url = "https://files.pythonhosted.org/packages/af/0a/ccbb244ac848e56c6427f2392741c06302bbfba49c0042f1eb3c5b606497/multidict-6.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4fefd4a815e362d4f011919d97d7b4a1e566f1dde83dc4ad8cfb5b41de1df68d", size = 251477, upload-time = "2025-08-11T12:07:10.248Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b0/0ed49bba775b135937f52fe13922bc64a7eaf0a3ead84a36e8e4e446e096/multidict-6.6.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:db9801fe021f59a5b375ab778973127ca0ac52429a26e2fd86aa9508f4d26eb7", size = 263575, upload-time = "2025-08-11T12:07:11.928Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d9/7fb85a85e14de2e44dfb6a24f03c41e2af8697a6df83daddb0e9b7569f73/multidict-6.6.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a650629970fa21ac1fb06ba25dabfc5b8a2054fcbf6ae97c758aa956b8dba802", size = 259649, upload-time = "2025-08-11T12:07:13.244Z" }, + { url = "https://files.pythonhosted.org/packages/03/9e/b3a459bcf9b6e74fa461a5222a10ff9b544cb1cd52fd482fb1b75ecda2a2/multidict-6.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:452ff5da78d4720d7516a3a2abd804957532dd69296cb77319c193e3ffb87e24", size = 251505, upload-time = "2025-08-11T12:07:14.57Z" }, + { url = "https://files.pythonhosted.org/packages/86/a2/8022f78f041dfe6d71e364001a5cf987c30edfc83c8a5fb7a3f0974cff39/multidict-6.6.4-cp312-cp312-win32.whl", hash = "sha256:8c2fcb12136530ed19572bbba61b407f655e3953ba669b96a35036a11a485793", size = 41888, upload-time = "2025-08-11T12:07:15.904Z" }, + { url = "https://files.pythonhosted.org/packages/c7/eb/d88b1780d43a56db2cba24289fa744a9d216c1a8546a0dc3956563fd53ea/multidict-6.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:047d9425860a8c9544fed1b9584f0c8bcd31bcde9568b047c5e567a1025ecd6e", size = 46072, upload-time = "2025-08-11T12:07:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/9f/16/b929320bf5750e2d9d4931835a4c638a19d2494a5b519caaaa7492ebe105/multidict-6.6.4-cp312-cp312-win_arm64.whl", hash = "sha256:14754eb72feaa1e8ae528468f24250dd997b8e2188c3d2f593f9eba259e4b364", size = 43222, upload-time = "2025-08-11T12:07:18.328Z" }, + { url = "https://files.pythonhosted.org/packages/fd/69/b547032297c7e63ba2af494edba695d781af8a0c6e89e4d06cf848b21d80/multidict-6.6.4-py3-none-any.whl", hash = "sha256:27d8f8e125c07cb954e54d75d04905a9bba8a439c1d84aca94949d4d03d8601c", size = 12313, upload-time = "2025-08-11T12:08:46.891Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "ninja" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/73/79a0b22fc731989c708068427579e840a6cf4e937fe7ae5c5d0b7356ac22/ninja-1.13.0.tar.gz", hash = "sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978", size = 242558, upload-time = "2025-08-11T15:10:19.421Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/74/d02409ed2aa865e051b7edda22ad416a39d81a84980f544f8de717cab133/ninja-1.13.0-py3-none-macosx_10_9_universal2.whl", hash = "sha256:fa2a8bfc62e31b08f83127d1613d10821775a0eb334197154c4d6067b7068ff1", size = 310125, upload-time = "2025-08-11T15:09:50.971Z" }, + { url = "https://files.pythonhosted.org/packages/8e/de/6e1cd6b84b412ac1ef327b76f0641aeb5dcc01e9d3f9eee0286d0c34fd93/ninja-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630", size = 177467, upload-time = "2025-08-11T15:09:52.767Z" }, + { url = "https://files.pythonhosted.org/packages/c8/83/49320fb6e58ae3c079381e333575fdbcf1cca3506ee160a2dcce775046fa/ninja-1.13.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c", size = 187834, upload-time = "2025-08-11T15:09:54.115Z" }, + { url = "https://files.pythonhosted.org/packages/56/c7/ba22748fb59f7f896b609cd3e568d28a0a367a6d953c24c461fe04fc4433/ninja-1.13.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e", size = 202736, upload-time = "2025-08-11T15:09:55.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/22/d1de07632b78ac8e6b785f41fa9aad7a978ec8c0a1bf15772def36d77aac/ninja-1.13.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988", size = 179034, upload-time = "2025-08-11T15:09:57.394Z" }, + { url = "https://files.pythonhosted.org/packages/ed/de/0e6edf44d6a04dabd0318a519125ed0415ce437ad5a1ec9b9be03d9048cf/ninja-1.13.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa", size = 180716, upload-time = "2025-08-11T15:09:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/54/28/938b562f9057aaa4d6bfbeaa05e81899a47aebb3ba6751e36c027a7f5ff7/ninja-1.13.0-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1", size = 146843, upload-time = "2025-08-11T15:10:00.046Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fb/d06a3838de4f8ab866e44ee52a797b5491df823901c54943b2adb0389fbb/ninja-1.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2", size = 154402, upload-time = "2025-08-11T15:10:01.657Z" }, + { url = "https://files.pythonhosted.org/packages/31/bf/0d7808af695ceddc763cf251b84a9892cd7f51622dc8b4c89d5012779f06/ninja-1.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f", size = 552388, upload-time = "2025-08-11T15:10:03.349Z" }, + { url = "https://files.pythonhosted.org/packages/9d/70/c99d0c2c809f992752453cce312848abb3b1607e56d4cd1b6cded317351a/ninja-1.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714", size = 472501, upload-time = "2025-08-11T15:10:04.735Z" }, + { url = "https://files.pythonhosted.org/packages/9f/43/c217b1153f0e499652f5e0766da8523ce3480f0a951039c7af115e224d55/ninja-1.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72", size = 638280, upload-time = "2025-08-11T15:10:06.512Z" }, + { url = "https://files.pythonhosted.org/packages/8c/45/9151bba2c8d0ae2b6260f71696330590de5850e5574b7b5694dce6023e20/ninja-1.13.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db", size = 642420, upload-time = "2025-08-11T15:10:08.35Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/95752eb635bb8ad27d101d71bef15bc63049de23f299e312878fc21cb2da/ninja-1.13.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5", size = 585106, upload-time = "2025-08-11T15:10:09.818Z" }, + { url = "https://files.pythonhosted.org/packages/c1/31/aa56a1a286703800c0cbe39fb4e82811c277772dc8cd084f442dd8e2938a/ninja-1.13.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96", size = 707138, upload-time = "2025-08-11T15:10:11.366Z" }, + { url = "https://files.pythonhosted.org/packages/34/6f/5f5a54a1041af945130abdb2b8529cbef0cdcbbf9bcf3f4195378319d29a/ninja-1.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200", size = 581758, upload-time = "2025-08-11T15:10:13.295Z" }, + { url = "https://files.pythonhosted.org/packages/95/97/51359c77527d45943fe7a94d00a3843b81162e6c4244b3579fe8fc54cb9c/ninja-1.13.0-py3-none-win32.whl", hash = "sha256:8cfbb80b4a53456ae8a39f90ae3d7a2129f45ea164f43fadfa15dc38c4aef1c9", size = 267201, upload-time = "2025-08-11T15:10:15.158Z" }, + { url = "https://files.pythonhosted.org/packages/29/45/c0adfbfb0b5895aa18cec400c535b4f7ff3e52536e0403602fc1a23f7de9/ninja-1.13.0-py3-none-win_amd64.whl", hash = "sha256:fb8ee8719f8af47fed145cced4a85f0755dd55d45b2bddaf7431fa89803c5f3e", size = 309975, upload-time = "2025-08-11T15:10:16.697Z" }, + { url = "https://files.pythonhosted.org/packages/df/93/a7b983643d1253bb223234b5b226e69de6cda02b76cdca7770f684b795f5/ninja-1.13.0-py3-none-win_arm64.whl", hash = "sha256:3c0b40b1f0bba764644385319028650087b4c1b18cdfa6f45cb39a3669b81aa9", size = 290806, upload-time = "2025-08-11T15:10:18.018Z" }, +] + +[[package]] +name = "nltk" +version = "3.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "joblib" }, + { name = "regex" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/87/db8be88ad32c2d042420b6fd9ffd4a149f9a0d7f0e86b3f543be2eeeedd2/nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868", size = 2904691, upload-time = "2024-08-18T19:48:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/66/7d9e26593edda06e8cb531874633f7c2372279c3b0f46235539fe546df8b/nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1", size = 1505442, upload-time = "2024-08-18T19:48:21.909Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, +] + +[[package]] +name = "numpy" +version = "1.26.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload-time = "2024-02-06T00:26:44.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload-time = "2024-02-05T23:55:32.801Z" }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload-time = "2024-02-05T23:55:56.28Z" }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload-time = "2024-02-05T23:56:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload-time = "2024-02-05T23:56:56.054Z" }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload-time = "2024-02-05T23:57:21.56Z" }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload-time = "2024-02-05T23:57:56.585Z" }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload-time = "2024-02-05T23:58:08.963Z" }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload-time = "2024-02-05T23:58:36.364Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "openai" +version = "1.47.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/2c/b26f179a15ddc1b9c6b986db9a71b121e77a11b82c5e9d3bb740edf95223/openai-1.47.1.tar.gz", hash = "sha256:62c8f5f478f82ffafc93b33040f8bb16a45948306198bd0cba2da2ecd9cf7323", size = 297985, upload-time = "2024-09-23T15:22:00.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a1/601773020ad98d6d55f45c4482ea0c30af1351827eaab98cbc7d27b4716d/openai-1.47.1-py3-none-any.whl", hash = "sha256:34277583bf268bb2494bc03f48ac123788c5e2a914db1d5a23d5edc29d35c825", size = 375614, upload-time = "2024-09-23T15:21:58.7Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/4d/8df5f83256a809c22c4d6792ce8d43bb503be0fb7a8e4da9025754b09658/orjson-3.11.3.tar.gz", hash = "sha256:1c0603b1d2ffcd43a411d64797a19556ef76958aef1c182f22dc30860152a98a", size = 5482394, upload-time = "2025-08-26T17:46:43.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/b0/a7edab2a00cdcb2688e1c943401cb3236323e7bfd2839815c6131a3742f4/orjson-3.11.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8c752089db84333e36d754c4baf19c0e1437012242048439c7e80eb0e6426e3b", size = 238259, upload-time = "2025-08-26T17:45:15.093Z" }, + { url = "https://files.pythonhosted.org/packages/e1/c6/ff4865a9cc398a07a83342713b5932e4dc3cb4bf4bc04e8f83dedfc0d736/orjson-3.11.3-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9b8761b6cf04a856eb544acdd82fc594b978f12ac3602d6374a7edb9d86fd2c2", size = 127633, upload-time = "2025-08-26T17:45:16.417Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e6/e00bea2d9472f44fe8794f523e548ce0ad51eb9693cf538a753a27b8bda4/orjson-3.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b13974dc8ac6ba22feaa867fc19135a3e01a134b4f7c9c28162fed4d615008a", size = 123061, upload-time = "2025-08-26T17:45:17.673Z" }, + { url = "https://files.pythonhosted.org/packages/54/31/9fbb78b8e1eb3ac605467cb846e1c08d0588506028b37f4ee21f978a51d4/orjson-3.11.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f83abab5bacb76d9c821fd5c07728ff224ed0e52d7a71b7b3de822f3df04e15c", size = 127956, upload-time = "2025-08-26T17:45:19.172Z" }, + { url = "https://files.pythonhosted.org/packages/36/88/b0604c22af1eed9f98d709a96302006915cfd724a7ebd27d6dd11c22d80b/orjson-3.11.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6fbaf48a744b94091a56c62897b27c31ee2da93d826aa5b207131a1e13d4064", size = 130790, upload-time = "2025-08-26T17:45:20.586Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9d/1c1238ae9fffbfed51ba1e507731b3faaf6b846126a47e9649222b0fd06f/orjson-3.11.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc779b4f4bba2847d0d2940081a7b6f7b5877e05408ffbb74fa1faf4a136c424", size = 132385, upload-time = "2025-08-26T17:45:22.036Z" }, + { url = "https://files.pythonhosted.org/packages/a3/b5/c06f1b090a1c875f337e21dd71943bc9d84087f7cdf8c6e9086902c34e42/orjson-3.11.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd4b909ce4c50faa2192da6bb684d9848d4510b736b0611b6ab4020ea6fd2d23", size = 135305, upload-time = "2025-08-26T17:45:23.4Z" }, + { url = "https://files.pythonhosted.org/packages/a0/26/5f028c7d81ad2ebbf84414ba6d6c9cac03f22f5cd0d01eb40fb2d6a06b07/orjson-3.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:524b765ad888dc5518bbce12c77c2e83dee1ed6b0992c1790cc5fb49bb4b6667", size = 132875, upload-time = "2025-08-26T17:45:25.182Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d4/b8df70d9cfb56e385bf39b4e915298f9ae6c61454c8154a0f5fd7efcd42e/orjson-3.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:84fd82870b97ae3cdcea9d8746e592b6d40e1e4d4527835fc520c588d2ded04f", size = 130940, upload-time = "2025-08-26T17:45:27.209Z" }, + { url = "https://files.pythonhosted.org/packages/da/5e/afe6a052ebc1a4741c792dd96e9f65bf3939d2094e8b356503b68d48f9f5/orjson-3.11.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fbecb9709111be913ae6879b07bafd4b0785b44c1eb5cac8ac76da048b3885a1", size = 403852, upload-time = "2025-08-26T17:45:28.478Z" }, + { url = "https://files.pythonhosted.org/packages/f8/90/7bbabafeb2ce65915e9247f14a56b29c9334003536009ef5b122783fe67e/orjson-3.11.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9dba358d55aee552bd868de348f4736ca5a4086d9a62e2bfbbeeb5629fe8b0cc", size = 146293, upload-time = "2025-08-26T17:45:29.86Z" }, + { url = "https://files.pythonhosted.org/packages/27/b3/2d703946447da8b093350570644a663df69448c9d9330e5f1d9cce997f20/orjson-3.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eabcf2e84f1d7105f84580e03012270c7e97ecb1fb1618bda395061b2a84a049", size = 135470, upload-time = "2025-08-26T17:45:31.243Z" }, + { url = "https://files.pythonhosted.org/packages/38/70/b14dcfae7aff0e379b0119c8a812f8396678919c431efccc8e8a0263e4d9/orjson-3.11.3-cp312-cp312-win32.whl", hash = "sha256:3782d2c60b8116772aea8d9b7905221437fdf53e7277282e8d8b07c220f96cca", size = 136248, upload-time = "2025-08-26T17:45:32.567Z" }, + { url = "https://files.pythonhosted.org/packages/35/b8/9e3127d65de7fff243f7f3e53f59a531bf6bb295ebe5db024c2503cc0726/orjson-3.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:79b44319268af2eaa3e315b92298de9a0067ade6e6003ddaef72f8e0bedb94f1", size = 131437, upload-time = "2025-08-26T17:45:34.949Z" }, + { url = "https://files.pythonhosted.org/packages/51/92/a946e737d4d8a7fd84a606aba96220043dcc7d6988b9e7551f7f6d5ba5ad/orjson-3.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:0e92a4e83341ef79d835ca21b8bd13e27c859e4e9e4d7b63defc6e58462a3710", size = 125978, upload-time = "2025-08-26T17:45:36.422Z" }, +] + +[[package]] +name = "outcome" +version = "1.3.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/df/77698abfac98571e65ffeb0c1fba8ffd692ab8458d617a0eed7d9a8d38f2/outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8", size = 21060, upload-time = "2023-10-26T04:26:04.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b", size = 10692, upload-time = "2023-10-26T04:26:02.532Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684, upload-time = "2025-08-21T10:28:29.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652, upload-time = "2025-08-21T10:27:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686, upload-time = "2025-08-21T10:27:18.486Z" }, + { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722, upload-time = "2025-08-21T10:27:21.149Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803, upload-time = "2025-08-21T10:27:23.767Z" }, + { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345, upload-time = "2025-08-21T10:27:26.6Z" }, + { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314, upload-time = "2025-08-21T10:27:29.213Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326, upload-time = "2025-08-21T10:27:31.901Z" }, +] + +[[package]] +name = "pastel" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555, upload-time = "2020-09-16T19:21:12.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955, upload-time = "2020-09-16T19:21:11.409Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "pillow" +version = "11.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780, upload-time = "2024-10-15T14:24:29.672Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/a3/26e606ff0b2daaf120543e537311fa3ae2eb6bf061490e4fea51771540be/pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", size = 3147642, upload-time = "2024-10-15T14:22:37.736Z" }, + { url = "https://files.pythonhosted.org/packages/4f/d5/1caabedd8863526a6cfa44ee7a833bd97f945dc1d56824d6d76e11731939/pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", size = 2978999, upload-time = "2024-10-15T14:22:39.654Z" }, + { url = "https://files.pythonhosted.org/packages/d9/ff/5a45000826a1aa1ac6874b3ec5a856474821a1b59d838c4f6ce2ee518fe9/pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", size = 4196794, upload-time = "2024-10-15T14:22:41.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/21/84c9f287d17180f26263b5f5c8fb201de0f88b1afddf8a2597a5c9fe787f/pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", size = 4300762, upload-time = "2024-10-15T14:22:45.952Z" }, + { url = "https://files.pythonhosted.org/packages/84/39/63fb87cd07cc541438b448b1fed467c4d687ad18aa786a7f8e67b255d1aa/pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9", size = 4210468, upload-time = "2024-10-15T14:22:47.789Z" }, + { url = "https://files.pythonhosted.org/packages/7f/42/6e0f2c2d5c60f499aa29be14f860dd4539de322cd8fb84ee01553493fb4d/pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", size = 4381824, upload-time = "2024-10-15T14:22:49.668Z" }, + { url = "https://files.pythonhosted.org/packages/31/69/1ef0fb9d2f8d2d114db982b78ca4eeb9db9a29f7477821e160b8c1253f67/pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", size = 4296436, upload-time = "2024-10-15T14:22:51.911Z" }, + { url = "https://files.pythonhosted.org/packages/44/ea/dad2818c675c44f6012289a7c4f46068c548768bc6c7f4e8c4ae5bbbc811/pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", size = 4429714, upload-time = "2024-10-15T14:22:53.967Z" }, + { url = "https://files.pythonhosted.org/packages/af/3a/da80224a6eb15bba7a0dcb2346e2b686bb9bf98378c0b4353cd88e62b171/pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", size = 2249631, upload-time = "2024-10-15T14:22:56.404Z" }, + { url = "https://files.pythonhosted.org/packages/57/97/73f756c338c1d86bb802ee88c3cab015ad7ce4b838f8a24f16b676b1ac7c/pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", size = 2567533, upload-time = "2024-10-15T14:22:58.087Z" }, + { url = "https://files.pythonhosted.org/packages/0b/30/2b61876e2722374558b871dfbfcbe4e406626d63f4f6ed92e9c8e24cac37/pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", size = 2254890, upload-time = "2024-10-15T14:22:59.918Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, +] + +[[package]] +name = "playwright" +version = "1.48.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet" }, + { name = "pyee" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/41/0166d58c3eeae72377cbcd4cbed84b36cddc551a2b094bf7984198aafb79/playwright-1.48.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:082bce2739f1078acc7d0734da8cc0e23eb91b7fae553f3316d733276f09a6b1", size = 34989519, upload-time = "2024-10-21T13:52:49.182Z" }, + { url = "https://files.pythonhosted.org/packages/64/41/d77c47743800fbeb86657611e651e56a17cbb4ebfefa1da0318dc39092df/playwright-1.48.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7da2eb51a19c7f3b523e9faa9d98e7af92e52eb983a099979ea79c9668e3cbf7", size = 33302881, upload-time = "2024-10-21T13:52:53.176Z" }, + { url = "https://files.pythonhosted.org/packages/b0/f2/f184f613e6f496ed78e7808ac729900257567d2c1a7930e61026f0e48a5f/playwright-1.48.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:115b988d1da322358b77bc3bf2d3cc90f8c881e691461538e7df91614c4833c9", size = 34989518, upload-time = "2024-10-21T13:52:56.672Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0c/8cde1a86a9a7449a0ba95197f42156198083be1749b717831fba16ab2b5f/playwright-1.48.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:8dabb80e62f667fe2640a8b694e26a7b884c0b4803f7514a3954fc849126227b", size = 38171658, upload-time = "2024-10-21T13:53:00.341Z" }, + { url = "https://files.pythonhosted.org/packages/31/dc/121be574222fc74d12ac42921728fb6ba8ac17264a1fdab1993263389082/playwright-1.48.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff8303409ebed76bed4c3d655340320b768817d900ba208b394fdd7d7939a5c", size = 37919223, upload-time = "2024-10-21T13:53:04.429Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c5/ff02a780c76e9cf20296e2d1743bb42b1e81d62535802eb6d67b1b6b7b47/playwright-1.48.0-py3-none-win32.whl", hash = "sha256:85598c360c590076d4f435525be991246d74a905b654ac19d26eab7ed9b98b2d", size = 29983089, upload-time = "2024-10-21T13:53:08.548Z" }, + { url = "https://files.pythonhosted.org/packages/45/88/b6459c93a8bc0b96e7a33b6744bbef2740a0b78b0534542a037d220427f0/playwright-1.48.0-py3-none-win_amd64.whl", hash = "sha256:e0e87b0c4dc8fce83c725dd851aec37bc4e882bb225ec8a96bd83cf32d4f1623", size = 29983099, upload-time = "2024-10-21T13:53:12.529Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "poethepoet" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pastel" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/f2/273fe54a78dc5c6c8dd63db71f5a6ceb95e4648516b5aeaeff4bde804e44/poethepoet-0.37.0.tar.gz", hash = "sha256:73edf458707c674a079baa46802e21455bda3a7f82a408e58c31b9f4fe8e933d", size = 68570, upload-time = "2025-08-11T18:00:29.103Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/1b/5337af1a6a478d25a3e3c56b9b4b42b0a160314e02f4a0498d5322c8dac4/poethepoet-0.37.0-py3-none-any.whl", hash = "sha256:861790276315abcc8df1b4bd60e28c3d48a06db273edd3092f3c94e1a46e5e22", size = 90062, upload-time = "2025-08-11T18:00:27.595Z" }, +] + +[[package]] +name = "primp" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/0b/a87556189da4de1fc6360ca1aa05e8335509633f836cdd06dd17f0743300/primp-0.15.0.tar.gz", hash = "sha256:1af8ea4b15f57571ff7fc5e282a82c5eb69bc695e19b8ddeeda324397965b30a", size = 113022, upload-time = "2025-04-17T11:41:05.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/5a/146ac964b99ea7657ad67eb66f770be6577dfe9200cb28f9a95baffd6c3f/primp-0.15.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:1b281f4ca41a0c6612d4c6e68b96e28acfe786d226a427cd944baa8d7acd644f", size = 3178914, upload-time = "2025-04-17T11:40:59.558Z" }, + { url = "https://files.pythonhosted.org/packages/bc/8a/cc2321e32db3ce64d6e32950d5bcbea01861db97bfb20b5394affc45b387/primp-0.15.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:489cbab55cd793ceb8f90bb7423c6ea64ebb53208ffcf7a044138e3c66d77299", size = 2955079, upload-time = "2025-04-17T11:40:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/c3/7b/cbd5d999a07ff2a21465975d4eb477ae6f69765e8fe8c9087dab250180d8/primp-0.15.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b45c23f94016215f62d2334552224236217aaeb716871ce0e4dcfa08eb161", size = 3281018, upload-time = "2025-04-17T11:40:55.308Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6e/a6221c612e61303aec2bcac3f0a02e8b67aee8c0db7bdc174aeb8010f975/primp-0.15.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e985a9cba2e3f96a323722e5440aa9eccaac3178e74b884778e926b5249df080", size = 3255229, upload-time = "2025-04-17T11:40:47.811Z" }, + { url = "https://files.pythonhosted.org/packages/3b/54/bfeef5aca613dc660a69d0760a26c6b8747d8fdb5a7f20cb2cee53c9862f/primp-0.15.0-cp38-abi3-manylinux_2_34_armv7l.whl", hash = "sha256:6b84a6ffa083e34668ff0037221d399c24d939b5629cd38223af860de9e17a83", size = 3014522, upload-time = "2025-04-17T11:40:50.191Z" }, + { url = "https://files.pythonhosted.org/packages/ac/96/84078e09f16a1dad208f2fe0f8a81be2cf36e024675b0f9eec0c2f6e2182/primp-0.15.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:592f6079646bdf5abbbfc3b0a28dac8de943f8907a250ce09398cda5eaebd260", size = 3418567, upload-time = "2025-04-17T11:41:01.595Z" }, + { url = "https://files.pythonhosted.org/packages/6c/80/8a7a9587d3eb85be3d0b64319f2f690c90eb7953e3f73a9ddd9e46c8dc42/primp-0.15.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a728e5a05f37db6189eb413d22c78bd143fa59dd6a8a26dacd43332b3971fe8", size = 3606279, upload-time = "2025-04-17T11:41:03.61Z" }, + { url = "https://files.pythonhosted.org/packages/0c/dd/f0183ed0145e58cf9d286c1b2c14f63ccee987a4ff79ac85acc31b5d86bd/primp-0.15.0-cp38-abi3-win_amd64.whl", hash = "sha256:aeb6bd20b06dfc92cfe4436939c18de88a58c640752cf7f30d9e4ae893cdec32", size = 3149967, upload-time = "2025-04-17T11:41:07.067Z" }, +] + +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, + { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, + { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, + { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "6.32.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/df/fb4a8eeea482eca989b51cffd274aac2ee24e825f0bf3cbce5281fa1567b/protobuf-6.32.0.tar.gz", hash = "sha256:a81439049127067fc49ec1d36e25c6ee1d1a2b7be930675f919258d03c04e7d2", size = 440614, upload-time = "2025-08-14T21:21:25.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/18/df8c87da2e47f4f1dcc5153a81cd6bca4e429803f4069a299e236e4dd510/protobuf-6.32.0-cp310-abi3-win32.whl", hash = "sha256:84f9e3c1ff6fb0308dbacb0950d8aa90694b0d0ee68e75719cb044b7078fe741", size = 424409, upload-time = "2025-08-14T21:21:12.366Z" }, + { url = "https://files.pythonhosted.org/packages/e1/59/0a820b7310f8139bd8d5a9388e6a38e1786d179d6f33998448609296c229/protobuf-6.32.0-cp310-abi3-win_amd64.whl", hash = "sha256:a8bdbb2f009cfc22a36d031f22a625a38b615b5e19e558a7b756b3279723e68e", size = 435735, upload-time = "2025-08-14T21:21:15.046Z" }, + { url = "https://files.pythonhosted.org/packages/cc/5b/0d421533c59c789e9c9894683efac582c06246bf24bb26b753b149bd88e4/protobuf-6.32.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d52691e5bee6c860fff9a1c86ad26a13afbeb4b168cd4445c922b7e2cf85aaf0", size = 426449, upload-time = "2025-08-14T21:21:16.687Z" }, + { url = "https://files.pythonhosted.org/packages/ec/7b/607764ebe6c7a23dcee06e054fd1de3d5841b7648a90fd6def9a3bb58c5e/protobuf-6.32.0-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:501fe6372fd1c8ea2a30b4d9be8f87955a64d6be9c88a973996cef5ef6f0abf1", size = 322869, upload-time = "2025-08-14T21:21:18.282Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/2e730bd1c25392fc32e3268e02446f0d77cb51a2c3a8486b1798e34d5805/protobuf-6.32.0-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:75a2aab2bd1aeb1f5dc7c5f33bcb11d82ea8c055c9becbb41c26a8c43fd7092c", size = 322009, upload-time = "2025-08-14T21:21:19.893Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f2/80ffc4677aac1bc3519b26bc7f7f5de7fce0ee2f7e36e59e27d8beb32dd1/protobuf-6.32.0-py3-none-any.whl", hash = "sha256:ba377e5b67b908c8f3072a57b63e2c6a4cbd18aea4ed98d2584350dbf46f2783", size = 169287, upload-time = "2025-08-14T21:21:23.515Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + +[[package]] +name = "pycnite" +version = "2024.7.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/55/7f412c01675a8c77a9ace64a37d557faebe6740cf7fd619c9bda82b33341/pycnite-2024.7.31.tar.gz", hash = "sha256:5125f1c95aef4a23b9bec3b32fae76873dcd46324fa68e39c10fa852ecdea340", size = 24189, upload-time = "2024-07-31T12:43:15.814Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/af/7ba371f966657f6e7b1c9876cae7e9f1c5d3635c3df1329636b99e615494/pycnite-2024.7.31-py3-none-any.whl", hash = "sha256:9ff9c09d35056435b867e14ebf79626ca94b6017923a0bf9935377fa90d4cbb3", size = 22939, upload-time = "2024-07-31T12:43:14.248Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[package.optional-dependencies] +email = [ + { name = "email-validator" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" }, +] + +[[package]] +name = "pydot" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/35/b17cb89ff865484c6a20ef46bf9d95a5f07328292578de0b295f4a6beec2/pydot-4.0.1.tar.gz", hash = "sha256:c2148f681c4a33e08bf0e26a9e5f8e4099a82e0e2a068098f32ce86577364ad5", size = 162594, upload-time = "2025-06-17T20:09:56.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl", hash = "sha256:869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6", size = 37087, upload-time = "2025-06-17T20:09:55.25Z" }, +] + +[[package]] +name = "pyee" +version = "12.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/a7/8faaa62a488a2a1e0d56969757f087cbd2729e9bcfa508c230299f366b4c/pyee-12.0.0.tar.gz", hash = "sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145", size = 29675, upload-time = "2024-08-30T19:40:43.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/0d/95993c08c721ec68892547f2117e8f9dfbcef2ca71e098533541b4a54d5f/pyee-12.0.0-py3-none-any.whl", hash = "sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990", size = 14831, upload-time = "2024-08-30T19:40:42.132Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyowm" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "geojson" }, + { name = "pysocks" }, + { name = "requests", extra = ["socks"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/5a/0f44ccc4b81d23b9c84c821532e269727a64f3335c4231c9c16702809719/pyowm-3.3.0.tar.gz", hash = "sha256:8196f77c91eac680676ed5ee484aae8a165408055e3e2b28025cbf60b8681e03", size = 4516988, upload-time = "2022-02-14T21:31:59.957Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/88/1279817aa7f5988a2ff42a6755fd371f3c1806aca377cb63b3d16684b174/pyowm-3.3.0-py3-none-any.whl", hash = "sha256:86463108e7613171531ba306040b43c972b3fc0b0acf73b12c50910cdd2107ab", size = 4547201, upload-time = "2022-02-14T21:33:18.997Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "pypdf" +version = "5.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/89/3a/584b97a228950ed85aec97c811c68473d9b8d149e6a8c155668287cf1a28/pypdf-5.9.0.tar.gz", hash = "sha256:30f67a614d558e495e1fbb157ba58c1de91ffc1718f5e0dfeb82a029233890a1", size = 5035118, upload-time = "2025-07-27T14:04:52.364Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/d9/6cff57c80a6963e7dd183bf09e9f21604a77716644b1e580e97b259f7612/pypdf-5.9.0-py3-none-any.whl", hash = "sha256:be10a4c54202f46d9daceaa8788be07aa8cd5ea8c25c529c50dd509206382c35", size = 313193, upload-time = "2025-07-27T14:04:50.53Z" }, +] + +[[package]] +name = "pyright" +version = "1.1.405" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nodeenv" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/6c/ba4bbee22e76af700ea593a1d8701e3225080956753bee9750dcc25e2649/pyright-1.1.405.tar.gz", hash = "sha256:5c2a30e1037af27eb463a1cc0b9f6d65fec48478ccf092c1ac28385a15c55763", size = 4068319, upload-time = "2025-09-04T03:37:06.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/1a/524f832e1ff1962a22a1accc775ca7b143ba2e9f5924bb6749dce566784a/pyright-1.1.405-py3-none-any.whl", hash = "sha256:a2cb13700b5508ce8e5d4546034cb7ea4aedb60215c6c33f56cec7f53996035a", size = 5905038, upload-time = "2025-09-04T03:37:04.913Z" }, +] + +[[package]] +name = "pysocks" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", size = 284429, upload-time = "2019-09-20T02:07:35.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", size = 16725, upload-time = "2019-09-20T02:06:22.938Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/51/f8794af39eeb870e87a8c8068642fc07bce0c854d6865d7dd0f2a9d338c2/pytest_asyncio-1.1.0.tar.gz", hash = "sha256:796aa822981e01b68c12e4827b8697108f7205020f24b5793b3c41555dab68ea", size = 46652, upload-time = "2025-07-16T04:29:26.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/9d/bf86eddabf8c6c9cb1ea9a869d6873b46f105a5d292d3a6f7071f5b07935/pytest_asyncio-1.1.0-py3-none-any.whl", hash = "sha256:5fe2d69607b0bd75c656d1211f969cadba035030156745ee09e7d71740e58ecf", size = 15157, upload-time = "2025-07-16T04:29:24.929Z" }, +] + +[[package]] +name = "pytest-cov" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, +] + +[[package]] +name = "pytype" +version = "2024.10.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "immutabledict" }, + { name = "importlab" }, + { name = "jinja2" }, + { name = "libcst" }, + { name = "msgspec" }, + { name = "networkx" }, + { name = "ninja" }, + { name = "pycnite" }, + { name = "pydot" }, + { name = "tabulate" }, + { name = "toml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9c/7a/6fd33673f9c7b9e5f4f8107028c323b1c72acc0f909f1b9b3391a31ea604/pytype-2024.10.11.tar.gz", hash = "sha256:ae5ff82f0b07d5ad68d4ec32a3e8de44fad6ed565a821a76aca50a14df382274", size = 2789497, upload-time = "2024-10-11T08:28:46.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/a2/cf47d02d846f6d837e1023b2c19588127c4d9dfc577b8eceb4870def32f4/pytype-2024.10.11-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:cdc881cce9541a475ec48989a5ab889e6274a85afbf6da0e30266d0823f66d42", size = 4709678, upload-time = "2024-10-11T08:28:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/04/51/5925fe8992f02adab358ce9e8068defdae1e58393bfd767e035509da9872/pytype-2024.10.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13327d0d17b981fe2660dd3a69f97bf09a526f93debc40bb44b240628e0b55c1", size = 4682184, upload-time = "2024-10-11T08:28:32.128Z" }, + { url = "https://files.pythonhosted.org/packages/20/10/52422fdb5a6b4a04938f47a76c655325775b7dd8cc71bd3557aae87b40e1/pytype-2024.10.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb98711679e631b01b09b09185504fbf38d60f119280918e244a602cf843b0fe", size = 4695132, upload-time = "2024-10-11T08:28:23.525Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "regex" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/5a/4c63457fbcaf19d138d72b2e9b39405954f98c0349b31c601bfcb151582c/regex-2025.9.1.tar.gz", hash = "sha256:88ac07b38d20b54d79e704e38aa3bd2c0f8027432164226bdee201a1c0c9c9ff", size = 400852, upload-time = "2025-09-01T22:10:10.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ef/a0372febc5a1d44c1be75f35d7e5aff40c659ecde864d7fa10e138f75e74/regex-2025.9.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:84a25164bd8dcfa9f11c53f561ae9766e506e580b70279d05a7946510bdd6f6a", size = 486317, upload-time = "2025-09-01T22:08:34.529Z" }, + { url = "https://files.pythonhosted.org/packages/b5/25/d64543fb7eb41a1024786d518cc57faf1ce64aa6e9ddba097675a0c2f1d2/regex-2025.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:645e88a73861c64c1af558dd12294fb4e67b5c1eae0096a60d7d8a2143a611c7", size = 289698, upload-time = "2025-09-01T22:08:36.162Z" }, + { url = "https://files.pythonhosted.org/packages/d8/dc/fbf31fc60be317bd9f6f87daa40a8a9669b3b392aa8fe4313df0a39d0722/regex-2025.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10a450cba5cd5409526ee1d4449f42aad38dd83ac6948cbd6d7f71ca7018f7db", size = 287242, upload-time = "2025-09-01T22:08:37.794Z" }, + { url = "https://files.pythonhosted.org/packages/0f/74/f933a607a538f785da5021acf5323961b4620972e2c2f1f39b6af4b71db7/regex-2025.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9dc5991592933a4192c166eeb67b29d9234f9c86344481173d1bc52f73a7104", size = 797441, upload-time = "2025-09-01T22:08:39.108Z" }, + { url = "https://files.pythonhosted.org/packages/89/d0/71fc49b4f20e31e97f199348b8c4d6e613e7b6a54a90eb1b090c2b8496d7/regex-2025.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a32291add816961aab472f4fad344c92871a2ee33c6c219b6598e98c1f0108f2", size = 862654, upload-time = "2025-09-01T22:08:40.586Z" }, + { url = "https://files.pythonhosted.org/packages/59/05/984edce1411a5685ba9abbe10d42cdd9450aab4a022271f9585539788150/regex-2025.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:588c161a68a383478e27442a678e3b197b13c5ba51dbba40c1ccb8c4c7bee9e9", size = 910862, upload-time = "2025-09-01T22:08:42.416Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/5c891bb5fe0691cc1bad336e3a94b9097fbcf9707ec8ddc1dce9f0397289/regex-2025.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47829ffaf652f30d579534da9085fe30c171fa2a6744a93d52ef7195dc38218b", size = 801991, upload-time = "2025-09-01T22:08:44.072Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ae/fd10d6ad179910f7a1b3e0a7fde1ef8bb65e738e8ac4fd6ecff3f52252e4/regex-2025.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e978e5a35b293ea43f140c92a3269b6ab13fe0a2bf8a881f7ac740f5a6ade85", size = 786651, upload-time = "2025-09-01T22:08:46.079Z" }, + { url = "https://files.pythonhosted.org/packages/30/cf/9d686b07bbc5bf94c879cc168db92542d6bc9fb67088d03479fef09ba9d3/regex-2025.9.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf09903e72411f4bf3ac1eddd624ecfd423f14b2e4bf1c8b547b72f248b7bf7", size = 856556, upload-time = "2025-09-01T22:08:48.376Z" }, + { url = "https://files.pythonhosted.org/packages/91/9d/302f8a29bb8a49528abbab2d357a793e2a59b645c54deae0050f8474785b/regex-2025.9.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d016b0f77be63e49613c9e26aaf4a242f196cd3d7a4f15898f5f0ab55c9b24d2", size = 849001, upload-time = "2025-09-01T22:08:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/93/fa/b4c6dbdedc85ef4caec54c817cd5f4418dbfa2453214119f2538082bf666/regex-2025.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:656563e620de6908cd1c9d4f7b9e0777e3341ca7db9d4383bcaa44709c90281e", size = 788138, upload-time = "2025-09-01T22:08:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1b/91ee17a3cbf87f81e8c110399279d0e57f33405468f6e70809100f2ff7d8/regex-2025.9.1-cp312-cp312-win32.whl", hash = "sha256:df33f4ef07b68f7ab637b1dbd70accbf42ef0021c201660656601e8a9835de45", size = 264524, upload-time = "2025-09-01T22:08:53.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/28/6ba31cce05b0f1ec6b787921903f83bd0acf8efde55219435572af83c350/regex-2025.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:5aba22dfbc60cda7c0853516104724dc904caa2db55f2c3e6e984eb858d3edf3", size = 275489, upload-time = "2025-09-01T22:08:55.037Z" }, + { url = "https://files.pythonhosted.org/packages/bd/ed/ea49f324db00196e9ef7fe00dd13c6164d5173dd0f1bbe495e61bb1fb09d/regex-2025.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:ec1efb4c25e1849c2685fa95da44bfde1b28c62d356f9c8d861d4dad89ed56e9", size = 268589, upload-time = "2025-09-01T22:08:56.369Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[package.optional-dependencies] +socks = [ + { name = "pysocks" }, +] + +[[package]] +name = "requests-oauthlib" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/52/531ef197b426646f26b53815a7d2a67cb7a331ef098bb276db26a68ac49f/requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a", size = 52027, upload-time = "2022-01-29T18:52:24.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/bb/5deac77a9af870143c684ab46a7934038a53eb4aa975bc0687ed6ca2c610/requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5", size = 23892, upload-time = "2022-01-29T18:52:22.279Z" }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload-time = "2025-08-27T12:16:36.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887, upload-time = "2025-08-27T12:13:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795, upload-time = "2025-08-27T12:13:11.65Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121, upload-time = "2025-08-27T12:13:13.008Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976, upload-time = "2025-08-27T12:13:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953, upload-time = "2025-08-27T12:13:15.774Z" }, + { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915, upload-time = "2025-08-27T12:13:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883, upload-time = "2025-08-27T12:13:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699, upload-time = "2025-08-27T12:13:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713, upload-time = "2025-08-27T12:13:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324, upload-time = "2025-08-27T12:13:22.789Z" }, + { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646, upload-time = "2025-08-27T12:13:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137, upload-time = "2025-08-27T12:13:25.557Z" }, + { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343, upload-time = "2025-08-27T12:13:26.967Z" }, + { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497, upload-time = "2025-08-27T12:13:28.326Z" }, + { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790, upload-time = "2025-08-27T12:13:29.71Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/55/16ab6a7d88d93001e1ae4c34cbdcfb376652d761799459ff27c1dc20f6fa/ruff-0.12.11.tar.gz", hash = "sha256:c6b09ae8426a65bbee5425b9d0b82796dbb07cb1af045743c79bfb163001165d", size = 5347103, upload-time = "2025-08-28T13:59:08.87Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/a2/3b3573e474de39a7a475f3fbaf36a25600bfeb238e1a90392799163b64a0/ruff-0.12.11-py3-none-linux_armv6l.whl", hash = "sha256:93fce71e1cac3a8bf9200e63a38ac5c078f3b6baebffb74ba5274fb2ab276065", size = 11979885, upload-time = "2025-08-28T13:58:26.654Z" }, + { url = "https://files.pythonhosted.org/packages/76/e4/235ad6d1785a2012d3ded2350fd9bc5c5af8c6f56820e696b0118dfe7d24/ruff-0.12.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8e33ac7b28c772440afa80cebb972ffd823621ded90404f29e5ab6d1e2d4b93", size = 12742364, upload-time = "2025-08-28T13:58:30.256Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd", size = 11920111, upload-time = "2025-08-28T13:58:33.677Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c0/f66339d7893798ad3e17fa5a1e587d6fd9806f7c1c062b63f8b09dda6702/ruff-0.12.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:411954eca8464595077a93e580e2918d0a01a19317af0a72132283e28ae21bee", size = 12160060, upload-time = "2025-08-28T13:58:35.74Z" }, + { url = "https://files.pythonhosted.org/packages/03/69/9870368326db26f20c946205fb2d0008988aea552dbaec35fbacbb46efaa/ruff-0.12.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a2c0a2e1a450f387bf2c6237c727dd22191ae8c00e448e0672d624b2bbd7fb0", size = 11799848, upload-time = "2025-08-28T13:58:38.051Z" }, + { url = "https://files.pythonhosted.org/packages/25/8c/dd2c7f990e9b3a8a55eee09d4e675027d31727ce33cdb29eab32d025bdc9/ruff-0.12.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ca4c3a7f937725fd2413c0e884b5248a19369ab9bdd850b5781348ba283f644", size = 13536288, upload-time = "2025-08-28T13:58:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/7a/30/d5496fa09aba59b5e01ea76775a4c8897b13055884f56f1c35a4194c2297/ruff-0.12.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4d1df0098124006f6a66ecf3581a7f7e754c4df7644b2e6704cd7ca80ff95211", size = 14490633, upload-time = "2025-08-28T13:58:42.285Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2f/81f998180ad53445d403c386549d6946d0748e536d58fce5b5e173511183/ruff-0.12.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a8dd5f230efc99a24ace3b77e3555d3fbc0343aeed3fc84c8d89e75ab2ff793", size = 13888430, upload-time = "2025-08-28T13:58:44.641Z" }, + { url = "https://files.pythonhosted.org/packages/87/71/23a0d1d5892a377478c61dbbcffe82a3476b050f38b5162171942a029ef3/ruff-0.12.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dc75533039d0ed04cd33fb8ca9ac9620b99672fe7ff1533b6402206901c34ee", size = 12913133, upload-time = "2025-08-28T13:58:47.039Z" }, + { url = "https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8", size = 13169082, upload-time = "2025-08-28T13:58:49.157Z" }, + { url = "https://files.pythonhosted.org/packages/05/b5/68b3ff96160d8b49e8dd10785ff3186be18fd650d356036a3770386e6c7f/ruff-0.12.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:5a0113bd6eafd545146440225fe60b4e9489f59eb5f5f107acd715ba5f0b3d2f", size = 13139490, upload-time = "2025-08-28T13:58:51.593Z" }, + { url = "https://files.pythonhosted.org/packages/59/b9/050a3278ecd558f74f7ee016fbdf10591d50119df8d5f5da45a22c6afafc/ruff-0.12.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0d737b4059d66295c3ea5720e6efc152623bb83fde5444209b69cd33a53e2000", size = 11958928, upload-time = "2025-08-28T13:58:53.943Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bc/93be37347db854806904a43b0493af8d6873472dfb4b4b8cbb27786eb651/ruff-0.12.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:916fc5defee32dbc1fc1650b576a8fed68f5e8256e2180d4d9855aea43d6aab2", size = 11764513, upload-time = "2025-08-28T13:58:55.976Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a1/1471751e2015a81fd8e166cd311456c11df74c7e8769d4aabfbc7584c7ac/ruff-0.12.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c984f07d7adb42d3ded5be894fb4007f30f82c87559438b4879fe7aa08c62b39", size = 12745154, upload-time = "2025-08-28T13:58:58.16Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/2542b14890d0f4872dd81b7b2a6aed3ac1786fae1ce9b17e11e6df9e31e3/ruff-0.12.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e07fbb89f2e9249f219d88331c833860489b49cdf4b032b8e4432e9b13e8a4b9", size = 13227653, upload-time = "2025-08-28T13:59:00.276Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/2fbfc61047dbfd009c58a28369a693a1484ad15441723be1cd7fe69bb679/ruff-0.12.11-py3-none-win32.whl", hash = "sha256:c792e8f597c9c756e9bcd4d87cf407a00b60af77078c96f7b6366ea2ce9ba9d3", size = 11944270, upload-time = "2025-08-28T13:59:02.347Z" }, + { url = "https://files.pythonhosted.org/packages/08/a5/34276984705bfe069cd383101c45077ee029c3fe3b28225bf67aa35f0647/ruff-0.12.11-py3-none-win_amd64.whl", hash = "sha256:a3283325960307915b6deb3576b96919ee89432ebd9c48771ca12ee8afe4a0fd", size = 13046600, upload-time = "2025-08-28T13:59:04.751Z" }, + { url = "https://files.pythonhosted.org/packages/84/a8/001d4a7c2b37623a3fd7463208267fb906df40ff31db496157549cfd6e72/ruff-0.12.11-py3-none-win_arm64.whl", hash = "sha256:bae4d6e6a2676f8fb0f98b74594a048bae1b944aab17e9f5d504062303c6dbea", size = 12135290, upload-time = "2025-08-28T13:59:06.933Z" }, +] + +[[package]] +name = "selenium" +version = "4.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "trio" }, + { name = "trio-websocket" }, + { name = "typing-extensions" }, + { name = "urllib3", extra = ["socks"] }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/5a/d3735b189b91715fd0f5a9b8d55e2605061309849470e96ab830f02cba40/selenium-4.25.0.tar.gz", hash = "sha256:95d08d3b82fb353f3c474895154516604c7f0e6a9a565ae6498ef36c9bac6921", size = 957765, upload-time = "2024-09-20T15:04:48.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/85/fa44f23dd5d5066a72f7c4304cce4b5ff9a6e7fd92431a48b2c63fbf63ec/selenium-4.25.0-py3-none-any.whl", hash = "sha256:3798d2d12b4a570bc5790163ba57fef10b2afee958bf1d80f2a3cf07c4141f33", size = 9693127, upload-time = "2024-09-20T15:04:46.216Z" }, +] + +[[package]] +name = "sentry-sdk" +version = "2.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/ac/52fcbba981793d3c90807b79cf6fa130cd25a54d152e653da3ed6d5defef/sentry_sdk-2.36.0.tar.gz", hash = "sha256:af9260e8155e41e8217615a453828e98aa40740865ac4b16b1ccb6a63b4b2e31", size = 343655, upload-time = "2025-09-04T07:56:37.688Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/17/41ea723cb40f036d699cd954e2894fe7a044b0fd9a0e6bd881b1c9dda14e/sentry_sdk-2.36.0-py2.py3-none-any.whl", hash = "sha256:0f95586a141068d215376e5bf8ebd279e126f7f42805e9570190ef82a7e232b3", size = 364905, upload-time = "2025-09-04T07:56:36.159Z" }, +] + +[package.optional-dependencies] +flask = [ + { name = "blinker" }, + { name = "flask" }, + { name = "markupsafe" }, +] + +[[package]] +name = "setuptools" +version = "75.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/27/b8/f21073fde99492b33ca357876430822e4800cdf522011f18041351dfa74b/setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538", size = 1348057, upload-time = "2024-09-16T12:53:47.723Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/ae/f19306b5a221f6a436d8f2238d5b80925004093fa3edea59835b514d9057/setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2", size = 1248506, upload-time = "2024-09-16T12:53:46.053Z" }, +] + +[[package]] +name = "sgmllib3k" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/bd/3704a8c3e0942d711c1299ebf7b9091930adae6675d7c8f476a7ce48653c/sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9", size = 5750, upload-time = "2010-08-24T14:33:52.445Z" } + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, +] + +[[package]] +name = "spider-client" +version = "0.0.72" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/31/dfb821404df6a6b8671fbabfce7ca5ae3de830e57b58599fdd5582ce1be8/spider-client-0.0.72.tar.gz", hash = "sha256:efdb605371d926e1026d51ee4ee366baaa9eef6207694a09771773c1b35394ec", size = 15248, upload-time = "2024-10-11T12:29:42.818Z" } + +[[package]] +name = "sqlalchemy" +version = "2.0.43" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/bc/d59b5d97d27229b0e009bd9098cd81af71c2fa5549c580a0a67b9bed0496/sqlalchemy-2.0.43.tar.gz", hash = "sha256:788bfcef6787a7764169cfe9859fe425bf44559619e1d9f56f5bddf2ebf6f417", size = 9762949, upload-time = "2025-08-11T14:24:58.438Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/db/20c78f1081446095450bdc6ee6cc10045fce67a8e003a5876b6eaafc5cc4/sqlalchemy-2.0.43-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:20d81fc2736509d7a2bd33292e489b056cbae543661bb7de7ce9f1c0cd6e7f24", size = 2134891, upload-time = "2025-08-11T15:51:13.019Z" }, + { url = "https://files.pythonhosted.org/packages/45/0a/3d89034ae62b200b4396f0f95319f7d86e9945ee64d2343dcad857150fa2/sqlalchemy-2.0.43-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b9fc27650ff5a2c9d490c13c14906b918b0de1f8fcbb4c992712d8caf40e83", size = 2123061, upload-time = "2025-08-11T15:51:14.319Z" }, + { url = "https://files.pythonhosted.org/packages/cb/10/2711f7ff1805919221ad5bee205971254845c069ee2e7036847103ca1e4c/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6772e3ca8a43a65a37c88e2f3e2adfd511b0b1da37ef11ed78dea16aeae85bd9", size = 3320384, upload-time = "2025-08-11T15:52:35.088Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0e/3d155e264d2ed2778484006ef04647bc63f55b3e2d12e6a4f787747b5900/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a113da919c25f7f641ffbd07fbc9077abd4b3b75097c888ab818f962707eb48", size = 3329648, upload-time = "2025-08-11T15:56:34.153Z" }, + { url = "https://files.pythonhosted.org/packages/5b/81/635100fb19725c931622c673900da5efb1595c96ff5b441e07e3dd61f2be/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4286a1139f14b7d70141c67a8ae1582fc2b69105f1b09d9573494eb4bb4b2687", size = 3258030, upload-time = "2025-08-11T15:52:36.933Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ed/a99302716d62b4965fded12520c1cbb189f99b17a6d8cf77611d21442e47/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:529064085be2f4d8a6e5fab12d36ad44f1909a18848fcfbdb59cc6d4bbe48efe", size = 3294469, upload-time = "2025-08-11T15:56:35.553Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a2/3a11b06715149bf3310b55a98b5c1e84a42cfb949a7b800bc75cb4e33abc/sqlalchemy-2.0.43-cp312-cp312-win32.whl", hash = "sha256:b535d35dea8bbb8195e7e2b40059e2253acb2b7579b73c1b432a35363694641d", size = 2098906, upload-time = "2025-08-11T15:55:00.645Z" }, + { url = "https://files.pythonhosted.org/packages/bc/09/405c915a974814b90aa591280623adc6ad6b322f61fd5cff80aeaef216c9/sqlalchemy-2.0.43-cp312-cp312-win_amd64.whl", hash = "sha256:1c6d85327ca688dbae7e2b06d7d84cfe4f3fffa5b5f9e21bb6ce9d0e1a0e0e0a", size = 2126260, upload-time = "2025-08-11T15:55:02.965Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d9/13bdde6521f322861fab67473cec4b1cc8999f3871953531cf61945fad92/sqlalchemy-2.0.43-py3-none-any.whl", hash = "sha256:1681c21dd2ccee222c2fe0bef671d1aef7c504087c9c4e800371cfcc8ac966fc", size = 1924759, upload-time = "2025-08-11T15:39:53.024Z" }, +] + +[package.optional-dependencies] +asyncio = [ + { name = "greenlet" }, +] + +[[package]] +name = "sse-starlette" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/6f/22ed6e33f8a9e76ca0a412405f31abb844b779d52c5f96660766edcd737c/sse_starlette-3.0.2.tar.gz", hash = "sha256:ccd60b5765ebb3584d0de2d7a6e4f745672581de4f5005ab31c3a25d10b52b3a", size = 20985, upload-time = "2025-07-27T09:07:44.565Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/10/c78f463b4ef22eef8491f218f692be838282cd65480f6e423d7730dfd1fb/sse_starlette-3.0.2-py3-none-any.whl", hash = "sha256:16b7cbfddbcd4eaca11f7b586f3b8a080f1afe952c15813455b162edea619e5a", size = 11297, upload-time = "2025-07-27T09:07:43.268Z" }, +] + +[[package]] +name = "starlette" +version = "0.46.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, +] + +[[package]] +name = "striprtf" +version = "0.0.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/20/3d419008265346452d09e5dadfd5d045b64b40d8fc31af40588e6c76997a/striprtf-0.0.26.tar.gz", hash = "sha256:fdb2bba7ac440072d1c41eab50d8d74ae88f60a8b6575c6e2c7805dc462093aa", size = 6258, upload-time = "2023-07-20T14:30:36.29Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/cf/0fea4f4ba3fc2772ac2419278aa9f6964124d4302117d61bc055758e000c/striprtf-0.0.26-py3-none-any.whl", hash = "sha256:8c8f9d32083cdc2e8bfb149455aa1cc5a4e0a035893bedc75db8b73becb3a1bb", size = 6914, upload-time = "2023-07-20T14:30:35.338Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "tenacity" +version = "8.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/32/6c/57df6196ce52c464cf8556e8f697fec5d3469bb8cd319c1685c0a090e0b4/tenacity-8.3.0.tar.gz", hash = "sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2", size = 43608, upload-time = "2024-05-07T08:48:17.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/a1/6bb0cbebefb23641f068bb58a2bc56da9beb2b1c550242e3c540b37698f3/tenacity-8.3.0-py3-none-any.whl", hash = "sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185", size = 25934, upload-time = "2024-05-07T08:48:14.696Z" }, +] + +[[package]] +name = "termcolor" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/6c/3d75c196ac07ac8749600b60b03f4f6094d54e132c4d94ebac6ee0e0add0/termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970", size = 14324, upload-time = "2025-04-30T11:37:53.791Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/bd/de8d508070629b6d84a30d01d57e4a65c69aa7f5abe7560b8fad3b50ea59/termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa", size = 7684, upload-time = "2025-04-30T11:37:52.382Z" }, +] + +[[package]] +name = "tiktoken" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "regex" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/86/ad0155a37c4f310935d5ac0b1ccf9bdb635dcb906e0a9a26b616dd55825a/tiktoken-0.11.0.tar.gz", hash = "sha256:3c518641aee1c52247c2b97e74d8d07d780092af79d5911a6ab5e79359d9b06a", size = 37648, upload-time = "2025-08-08T23:58:08.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9e/eceddeffc169fc75fe0fd4f38471309f11cb1906f9b8aa39be4f5817df65/tiktoken-0.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fd9e6b23e860973cf9526544e220b223c60badf5b62e80a33509d6d40e6c8f5d", size = 1055199, upload-time = "2025-08-08T23:57:45.076Z" }, + { url = "https://files.pythonhosted.org/packages/4f/cf/5f02bfefffdc6b54e5094d2897bc80efd43050e5b09b576fd85936ee54bf/tiktoken-0.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6a76d53cee2da71ee2731c9caa747398762bda19d7f92665e882fef229cb0b5b", size = 996655, upload-time = "2025-08-08T23:57:46.304Z" }, + { url = "https://files.pythonhosted.org/packages/65/8e/c769b45ef379bc360c9978c4f6914c79fd432400a6733a8afc7ed7b0726a/tiktoken-0.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ef72aab3ea240646e642413cb363b73869fed4e604dcfd69eec63dc54d603e8", size = 1128867, upload-time = "2025-08-08T23:57:47.438Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2d/4d77f6feb9292bfdd23d5813e442b3bba883f42d0ac78ef5fdc56873f756/tiktoken-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f929255c705efec7a28bf515e29dc74220b2f07544a8c81b8d69e8efc4578bd", size = 1183308, upload-time = "2025-08-08T23:57:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/7a/65/7ff0a65d3bb0fc5a1fb6cc71b03e0f6e71a68c5eea230d1ff1ba3fd6df49/tiktoken-0.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61f1d15822e4404953d499fd1dcc62817a12ae9fb1e4898033ec8fe3915fdf8e", size = 1244301, upload-time = "2025-08-08T23:57:49.642Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6e/5b71578799b72e5bdcef206a214c3ce860d999d579a3b56e74a6c8989ee2/tiktoken-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:45927a71ab6643dfd3ef57d515a5db3d199137adf551f66453be098502838b0f", size = 884282, upload-time = "2025-08-08T23:57:50.759Z" }, +] + +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "trio" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cffi", marker = "implementation_name != 'pypy' and os_name == 'nt'" }, + { name = "idna" }, + { name = "outcome" }, + { name = "sniffio" }, + { name = "sortedcontainers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/c1/68d582b4d3a1c1f8118e18042464bb12a7c1b75d64d75111b297687041e3/trio-0.30.0.tar.gz", hash = "sha256:0781c857c0c81f8f51e0089929a26b5bb63d57f927728a5586f7e36171f064df", size = 593776, upload-time = "2025-04-21T00:48:19.507Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/8e/3f6dfda475ecd940e786defe6df6c500734e686c9cd0a0f8ef6821e9b2f2/trio-0.30.0-py3-none-any.whl", hash = "sha256:3bf4f06b8decf8d3cf00af85f40a89824669e2d033bb32469d34840edcfc22a5", size = 499194, upload-time = "2025-04-21T00:48:17.167Z" }, +] + +[[package]] +name = "trio-websocket" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "outcome" }, + { name = "trio" }, + { name = "wsproto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/3c/8b4358e81f2f2cfe71b66a267f023a91db20a817b9425dd964873796980a/trio_websocket-0.12.2.tar.gz", hash = "sha256:22c72c436f3d1e264d0910a3951934798dcc5b00ae56fc4ee079d46c7cf20fae", size = 33549, upload-time = "2025-02-25T05:16:58.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/19/eb640a397bba49ba49ef9dbe2e7e5c04202ba045b6ce2ec36e9cadc51e04/trio_websocket-0.12.2-py3-none-any.whl", hash = "sha256:df605665f1db533f4a386c94525870851096a223adcb97f72a07e8b4beba45b6", size = 21221, upload-time = "2025-02-25T05:16:57.545Z" }, +] + +[[package]] +name = "tweepy" +version = "4.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/1c/0db8c3cf9d31bf63853ff612d201060ae78e6db03468a70e063bef0eda62/tweepy-4.14.0.tar.gz", hash = "sha256:1f9f1707d6972de6cff6c5fd90dfe6a449cd2e0d70bd40043ffab01e07a06c8c", size = 88623, upload-time = "2023-04-24T22:17:22.395Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/78/ba0065d5636bbf4a35b78c4f81b74e7858b609cdf69e629d6da5c91b9d92/tweepy-4.14.0-py3-none-any.whl", hash = "sha256:db6d3844ccc0c6d27f339f12ba8acc89912a961da513c1ae50fa2be502a56afb", size = 98520, upload-time = "2023-04-24T22:17:19.447Z" }, +] + +[[package]] +name = "typeguard" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/68/71c1a15b5f65f40e91b65da23b8224dad41349894535a97f63a52e462196/typeguard-4.4.4.tar.gz", hash = "sha256:3a7fd2dffb705d4d0efaed4306a704c89b9dee850b688f060a8b1615a79e5f74", size = 75203, upload-time = "2025-06-18T09:56:07.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl", hash = "sha256:b5f562281b6bfa1f5492470464730ef001646128b180769880468bd84b68b09e", size = 34874, upload-time = "2025-06-18T09:56:05.999Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "unstructured-client" +version = "0.42.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiofiles" }, + { name = "cryptography" }, + { name = "httpcore" }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "pypdf" }, + { name = "requests-toolbelt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/45/0d605c1c4ed6e38845e9e7d95758abddc7d66e1d096ef9acdf2ecdeaf009/unstructured_client-0.42.3.tar.gz", hash = "sha256:a568d8b281fafdf452647d874060cd0647e33e4a19e811b4db821eb1f3051163", size = 91379, upload-time = "2025-08-12T20:48:04.937Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/1c/137993fff771efc3d5c31ea6b6d126c635c7b124ea641531bca1fd8ea815/unstructured_client-0.42.3-py3-none-any.whl", hash = "sha256:14e9a6a44ed58c64bacd32c62d71db19bf9c2f2b46a2401830a8dfff48249d39", size = 207814, upload-time = "2025-08-12T20:48:03.638Z" }, +] + +[[package]] +name = "uritemplate" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/60/f174043244c5306c9988380d2cb10009f91563fc4b31293d27e17201af56/uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e", size = 33267, upload-time = "2025-06-02T15:12:06.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686", size = 11488, upload-time = "2025-06-02T15:12:03.405Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[package.optional-dependencies] +socks = [ + { name = "pysocks" }, +] + +[[package]] +name = "uvicorn" +version = "0.30.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/01/5e637e7aa9dd031be5376b9fb749ec20b86f5a5b6a49b87fabd374d5fa9f/uvicorn-0.30.6.tar.gz", hash = "sha256:4b15decdda1e72be08209e860a1e10e92439ad5b97cf44cc945fcbee66fc5788", size = 42825, upload-time = "2024-08-13T09:27:35.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl", hash = "sha256:65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5", size = 62835, upload-time = "2024-08-13T09:27:33.536Z" }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, +] + +[[package]] +name = "wikipedia" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/35/25e68fbc99e672127cc6fbb14b8ec1ba3dfef035bf1e4c90f78f24a80b7d/wikipedia-1.4.0.tar.gz", hash = "sha256:db0fad1829fdd441b1852306e9856398204dc0786d2996dd2e0c8bb8e26133b2", size = 27748, upload-time = "2014-11-15T15:59:49.808Z" } + +[[package]] +name = "wrapt" +version = "1.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/41/cad1aba93e752f1f9268c77270da3c469883d56e2798e7df6240dcb2287b/wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", size = 53998, upload-time = "2025-08-12T05:51:47.138Z" }, + { url = "https://files.pythonhosted.org/packages/60/f8/096a7cc13097a1869fe44efe68dace40d2a16ecb853141394047f0780b96/wrapt-1.17.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba", size = 39020, upload-time = "2025-08-12T05:51:35.906Z" }, + { url = "https://files.pythonhosted.org/packages/33/df/bdf864b8997aab4febb96a9ae5c124f700a5abd9b5e13d2a3214ec4be705/wrapt-1.17.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd", size = 39098, upload-time = "2025-08-12T05:51:57.474Z" }, + { url = "https://files.pythonhosted.org/packages/9f/81/5d931d78d0eb732b95dc3ddaeeb71c8bb572fb01356e9133916cd729ecdd/wrapt-1.17.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828", size = 88036, upload-time = "2025-08-12T05:52:34.784Z" }, + { url = "https://files.pythonhosted.org/packages/ca/38/2e1785df03b3d72d34fc6252d91d9d12dc27a5c89caef3335a1bbb8908ca/wrapt-1.17.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9", size = 88156, upload-time = "2025-08-12T05:52:13.599Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8b/48cdb60fe0603e34e05cffda0b2a4adab81fd43718e11111a4b0100fd7c1/wrapt-1.17.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396", size = 87102, upload-time = "2025-08-12T05:52:14.56Z" }, + { url = "https://files.pythonhosted.org/packages/3c/51/d81abca783b58f40a154f1b2c56db1d2d9e0d04fa2d4224e357529f57a57/wrapt-1.17.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc", size = 87732, upload-time = "2025-08-12T05:52:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/9e/b1/43b286ca1392a006d5336412d41663eeef1ad57485f3e52c767376ba7e5a/wrapt-1.17.3-cp312-cp312-win32.whl", hash = "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe", size = 36705, upload-time = "2025-08-12T05:53:07.123Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/49493f962bd3c586ab4b88066e967aa2e0703d6ef2c43aa28cb83bf7b507/wrapt-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c", size = 38877, upload-time = "2025-08-12T05:53:05.436Z" }, + { url = "https://files.pythonhosted.org/packages/f1/48/0f7102fe9cb1e8a5a77f80d4f0956d62d97034bbe88d33e94699f99d181d/wrapt-1.17.3-cp312-cp312-win_arm64.whl", hash = "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6", size = 36885, upload-time = "2025-08-12T05:52:54.367Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, +] + +[[package]] +name = "wsproto" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/4a/44d3c295350d776427904d73c189e10aeae66d7f555bb2feee16d1e4ba5a/wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065", size = 53425, upload-time = "2022-08-23T19:58:21.447Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226, upload-time = "2022-08-23T19:58:19.96Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, + { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, + { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, + { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, +] + +[[package]] +name = "zstandard" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/1b/c20b2ef1d987627765dcd5bf1dadb8ef6564f00a87972635099bb76b7a05/zstandard-0.24.0.tar.gz", hash = "sha256:fe3198b81c00032326342d973e526803f183f97aa9e9a98e3f897ebafe21178f", size = 905681, upload-time = "2025-08-17T18:36:36.352Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/e9/0bd281d9154bba7fc421a291e263911e1d69d6951aa80955b992a48289f6/zstandard-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a2bda8f2790add22773ee7a4e43c90ea05598bffc94c21c40ae0a9000b0133c3", size = 795710, upload-time = "2025-08-17T18:22:19.189Z" }, + { url = "https://files.pythonhosted.org/packages/36/26/b250a2eef515caf492e2d86732e75240cdac9d92b04383722b9753590c36/zstandard-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cc76de75300f65b8eb574d855c12518dc25a075dadb41dd18f6322bda3fe15d5", size = 640336, upload-time = "2025-08-17T18:22:20.466Z" }, + { url = "https://files.pythonhosted.org/packages/79/bf/3ba6b522306d9bf097aac8547556b98a4f753dc807a170becaf30dcd6f01/zstandard-0.24.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:d2b3b4bda1a025b10fe0269369475f420177f2cb06e0f9d32c95b4873c9f80b8", size = 5342533, upload-time = "2025-08-17T18:22:22.326Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ec/22bc75bf054e25accdf8e928bc68ab36b4466809729c554ff3a1c1c8bce6/zstandard-0.24.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b84c6c210684286e504022d11ec294d2b7922d66c823e87575d8b23eba7c81f", size = 5062837, upload-time = "2025-08-17T18:22:24.416Z" }, + { url = "https://files.pythonhosted.org/packages/48/cc/33edfc9d286e517fb5b51d9c3210e5bcfce578d02a675f994308ca587ae1/zstandard-0.24.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c59740682a686bf835a1a4d8d0ed1eefe31ac07f1c5a7ed5f2e72cf577692b00", size = 5393855, upload-time = "2025-08-17T18:22:26.786Z" }, + { url = "https://files.pythonhosted.org/packages/73/36/59254e9b29da6215fb3a717812bf87192d89f190f23817d88cb8868c47ac/zstandard-0.24.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6324fde5cf5120fbf6541d5ff3c86011ec056e8d0f915d8e7822926a5377193a", size = 5451058, upload-time = "2025-08-17T18:22:28.885Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c7/31674cb2168b741bbbe71ce37dd397c9c671e73349d88ad3bca9e9fae25b/zstandard-0.24.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51a86bd963de3f36688553926a84e550d45d7f9745bd1947d79472eca27fcc75", size = 5546619, upload-time = "2025-08-17T18:22:31.115Z" }, + { url = "https://files.pythonhosted.org/packages/e6/01/1a9f22239f08c00c156f2266db857545ece66a6fc0303d45c298564bc20b/zstandard-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d82ac87017b734f2fb70ff93818c66f0ad2c3810f61040f077ed38d924e19980", size = 5046676, upload-time = "2025-08-17T18:22:33.077Z" }, + { url = "https://files.pythonhosted.org/packages/a7/91/6c0cf8fa143a4988a0361380ac2ef0d7cb98a374704b389fbc38b5891712/zstandard-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92ea7855d5bcfb386c34557516c73753435fb2d4a014e2c9343b5f5ba148b5d8", size = 5576381, upload-time = "2025-08-17T18:22:35.391Z" }, + { url = "https://files.pythonhosted.org/packages/e2/77/1526080e22e78871e786ccf3c84bf5cec9ed25110a9585507d3c551da3d6/zstandard-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3adb4b5414febf074800d264ddf69ecade8c658837a83a19e8ab820e924c9933", size = 4953403, upload-time = "2025-08-17T18:22:37.266Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d0/a3a833930bff01eab697eb8abeafb0ab068438771fa066558d96d7dafbf9/zstandard-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6374feaf347e6b83ec13cc5dcfa70076f06d8f7ecd46cc71d58fac798ff08b76", size = 5267396, upload-time = "2025-08-17T18:22:39.757Z" }, + { url = "https://files.pythonhosted.org/packages/f3/5e/90a0db9a61cd4769c06374297ecfcbbf66654f74cec89392519deba64d76/zstandard-0.24.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:13fc548e214df08d896ee5f29e1f91ee35db14f733fef8eabea8dca6e451d1e2", size = 5433269, upload-time = "2025-08-17T18:22:42.131Z" }, + { url = "https://files.pythonhosted.org/packages/ce/58/fc6a71060dd67c26a9c5566e0d7c99248cbe5abfda6b3b65b8f1a28d59f7/zstandard-0.24.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0a416814608610abf5488889c74e43ffa0343ca6cf43957c6b6ec526212422da", size = 5814203, upload-time = "2025-08-17T18:22:44.017Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6a/89573d4393e3ecbfa425d9a4e391027f58d7810dec5cdb13a26e4cdeef5c/zstandard-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0d66da2649bb0af4471699aeb7a83d6f59ae30236fb9f6b5d20fb618ef6c6777", size = 5359622, upload-time = "2025-08-17T18:22:45.802Z" }, + { url = "https://files.pythonhosted.org/packages/60/ff/2cbab815d6f02a53a9d8d8703bc727d8408a2e508143ca9af6c3cca2054b/zstandard-0.24.0-cp312-cp312-win32.whl", hash = "sha256:ff19efaa33e7f136fe95f9bbcc90ab7fb60648453b03f95d1de3ab6997de0f32", size = 435968, upload-time = "2025-08-17T18:22:49.493Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a3/8f96b8ddb7ad12344218fbd0fd2805702dafd126ae9f8a1fb91eef7b33da/zstandard-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc05f8a875eb651d1cc62e12a4a0e6afa5cd0cc231381adb830d2e9c196ea895", size = 505195, upload-time = "2025-08-17T18:22:47.193Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4a/bfca20679da63bfc236634ef2e4b1b4254203098b0170e3511fee781351f/zstandard-0.24.0-cp312-cp312-win_arm64.whl", hash = "sha256:b04c94718f7a8ed7cdd01b162b6caa1954b3c9d486f00ecbbd300f149d2b2606", size = 461605, upload-time = "2025-08-17T18:22:48.317Z" }, +] diff --git a/llm-proxy/.dockerignore b/src/llm-proxy/.dockerignore similarity index 100% rename from llm-proxy/.dockerignore rename to src/llm-proxy/.dockerignore diff --git a/llm-proxy/.gitignore b/src/llm-proxy/.gitignore similarity index 100% rename from llm-proxy/.gitignore rename to src/llm-proxy/.gitignore diff --git a/src/llm-proxy/AGENTS.md b/src/llm-proxy/AGENTS.md new file mode 100644 index 000000000..41e739c95 --- /dev/null +++ b/src/llm-proxy/AGENTS.md @@ -0,0 +1,136 @@ +# AGENTS.md - llm-proxy + +This directory contains the LLM proxy service using LiteLLM for unified model access. + +Key Uses +- Bash commands: + - cd llm-proxy + - docker-compose --profile self-hosted-db up # With local database + - docker-compose --profile managed-db up # With external database +- Core files: + - `docker-compose.yml` for service deployment + - `litellm-config.yaml` for model configuration + - `.keys/` directory for API key files (gitignored) +- Configuration guidelines: + - Set API keys for each model provider via environment variables + - Configure `LITELLM_MASTER_KEY` for proxy authentication + - Set database and Redis URLs for persistence and caching +- Testing instructions: + - Health check: `curl http://localhost:4000/health` + - Model list: `curl http://localhost:4000/models` + - Chat completion: `curl -X POST http://localhost:4000/chat/completions` +- Repository etiquette: + - Don't commit API keys or secrets to version control + - Store keys in `.keys/` directory or environment variables +- Developer environment: + - Requires Docker and Docker Compose + - Optional: PostgreSQL and Redis services +- Unexpected behaviors: + - Model routing uses simple-shuffle strategy + - Caching enabled by default with Redis backend + +# LLM Proxy Service + +## Overview +The LLM proxy service provides unified access to multiple Large Language Model providers through a single OpenAI-compatible API using LiteLLM. It handles model routing, caching, rate limiting, and request/response transformation. + +## Architecture +- **Proxy Engine**: LiteLLM with OpenAI-compatible API +- **Model Router**: Load balancing across multiple providers +- **Caching Layer**: Redis-based response caching +- **Database**: PostgreSQL for logging and analytics +- **Workers**: Multi-worker deployment for performance + +## Key Components + +### LiteLLM Configuration +- **Model List**: Centralized model definitions and routing +- **Router Settings**: Load balancing and fallback strategies +- **Cache Settings**: Redis configuration for response caching +- **General Settings**: Authentication and database configuration + +### Supported Providers +1. **OpenAI**: GPT-4, GPT-4 Turbo, GPT-4o, o1, o3 models +2. **Anthropic**: Claude 3.5 Sonnet, Claude 3 Opus/Sonnet/Haiku +3. **Google**: Gemini 1.5 Pro, Gemini 2.0 Flash, Gemini 2.5 Pro Preview +4. **Groq**: Llama 3.1 70B/8B models +5. **OpenRouter**: Mistral, Qwen, DeepSeek, Meta Llama models +6. **Cerebras**: Llama 3.1/3.3/4 Scout models +7. **Voyage**: Embedding models +8. **Local Models**: Text embeddings inference service + +### Model Categories +- **Paid Models**: Premium models requiring API keys and billing +- **Free Models**: Models with free tiers or no cost +- **Embedding Models**: Text embedding and vector generation + +## Environment Variables +- `LITELLM_MASTER_KEY`: Master authentication key for the proxy +- `DATABASE_URL`: PostgreSQL connection string for logging +- `REDIS_URL`: Redis connection string for caching +- **Provider API Keys**: + - `OPENAI_API_KEY` + - `ANTHROPIC_API_KEY` + - `GEMINI_API_KEY` + - `GROQ_API_KEY` + - `OPENROUTER_API_KEY` + - `VOYAGE_API_KEY` + - `CEREBRAS_API_KEY` + - And others for additional providers + +## Deployment Profiles +1. **Self-hosted DB**: Complete local deployment with PostgreSQL and Redis +2. **Managed DB**: Use external database and Redis services +3. **Development**: File watching for configuration hot reload + +## API Features +- **OpenAI Compatibility**: Drop-in replacement for OpenAI API +- **Model Routing**: Automatic selection and load balancing +- **Response Caching**: Redis-based caching with configurable TTL +- **Request Logging**: Comprehensive logging to database +- **Error Handling**: Automatic retries and fallback routing +- **Rate Limiting**: Per-user and per-model rate limits + +### Router Configuration +- **Strategy**: Simple shuffle for load distribution +- **Retries**: 3 attempts with exponential backoff +- **Fallback**: Automatic failover to alternative models +- **Health Checks**: Model availability monitoring + +### Caching System +- **Backend**: Redis with namespace separation +- **Key Strategy**: Request content and parameters +- **TTL**: Configurable cache expiration +- **Namespace**: `litellm_caching` for organization + +## Performance Features +- **Multi-worker**: 8 workers for concurrent request handling +- **Connection Pooling**: Database and Redis connection reuse +- **Async Processing**: Non-blocking request handling +- **Resource Limits**: Memory and CPU constraints + +## Monitoring & Observability +- Health check endpoints for service monitoring +- Request/response logging to PostgreSQL +- Performance metrics and analytics +- Model usage tracking and billing +- Error rates and latency monitoring + +## Integration Points +- **Agents API**: Primary consumer for model requests +- **Chat Service**: Real-time conversation handling +- **Task Execution**: Model calls during workflow steps +- **Embedding Service**: Vector generation for document search + +## Security Features +- Master key authentication for API access +- Per-user API key management +- Request validation and sanitization +- Rate limiting and abuse prevention +- Audit logging for compliance + +## Development Tools +- Configuration hot reload during development +- Debug logging for troubleshooting +- Model testing endpoints +- Performance profiling capabilities \ No newline at end of file diff --git a/src/llm-proxy/CLAUDE.md b/src/llm-proxy/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/llm-proxy/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/llm-proxy/docker-compose.yml b/src/llm-proxy/docker-compose.yml similarity index 91% rename from llm-proxy/docker-compose.yml rename to src/llm-proxy/docker-compose.yml index 8bea6d398..ec17166e4 100644 --- a/llm-proxy/docker-compose.yml +++ b/src/llm-proxy/docker-compose.yml @@ -1,7 +1,7 @@ name: julep-llm-proxy x--litellm-base: &litellm-base - image: ghcr.io/berriai/litellm-database:main-v1.65.0-stable + image: ghcr.io/berriai/litellm-database:main-v1.74.9-stable restart: unless-stopped hostname: litellm ports: @@ -17,6 +17,7 @@ x--litellm-base: &litellm-base - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + - BEDROCK_API_KEY=${BEDROCK_API_KEY} - GROQ_API_KEY=${GROQ_API_KEY} - VOYAGE_API_KEY=${VOYAGE_API_KEY} - CEREBRAS_API_KEY=${CEREBRAS_API_KEY} @@ -25,6 +26,8 @@ x--litellm-base: &litellm-base - NVIDIA_NIM_API_KEY=${NVIDIA_NIM_API_KEY:-} - GITHUB_API_KEY=${GITHUB_API_KEY:-} - GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS:-} + - AWS_REGION_NAME=${AWS_REGION_NAME:-us-east-1} + command: [ "--config", diff --git a/src/llm-proxy/litellm-config.yaml b/src/llm-proxy/litellm-config.yaml new file mode 100644 index 000000000..2e4d80e13 --- /dev/null +++ b/src/llm-proxy/litellm-config.yaml @@ -0,0 +1,545 @@ +environment_variables: + NO_DOCS: "true" + +model_list: +# -*= Paid models =*- +# ------------------- + +# Gemini models + +- model_name: gemini-1.5-pro + litellm_params: + model: gemini/gemini-1.5-pro + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-1.5-pro-latest + litellm_params: + model: gemini/gemini-1.5-pro-latest + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-2.0-flash + litellm_params: + model: gemini/gemini-2.0-flash + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-2.5-pro-preview-03-25 + litellm_params: + model: gemini/gemini-2.5-pro-preview-03-25 + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-2.5-pro-preview-06-05 + litellm_params: + model: gemini/gemini-2.5-pro-preview-06-05 + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-2.5-pro + litellm_params: + model: gemini/gemini-2.5-pro + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +- model_name: gemini-2.5-flash + litellm_params: + model: gemini/gemini-2.5-flash + api_key: os.environ/GEMINI_API_KEY + tags: ["paid"] + +# OpenAI models +- model_name: "gpt-4-turbo" + litellm_params: + model: "openai/gpt-4-turbo" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-4o" + litellm_params: + model: "openai/gpt-4o" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: o1-mini + litellm_params: + model: openai/o1-mini + api_key: os.environ/OPENAI_API_KEY + tags: ["paid"] + +- model_name: o1-preview + litellm_params: + model: openai/o1-preview + api_key: os.environ/OPENAI_API_KEY + tags: ["paid"] + +- model_name: o1 + litellm_params: + model: openai/o1 + api_key: os.environ/OPENAI_API_KEY + tags: ["paid"] + +- model_name: o3-mini + litellm_params: + model: openai/o3-mini + api_key: os.environ/OPENAI_API_KEY + tags: ["paid"] + +- model_name: "gpt-4.1" + litellm_params: + model: "openai/gpt-4.1" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-4.1-mini" + litellm_params: + model: "openai/gpt-4.1-mini" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-4.1-nano" + litellm_params: + model: "openai/gpt-4.1-nano" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "o4-mini" + litellm_params: + model: "openai/o4-mini" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +# GPT-5 models +- model_name: "gpt-5" + litellm_params: + model: "openai/gpt-5" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-mini" + litellm_params: + model: "openai/gpt-5-mini" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-nano" + litellm_params: + model: "openai/gpt-5-nano" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-chat" + litellm_params: + model: "openai/gpt-5-chat" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-chat-latest" + litellm_params: + model: "openai/gpt-5-chat-latest" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-2025-08-07" + litellm_params: + model: "openai/gpt-5-2025-08-07" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-mini-2025-08-07" + litellm_params: + model: "openai/gpt-5-mini-2025-08-07" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +- model_name: "gpt-5-nano-2025-08-07" + litellm_params: + model: "openai/gpt-5-nano-2025-08-07" + tags: ["paid"] + api_key: os.environ/OPENAI_API_KEY + +# TODO: uncomment after integrating litellm.image_generation +# - model_name: "gpt-image-1" +# litellm_params: +# model: "openai/gpt-image-1" +# tags: ["paid"] +# api_key: os.environ/OPENAI_API_KEY + +# Anthropic models +- model_name: "claude-3.5-sonnet-20240620" + litellm_params: + model: "bedrock/us.anthropic.claude-3-5-sonnet-20240620-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3.5-sonnet" + litellm_params: + model: "bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3.5-sonnet-20241022" + litellm_params: + model: "bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +# - model_name: "claude-3-opus" # Model unavailable +# litellm_params: +# model: "bedrock/us.anthropic.claude-3-opus-20240229-v1:0" +# tags: ["paid"] +# api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3-sonnet" # Litellm/Anthropic removed support for this model + litellm_params: + model: "bedrock/us.anthropic.claude-3-sonnet-20240229-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3-haiku" + litellm_params: + model: "bedrock/us.anthropic.claude-3-haiku-20240307-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3.5-haiku" + litellm_params: + model: "bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-3.7-sonnet" + litellm_params: + model: "bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-sonnet-4" + litellm_params: + model: "bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-opus-4" + litellm_params: + model: "bedrock/us.anthropic.claude-opus-4-20250514-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +- model_name: "claude-opus-4-1" + litellm_params: + model: "bedrock/us.anthropic.claude-opus-4-1-20250805-v1:0" + tags: ["paid"] + api_key: os.environ/BEDROCK_API_KEY + +# Groq models +# - model_name: "llama-3.1-70b" # `llama-3.1-70b-versatile` has been decommissioned and is no longer supported +# litellm_params: +# model: "groq/llama-3.1-70b-versatile" +# tags: ["paid"] +# api_key: os.environ/GROQ_API_KEY + +- model_name: "llama-3.1-8b" + litellm_params: + model: "groq/llama-3.1-8b-instant" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "meta-llama/Llama-Guard-4-12B" + litellm_params: + model: "groq/meta-llama/Llama-Guard-4-12B" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "gemma2-9b-it" + litellm_params: + model: "groq/gemma2-9b-it" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "llama-3.1-8b-instant" + litellm_params: + model: "groq/llama-3.1-8b-instant" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "llama-3.3-70b-versatile" + litellm_params: + model: "groq/llama-3.3-70b-versatile" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "deepseek-r1-distill-llama-70b" + litellm_params: + model: "groq/deepseek-r1-distill-llama-70b" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "meta-llama/llama-4-maverick-17b-128e-instruct" + litellm_params: + model: "groq/meta-llama/llama-4-maverick-17b-128e-instruct" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +- model_name: "meta-llama/llama-4-scout-17b-16e-instruct" + litellm_params: + model: "groq/meta-llama/llama-4-scout-17b-16e-instruct" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +# - model_name: "mistral-saba-24b" # Discontinued +# litellm_params: +# model: "groq/mistral-saba-24b" +# tags: ["paid"] +# api_key: os.environ/GROQ_API_KEY + +# - model_name: "qwen-qwq-32b" # Discontinued +# litellm_params: +# model: "groq/qwen-qwq-32b" +# tags: ["paid"] +# api_key: os.environ/GROQ_API_KEY + +- model_name: "qwen/qwen3-32b" + litellm_params: + model: "groq/qwen/qwen3-32b" + tags: ["paid"] + api_key: os.environ/GROQ_API_KEY + +# OpenRouter models +- model_name: "mistral-large-2411" + litellm_params: + model: "openrouter/mistralai/mistral-large-2411" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "qwen-2.5-72b-instruct" + litellm_params: + model: "openrouter/qwen/qwen-2.5-72b-instruct" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "eva-llama-3.33-70b" + litellm_params: + model: "openrouter/eva-unit-01/eva-llama-3.33-70b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "l3.1-euryale-70b" + litellm_params: + model: "openrouter/sao10k/l3.1-euryale-70b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "l3.3-euryale-70b" + litellm_params: + model: "openrouter/sao10k/l3.3-euryale-70b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "magnum-v4-72b" + litellm_params: + model: "openrouter/anthracite-org/magnum-v4-72b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "eva-qwen-2.5-72b" + litellm_params: + model: "openrouter/eva-unit-01/eva-qwen-2.5-72b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "hermes-3-llama-3.1-70b" + litellm_params: + model: "openrouter/nousresearch/hermes-3-llama-3.1-70b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "deepseek-chat" + litellm_params: + model: "openrouter/deepseek/deepseek-chat" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "openrouter/meta-llama/llama-4-scout" + litellm_params: + model: "openrouter/meta-llama/llama-4-scout" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "openrouter/meta-llama/llama-4-scout:free" + litellm_params: + model: "openrouter/meta-llama/llama-4-scout:free" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["free"] + +- model_name: "openrouter/meta-llama/llama-4-maverick" + litellm_params: + model: "openrouter/meta-llama/llama-4-maverick" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "openrouter/meta-llama/llama-4-maverick:free" + litellm_params: + model: "openrouter/meta-llama/llama-4-maverick:free" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["free"] + +- model_name: "amazon/nova-lite-v1" + litellm_params: + model: "openrouter/amazon/nova-lite-v1" + api_key: os.environ/AMAZON_API_KEY + tags: ["paid"] + +- model_name: "amazon/nova-micro-v1" + litellm_params: + model: "openrouter/amazon/nova-micro-v1" + api_key: os.environ/AMAZON_API_KEY + tags: ["paid"] + +- model_name: "amazon/nova-pro-v1" + litellm_params: + model: "openrouter/amazon/nova-pro-v1" + api_key: os.environ/AMAZON_API_KEY + tags: ["paid"] + +- model_name: "perplexity/sonar-deep-research" + litellm_params: + model: "openrouter/perplexity/sonar-deep-research" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "perplexity/sonar" + litellm_params: + model: "openrouter/perplexity/sonar" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "perplexity/sonar-pro" + litellm_params: + model: "openrouter/perplexity/sonar-pro" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "perplexity/sonar-reasoning-pro" + litellm_params: + model: "openrouter/perplexity/sonar-reasoning-pro" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "perplexity/sonar-reasoning" + litellm_params: + model: "openrouter/perplexity/sonar-reasoning" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +# Cerebras Models (OpenRouter) +- model_name: "meta-llama/llama-3.1-8b-instruct" + litellm_params: + model: "openrouter/meta-llama/llama-3.1-8b-instruct" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "meta-llama/llama-3.3-70b-instruct" + litellm_params: + model: "openrouter/meta-llama/llama-3.3-70b-instruct" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "meta-llama/llama-4-scout" + litellm_params: + model: "openrouter/meta-llama/llama-4-scout" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "deepseek/deepseek-r1-distill-llama-70b" + litellm_params: + model: "openrouter/deepseek/deepseek-r1-distill-llama-70b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +- model_name: "deepseek/deepseek-r1-distill-qwen-32b" + litellm_params: + model: "openrouter/deepseek/deepseek-r1-distill-qwen-32b" + api_key: os.environ/OPENROUTER_API_KEY + tags: ["paid"] + +# -*= Embedding models =*- +# ------------------------ + +- model_name: text-embedding-3-large + litellm_params: + model: "openai/text-embedding-3-large" + api_key: os.environ/OPENAI_API_KEY + tags: ["paid"] + +- model_name: voyage-multilingual-2 + litellm_params: + model: "voyage/voyage-multilingual-2" + api_key: os.environ/VOYAGE_API_KEY + tags: ["paid"] + +- model_name: voyage-3 + litellm_params: + model: "voyage/voyage-3" + api_key: os.environ/VOYAGE_API_KEY + tags: ["paid"] + +- model_name: Alibaba-NLP/gte-large-en-v1.5 + litellm_params: + model: openai/Alibaba-NLP/gte-large-en-v1.5 + api_base: http://text-embeddings-inference + tags: ["free"] + +- model_name: BAAI/bge-m3 + litellm_params: + model: openai/BAAI/bge-m3 + api_base: http://text-embeddings-inference + tags: ["free"] + +- model_name: vertex_ai/text-embedding-004 + litellm_params: + model: vertex_ai/text-embedding-004 + # vertex_project: os.environ/GOOGLE_PROJECT_ID + # vertex_location: os.environ/VERTEX_LOCATION + + +# -*= Free models =*- +# ------------------- + +- model_name: gpt-4o-mini + litellm_params: + model: openai/gpt-4o-mini + api_key: os.environ/OPENAI_API_KEY + tags: ["free"] + + +# https://github.com/BerriAI/litellm/blob/main/litellm/__init__.py +litellm_settings: + num_retries: 3 + request_timeout: 180 + allowed_fails: 3 + cooldown_time: 30 + drop_params: true + modify_params: true + telemetry: false + retry: true + add_function_to_prompt: true + + set_verbose: false + cache: true + cache_params: # set cache params for redis + type: redis + namespace: "litellm_caching" + host: os.environ/LITELLM_REDIS_HOST + port: os.environ/LITELLM_REDIS_PORT + password: os.environ/LITELLM_REDIS_PASSWORD + +router_settings: + routing_strategy: simple-shuffle + num_retries: 3 + +general_settings: + master_key: os.environ/LITELLM_MASTER_KEY + database_url: os.environ/LITELLM_DATABASE_URL + enforce_user_param: true \ No newline at end of file diff --git a/memory-store/.gitignore b/src/memory-store/.gitignore similarity index 100% rename from memory-store/.gitignore rename to src/memory-store/.gitignore diff --git a/memory-store/CLAUDE.md b/src/memory-store/AGENTS.md similarity index 82% rename from memory-store/CLAUDE.md rename to src/memory-store/AGENTS.md index a98b113f4..a127e01fd 100644 --- a/memory-store/CLAUDE.md +++ b/src/memory-store/AGENTS.md @@ -1,3 +1,26 @@ +# AGENTS.md - memory-store + +This directory contains PostgreSQL and TimescaleDB schema definitions and migrations for the `memory-store` service. + +Key Uses +- Bash commands: + - cd memory-store + - poe check +- Core directories: + - `migrations/` for database schema changes. +- Code style guidelines: + - SQL formatted to 96 chars per line. + - Follow naming conventions for hypertables. +- Testing instructions: + - Run `poe test` if tests exist. + - Validate SQL with `poe check`. +- Repository etiquette: + - Increment migration version per change. +- Developer environment: + - Configure `DATABASE_URL` in `.env`. +- Unexpected behaviors: + - TimescaleDB hypertable creation nuances. + # Memory Store ## Overview @@ -13,6 +36,7 @@ Memory-store is Julep's PostgreSQL-based persistent storage layer for agents, se ### Core Data Models - `developers`: Root entity for multi-tenancy +- `projects`: Organizational units for grouping related resources - `users`: End-users who interact with agents - `agents`: AI agent configurations with model settings and instructions - `tools`: Functionality exposed to agents (API integrations, etc.) @@ -66,4 +90,4 @@ Memory-store is Julep's PostgreSQL-based persistent storage layer for agents, se ## Migration Patterns - Migration numbers (000001 to 000032+) represent sequential schema evolution - Each migration has reversible up/down scripts for safe deployments -- Progressive enhancement pattern with feature flags and backward compatibility \ No newline at end of file +- Progressive enhancement pattern with feature flags and backward compatibility diff --git a/src/memory-store/CLAUDE.md b/src/memory-store/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/memory-store/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/memory-store/Dockerfile.migrations b/src/memory-store/Dockerfile.migrations similarity index 100% rename from memory-store/Dockerfile.migrations rename to src/memory-store/Dockerfile.migrations diff --git a/memory-store/README.md b/src/memory-store/README.md similarity index 100% rename from memory-store/README.md rename to src/memory-store/README.md diff --git a/memory-store/docker-compose.yml b/src/memory-store/docker-compose.yml similarity index 97% rename from memory-store/docker-compose.yml rename to src/memory-store/docker-compose.yml index 55b5ebbce..94526ccbc 100644 --- a/memory-store/docker-compose.yml +++ b/src/memory-store/docker-compose.yml @@ -26,7 +26,7 @@ services: restart: unless-stopped vectorizer-worker: - image: timescale/pgai-vectorizer-worker:latest + image: timescale/pgai-vectorizer-worker:v0.10.5 environment: - PGAI_VECTORIZER_WORKER_DB_URL=postgres://postgres:${MEMORY_STORE_PASSWORD:-julep_secure_password}@memory-store:5432/postgres - OPENAI_API_KEY=${OPENAI_API_KEY:?OPENAI_API_KEY is required} diff --git a/memory-store/migrations/000001_initial.down.sql b/src/memory-store/migrations/000001_initial.down.sql similarity index 100% rename from memory-store/migrations/000001_initial.down.sql rename to src/memory-store/migrations/000001_initial.down.sql diff --git a/memory-store/migrations/000001_initial.up.sql b/src/memory-store/migrations/000001_initial.up.sql similarity index 100% rename from memory-store/migrations/000001_initial.up.sql rename to src/memory-store/migrations/000001_initial.up.sql diff --git a/memory-store/migrations/000002_developers.down.sql b/src/memory-store/migrations/000002_developers.down.sql similarity index 100% rename from memory-store/migrations/000002_developers.down.sql rename to src/memory-store/migrations/000002_developers.down.sql diff --git a/memory-store/migrations/000002_developers.up.sql b/src/memory-store/migrations/000002_developers.up.sql similarity index 100% rename from memory-store/migrations/000002_developers.up.sql rename to src/memory-store/migrations/000002_developers.up.sql diff --git a/memory-store/migrations/000003_users.down.sql b/src/memory-store/migrations/000003_users.down.sql similarity index 100% rename from memory-store/migrations/000003_users.down.sql rename to src/memory-store/migrations/000003_users.down.sql diff --git a/memory-store/migrations/000003_users.up.sql b/src/memory-store/migrations/000003_users.up.sql similarity index 100% rename from memory-store/migrations/000003_users.up.sql rename to src/memory-store/migrations/000003_users.up.sql diff --git a/memory-store/migrations/000004_agents.down.sql b/src/memory-store/migrations/000004_agents.down.sql similarity index 100% rename from memory-store/migrations/000004_agents.down.sql rename to src/memory-store/migrations/000004_agents.down.sql diff --git a/memory-store/migrations/000004_agents.up.sql b/src/memory-store/migrations/000004_agents.up.sql similarity index 100% rename from memory-store/migrations/000004_agents.up.sql rename to src/memory-store/migrations/000004_agents.up.sql diff --git a/memory-store/migrations/000005_files.down.sql b/src/memory-store/migrations/000005_files.down.sql similarity index 100% rename from memory-store/migrations/000005_files.down.sql rename to src/memory-store/migrations/000005_files.down.sql diff --git a/memory-store/migrations/000005_files.up.sql b/src/memory-store/migrations/000005_files.up.sql similarity index 100% rename from memory-store/migrations/000005_files.up.sql rename to src/memory-store/migrations/000005_files.up.sql diff --git a/memory-store/migrations/000006_docs.down.sql b/src/memory-store/migrations/000006_docs.down.sql similarity index 100% rename from memory-store/migrations/000006_docs.down.sql rename to src/memory-store/migrations/000006_docs.down.sql diff --git a/memory-store/migrations/000006_docs.up.sql b/src/memory-store/migrations/000006_docs.up.sql similarity index 100% rename from memory-store/migrations/000006_docs.up.sql rename to src/memory-store/migrations/000006_docs.up.sql diff --git a/memory-store/migrations/000007_ann.down.sql b/src/memory-store/migrations/000007_ann.down.sql similarity index 100% rename from memory-store/migrations/000007_ann.down.sql rename to src/memory-store/migrations/000007_ann.down.sql diff --git a/memory-store/migrations/000007_ann.up.sql b/src/memory-store/migrations/000007_ann.up.sql similarity index 100% rename from memory-store/migrations/000007_ann.up.sql rename to src/memory-store/migrations/000007_ann.up.sql diff --git a/memory-store/migrations/000008_tools.down.sql b/src/memory-store/migrations/000008_tools.down.sql similarity index 100% rename from memory-store/migrations/000008_tools.down.sql rename to src/memory-store/migrations/000008_tools.down.sql diff --git a/memory-store/migrations/000008_tools.up.sql b/src/memory-store/migrations/000008_tools.up.sql similarity index 100% rename from memory-store/migrations/000008_tools.up.sql rename to src/memory-store/migrations/000008_tools.up.sql diff --git a/memory-store/migrations/000009_sessions.down.sql b/src/memory-store/migrations/000009_sessions.down.sql similarity index 100% rename from memory-store/migrations/000009_sessions.down.sql rename to src/memory-store/migrations/000009_sessions.down.sql diff --git a/memory-store/migrations/000009_sessions.up.sql b/src/memory-store/migrations/000009_sessions.up.sql similarity index 100% rename from memory-store/migrations/000009_sessions.up.sql rename to src/memory-store/migrations/000009_sessions.up.sql diff --git a/memory-store/migrations/000010_tasks.down.sql b/src/memory-store/migrations/000010_tasks.down.sql similarity index 100% rename from memory-store/migrations/000010_tasks.down.sql rename to src/memory-store/migrations/000010_tasks.down.sql diff --git a/memory-store/migrations/000010_tasks.up.sql b/src/memory-store/migrations/000010_tasks.up.sql similarity index 100% rename from memory-store/migrations/000010_tasks.up.sql rename to src/memory-store/migrations/000010_tasks.up.sql diff --git a/memory-store/migrations/000011_executions.down.sql b/src/memory-store/migrations/000011_executions.down.sql similarity index 100% rename from memory-store/migrations/000011_executions.down.sql rename to src/memory-store/migrations/000011_executions.down.sql diff --git a/memory-store/migrations/000011_executions.up.sql b/src/memory-store/migrations/000011_executions.up.sql similarity index 100% rename from memory-store/migrations/000011_executions.up.sql rename to src/memory-store/migrations/000011_executions.up.sql diff --git a/memory-store/migrations/000012_transitions.down.sql b/src/memory-store/migrations/000012_transitions.down.sql similarity index 100% rename from memory-store/migrations/000012_transitions.down.sql rename to src/memory-store/migrations/000012_transitions.down.sql diff --git a/memory-store/migrations/000012_transitions.up.sql b/src/memory-store/migrations/000012_transitions.up.sql similarity index 100% rename from memory-store/migrations/000012_transitions.up.sql rename to src/memory-store/migrations/000012_transitions.up.sql diff --git a/memory-store/migrations/000013_executions_continuous_view.down.sql b/src/memory-store/migrations/000013_executions_continuous_view.down.sql similarity index 100% rename from memory-store/migrations/000013_executions_continuous_view.down.sql rename to src/memory-store/migrations/000013_executions_continuous_view.down.sql diff --git a/memory-store/migrations/000013_executions_continuous_view.up.sql b/src/memory-store/migrations/000013_executions_continuous_view.up.sql similarity index 100% rename from memory-store/migrations/000013_executions_continuous_view.up.sql rename to src/memory-store/migrations/000013_executions_continuous_view.up.sql diff --git a/memory-store/migrations/000014_temporal_lookup.down.sql b/src/memory-store/migrations/000014_temporal_lookup.down.sql similarity index 100% rename from memory-store/migrations/000014_temporal_lookup.down.sql rename to src/memory-store/migrations/000014_temporal_lookup.down.sql diff --git a/memory-store/migrations/000014_temporal_lookup.up.sql b/src/memory-store/migrations/000014_temporal_lookup.up.sql similarity index 100% rename from memory-store/migrations/000014_temporal_lookup.up.sql rename to src/memory-store/migrations/000014_temporal_lookup.up.sql diff --git a/memory-store/migrations/000015_entries.down.sql b/src/memory-store/migrations/000015_entries.down.sql similarity index 100% rename from memory-store/migrations/000015_entries.down.sql rename to src/memory-store/migrations/000015_entries.down.sql diff --git a/memory-store/migrations/000015_entries.up.sql b/src/memory-store/migrations/000015_entries.up.sql similarity index 100% rename from memory-store/migrations/000015_entries.up.sql rename to src/memory-store/migrations/000015_entries.up.sql diff --git a/memory-store/migrations/000016_entry_relations.down.sql b/src/memory-store/migrations/000016_entry_relations.down.sql similarity index 100% rename from memory-store/migrations/000016_entry_relations.down.sql rename to src/memory-store/migrations/000016_entry_relations.down.sql diff --git a/memory-store/migrations/000016_entry_relations.up.sql b/src/memory-store/migrations/000016_entry_relations.up.sql similarity index 100% rename from memory-store/migrations/000016_entry_relations.up.sql rename to src/memory-store/migrations/000016_entry_relations.up.sql diff --git a/memory-store/migrations/000017_compression.down.sql b/src/memory-store/migrations/000017_compression.down.sql similarity index 100% rename from memory-store/migrations/000017_compression.down.sql rename to src/memory-store/migrations/000017_compression.down.sql diff --git a/memory-store/migrations/000017_compression.up.sql b/src/memory-store/migrations/000017_compression.up.sql similarity index 100% rename from memory-store/migrations/000017_compression.up.sql rename to src/memory-store/migrations/000017_compression.up.sql diff --git a/memory-store/migrations/000018_doc_search.down.sql b/src/memory-store/migrations/000018_doc_search.down.sql similarity index 100% rename from memory-store/migrations/000018_doc_search.down.sql rename to src/memory-store/migrations/000018_doc_search.down.sql diff --git a/memory-store/migrations/000018_doc_search.up.sql b/src/memory-store/migrations/000018_doc_search.up.sql similarity index 100% rename from memory-store/migrations/000018_doc_search.up.sql rename to src/memory-store/migrations/000018_doc_search.up.sql diff --git a/memory-store/migrations/000019_system_developer.down.sql b/src/memory-store/migrations/000019_system_developer.down.sql similarity index 100% rename from memory-store/migrations/000019_system_developer.down.sql rename to src/memory-store/migrations/000019_system_developer.down.sql diff --git a/memory-store/migrations/000019_system_developer.up.sql b/src/memory-store/migrations/000019_system_developer.up.sql similarity index 100% rename from memory-store/migrations/000019_system_developer.up.sql rename to src/memory-store/migrations/000019_system_developer.up.sql diff --git a/memory-store/migrations/000020_executions_task_cascade.down.sql b/src/memory-store/migrations/000020_executions_task_cascade.down.sql similarity index 100% rename from memory-store/migrations/000020_executions_task_cascade.down.sql rename to src/memory-store/migrations/000020_executions_task_cascade.down.sql diff --git a/memory-store/migrations/000020_executions_task_cascade.up.sql b/src/memory-store/migrations/000020_executions_task_cascade.up.sql similarity index 100% rename from memory-store/migrations/000020_executions_task_cascade.up.sql rename to src/memory-store/migrations/000020_executions_task_cascade.up.sql diff --git a/memory-store/migrations/000021_fix_toolname_contraint.down.sql b/src/memory-store/migrations/000021_fix_toolname_contraint.down.sql similarity index 100% rename from memory-store/migrations/000021_fix_toolname_contraint.down.sql rename to src/memory-store/migrations/000021_fix_toolname_contraint.down.sql diff --git a/memory-store/migrations/000021_fix_toolname_contraint.up.sql b/src/memory-store/migrations/000021_fix_toolname_contraint.up.sql similarity index 100% rename from memory-store/migrations/000021_fix_toolname_contraint.up.sql rename to src/memory-store/migrations/000021_fix_toolname_contraint.up.sql diff --git a/memory-store/migrations/000022_vector_search.down.sql b/src/memory-store/migrations/000022_vector_search.down.sql similarity index 100% rename from memory-store/migrations/000022_vector_search.down.sql rename to src/memory-store/migrations/000022_vector_search.down.sql diff --git a/memory-store/migrations/000022_vector_search.up.sql b/src/memory-store/migrations/000022_vector_search.up.sql similarity index 100% rename from memory-store/migrations/000022_vector_search.up.sql rename to src/memory-store/migrations/000022_vector_search.up.sql diff --git a/memory-store/migrations/000023_update_strings_length_constraints.down.sql b/src/memory-store/migrations/000023_update_strings_length_constraints.down.sql similarity index 100% rename from memory-store/migrations/000023_update_strings_length_constraints.down.sql rename to src/memory-store/migrations/000023_update_strings_length_constraints.down.sql diff --git a/memory-store/migrations/000023_update_strings_length_constraints.up.sql b/src/memory-store/migrations/000023_update_strings_length_constraints.up.sql similarity index 100% rename from memory-store/migrations/000023_update_strings_length_constraints.up.sql rename to src/memory-store/migrations/000023_update_strings_length_constraints.up.sql diff --git a/memory-store/migrations/000024_hybrid_search.down.sql b/src/memory-store/migrations/000024_hybrid_search.down.sql similarity index 100% rename from memory-store/migrations/000024_hybrid_search.down.sql rename to src/memory-store/migrations/000024_hybrid_search.down.sql diff --git a/memory-store/migrations/000024_hybrid_search.up.sql b/src/memory-store/migrations/000024_hybrid_search.up.sql similarity index 100% rename from memory-store/migrations/000024_hybrid_search.up.sql rename to src/memory-store/migrations/000024_hybrid_search.up.sql diff --git a/memory-store/migrations/000025_default_system_template.down.sql b/src/memory-store/migrations/000025_default_system_template.down.sql similarity index 100% rename from memory-store/migrations/000025_default_system_template.down.sql rename to src/memory-store/migrations/000025_default_system_template.down.sql diff --git a/memory-store/migrations/000025_default_system_template.up.sql b/src/memory-store/migrations/000025_default_system_template.up.sql similarity index 100% rename from memory-store/migrations/000025_default_system_template.up.sql rename to src/memory-store/migrations/000025_default_system_template.up.sql diff --git a/memory-store/migrations/000026_transition_cursor.down.sql b/src/memory-store/migrations/000026_transition_cursor.down.sql similarity index 100% rename from memory-store/migrations/000026_transition_cursor.down.sql rename to src/memory-store/migrations/000026_transition_cursor.down.sql diff --git a/memory-store/migrations/000026_transition_cursor.up.sql b/src/memory-store/migrations/000026_transition_cursor.up.sql similarity index 100% rename from memory-store/migrations/000026_transition_cursor.up.sql rename to src/memory-store/migrations/000026_transition_cursor.up.sql diff --git a/memory-store/migrations/000027_add_postgraphile.down.sql b/src/memory-store/migrations/000027_add_postgraphile.down.sql similarity index 100% rename from memory-store/migrations/000027_add_postgraphile.down.sql rename to src/memory-store/migrations/000027_add_postgraphile.down.sql diff --git a/memory-store/migrations/000027_add_postgraphile.up.sql b/src/memory-store/migrations/000027_add_postgraphile.up.sql similarity index 100% rename from memory-store/migrations/000027_add_postgraphile.up.sql rename to src/memory-store/migrations/000027_add_postgraphile.up.sql diff --git a/memory-store/migrations/000028_new_hybrid_search_implementation.down.sql b/src/memory-store/migrations/000028_new_hybrid_search_implementation.down.sql similarity index 100% rename from memory-store/migrations/000028_new_hybrid_search_implementation.down.sql rename to src/memory-store/migrations/000028_new_hybrid_search_implementation.down.sql diff --git a/memory-store/migrations/000028_new_hybrid_search_implementation.up.sql b/src/memory-store/migrations/000028_new_hybrid_search_implementation.up.sql similarity index 100% rename from memory-store/migrations/000028_new_hybrid_search_implementation.up.sql rename to src/memory-store/migrations/000028_new_hybrid_search_implementation.up.sql diff --git a/memory-store/migrations/000029_duplicate_doc_prevention.down.sql b/src/memory-store/migrations/000029_duplicate_doc_prevention.down.sql similarity index 100% rename from memory-store/migrations/000029_duplicate_doc_prevention.down.sql rename to src/memory-store/migrations/000029_duplicate_doc_prevention.down.sql diff --git a/memory-store/migrations/000029_duplicate_doc_prevention.up.sql b/src/memory-store/migrations/000029_duplicate_doc_prevention.up.sql similarity index 100% rename from memory-store/migrations/000029_duplicate_doc_prevention.up.sql rename to src/memory-store/migrations/000029_duplicate_doc_prevention.up.sql diff --git a/memory-store/migrations/000030_add_unaccent_search_config.down.sql b/src/memory-store/migrations/000030_add_unaccent_search_config.down.sql similarity index 100% rename from memory-store/migrations/000030_add_unaccent_search_config.down.sql rename to src/memory-store/migrations/000030_add_unaccent_search_config.down.sql diff --git a/memory-store/migrations/000030_add_unaccent_search_config.up.sql b/src/memory-store/migrations/000030_add_unaccent_search_config.up.sql similarity index 100% rename from memory-store/migrations/000030_add_unaccent_search_config.up.sql rename to src/memory-store/migrations/000030_add_unaccent_search_config.up.sql diff --git a/memory-store/migrations/000031_add_trigram_search.down.sql b/src/memory-store/migrations/000031_add_trigram_search.down.sql similarity index 100% rename from memory-store/migrations/000031_add_trigram_search.down.sql rename to src/memory-store/migrations/000031_add_trigram_search.down.sql diff --git a/memory-store/migrations/000031_add_trigram_search.up.sql b/src/memory-store/migrations/000031_add_trigram_search.up.sql similarity index 100% rename from memory-store/migrations/000031_add_trigram_search.up.sql rename to src/memory-store/migrations/000031_add_trigram_search.up.sql diff --git a/memory-store/migrations/000032_enhance_trigram_search.down.sql b/src/memory-store/migrations/000032_enhance_trigram_search.down.sql similarity index 100% rename from memory-store/migrations/000032_enhance_trigram_search.down.sql rename to src/memory-store/migrations/000032_enhance_trigram_search.down.sql diff --git a/memory-store/migrations/000032_enhance_trigram_search.up.sql b/src/memory-store/migrations/000032_enhance_trigram_search.up.sql similarity index 100% rename from memory-store/migrations/000032_enhance_trigram_search.up.sql rename to src/memory-store/migrations/000032_enhance_trigram_search.up.sql diff --git a/memory-store/migrations/000033_fix_latest_transitions.down.sql b/src/memory-store/migrations/000033_fix_latest_transitions.down.sql similarity index 100% rename from memory-store/migrations/000033_fix_latest_transitions.down.sql rename to src/memory-store/migrations/000033_fix_latest_transitions.down.sql diff --git a/memory-store/migrations/000033_fix_latest_transitions.up.sql b/src/memory-store/migrations/000033_fix_latest_transitions.up.sql similarity index 100% rename from memory-store/migrations/000033_fix_latest_transitions.up.sql rename to src/memory-store/migrations/000033_fix_latest_transitions.up.sql diff --git a/memory-store/migrations/000034_switch_to_hypercore.down.sql b/src/memory-store/migrations/000034_switch_to_hypercore.down.sql similarity index 100% rename from memory-store/migrations/000034_switch_to_hypercore.down.sql rename to src/memory-store/migrations/000034_switch_to_hypercore.down.sql diff --git a/memory-store/migrations/000034_switch_to_hypercore.up.sql b/src/memory-store/migrations/000034_switch_to_hypercore.up.sql similarity index 100% rename from memory-store/migrations/000034_switch_to_hypercore.up.sql rename to src/memory-store/migrations/000034_switch_to_hypercore.up.sql diff --git a/memory-store/migrations/000035_enhanced_indices.down.sql b/src/memory-store/migrations/000035_enhanced_indices.down.sql similarity index 100% rename from memory-store/migrations/000035_enhanced_indices.down.sql rename to src/memory-store/migrations/000035_enhanced_indices.down.sql diff --git a/memory-store/migrations/000035_enhanced_indices.up.sql b/src/memory-store/migrations/000035_enhanced_indices.up.sql similarity index 100% rename from memory-store/migrations/000035_enhanced_indices.up.sql rename to src/memory-store/migrations/000035_enhanced_indices.up.sql diff --git a/memory-store/migrations/000036_usage.down.sql b/src/memory-store/migrations/000036_usage.down.sql similarity index 100% rename from memory-store/migrations/000036_usage.down.sql rename to src/memory-store/migrations/000036_usage.down.sql diff --git a/memory-store/migrations/000036_usage.up.sql b/src/memory-store/migrations/000036_usage.up.sql similarity index 100% rename from memory-store/migrations/000036_usage.up.sql rename to src/memory-store/migrations/000036_usage.up.sql diff --git a/memory-store/migrations/000037_speed_up_search.down.sql b/src/memory-store/migrations/000037_speed_up_search.down.sql similarity index 100% rename from memory-store/migrations/000037_speed_up_search.down.sql rename to src/memory-store/migrations/000037_speed_up_search.down.sql diff --git a/memory-store/migrations/000037_speed_up_search.up.sql b/src/memory-store/migrations/000037_speed_up_search.up.sql similarity index 100% rename from memory-store/migrations/000037_speed_up_search.up.sql rename to src/memory-store/migrations/000037_speed_up_search.up.sql diff --git a/src/memory-store/migrations/000038_usage_cost_monthly.down.sql b/src/memory-store/migrations/000038_usage_cost_monthly.down.sql new file mode 100644 index 000000000..a734c9de6 --- /dev/null +++ b/src/memory-store/migrations/000038_usage_cost_monthly.down.sql @@ -0,0 +1,12 @@ +BEGIN; + +-- Remove the continuous aggregate policy +SELECT remove_continuous_aggregate_policy('usage_cost_monthly'); + +-- Drop the view +DROP VIEW IF EXISTS developer_cost_monthly; + +-- Drop the continuous aggregate with CASCADE to remove any dependent objects (like the index) +DROP MATERIALIZED VIEW IF EXISTS usage_cost_monthly CASCADE; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000038_usage_cost_monthly.up.sql b/src/memory-store/migrations/000038_usage_cost_monthly.up.sql new file mode 100644 index 000000000..337d44da4 --- /dev/null +++ b/src/memory-store/migrations/000038_usage_cost_monthly.up.sql @@ -0,0 +1,34 @@ +-- Create continuous aggregate for monthly cost per developer with real-time data +CREATE MATERIALIZED VIEW usage_cost_monthly +WITH (timescaledb.continuous, timescaledb.materialized_only=false) AS +SELECT + developer_id, + time_bucket('1 month', created_at) AS bucket_start, + SUM(cost) FILTER (WHERE NOT custom_api_used) AS monthly_cost +FROM usage +GROUP BY developer_id, bucket_start +WITH NO DATA; + +-- Create index for efficient querying +CREATE INDEX IF NOT EXISTS idx_usage_cost_monthly_developer +ON usage_cost_monthly (developer_id, bucket_start DESC); + +-- Set up continuous aggregate policy to refresh every minute +-- The refresh window must cover at least two buckets (months in this case) +SELECT add_continuous_aggregate_policy( + 'usage_cost_monthly', + start_offset => INTERVAL '3 months', + end_offset => INTERVAL '0 minute', + schedule_interval => INTERVAL '30 seconds' +); + +-- Create view that joins with developers table for easy querying +CREATE OR REPLACE VIEW developer_cost_monthly AS +SELECT + m.bucket_start, + d.developer_id, + d.active, + d.tags, + m.monthly_cost +FROM usage_cost_monthly AS m +JOIN developers AS d USING (developer_id); \ No newline at end of file diff --git a/src/memory-store/migrations/000039_projects.down.sql b/src/memory-store/migrations/000039_projects.down.sql new file mode 100644 index 000000000..01da604ee --- /dev/null +++ b/src/memory-store/migrations/000039_projects.down.sql @@ -0,0 +1,32 @@ +BEGIN; + +-- Drop triggers +DROP TRIGGER IF EXISTS trg_prevent_default_project_deletion ON projects; +DROP TRIGGER IF EXISTS trg_create_default_project ON developers; + +-- Drop functions +DROP FUNCTION IF EXISTS prevent_default_project_deletion(); +DROP FUNCTION IF EXISTS create_default_project(); + +-- Drop views +DROP VIEW IF EXISTS project_docs; +DROP VIEW IF EXISTS project_executions; +DROP VIEW IF EXISTS project_tasks; +DROP VIEW IF EXISTS project_sessions; + +-- Drop indexes +DROP INDEX IF EXISTS idx_project_files_file; +DROP INDEX IF EXISTS idx_project_users_user; +DROP INDEX IF EXISTS idx_project_agents_agent; +DROP INDEX IF EXISTS idx_projects_metadata; +DROP INDEX IF EXISTS idx_projects_developer_id; + +-- Drop association tables +DROP TABLE IF EXISTS project_files; +DROP TABLE IF EXISTS project_users; +DROP TABLE IF EXISTS project_agents; + +-- Drop main table +DROP TABLE IF EXISTS projects; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000039_projects.up.sql b/src/memory-store/migrations/000039_projects.up.sql new file mode 100644 index 000000000..4a7f055be --- /dev/null +++ b/src/memory-store/migrations/000039_projects.up.sql @@ -0,0 +1,297 @@ +BEGIN; + +-- Create projects table +CREATE TABLE IF NOT EXISTS projects ( + project_id UUID NOT NULL, + developer_id UUID NOT NULL, + canonical_name CITEXT NOT NULL CONSTRAINT ct_projects_canonical_name_length CHECK ( + length(canonical_name) >= 1 + AND length(canonical_name) <= 255 + ), + name TEXT NOT NULL CONSTRAINT ct_projects_name_length CHECK ( + length(name) >= 1 + AND length(name) <= 255 + ), + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + metadata JSONB NOT NULL DEFAULT '{}'::JSONB, + CONSTRAINT pk_projects PRIMARY KEY (project_id), + CONSTRAINT uq_projects_developer_canonical_name UNIQUE (developer_id, canonical_name), + CONSTRAINT ct_projects_canonical_name_valid_identifier CHECK (canonical_name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'), + CONSTRAINT ct_projects_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'), + CONSTRAINT fk_projects_developer FOREIGN KEY (developer_id) REFERENCES developers (developer_id) +); + +-- Create project_agents association table +CREATE TABLE IF NOT EXISTS project_agents ( + project_id UUID NOT NULL, + developer_id UUID NOT NULL, + agent_id UUID NOT NULL, + CONSTRAINT pk_project_agents PRIMARY KEY (project_id, agent_id), + CONSTRAINT fk_project_agents_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT, + CONSTRAINT fk_project_agents_agent FOREIGN KEY (developer_id, agent_id) REFERENCES agents (developer_id, agent_id) ON DELETE CASCADE +); + +-- Create project_users association table +CREATE TABLE IF NOT EXISTS project_users ( + project_id UUID NOT NULL, + developer_id UUID NOT NULL, + user_id UUID NOT NULL, + CONSTRAINT pk_project_users PRIMARY KEY (project_id, user_id), + CONSTRAINT fk_project_users_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT, + CONSTRAINT fk_project_users_user FOREIGN KEY (developer_id, user_id) REFERENCES users (developer_id, user_id) ON DELETE CASCADE +); + +-- Create project_files association table +CREATE TABLE IF NOT EXISTS project_files ( + project_id UUID NOT NULL, + developer_id UUID NOT NULL, + file_id UUID NOT NULL, + CONSTRAINT pk_project_files PRIMARY KEY (project_id, file_id), + CONSTRAINT fk_project_files_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT, + CONSTRAINT fk_project_files_file FOREIGN KEY (developer_id, file_id) REFERENCES files (developer_id, file_id) ON DELETE CASCADE +); + +-- Create project_sessions view +CREATE OR REPLACE VIEW project_sessions AS +WITH sessions_with_projects AS ( + -- Sessions with agent participants that are in projects + SELECT DISTINCT + s.session_id, + s.developer_id, + p.project_id + FROM sessions s + JOIN session_lookup sl ON s.session_id = sl.session_id AND sl.participant_type = 'agent' + JOIN project_agents pa ON pa.developer_id = s.developer_id AND pa.agent_id = sl.participant_id + JOIN projects p ON pa.project_id = p.project_id + + UNION + + -- Sessions with user participants that are in projects + SELECT DISTINCT + s.session_id, + s.developer_id, + p.project_id + FROM sessions s + JOIN session_lookup sl ON s.session_id = sl.session_id AND sl.participant_type = 'user' + JOIN project_users pu ON pu.developer_id = s.developer_id AND pu.user_id = sl.participant_id + JOIN projects p ON pu.project_id = p.project_id +) +SELECT + s.session_id, + s.developer_id, + sp.project_id, + p.canonical_name AS project_canonical_name, + s.situation, + s.system_template, + s.metadata, + s.render_templates, + s.token_budget, + s.context_overflow, + s.forward_tool_calls, + s.recall_options, + s.created_at, + s.updated_at +FROM sessions s +JOIN sessions_with_projects sp ON s.session_id = sp.session_id AND s.developer_id = sp.developer_id +JOIN projects p ON sp.project_id = p.project_id; + +-- Create project_tasks view +CREATE OR REPLACE VIEW project_tasks AS +SELECT + t.task_id, + t.developer_id, + p.project_id, + p.canonical_name AS project_canonical_name, + t.agent_id, + t.canonical_name, + t.name, + t.description, + t.input_schema, + t.inherit_tools, + t.metadata, + t.created_at, + t.updated_at, + t.version +FROM tasks t +JOIN agents a ON t.developer_id = a.developer_id AND t.agent_id = a.agent_id +JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id +JOIN projects p ON pa.project_id = p.project_id; + +-- Create project_executions view +CREATE OR REPLACE VIEW project_executions AS +SELECT + e.execution_id, + e.developer_id, + p.project_id, + p.canonical_name AS project_canonical_name, + e.task_id, + e.task_version, + e.input, + e.metadata, + e.created_at +FROM executions e +JOIN tasks t ON e.developer_id = t.developer_id AND e.task_id = t.task_id AND e.task_version = t.version +JOIN agents a ON t.developer_id = a.developer_id AND t.agent_id = a.agent_id +JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id +JOIN projects p ON pa.project_id = p.project_id; + +-- Create project_docs view +CREATE OR REPLACE VIEW project_docs AS +WITH doc_owner_groups AS ( + SELECT + doc_id, + developer_id, + array_agg(owner_id) as owner_ids + FROM doc_owners + GROUP BY doc_id, developer_id +), +docs_with_projects AS ( + -- Docs owned by agents that are in projects + SELECT DISTINCT + d.doc_id, + d.developer_id, + p.project_id + FROM docs d + JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id + JOIN project_agents pa ON pa.developer_id = d.developer_id AND pa.agent_id = ANY(dog.owner_ids) + JOIN projects p ON pa.project_id = p.project_id + + UNION + + -- Docs owned by users that are in projects + SELECT DISTINCT + d.doc_id, + d.developer_id, + p.project_id + FROM docs d + JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id + JOIN project_users pu ON pu.developer_id = d.developer_id AND pu.user_id = ANY(dog.owner_ids) + JOIN projects p ON pu.project_id = p.project_id +) +SELECT + d.doc_id, + d.developer_id, + dp.project_id, + p.canonical_name AS project_canonical_name, + d.title, + d.content, + d.metadata, + d.created_at, + d.updated_at, + dog.owner_ids +FROM docs d +JOIN docs_with_projects dp ON d.doc_id = dp.doc_id AND d.developer_id = dp.developer_id +JOIN projects p ON dp.project_id = p.project_id +LEFT JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id; + +-- Create indexes +CREATE INDEX IF NOT EXISTS idx_projects_developer_id ON projects (developer_id); +CREATE INDEX IF NOT EXISTS idx_projects_metadata ON projects USING GIN (metadata); +CREATE INDEX IF NOT EXISTS idx_project_agents_agent ON project_agents (developer_id, agent_id); +CREATE INDEX IF NOT EXISTS idx_project_users_user ON project_users (developer_id, user_id); +CREATE INDEX IF NOT EXISTS idx_project_files_file ON project_files (developer_id, file_id); + +-- Create trigger to automatically update updated_at for projects +CREATE OR REPLACE TRIGGER trg_projects_updated_at BEFORE UPDATE +ON projects FOR EACH ROW +EXECUTE FUNCTION update_updated_at_column(); + +-- Create function to create default project for new developers +CREATE OR REPLACE FUNCTION create_default_project() +RETURNS TRIGGER AS $$ +BEGIN + INSERT INTO projects ( + project_id, + developer_id, + canonical_name, + name, + metadata + ) VALUES ( + gen_random_uuid(), + NEW.developer_id, + 'default', + 'Default Project', + jsonb_build_object( + 'is_default', true, + 'description', 'Default project containing all existing resources' + ) + ); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +-- Create trigger to create default project on new developer +CREATE TRIGGER trg_create_default_project +AFTER INSERT ON developers +FOR EACH ROW +EXECUTE FUNCTION create_default_project(); + +-- Create function to prevent deletion of default projects +CREATE OR REPLACE FUNCTION prevent_default_project_deletion() +RETURNS TRIGGER AS $$ +BEGIN + IF OLD.canonical_name = 'default' THEN + RAISE EXCEPTION 'Cannot delete default project'; + END IF; + RETURN OLD; +END; +$$ LANGUAGE plpgsql; + +-- Create trigger to prevent deletion of default projects +CREATE TRIGGER trg_prevent_default_project_deletion +BEFORE DELETE ON projects +FOR EACH ROW +EXECUTE FUNCTION prevent_default_project_deletion(); + +-- Add comments to tables +COMMENT ON TABLE projects IS 'Stores project configurations and metadata for developers'; +COMMENT ON TABLE project_agents IS 'Associates agents with projects'; +COMMENT ON TABLE project_users IS 'Associates users with projects'; +COMMENT ON TABLE project_files IS 'Associates files with projects'; + +-- Create default project for each existing developer +INSERT INTO projects (project_id, developer_id, canonical_name, name, metadata) +SELECT + gen_random_uuid(), + developer_id, + 'default', + 'Default Project', + jsonb_build_object( + 'is_default', true, + 'description', 'Default project containing all existing resources' + ) +FROM developers +ON CONFLICT (developer_id, canonical_name) DO NOTHING; + +-- Associate all existing agents with their developer's default project +INSERT INTO project_agents (project_id, developer_id, agent_id) +SELECT + p.project_id, + a.developer_id, + a.agent_id +FROM agents a +JOIN projects p ON a.developer_id = p.developer_id AND p.canonical_name = 'default' +ON CONFLICT (project_id, agent_id) DO NOTHING; + +-- Associate all existing users with their developer's default project +INSERT INTO project_users (project_id, developer_id, user_id) +SELECT + p.project_id, + u.developer_id, + u.user_id +FROM users u +JOIN projects p ON u.developer_id = p.developer_id AND p.canonical_name = 'default' +ON CONFLICT (project_id, user_id) DO NOTHING; + +-- Associate all existing files with their developer's default project +INSERT INTO project_files (project_id, developer_id, file_id) +SELECT + p.project_id, + f.developer_id, + f.file_id +FROM files f +JOIN projects p ON f.developer_id = p.developer_id AND p.canonical_name = 'default' +ON CONFLICT (project_id, file_id) DO NOTHING; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000040_add_secrets.down.sql b/src/memory-store/migrations/000040_add_secrets.down.sql new file mode 100644 index 000000000..adfebda50 --- /dev/null +++ b/src/memory-store/migrations/000040_add_secrets.down.sql @@ -0,0 +1,15 @@ +BEGIN; + +-- Drop trigger for automatically updating 'updated_at' +DROP TRIGGER IF EXISTS update_secrets_timestamp_trigger ON secrets; +-- Drop trigger function for automatically updating 'updated_at' +DROP FUNCTION IF EXISTS update_secrets_timestamp(); +-- Drop encryption/decryption functions +DROP FUNCTION IF EXISTS decrypt_secret; +DROP FUNCTION IF EXISTS encrypt_secret; +DROP INDEX IF EXISTS idx_secrets_metadata; +DROP INDEX IF EXISTS idx_secrets_name; +DROP INDEX IF EXISTS idx_secrets_developer_id; +DROP TABLE IF EXISTS secrets; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000040_add_secrets.up.sql b/src/memory-store/migrations/000040_add_secrets.up.sql new file mode 100644 index 000000000..3d129bdb9 --- /dev/null +++ b/src/memory-store/migrations/000040_add_secrets.up.sql @@ -0,0 +1,63 @@ +BEGIN; + +-- Create secrets table with encryption at rest +CREATE TABLE IF NOT EXISTS secrets ( + secret_id UUID NOT NULL, + developer_id UUID NOT NULL, + name TEXT NOT NULL, + description TEXT, + value_encrypted BYTEA NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + metadata JSONB DEFAULT '{}'::jsonb, + CONSTRAINT pk_secrets PRIMARY KEY (developer_id, secret_id), + CONSTRAINT uq_secrets_unique UNIQUE(developer_id, name), + CONSTRAINT ct_secrets_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'), + CONSTRAINT ct_secrets_canonical_name_valid_identifier CHECK (name ~ '^[a-zA-Z][a-zA-Z0-9_]*$') +); + +CREATE OR REPLACE FUNCTION update_secrets_timestamp() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER update_secrets_timestamp_trigger +BEFORE UPDATE ON secrets +FOR EACH ROW +EXECUTE FUNCTION update_secrets_timestamp(); + +-- Add indexes +CREATE INDEX IF NOT EXISTS idx_secrets_developer_id ON secrets(developer_id); +CREATE INDEX IF NOT EXISTS idx_secrets_name ON secrets(name); +CREATE INDEX IF NOT EXISTS idx_secrets_metadata ON secrets USING gin(metadata); + +-- Add encryption/decryption functions using pgcrypto +CREATE OR REPLACE FUNCTION encrypt_secret( + p_value TEXT, + p_key TEXT +) RETURNS BYTEA AS $$ +BEGIN + RETURN pgp_sym_encrypt( + p_value, + p_key, + 'cipher-algo=aes256' + ); +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +CREATE OR REPLACE FUNCTION decrypt_secret( + p_encrypted_value BYTEA, + p_key TEXT +) RETURNS TEXT AS $$ +BEGIN + RETURN pgp_sym_decrypt( + p_encrypted_value, + p_key + ); +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000041_non_null_forward_tool_calls.down.sql b/src/memory-store/migrations/000041_non_null_forward_tool_calls.down.sql new file mode 100644 index 000000000..ed9ef423d --- /dev/null +++ b/src/memory-store/migrations/000041_non_null_forward_tool_calls.down.sql @@ -0,0 +1,5 @@ +-- Remove the not null constraint +ALTER TABLE sessions ALTER COLUMN forward_tool_calls DROP NOT NULL; + +-- Remove the comment +COMMENT ON COLUMN sessions.forward_tool_calls IS NULL; \ No newline at end of file diff --git a/src/memory-store/migrations/000041_non_null_forward_tool_calls.up.sql b/src/memory-store/migrations/000041_non_null_forward_tool_calls.up.sql new file mode 100644 index 000000000..58fe82c62 --- /dev/null +++ b/src/memory-store/migrations/000041_non_null_forward_tool_calls.up.sql @@ -0,0 +1,8 @@ +-- Update existing null values to false +UPDATE sessions SET forward_tool_calls = false WHERE forward_tool_calls IS NULL; + +-- Make the column not null +ALTER TABLE sessions ALTER COLUMN forward_tool_calls SET NOT NULL; + +-- Add comment to explain the change +COMMENT ON COLUMN sessions.forward_tool_calls IS 'Whether to forward tool calls directly to the model. Default is false.'; \ No newline at end of file diff --git a/src/memory-store/migrations/000042_add_api_keys.down.sql b/src/memory-store/migrations/000042_add_api_keys.down.sql new file mode 100644 index 000000000..a1ebef0ae --- /dev/null +++ b/src/memory-store/migrations/000042_add_api_keys.down.sql @@ -0,0 +1,14 @@ +BEGIN; + +-- Drop helper functions +DROP FUNCTION IF EXISTS decrypt_api_key(BYTEA, TEXT); +DROP FUNCTION IF EXISTS encrypt_api_key(TEXT, TEXT); + +-- Drop trigger and function +DROP TRIGGER IF EXISTS update_api_keys_timestamp_trigger ON api_keys; +DROP FUNCTION IF EXISTS update_api_keys_timestamp(); + +-- Drop table +DROP TABLE IF EXISTS api_keys CASCADE; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000042_add_api_keys.up.sql b/src/memory-store/migrations/000042_add_api_keys.up.sql new file mode 100644 index 000000000..c61330299 --- /dev/null +++ b/src/memory-store/migrations/000042_add_api_keys.up.sql @@ -0,0 +1,74 @@ +BEGIN; + +-- Create api_keys table with encryption for api_key_encrypted (following secrets pattern) +CREATE TABLE IF NOT EXISTS api_keys ( + api_key_id UUID NOT NULL, + developer_id UUID NOT NULL, + api_key_encrypted BYTEA NOT NULL, + name TEXT NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + metadata JSONB DEFAULT '{}'::jsonb, + deleted_at TIMESTAMPTZ DEFAULT NULL, + CONSTRAINT pk_api_keys PRIMARY KEY (developer_id, api_key_id), + CONSTRAINT ct_api_keys_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'), + CONSTRAINT ct_api_keys_name_valid_identifier CHECK (name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'), + CONSTRAINT fk_api_keys_developer FOREIGN KEY (developer_id) REFERENCES developers(developer_id) +); + +-- Create partial unique index instead of constraint with WHERE clause +CREATE UNIQUE INDEX IF NOT EXISTS uq_api_keys_developer_id_name + ON api_keys (developer_id, name) + WHERE deleted_at IS NULL; + +-- Create trigger function for updated_at +CREATE OR REPLACE FUNCTION update_api_keys_timestamp() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +-- Create trigger +CREATE TRIGGER update_api_keys_timestamp_trigger +BEFORE UPDATE ON api_keys +FOR EACH ROW +EXECUTE FUNCTION update_api_keys_timestamp(); + +-- Add indexes +CREATE INDEX IF NOT EXISTS idx_api_keys_developer_id ON api_keys(developer_id); +CREATE INDEX IF NOT EXISTS idx_api_keys_name ON api_keys(name); +CREATE INDEX IF NOT EXISTS idx_api_keys_metadata ON api_keys USING gin(metadata); +CREATE INDEX IF NOT EXISTS idx_api_keys_deleted_at ON api_keys(deleted_at) WHERE deleted_at IS NULL; + +-- Helper functions for encryption/decryption (following secrets pattern) +CREATE OR REPLACE FUNCTION encrypt_api_key( + p_value TEXT, + p_key TEXT +) RETURNS BYTEA AS $$ +BEGIN + RETURN pgp_sym_encrypt( + p_value, + p_key, + 'cipher-algo=aes256' + ); +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +CREATE OR REPLACE FUNCTION decrypt_api_key( + p_encrypted_value BYTEA, + p_key TEXT +) RETURNS TEXT AS $$ +BEGIN + RETURN pgp_sym_decrypt( + p_encrypted_value, + p_key + ); +END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +-- Add comment to table +COMMENT ON TABLE api_keys IS 'Stores API keys with encryption for developers'; + +COMMIT; \ No newline at end of file diff --git a/src/memory-store/migrations/000043_optional_trigram_search.down.sql b/src/memory-store/migrations/000043_optional_trigram_search.down.sql new file mode 100644 index 000000000..a45f38d0f --- /dev/null +++ b/src/memory-store/migrations/000043_optional_trigram_search.down.sql @@ -0,0 +1,378 @@ +-- Revert trigram similarity threshold to non-nullable with default 0.6 + +-- Revert search_by_text to original with non-nullable similarity_threshold +DROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float); + +CREATE OR REPLACE FUNCTION search_by_text ( + developer_id UUID, + query_text text, + owner_types TEXT[], + owner_ids UUID[], + search_language text DEFAULT 'english_unaccent', + k integer DEFAULT 3, + metadata_filter jsonb DEFAULT NULL, + similarity_threshold float DEFAULT 0.6 +) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$ +DECLARE + ts_query tsquery; +BEGIN + IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN + RAISE EXCEPTION 'owner_types and owner_ids must be the same length'; + END IF; + + -- Convert query to tsquery + ts_query := websearch_to_tsquery(search_language::regconfig, query_text); + + SET work_mem = '32MB'; + + RETURN QUERY EXECUTE +'WITH fts_results AS MATERIALIZED ( + SELECT + d.developer_id, + d.doc_id, + d.index, + d.title, + d.content, + ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score, + NULL::double precision AS trigram_score, + e.embedding, + d.metadata, + o.owner_type, + o.owner_id, + d.updated_at, + /* Mark source=1 for FTS */ + 1 AS source + FROM docs d + LEFT JOIN docs_embeddings e + ON e.developer_id = d.developer_id + AND e.doc_id = d.doc_id + AND e.index = d.index + LEFT JOIN doc_owners o + ON d.doc_id = o.doc_id + + WHERE d.developer_id = $2 + -- Must pass FTS + AND d.search_tsv @@ $1 + -- Filter by owners if needed + AND o.owner_type = ANY($3) + AND o.owner_id = ANY($4::uuid[]) + AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) + + +), +trgm_candidates AS MATERIALIZED ( + /* + * Get docs that fail the FTS pass but pass a broad trigram test + * i.e. (title % :search_text) or (content % :search_text) + * so it can use your GIN/GIST trigram indexes. + */ + SELECT + d.developer_id, + d.doc_id, + d.index, + d.title, + d.content, + d.search_tsv, + e.embedding, + d.metadata, + o.owner_type, + o.owner_id, + d.updated_at + FROM docs d + LEFT JOIN docs_embeddings e + ON e.developer_id = d.developer_id + AND e.doc_id = d.doc_id + AND e.index = d.index + LEFT JOIN doc_owners o + ON d.doc_id = o.doc_id + + WHERE d.developer_id = $2::uuid + AND o.owner_type = ANY($3) + AND o.owner_id = ANY($4::uuid[]) + AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) + -- A broad trigram match (index-friendly): + AND (d.title %> $6 + OR d.content %> $6) + -- Exclude anything that was already in the FTS set: + AND NOT EXISTS ( + SELECT 1 + FROM fts_results f + WHERE f.doc_id = d.doc_id + AND f.index = d.index + ) +), +trgm_scored AS ( + /* + * Only now do the heavy comprehensive_similarity check, + * but only for these trigram candidates. + */ + SELECT + t.developer_id, + t.doc_id, + t.index, + t.title, + t.content, + NULL::double precision AS tsv_score, + comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score, + t.embedding, + t.metadata, + t.owner_type, + t.owner_id, + t.updated_at, + 2 AS source + FROM trgm_candidates t + WHERE comprehensive_similarity(t.title, t.content, $6) > $7 +), +combined AS ( + /* + * Union the two sets: + * - FTS matches (fts_results) => "score" is tsv_score + * - Trigram-only matches => "score" is trigram_score + */ + SELECT + developer_id, + doc_id, + index, + title, + content, + COALESCE(tsv_score, trigram_score) AS score, + embedding, + metadata, + owner_type, + owner_id + FROM fts_results + + UNION ALL + + SELECT + developer_id, + doc_id, + index, + title, + content, + COALESCE(tsv_score, trigram_score) AS score, + embedding, + metadata, + owner_type, + owner_id + FROM trgm_scored +) +SELECT * +FROM combined +ORDER BY score DESC +LIMIT $8' + USING + ts_query, + developer_id, + owner_types, + owner_ids, + metadata_filter, + query_text, + similarity_threshold, + k; +END; +$$; + +-- Revert search_hybrid to original with non-nullable similarity_threshold +DROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer); + +CREATE OR REPLACE FUNCTION search_hybrid ( + p_developer_id UUID, + p_query_text text, + p_query_embedding vector (1024), + p_owner_types TEXT[], + p_owner_ids UUID [], + p_k integer DEFAULT 3, + p_alpha float DEFAULT 0.7, -- Weight for embedding results + p_confidence float DEFAULT 0.5, + p_metadata_filter jsonb DEFAULT NULL, + p_search_language text DEFAULT 'english_unaccent', + p_similarity_threshold float DEFAULT 0.6, + k_multiplier integer DEFAULT 5 +) RETURNS SETOF doc_search_result +LANGUAGE plpgsql AS +$$ +DECLARE + text_weight float := 1.0 - p_alpha; + embedding_weight float := p_alpha; + intermediate_limit integer := p_k * k_multiplier; +BEGIN + /* + 1) Get top-N results from text search. + 2) Get top-N results from vector search. + 3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON). + 4) Join those rows back to each sub-result to get text_score and embedding_score. + 5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number. + */ + + RETURN QUERY + WITH text_results AS ( + SELECT * + FROM search_by_text( + developer_id => p_developer_id, + query_text => p_query_text, + owner_types => p_owner_types, + owner_ids => p_owner_ids, + search_language => p_search_language, + k => intermediate_limit, + metadata_filter => p_metadata_filter, + similarity_threshold => p_similarity_threshold + ) + ), + embedding_results AS ( + SELECT * + FROM search_by_vector( + developer_id => p_developer_id, + query_embedding => p_query_embedding, + owner_types => p_owner_types, + owner_ids => p_owner_ids, + k => intermediate_limit, + confidence => p_confidence, + metadata_filter => p_metadata_filter + ) + ), + + -- UNION both sets, pick highest distance row per doc_id + all_results AS ( + SELECT DISTINCT ON (doc_id) + developer_id, + doc_id, + index, + title, + content, + distance, + embedding, + metadata, + owner_type, + owner_id + FROM ( + SELECT * FROM text_results + UNION ALL + SELECT * FROM embedding_results + ) combined + ORDER BY doc_id, distance DESC + ), + + -- Gather text_score & embedding_score for each doc + scores AS ( + SELECT + a.developer_id, + a.doc_id, + a.index, + a.title, + a.content, + a.embedding, + a.metadata, + a.owner_type, + a.owner_id, + COALESCE(t.distance, 0.0) AS text_score, + COALESCE(e.distance, 0.0) AS embedding_score + FROM all_results a + LEFT JOIN text_results t ON a.doc_id = t.doc_id + LEFT JOIN embedding_results e ON a.doc_id = e.doc_id + ), + + -- Give each row a stable ordering + scores_ordered AS ( + SELECT + s.*, + ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn + FROM scores s + ), + + -- Aggregate all text/embedding scores into arrays + aggregated AS ( + SELECT + array_agg(text_score ORDER BY rn) AS text_scores, + array_agg(embedding_score ORDER BY rn) AS embedding_scores + FROM scores_ordered + ), + + -- Normalize once for each array + normed_arrays AS ( + SELECT + dbsf_normalize(text_scores) AS norm_text_scores, + dbsf_normalize(embedding_scores) AS norm_embedding_scores + FROM aggregated + ), + + -- Join normalized arrays back using row_number + final AS ( + SELECT + s.developer_id, + s.doc_id, + s.index, + s.title, + s.content, + 1.0 - ( + text_weight * norm_text_scores[s.rn] + + embedding_weight * norm_embedding_scores[s.rn] + ) AS distance, + s.embedding, + s.metadata, + s.owner_type, + s.owner_id + FROM scores_ordered s + CROSS JOIN normed_arrays + ORDER BY distance ASC + LIMIT p_k + ) + SELECT * FROM final; +END; +$$; + +COMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search and enhanced fuzzy matching with configurable language and filtering options'; +COMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search with configurable weights and filtering options'; + +-- Revert embed_and_search_hybrid to original with non-nullable similarity_threshold +DROP FUNCTION IF EXISTS embed_and_search_hybrid; + +CREATE OR REPLACE FUNCTION embed_and_search_hybrid ( + developer_id UUID, + query_text text, + owner_types TEXT[], + owner_ids UUID [], + k integer DEFAULT 3, + alpha float DEFAULT 0.7, + confidence float DEFAULT 0.5, + metadata_filter jsonb DEFAULT NULL, + search_language text DEFAULT 'english_unaccent', + embedding_provider text DEFAULT 'openai', + embedding_model text DEFAULT 'text-embedding-3-large', + input_type text DEFAULT 'query', + api_key text DEFAULT NULL, + api_key_name text DEFAULT NULL, + similarity_threshold float DEFAULT 0.6 -- Reverted back to 0.6 default +) RETURNS SETOF doc_search_result AS $$ +DECLARE + query_embedding vector(1024); +BEGIN + -- Get embedding for the query + query_embedding := embed_with_cache( + embedding_provider, + embedding_model, + query_text, + input_type, + api_key, + api_key_name + ); + + -- Call the search_hybrid function with the embedding + RETURN QUERY + SELECT * FROM search_hybrid( + developer_id, + query_text, + query_embedding, + owner_types, + owner_ids, + k, + alpha, + confidence, + metadata_filter, + search_language, + similarity_threshold + ); +END; +$$ LANGUAGE plpgsql; + +COMMENT ON FUNCTION embed_and_search_hybrid IS 'Convenience function that combines text embedding generation and hybrid search in one call'; \ No newline at end of file diff --git a/src/memory-store/migrations/000043_optional_trigram_search.up.sql b/src/memory-store/migrations/000043_optional_trigram_search.up.sql new file mode 100644 index 000000000..abb69aec5 --- /dev/null +++ b/src/memory-store/migrations/000043_optional_trigram_search.up.sql @@ -0,0 +1,432 @@ +-- Make trigram similarity threshold optional in search functions +-- This allows disabling trigram search by passing NULL + +-- Update search_by_text to handle NULL similarity_threshold +DROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float); + +CREATE OR REPLACE FUNCTION search_by_text ( + developer_id UUID, + query_text text, + owner_types TEXT[], + owner_ids UUID[], + search_language text DEFAULT 'english_unaccent', + k integer DEFAULT 3, + metadata_filter jsonb DEFAULT NULL, + similarity_threshold float DEFAULT NULL -- Changed to NULL default +) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$ +DECLARE + ts_query tsquery; +BEGIN + IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN + RAISE EXCEPTION 'owner_types and owner_ids must be the same length'; + END IF; + + -- Convert query to tsquery + ts_query := websearch_to_tsquery(search_language::regconfig, query_text); + + SET work_mem = '32MB'; + + -- If similarity_threshold is NULL, only do full-text search + IF similarity_threshold IS NULL THEN + RETURN QUERY EXECUTE +'WITH fts_results AS MATERIALIZED ( + SELECT + d.developer_id, + d.doc_id, + d.index, + d.title, + d.content, + ts_rank_cd(d.search_tsv, $1, 32)::double precision AS score, + e.embedding, + d.metadata, + o.owner_type, + o.owner_id + FROM docs d + LEFT JOIN docs_embeddings e + ON e.developer_id = d.developer_id + AND e.doc_id = d.doc_id + AND e.index = d.index + LEFT JOIN doc_owners o + ON d.doc_id = o.doc_id + + WHERE d.developer_id = $2 + -- Must pass FTS + AND d.search_tsv @@ $1 + -- Filter by owners if needed + AND o.owner_type = ANY($3) + AND o.owner_id = ANY($4::uuid[]) + AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) +) +SELECT + developer_id, + doc_id, + index, + title, + content, + score AS distance, + embedding, + metadata, + owner_type, + owner_id +FROM fts_results +ORDER BY score DESC +LIMIT $6' + USING + ts_query, + developer_id, + owner_types, + owner_ids, + metadata_filter, + k; + ELSE + -- Original behavior with trigram search + RETURN QUERY EXECUTE +'WITH fts_results AS MATERIALIZED ( + SELECT + d.developer_id, + d.doc_id, + d.index, + d.title, + d.content, + ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score, + NULL::double precision AS trigram_score, + e.embedding, + d.metadata, + o.owner_type, + o.owner_id, + d.updated_at, + /* Mark source=1 for FTS */ + 1 AS source + FROM docs d + LEFT JOIN docs_embeddings e + ON e.developer_id = d.developer_id + AND e.doc_id = d.doc_id + AND e.index = d.index + LEFT JOIN doc_owners o + ON d.doc_id = o.doc_id + + WHERE d.developer_id = $2 + -- Must pass FTS + AND d.search_tsv @@ $1 + -- Filter by owners if needed + AND o.owner_type = ANY($3) + AND o.owner_id = ANY($4::uuid[]) + AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) +), +trgm_candidates AS MATERIALIZED ( + /* + * Get docs that fail the FTS pass but pass a broad trigram test + * i.e. (title % :search_text) or (content % :search_text) + * so it can use your GIN/GIST trigram indexes. + */ + SELECT + d.developer_id, + d.doc_id, + d.index, + d.title, + d.content, + d.search_tsv, + e.embedding, + d.metadata, + o.owner_type, + o.owner_id, + d.updated_at + FROM docs d + LEFT JOIN docs_embeddings e + ON e.developer_id = d.developer_id + AND e.doc_id = d.doc_id + AND e.index = d.index + LEFT JOIN doc_owners o + ON d.doc_id = o.doc_id + + WHERE d.developer_id = $2::uuid + AND o.owner_type = ANY($3) + AND o.owner_id = ANY($4::uuid[]) + AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) + -- A broad trigram match (index-friendly): + AND (d.title %> $6 + OR d.content %> $6) + -- Exclude anything that was already in the FTS set: + AND NOT EXISTS ( + SELECT 1 + FROM fts_results f + WHERE f.doc_id = d.doc_id + AND f.index = d.index + ) +), +trgm_scored AS ( + /* + * Only now do the heavy comprehensive_similarity check, + * but only for these trigram candidates. + */ + SELECT + t.developer_id, + t.doc_id, + t.index, + t.title, + t.content, + NULL::double precision AS tsv_score, + comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score, + t.embedding, + t.metadata, + t.owner_type, + t.owner_id, + t.updated_at, + 2 AS source + FROM trgm_candidates t + WHERE comprehensive_similarity(t.title, t.content, $6) > $7 +), +combined AS ( + /* + * Union the two sets: + * - FTS matches (fts_results) => "score" is tsv_score + * - Trigram-only matches => "score" is trigram_score + */ + SELECT + developer_id, + doc_id, + index, + title, + content, + COALESCE(tsv_score, trigram_score) AS score, + embedding, + metadata, + owner_type, + owner_id + FROM fts_results + + UNION ALL + + SELECT + developer_id, + doc_id, + index, + title, + content, + COALESCE(tsv_score, trigram_score) AS score, + embedding, + metadata, + owner_type, + owner_id + FROM trgm_scored +) +SELECT * +FROM combined +ORDER BY score DESC +LIMIT $8' + USING + ts_query, + developer_id, + owner_types, + owner_ids, + metadata_filter, + query_text, + similarity_threshold, + k; + END IF; +END; +$$; + +-- Update search_hybrid to pass NULL similarity_threshold correctly +DROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer); + +CREATE OR REPLACE FUNCTION search_hybrid ( + p_developer_id UUID, + p_query_text text, + p_query_embedding vector (1024), + p_owner_types TEXT[], + p_owner_ids UUID [], + p_k integer DEFAULT 3, + p_alpha float DEFAULT 0.7, -- Weight for embedding results + p_confidence float DEFAULT 0.5, + p_metadata_filter jsonb DEFAULT NULL, + p_search_language text DEFAULT 'english_unaccent', + p_similarity_threshold float DEFAULT NULL, -- Changed to NULL default + k_multiplier integer DEFAULT 5 +) RETURNS SETOF doc_search_result +LANGUAGE plpgsql AS +$$ +DECLARE + text_weight float := 1.0 - p_alpha; + embedding_weight float := p_alpha; + intermediate_limit integer := p_k * k_multiplier; +BEGIN + /* + 1) Get top-N results from text search. + 2) Get top-N results from vector search. + 3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON). + 4) Join those rows back to each sub-result to get text_score and embedding_score. + 5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number. + */ + + RETURN QUERY + WITH text_results AS ( + SELECT * + FROM search_by_text( + developer_id => p_developer_id, + query_text => p_query_text, + owner_types => p_owner_types, + owner_ids => p_owner_ids, + search_language => p_search_language, + k => intermediate_limit, + metadata_filter => p_metadata_filter, + similarity_threshold => p_similarity_threshold + ) + ), + embedding_results AS ( + SELECT * + FROM search_by_vector( + developer_id => p_developer_id, + query_embedding => p_query_embedding, + owner_types => p_owner_types, + owner_ids => p_owner_ids, + k => intermediate_limit, + confidence => p_confidence, + metadata_filter => p_metadata_filter + ) + ), + + -- UNION both sets, pick highest distance row per doc_id + all_results AS ( + SELECT DISTINCT ON (doc_id) + developer_id, + doc_id, + index, + title, + content, + distance, + embedding, + metadata, + owner_type, + owner_id + FROM ( + SELECT * FROM text_results + UNION ALL + SELECT * FROM embedding_results + ) combined + ORDER BY doc_id, distance DESC + ), + + -- Gather text_score & embedding_score for each doc + scores AS ( + SELECT + a.developer_id, + a.doc_id, + a.index, + a.title, + a.content, + a.embedding, + a.metadata, + a.owner_type, + a.owner_id, + COALESCE(t.distance, 0.0) AS text_score, + COALESCE(e.distance, 0.0) AS embedding_score + FROM all_results a + LEFT JOIN text_results t ON a.doc_id = t.doc_id + LEFT JOIN embedding_results e ON a.doc_id = e.doc_id + ), + + -- Give each row a stable ordering + scores_ordered AS ( + SELECT + s.*, + ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn + FROM scores s + ), + + -- Aggregate all text/embedding scores into arrays + aggregated AS ( + SELECT + array_agg(text_score ORDER BY rn) AS text_scores, + array_agg(embedding_score ORDER BY rn) AS embedding_scores + FROM scores_ordered + ), + + -- Normalize once for each array + normed_arrays AS ( + SELECT + dbsf_normalize(text_scores) AS norm_text_scores, + dbsf_normalize(embedding_scores) AS norm_embedding_scores + FROM aggregated + ), + + -- Join normalized arrays back using row_number + final AS ( + SELECT + s.developer_id, + s.doc_id, + s.index, + s.title, + s.content, + 1.0 - ( + text_weight * norm_text_scores[s.rn] + + embedding_weight * norm_embedding_scores[s.rn] + ) AS distance, + s.embedding, + s.metadata, + s.owner_type, + s.owner_id + FROM scores_ordered s + CROSS JOIN normed_arrays + ORDER BY distance ASC + LIMIT p_k + ) + SELECT * FROM final; +END; +$$; + +COMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search.'; +COMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search in text component.'; + +-- Update embed_and_search_hybrid to use NULL similarity_threshold default +DROP FUNCTION IF EXISTS embed_and_search_hybrid; + +CREATE OR REPLACE FUNCTION embed_and_search_hybrid ( + developer_id UUID, + query_text text, + owner_types TEXT[], + owner_ids UUID [], + k integer DEFAULT 3, + alpha float DEFAULT 0.7, + confidence float DEFAULT 0.5, + metadata_filter jsonb DEFAULT NULL, + search_language text DEFAULT 'english_unaccent', + embedding_provider text DEFAULT 'openai', + embedding_model text DEFAULT 'text-embedding-3-large', + input_type text DEFAULT 'query', + api_key text DEFAULT NULL, + api_key_name text DEFAULT NULL, + similarity_threshold float DEFAULT NULL -- Changed to NULL default +) RETURNS SETOF doc_search_result AS $$ +DECLARE + query_embedding vector(1024); +BEGIN + -- Get embedding for the query + query_embedding := embed_with_cache( + embedding_provider, + embedding_model, + query_text, + input_type, + api_key, + api_key_name + ); + + -- Call the search_hybrid function with the embedding + RETURN QUERY + SELECT * FROM search_hybrid( + developer_id, + query_text, + query_embedding, + owner_types, + owner_ids, + k, + alpha, + confidence, + metadata_filter, + search_language, + similarity_threshold + ); +END; +$$ LANGUAGE plpgsql; + +COMMENT ON FUNCTION embed_and_search_hybrid IS 'Convenience function that combines text embedding generation and hybrid search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search in text component.'; \ No newline at end of file diff --git a/src/monitoring/AGENTS.md b/src/monitoring/AGENTS.md new file mode 100644 index 000000000..32052cf8e --- /dev/null +++ b/src/monitoring/AGENTS.md @@ -0,0 +1,144 @@ +# AGENTS.md - monitoring + +This directory contains monitoring and observability stack using Prometheus, Grafana, and Portainer. + +Key Uses +- Bash commands: + - cd monitoring + - docker-compose --profile multi-tenant up # Full monitoring stack + - docker-compose --profile monitor up # Portainer only +- Core files: + - `docker-compose.yml` for monitoring services + - `prometheus/config/prometheus.yml` for metrics collection + - `grafana/provisioning/` for dashboards and data sources + - `grafana/dashboard.yaml` for dashboard configuration +- Configuration guidelines: + - Set `GRAFANA_ADMIN_PASSWORD` for secure access + - Configure Prometheus targets in `prometheus.yml` + - Add custom dashboards to `grafana/provisioning/dashboards/` +- Testing instructions: + - Grafana UI: `http://localhost:3000` (admin/password) + - Portainer UI: `http://localhost:8383` (admin/password) + - Prometheus targets: Check service discovery and health +- Repository etiquette: + - Don't commit admin passwords to version control + - Use external volumes for data persistence +- Developer environment: + - Requires Docker and Docker Compose + - External volumes for persistent data storage +- Unexpected behaviors: + - Grafana provisions dashboards automatically on startup + - Prometheus scrapes require service network connectivity + +# Monitoring Service + +## Overview +The monitoring service provides comprehensive observability for the Julep platform using Prometheus for metrics collection, Grafana for visualization, and Portainer for container management. It enables real-time monitoring, alerting, and performance analysis. + +## Architecture +- **Metrics Collection**: Prometheus with multi-target scraping +- **Visualization**: Grafana with pre-configured dashboards +- **Container Management**: Portainer for Docker monitoring +- **Data Persistence**: External volumes for metric storage + +## Key Components + +### Prometheus +- **Purpose**: Metrics collection and time-series database +- **Targets**: Agents API, Worker, Temporal services +- **Scrape Interval**: 5-second collection frequency +- **Storage**: External volume for metric persistence + +### Grafana +- **Purpose**: Metrics visualization and dashboarding +- **Port**: 3000 (HTTP interface) +- **Authentication**: Configurable admin credentials +- **Provisioning**: Automatic dashboard and datasource setup + +### Portainer +- **Purpose**: Docker container management and monitoring +- **Port**: 8383 (localhost only) +- **Access**: Web-based container management interface +- **Security**: Admin credentials required + +## Pre-configured Dashboards + +### Temporal Monitoring +- **Advanced Visibility**: Detailed workflow metrics +- **Cluster Monitoring**: Kubernetes-specific dashboards +- **History Service**: Historical data analysis +- **Matching Service**: Task matching performance +- **Worker Service**: Worker node monitoring + +### Service-specific Dashboards +- **Server General**: Overall server performance +- **SDK General**: Client SDK metrics +- **SDK Java**: Java-specific SDK monitoring +- **Frontend Service**: UI service performance +- **Requests Metrics**: API request analysis +- **Queries Metrics**: Database query performance + +## Environment Variables +- `GRAFANA_ADMIN_PASSWORD`: Admin password for Grafana (default: julep_grafana_admin) +- `GRAFANA_ADMIN_USER`: Admin username for Grafana (default: admin) +- `PORTAINER_ADMIN_USER`: Admin username for Portainer +- `PORTAINER_ADMIN_PASSWORD`: Admin password for Portainer + +## Deployment Profiles +1. **Multi-tenant**: Full monitoring stack with Prometheus and Grafana +2. **Monitor**: Portainer-only deployment for container management + +## Metrics Collection + +### Scrape Targets +- **Agents API**: Main API service metrics (port 8080) +- **Worker**: Background worker metrics (port 14000) +- **Temporal**: Workflow engine metrics (port 15000) + +### Metrics Categories +- **Request Metrics**: HTTP request rates, latencies, errors +- **System Metrics**: CPU, memory, disk usage +- **Application Metrics**: Custom business logic metrics +- **Database Metrics**: Query performance and connection pools + +## Data Persistence +- **Prometheus Data**: External volume `prometheus_data` +- **Grafana Data**: External volume `grafana_data` +- **Portainer Data**: External volume `portainer_data` + +## Alerting Configuration +- **Alertmanagers**: Configurable alert routing +- **Evaluation Interval**: 5-second rule evaluation +- **Notification Channels**: Email, Slack, webhooks +- **Alert Rules**: Custom alerting conditions + +## Dashboard Features +- **Real-time Metrics**: Live data visualization +- **Historical Analysis**: Time-based trend analysis +- **Multi-service Views**: Cross-service correlation +- **Custom Queries**: PromQL query interface +- **Export/Import**: Dashboard portability + +## Security Features +- **Authentication**: Admin credential protection +- **Network Isolation**: Service-specific network access +- **Read-only Access**: Optional viewer accounts +- **Data Encryption**: Transport-level security + +## Integration Points +- **Agents API**: Exposes `/metrics` endpoint for Prometheus +- **Temporal**: Provides workflow and activity metrics +- **Worker Services**: Background job monitoring +- **Infrastructure**: System-level resource monitoring + +## Operational Procedures +- **Health Checks**: Automated service health monitoring +- **Data Retention**: Configurable metric retention policies +- **Backup/Restore**: Volume-based data backup +- **Scaling**: Horizontal scaling for high-volume metrics + +## Troubleshooting +- **Service Discovery**: Check Prometheus targets page +- **Dashboard Loading**: Verify Grafana provisioning logs +- **Data Missing**: Confirm scrape target connectivity +- **Performance**: Monitor Prometheus resource usage \ No newline at end of file diff --git a/src/monitoring/CLAUDE.md b/src/monitoring/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/monitoring/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/monitoring/README.md b/src/monitoring/README.md similarity index 100% rename from monitoring/README.md rename to src/monitoring/README.md diff --git a/monitoring/docker-compose.yml b/src/monitoring/docker-compose.yml similarity index 100% rename from monitoring/docker-compose.yml rename to src/monitoring/docker-compose.yml diff --git a/monitoring/grafana/dashboard.yaml b/src/monitoring/grafana/dashboard.yaml similarity index 100% rename from monitoring/grafana/dashboard.yaml rename to src/monitoring/grafana/dashboard.yaml diff --git a/monitoring/grafana/provisioning/dashboards/advanced-visibility-specific.json b/src/monitoring/grafana/provisioning/dashboards/advanced-visibility-specific.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/advanced-visibility-specific.json rename to src/monitoring/grafana/provisioning/dashboards/advanced-visibility-specific.json diff --git a/monitoring/grafana/provisioning/dashboards/clustermonitoring-kubernetes.json b/src/monitoring/grafana/provisioning/dashboards/clustermonitoring-kubernetes.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/clustermonitoring-kubernetes.json rename to src/monitoring/grafana/provisioning/dashboards/clustermonitoring-kubernetes.json diff --git a/monitoring/grafana/provisioning/dashboards/frontend-service-specific.json b/src/monitoring/grafana/provisioning/dashboards/frontend-service-specific.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/frontend-service-specific.json rename to src/monitoring/grafana/provisioning/dashboards/frontend-service-specific.json diff --git a/monitoring/grafana/provisioning/dashboards/history-service-specific.json b/src/monitoring/grafana/provisioning/dashboards/history-service-specific.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/history-service-specific.json rename to src/monitoring/grafana/provisioning/dashboards/history-service-specific.json diff --git a/src/monitoring/grafana/provisioning/dashboards/main.yaml b/src/monitoring/grafana/provisioning/dashboards/main.yaml new file mode 100755 index 000000000..e69de29bb diff --git a/monitoring/grafana/provisioning/dashboards/matching-service-specific.json b/src/monitoring/grafana/provisioning/dashboards/matching-service-specific.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/matching-service-specific.json rename to src/monitoring/grafana/provisioning/dashboards/matching-service-specific.json diff --git a/monitoring/grafana/provisioning/dashboards/queries-metrics.json b/src/monitoring/grafana/provisioning/dashboards/queries-metrics.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/queries-metrics.json rename to src/monitoring/grafana/provisioning/dashboards/queries-metrics.json diff --git a/monitoring/grafana/provisioning/dashboards/requests-metrics.json b/src/monitoring/grafana/provisioning/dashboards/requests-metrics.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/requests-metrics.json rename to src/monitoring/grafana/provisioning/dashboards/requests-metrics.json diff --git a/monitoring/grafana/provisioning/dashboards/sdk-general.json b/src/monitoring/grafana/provisioning/dashboards/sdk-general.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/sdk-general.json rename to src/monitoring/grafana/provisioning/dashboards/sdk-general.json diff --git a/monitoring/grafana/provisioning/dashboards/sdk-java.json b/src/monitoring/grafana/provisioning/dashboards/sdk-java.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/sdk-java.json rename to src/monitoring/grafana/provisioning/dashboards/sdk-java.json diff --git a/monitoring/grafana/provisioning/dashboards/server-general.json b/src/monitoring/grafana/provisioning/dashboards/server-general.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/server-general.json rename to src/monitoring/grafana/provisioning/dashboards/server-general.json diff --git a/monitoring/grafana/provisioning/dashboards/temporal_cloud.json b/src/monitoring/grafana/provisioning/dashboards/temporal_cloud.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/temporal_cloud.json rename to src/monitoring/grafana/provisioning/dashboards/temporal_cloud.json diff --git a/monitoring/grafana/provisioning/dashboards/worker-service-specific.json b/src/monitoring/grafana/provisioning/dashboards/worker-service-specific.json similarity index 100% rename from monitoring/grafana/provisioning/dashboards/worker-service-specific.json rename to src/monitoring/grafana/provisioning/dashboards/worker-service-specific.json diff --git a/monitoring/grafana/provisioning/datasources/datasource.yml b/src/monitoring/grafana/provisioning/datasources/datasource.yml similarity index 100% rename from monitoring/grafana/provisioning/datasources/datasource.yml rename to src/monitoring/grafana/provisioning/datasources/datasource.yml diff --git a/monitoring/prometheus/config/prometheus.yml b/src/monitoring/prometheus/config/prometheus.yml similarity index 100% rename from monitoring/prometheus/config/prometheus.yml rename to src/monitoring/prometheus/config/prometheus.yml diff --git a/openapi.yaml b/src/openapi.yaml similarity index 100% rename from openapi.yaml rename to src/openapi.yaml diff --git a/src/scheduler/AGENTS.md b/src/scheduler/AGENTS.md new file mode 100644 index 000000000..15cb33921 --- /dev/null +++ b/src/scheduler/AGENTS.md @@ -0,0 +1,152 @@ +# AGENTS.md - scheduler + +This directory contains the Temporal workflow engine configuration for distributed task execution. + +Key Uses +- Bash commands: + - cd scheduler + - docker-compose --profile self-hosted-db up # With local PostgreSQL + - docker-compose --profile managed-db up # With external database + - docker-compose --profile temporal-ui up # Web UI for monitoring + - docker-compose --profile temporal-ui-public up # Public read-only UI +- Core files: + - `docker-compose.yml` for Temporal services + - `dynamicconfig/temporal-postgres.yaml` for runtime configuration + - `cert/` directory for TLS certificates +- Configuration guidelines: + - Set `TEMPORAL_POSTGRES_PASSWORD` for database authentication + - Configure `TEMPORAL_ADDRESS` for service discovery + - Adjust `dynamicconfig` for performance tuning +- Testing instructions: + - Temporal UI: `http://localhost:9000` (full access) + - Public UI: `http://localhost:9001` (read-only) + - Health check: Connect to Temporal gRPC endpoint +- Repository etiquette: + - Don't commit database passwords or certificates + - Use external volumes for data persistence +- Developer environment: + - Requires Docker and Docker Compose + - PostgreSQL for workflow state persistence +- Unexpected behaviors: + - Auto-setup includes database schema initialization + - UI codec endpoint requires agents-api integration + +# Scheduler Service + +## Overview +The scheduler service provides distributed workflow orchestration using Temporal, enabling durable execution of complex, long-running tasks with built-in retry logic, state management, and fault tolerance. + +## Architecture +- **Workflow Engine**: Temporal server with PostgreSQL persistence +- **UI Components**: Web interface for workflow monitoring +- **Database**: PostgreSQL for workflow state and history +- **Configuration**: Dynamic runtime configuration system + +## Key Components + +### Temporal Server +- **Image**: temporalio/auto-setup:1.25.2 with automatic schema setup +- **Features**: Workflow execution, activity coordination, timers +- **Persistence**: PostgreSQL-backed state storage +- **Metrics**: Prometheus endpoint on port 15000 + +### Temporal UI +- **Standard UI**: Full-featured workflow monitoring (port 9000) +- **Public UI**: Read-only interface for external access (port 9001) +- **Features**: Workflow visualization, execution history, debugging + +### PostgreSQL Database +- **Purpose**: Workflow state and history persistence +- **Configuration**: High connection limit (1000) for concurrent workflows +- **Health Checks**: Automated readiness verification +- **Persistence**: External volume for data durability + +## Environment Variables +- `TEMPORAL_POSTGRES_PASSWORD`: Database password (required) +- `TEMPORAL_POSTGRES_DB`: Database name (default: temporal) +- `TEMPORAL_POSTGRES_HOST`: Database host (default: temporal-db) +- `TEMPORAL_POSTGRES_USER`: Database user (default: temporal) +- `TEMPORAL_ADDRESS`: Temporal server address (default: temporal:7233) +- `TEMPORAL_LOG_LEVEL`: Logging verbosity (default: info) + +### TLS Configuration +- `TEMPORAL_POSTGRES_TLS_ENABLED`: Enable database TLS +- `TEMPORAL_POSTGRES_TLS_DISABLE_HOST_VERIFICATION`: Skip hostname verification +- Certificate files in `/cert/` directory + +## Deployment Profiles +1. **Self-hosted DB**: Complete local deployment with PostgreSQL +2. **Managed DB**: Use external PostgreSQL service +3. **Temporal UI**: Full-featured workflow monitoring interface +4. **Temporal UI Public**: Read-only public access interface + +## Dynamic Configuration + +### Performance Tuning +- **Matching RPS**: 600 requests per second (reduced from 1200) +- **Blob Size Limit**: 4MB maximum payload size +- **History Size Limit**: 100MB workflow history limit +- **History Count Limit**: 102400 events per workflow + +### Concurrency Limits +- **Pending Activities**: 4000 maximum concurrent activities +- **Child Executions**: 4000 maximum nested workflows +- **Batch Operations**: 10000 executions per batch +- **Concurrent Batches**: 100 per namespace + +## Workflow Features +- **Durable Execution**: Workflows survive system failures +- **Activity Retries**: Automatic retry with exponential backoff +- **Timers and Delays**: Built-in scheduling capabilities +- **Signal Handling**: External event processing +- **Child Workflows**: Nested workflow execution +- **Continue-as-New**: Long-running workflow optimization + +## Monitoring & Observability +- **Prometheus Metrics**: Comprehensive workflow and system metrics +- **Workflow Visibility**: Real-time execution status +- **History Tracking**: Complete audit trail of workflow execution +- **Search Attributes**: Custom metadata for workflow queries + +### UI Features +- **Workflow List**: Browse and filter workflows +- **Execution Details**: Step-by-step execution visualization +- **Task Queues**: Monitor worker capacity and utilization +- **Namespaces**: Multi-tenant workflow isolation +- **Cluster Information**: System health and configuration + +## Integration Points +- **Agents API**: Executes workflows via Temporal client +- **Worker Processes**: Handle activity execution +- **Codec Endpoint**: Custom payload encoding/decoding +- **Monitoring**: Metrics collection via Prometheus + +## Security Features +- **TLS Encryption**: Database and service communication +- **Namespace Isolation**: Multi-tenant security boundaries +- **Authentication**: Database credential management +- **Certificate Management**: Custom CA and client certificates + +## Operational Procedures +- **Schema Management**: Automatic database schema setup +- **Backup/Restore**: PostgreSQL-based data backup +- **Scaling**: Horizontal scaling for high workflow volumes +- **Maintenance**: Rolling updates and configuration changes + +## Development Features +- **Auto-setup**: Automatic database initialization +- **Local Development**: Self-contained deployment +- **Hot Configuration**: Dynamic config reload without restart +- **Debug Interface**: Detailed workflow execution logs + +## Advanced Configuration +- **Custom Search Attributes**: Metadata indexing for queries +- **Archival**: Historical workflow data management +- **Rate Limiting**: Request throttling and load control +- **Multi-cluster**: Cross-region workflow replication + +## Troubleshooting +- **Health Checks**: Database and service connectivity +- **Log Analysis**: Structured logging for debugging +- **Metrics Monitoring**: Performance and error tracking +- **UI Diagnostics**: Visual workflow execution analysis \ No newline at end of file diff --git a/src/scheduler/CLAUDE.md b/src/scheduler/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/scheduler/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/scheduler/cert/.gitignore b/src/scheduler/cert/.gitignore similarity index 100% rename from scheduler/cert/.gitignore rename to src/scheduler/cert/.gitignore diff --git a/scheduler/docker-compose.yml b/src/scheduler/docker-compose.yml similarity index 100% rename from scheduler/docker-compose.yml rename to src/scheduler/docker-compose.yml diff --git a/scheduler/dynamicconfig/temporal-postgres.yaml b/src/scheduler/dynamicconfig/temporal-postgres.yaml similarity index 100% rename from scheduler/dynamicconfig/temporal-postgres.yaml rename to src/scheduler/dynamicconfig/temporal-postgres.yaml diff --git a/schemas/create_agent_request.json b/src/schemas/create_agent_request.json similarity index 87% rename from schemas/create_agent_request.json rename to src/schemas/create_agent_request.json index 5c7beeb3e..dd05793d0 100644 --- a/schemas/create_agent_request.json +++ b/src/schemas/create_agent_request.json @@ -86,6 +86,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "updated_at": { "format": "date-time", "readOnly": true, @@ -328,7 +342,187 @@ "title": "AlgoliaSetupUpdate", "type": "object" }, - "ApiCallDef": { + "ApiCallDef-Input": { + "description": "API call definition", + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "cookies": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Cookies" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Data" + }, + "files": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Files" + }, + "follow_redirects": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Follow Redirects" + }, + "headers": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Headers" + }, + "include_response_content": { + "default": true, + "title": "Include Response Content", + "type": "boolean" + }, + "json": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Json" + }, + "method": { + "enum": [ + "GET", + "POST", + "PUT", + "DELETE", + "PATCH", + "HEAD", + "OPTIONS", + "CONNECT", + "TRACE" + ], + "title": "Method", + "type": "string" + }, + "params": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Params" + }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchema-Input" + }, + { + "type": "null" + } + ] + }, + "schema": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Schema" + }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRef" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, + "timeout": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Timeout" + }, + "url": { + "format": "uri", + "minLength": 1, + "title": "Url", + "type": "string" + } + }, + "required": [ + "method", + "url" + ], + "title": "ApiCallDef", + "type": "object" + }, + "ApiCallDef-Output": { "description": "API call definition", "properties": { "content": { @@ -448,6 +642,16 @@ ], "title": "Params" }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchema-Output" + }, + { + "type": "null" + } + ] + }, "schema": { "anyOf": [ { @@ -459,6 +663,20 @@ ], "title": "Schema" }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRef" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, "timeout": { "anyOf": [ { @@ -611,6 +829,16 @@ ], "title": "Params" }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchemaUpdate" + }, + { + "type": "null" + } + ] + }, "schema": { "anyOf": [ { @@ -622,6 +850,20 @@ ], "title": "Schema" }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRefUpdate" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, "timeout": { "anyOf": [ { @@ -2141,6 +2383,11 @@ ], "title": "Agent" }, + "auto_run_tools": { + "default": false, + "title": "Auto Run Tools", + "type": "boolean" + }, "frequency_penalty": { "anyOf": [ { @@ -2201,6 +2448,17 @@ "title": "Messages", "type": "array" }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "min_p": { "anyOf": [ { @@ -2245,6 +2503,11 @@ "title": "Recall", "type": "boolean" }, + "recall_tools": { + "default": true, + "title": "Recall Tools", + "type": "boolean" + }, "remember": { "default": false, "readOnly": true, @@ -3249,7 +3512,7 @@ "title": "Computer20241022DefUpdate", "type": "object" }, - "Content": { + "Content-Output": { "properties": { "text": { "title": "Text", @@ -3547,6 +3810,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3561,11 +3838,11 @@ "content": { "anyOf": [ { - "type": "string" + "$ref": "#/$defs/agents_api__autogen__Common__Content" }, { "items": { - "type": "string" + "$ref": "#/$defs/agents_api__autogen__Common__Content" }, "type": "array" } @@ -3691,6 +3968,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3773,6 +4064,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3956,11 +4261,106 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "CreateOrUpdateUserRequest", "type": "object" }, + "CreateProjectRequest": { + "description": "Payload for creating a project", + "properties": { + "canonical_name": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Canonical Name" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "maxLength": 255, + "minLength": 1, + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "CreateProjectRequest", + "type": "object" + }, + "CreateSecretRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "title": "CreateSecretRequest", + "type": "object" + }, "CreateSessionRequest": { "description": "Payload for creating a session", "properties": { @@ -4248,7 +4648,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -4364,6 +4764,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -4442,6 +4845,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "CreateUserRequest", @@ -4483,17 +4900,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -5323,7 +5729,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/agents_api__autogen__Entries__ContentModel3" @@ -5445,6 +5851,7 @@ "enum": [ "api_request", "api_response", + "tool_request", "tool_response", "internal", "summarizer", @@ -5889,6 +6296,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "size": { "minimum": 1.0, "readOnly": true, @@ -6150,65 +6571,949 @@ "title": "GetStep", "type": "object" }, - "HTTPValidationError": { + "GoogleSheetsAppendArguments": { + "description": "Arguments for appending values to a spreadsheet", "properties": { - "detail": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "INSERT_ROWS", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { "items": { - "$ref": "#/$defs/ValidationError" + "items": {}, + "type": "array" }, - "title": "Detail", + "title": "Values", "type": "array" } }, - "title": "HTTPValidationError", + "required": [ + "spreadsheet_id", + "range", + "values" + ], + "title": "GoogleSheetsAppendArguments", "type": "object" }, - "History": { + "GoogleSheetsAppendArgumentsUpdate": { + "description": "Arguments for appending values to a spreadsheet", "properties": { - "created_at": { - "format": "date-time", - "readOnly": true, - "title": "Created At", + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "INSERT_ROWS", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", "type": "string" }, - "entries": { - "items": { - "$ref": "#/$defs/Entry" - }, - "title": "Entries", - "type": "array" + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" }, - "relations": { + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "anyOf": [ + { + "items": { + "items": {}, + "type": "array" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Values" + } + }, + "title": "GoogleSheetsAppendArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsBatchReadArguments": { + "description": "Arguments for batch reading values from multiple ranges", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "ranges": { "items": { - "$ref": "#/$defs/Relation" + "type": "string" }, - "title": "Relations", + "title": "Ranges", "type": "array" }, - "session_id": { - "format": "uuid", - "readOnly": true, - "title": "Session Id", + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", "type": "string" } }, "required": [ - "entries", - "relations", - "session_id", - "created_at" + "spreadsheet_id", + "ranges" ], - "title": "History", + "title": "GoogleSheetsBatchReadArguments", "type": "object" }, - "HybridDocSearch": { + "GoogleSheetsBatchReadArgumentsUpdate": { + "description": "Arguments for batch reading values from multiple ranges", "properties": { - "alpha": { - "default": 0.5, - "maximum": 1.0, - "minimum": 0.0, - "title": "Alpha", - "type": "number" + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "ranges": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ranges" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "title": "GoogleSheetsBatchReadArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsBatchWriteArguments": { + "description": "Arguments for batch updating values in multiple ranges", + "properties": { + "data": { + "items": { + "$ref": "#/$defs/GoogleSheetsValueRange" + }, + "title": "Data", + "type": "array" + }, + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "data" + ], + "title": "GoogleSheetsBatchWriteArguments", + "type": "object" + }, + "GoogleSheetsBatchWriteArgumentsUpdate": { + "description": "Arguments for batch updating values in multiple ranges", + "properties": { + "data": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/GoogleSheetsValueRange" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data" + }, + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + } + }, + "title": "GoogleSheetsBatchWriteArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsClearArguments": { + "description": "Arguments for clearing values from a spreadsheet", + "properties": { + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "range" + ], + "title": "GoogleSheetsClearArguments", + "type": "object" + }, + "GoogleSheetsClearArgumentsUpdate": { + "description": "Arguments for clearing values from a spreadsheet", + "properties": { + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + } + }, + "title": "GoogleSheetsClearArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsIntegrationDef-Input": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArguments" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetup" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDef", + "type": "object" + }, + "GoogleSheetsIntegrationDef-Output": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArguments" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetup" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDef", + "type": "object" + }, + "GoogleSheetsIntegrationDefUpdate": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArgumentsUpdate" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetupUpdate" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDefUpdate", + "type": "object" + }, + "GoogleSheetsReadArguments": { + "description": "Arguments for reading values from a spreadsheet", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "range" + ], + "title": "GoogleSheetsReadArguments", + "type": "object" + }, + "GoogleSheetsReadArgumentsUpdate": { + "description": "Arguments for reading values from a spreadsheet", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "title": "GoogleSheetsReadArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsSetup": { + "description": "Setup parameters for Google Sheets integration", + "properties": { + "default_retry_count": { + "default": 3, + "maximum": 10.0, + "minimum": 1.0, + "title": "Default Retry Count", + "type": "integer" + }, + "service_account_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Service Account Json" + }, + "use_julep_service": { + "title": "Use Julep Service", + "type": "boolean" + } + }, + "required": [ + "use_julep_service" + ], + "title": "GoogleSheetsSetup", + "type": "object" + }, + "GoogleSheetsSetupUpdate": { + "description": "Setup parameters for Google Sheets integration", + "properties": { + "default_retry_count": { + "default": 3, + "maximum": 10.0, + "minimum": 1.0, + "title": "Default Retry Count", + "type": "integer" + }, + "service_account_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Service Account Json" + }, + "use_julep_service": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Use Julep Service" + } + }, + "title": "GoogleSheetsSetupUpdate", + "type": "object" + }, + "GoogleSheetsValueRange": { + "description": "Represents a range of values to write", + "properties": { + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "values": { + "items": { + "items": {}, + "type": "array" + }, + "title": "Values", + "type": "array" + } + }, + "required": [ + "range", + "values" + ], + "title": "GoogleSheetsValueRange", + "type": "object" + }, + "GoogleSheetsWriteArguments": { + "description": "Arguments for writing values to a spreadsheet", + "properties": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "OVERWRITE", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "items": { + "items": {}, + "type": "array" + }, + "title": "Values", + "type": "array" + } + }, + "required": [ + "spreadsheet_id", + "range", + "values" + ], + "title": "GoogleSheetsWriteArguments", + "type": "object" + }, + "GoogleSheetsWriteArgumentsUpdate": { + "description": "Arguments for writing values to a spreadsheet", + "properties": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "OVERWRITE", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "anyOf": [ + { + "items": { + "items": {}, + "type": "array" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Values" + } + }, + "title": "GoogleSheetsWriteArgumentsUpdate", + "type": "object" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/$defs/ValidationError" + }, + "title": "Detail", + "type": "array" + } + }, + "title": "HTTPValidationError", + "type": "object" + }, + "History": { + "properties": { + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "entries": { + "items": { + "$ref": "#/$defs/Entry" + }, + "title": "Entries", + "type": "array" + }, + "relations": { + "items": { + "$ref": "#/$defs/Relation" + }, + "title": "Relations", + "type": "array" + }, + "session_id": { + "format": "uuid", + "readOnly": true, + "title": "Session Id", + "type": "string" + } + }, + "required": [ + "entries", + "relations", + "session_id", + "created_at" + ], + "title": "History", + "type": "object" + }, + "HybridDocSearch": { + "properties": { + "alpha": { + "default": 0.5, + "maximum": 1.0, + "minimum": 0.0, + "title": "Alpha", + "type": "number" }, "confidence": { "default": 0.5, @@ -6217,6 +7522,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { "default": 7, "minimum": 0.0, @@ -6294,9 +7604,15 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { - "default": 7, - "minimum": 0.0, + "default": 5, + "maximum": 10.0, + "minimum": 1.0, "title": "K Multiplier", "type": "integer" }, @@ -6329,11 +7645,17 @@ "type": "string" }, "trigram_similarity_threshold": { - "default": 0.6, - "maximum": 1.0, - "minimum": 0.0, - "title": "Trigram Similarity Threshold", - "type": "number" + "anyOf": [ + { + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Trigram Similarity Threshold" }, "vector": { "items": { @@ -6366,6 +7688,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { "default": 7, "minimum": 0.0, @@ -6804,6 +8131,23 @@ "title": "JobStatus", "type": "object" }, + "ListModelsResponse": { + "description": "Response for the list models endpoint", + "properties": { + "models": { + "items": { + "$ref": "#/$defs/ModelInfo" + }, + "title": "Models", + "type": "array" + } + }, + "required": [ + "models" + ], + "title": "ListModelsResponse", + "type": "object" + }, "ListResponse_Agent_": { "properties": { "items": { @@ -6852,6 +8196,22 @@ "title": "ListResponse[Execution]", "type": "object" }, + "ListResponse_Project_": { + "properties": { + "items": { + "items": { + "$ref": "#/$defs/Project" + }, + "title": "Items", + "type": "array" + } + }, + "required": [ + "items" + ], + "title": "ListResponse[Project]", + "type": "object" + }, "ListResponse_ResourceDeletedResponse_": { "properties": { "items": { @@ -7693,7 +9053,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/agents_api__autogen__Chat__Content" }, { "$ref": "#/$defs/ContentModel7" @@ -7711,17 +9071,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -7806,7 +9155,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/ContentModel7" @@ -7824,17 +9173,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8102,6 +9440,20 @@ "title": "MetadataFilter", "type": "object" }, + "ModelInfo": { + "description": "Model information returned by the model list endpoint", + "properties": { + "id": { + "title": "Id", + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ModelInfo", + "type": "object" + }, "MultipleChatOutput": { "description": "The output returned by the model. Note that, depending on the model provider, they might return more than one message.", "properties": { @@ -8320,15 +9672,142 @@ } ] }, - "maxItems": 100, - "title": "Parallel", + "maxItems": 100, + "title": "Parallel", + "type": "array" + } + }, + "required": [ + "parallel" + ], + "title": "ParallelStep", + "type": "object" + }, + "ParameterSchema-Input": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinition-Input" + }, + "title": "Properties", + "type": "object" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", + "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" + } + }, + "required": [ + "properties" + ], + "title": "ParameterSchema", + "type": "object" + }, + "ParameterSchema-Output": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinition-Output" + }, + "title": "Properties", + "type": "object" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", + "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" + } + }, + "required": [ + "properties" + ], + "title": "ParameterSchema", + "type": "object" + }, + "ParameterSchemaUpdate": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinitionUpdate" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Properties" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" } }, - "required": [ - "parallel" - ], - "title": "ParallelStep", + "title": "ParameterSchemaUpdate", "type": "object" }, "PatchAgentRequest": { @@ -8412,6 +9891,20 @@ } ], "title": "Name" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "PatchAgentRequest", @@ -8637,6 +10130,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDefUpdate" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDefUpdate" + }, { "type": "null" } @@ -8725,11 +10221,87 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "PatchUserRequest", "type": "object" }, + "Project": { + "description": "Project model", + "properties": { + "canonical_name": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Canonical Name" + }, + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "id": { + "format": "uuid", + "readOnly": true, + "title": "Id", + "type": "string" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "maxLength": 255, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "readOnly": true, + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "created_at", + "updated_at", + "name" + ], + "title": "Project", + "type": "object" + }, "PromptItem-Input": { "properties": { "content": { @@ -8744,7 +10316,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/agents_api__autogen__Tasks__Content" }, { "$ref": "#/$defs/agents_api__autogen__Tasks__ContentModel" @@ -8765,17 +10337,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8858,7 +10419,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/agents_api__autogen__Tasks__ContentModel" @@ -8879,17 +10440,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8961,7 +10511,7 @@ "PromptStep-Input": { "properties": { "auto_run_tools": { - "default": true, + "default": false, "title": "Auto Run Tools", "type": "boolean" }, @@ -9071,7 +10621,7 @@ "PromptStep-Output": { "properties": { "auto_run_tools": { - "default": true, + "default": false, "title": "Auto Run Tools", "type": "boolean" }, @@ -9172,10 +10722,161 @@ "type": "boolean" } }, - "required": [ - "prompt" - ], - "title": "PromptStep", + "required": [ + "prompt" + ], + "title": "PromptStep", + "type": "object" + }, + "PropertyDefinition-Input": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinition-Input" + }, + { + "type": "null" + } + ] + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "PropertyDefinition", + "type": "object" + }, + "PropertyDefinition-Output": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinition-Output" + }, + { + "type": "null" + } + ] + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "PropertyDefinition", + "type": "object" + }, + "PropertyDefinitionUpdate": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinitionUpdate" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + }, + "title": "PropertyDefinitionUpdate", "type": "object" }, "Relation": { @@ -9637,6 +11338,98 @@ "title": "SchemaCompletionResponseFormat", "type": "object" }, + "Secret": { + "description": "A secret that can be used in tasks and sessions", + "properties": { + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "format": "uuid", + "readOnly": true, + "title": "Id", + "type": "string" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "readOnly": true, + "title": "Updated At", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "id", + "created_at", + "updated_at", + "name", + "value" + ], + "title": "Secret", + "type": "object" + }, + "SecretRef": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "SecretRef", + "type": "object" + }, + "SecretRefUpdate": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + } + }, + "title": "SecretRefUpdate", + "type": "object" + }, "Session": { "properties": { "auto_run_tools": { @@ -10681,7 +12474,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -10803,6 +12596,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -10861,7 +12657,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -10983,6 +12779,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -11072,6 +12871,11 @@ }, "TextOnlyDocSearch": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11122,6 +12926,11 @@ }, "TextOnlyDocSearchRequest": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11144,11 +12953,17 @@ "type": "string" }, "trigram_similarity_threshold": { - "default": 0.6, - "maximum": 1.0, - "minimum": 0.0, - "title": "Trigram Similarity Threshold", - "type": "number" + "anyOf": [ + { + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Trigram Similarity Threshold" } }, "required": [ @@ -11159,6 +12974,11 @@ }, "TextOnlyDocSearchUpdate": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11432,7 +13252,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -11560,6 +13380,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -12253,6 +14076,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -12261,6 +14098,46 @@ "title": "UpdateAgentRequest", "type": "object" }, + "UpdateSecretRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "title": "UpdateSecretRequest", + "type": "object" + }, "UpdateSessionRequest": { "description": "Payload for updating a session", "properties": { @@ -12365,7 +14242,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -12481,6 +14358,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -12559,6 +14439,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "UpdateUserRequest", @@ -12601,6 +14495,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "updated_at": { "format": "date-time", "readOnly": true, @@ -12658,6 +14566,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -12715,10 +14628,10 @@ "title": "Confidence", "type": "number" }, - "lang": { - "default": "en-US", - "title": "Lang", - "type": "string" + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" }, "limit": { "default": 10, @@ -12762,6 +14675,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -13241,6 +15159,25 @@ "title": "YieldStep", "type": "object" }, + "agents_api__autogen__Chat__Content": { + "properties": { + "text": { + "title": "Text", + "type": "string" + }, + "type": { + "const": "text", + "default": "text", + "title": "Type", + "type": "string" + } + }, + "required": [ + "text" + ], + "title": "Content", + "type": "object" + }, "agents_api__autogen__Chat__ContentModel-Input": { "description": "Anthropic image content part", "properties": { @@ -13393,6 +15330,11 @@ "title": "ContentModel3", "type": "object" }, + "agents_api__autogen__Common__Content": { + "maxLength": 30000, + "title": "Content", + "type": "string" + }, "agents_api__autogen__Entries__ContentModel": { "description": "Anthropic image content part", "properties": { @@ -13506,6 +15448,25 @@ "title": "ContentModel3", "type": "object" }, + "agents_api__autogen__Tasks__Content": { + "properties": { + "text": { + "title": "Text", + "type": "string" + }, + "type": { + "const": "text", + "default": "text", + "title": "Type", + "type": "string" + } + }, + "required": [ + "text" + ], + "title": "Content", + "type": "object" + }, "agents_api__autogen__Tasks__ContentModel": { "properties": { "image_url": { @@ -13568,7 +15529,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -13684,6 +15645,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -13742,7 +15706,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -13858,6 +15822,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -13985,6 +15952,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ diff --git a/schemas/create_task_request.json b/src/schemas/create_task_request.json similarity index 87% rename from schemas/create_task_request.json rename to src/schemas/create_task_request.json index 6b1e9bc29..454d89161 100644 --- a/schemas/create_task_request.json +++ b/src/schemas/create_task_request.json @@ -86,6 +86,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "updated_at": { "format": "date-time", "readOnly": true, @@ -328,7 +342,187 @@ "title": "AlgoliaSetupUpdate", "type": "object" }, - "ApiCallDef": { + "ApiCallDef-Input": { + "description": "API call definition", + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "cookies": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Cookies" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Data" + }, + "files": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Files" + }, + "follow_redirects": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Follow Redirects" + }, + "headers": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Headers" + }, + "include_response_content": { + "default": true, + "title": "Include Response Content", + "type": "boolean" + }, + "json": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Json" + }, + "method": { + "enum": [ + "GET", + "POST", + "PUT", + "DELETE", + "PATCH", + "HEAD", + "OPTIONS", + "CONNECT", + "TRACE" + ], + "title": "Method", + "type": "string" + }, + "params": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Params" + }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchema-Input" + }, + { + "type": "null" + } + ] + }, + "schema": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Schema" + }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRef" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, + "timeout": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Timeout" + }, + "url": { + "format": "uri", + "minLength": 1, + "title": "Url", + "type": "string" + } + }, + "required": [ + "method", + "url" + ], + "title": "ApiCallDef", + "type": "object" + }, + "ApiCallDef-Output": { "description": "API call definition", "properties": { "content": { @@ -448,6 +642,16 @@ ], "title": "Params" }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchema-Output" + }, + { + "type": "null" + } + ] + }, "schema": { "anyOf": [ { @@ -459,6 +663,20 @@ ], "title": "Schema" }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRef" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, "timeout": { "anyOf": [ { @@ -611,6 +829,16 @@ ], "title": "Params" }, + "params_schema": { + "anyOf": [ + { + "$ref": "#/$defs/ParameterSchemaUpdate" + }, + { + "type": "null" + } + ] + }, "schema": { "anyOf": [ { @@ -622,6 +850,20 @@ ], "title": "Schema" }, + "secrets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/SecretRefUpdate" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Secrets" + }, "timeout": { "anyOf": [ { @@ -2141,6 +2383,11 @@ ], "title": "Agent" }, + "auto_run_tools": { + "default": false, + "title": "Auto Run Tools", + "type": "boolean" + }, "frequency_penalty": { "anyOf": [ { @@ -2201,6 +2448,17 @@ "title": "Messages", "type": "array" }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, "min_p": { "anyOf": [ { @@ -2245,6 +2503,11 @@ "title": "Recall", "type": "boolean" }, + "recall_tools": { + "default": true, + "title": "Recall Tools", + "type": "boolean" + }, "remember": { "default": false, "readOnly": true, @@ -3249,7 +3512,7 @@ "title": "Computer20241022DefUpdate", "type": "object" }, - "Content": { + "Content-Output": { "properties": { "text": { "title": "Text", @@ -3547,6 +3810,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3561,11 +3838,11 @@ "content": { "anyOf": [ { - "type": "string" + "$ref": "#/$defs/agents_api__autogen__Common__Content" }, { "items": { - "type": "string" + "$ref": "#/$defs/agents_api__autogen__Common__Content" }, "type": "array" } @@ -3691,6 +3968,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3773,6 +4064,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -3956,11 +4261,106 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "CreateOrUpdateUserRequest", "type": "object" }, + "CreateProjectRequest": { + "description": "Payload for creating a project", + "properties": { + "canonical_name": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Canonical Name" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "maxLength": 255, + "minLength": 1, + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "CreateProjectRequest", + "type": "object" + }, + "CreateSecretRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "title": "CreateSecretRequest", + "type": "object" + }, "CreateSessionRequest": { "description": "Payload for creating a session", "properties": { @@ -4248,7 +4648,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -4364,6 +4764,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -4442,6 +4845,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "CreateUserRequest", @@ -4483,17 +4900,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -5323,7 +5729,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/agents_api__autogen__Entries__ContentModel3" @@ -5445,6 +5851,7 @@ "enum": [ "api_request", "api_response", + "tool_request", "tool_response", "internal", "summarizer", @@ -5889,6 +6296,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "size": { "minimum": 1.0, "readOnly": true, @@ -6150,65 +6571,949 @@ "title": "GetStep", "type": "object" }, - "HTTPValidationError": { + "GoogleSheetsAppendArguments": { + "description": "Arguments for appending values to a spreadsheet", "properties": { - "detail": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "INSERT_ROWS", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { "items": { - "$ref": "#/$defs/ValidationError" + "items": {}, + "type": "array" }, - "title": "Detail", + "title": "Values", "type": "array" } }, - "title": "HTTPValidationError", + "required": [ + "spreadsheet_id", + "range", + "values" + ], + "title": "GoogleSheetsAppendArguments", "type": "object" }, - "History": { + "GoogleSheetsAppendArgumentsUpdate": { + "description": "Arguments for appending values to a spreadsheet", "properties": { - "created_at": { - "format": "date-time", - "readOnly": true, - "title": "Created At", + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "INSERT_ROWS", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", "type": "string" }, - "entries": { - "items": { - "$ref": "#/$defs/Entry" - }, - "title": "Entries", - "type": "array" + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" }, - "relations": { + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "anyOf": [ + { + "items": { + "items": {}, + "type": "array" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Values" + } + }, + "title": "GoogleSheetsAppendArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsBatchReadArguments": { + "description": "Arguments for batch reading values from multiple ranges", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "ranges": { "items": { - "$ref": "#/$defs/Relation" + "type": "string" }, - "title": "Relations", + "title": "Ranges", "type": "array" }, - "session_id": { - "format": "uuid", - "readOnly": true, - "title": "Session Id", + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", "type": "string" } }, "required": [ - "entries", - "relations", - "session_id", - "created_at" + "spreadsheet_id", + "ranges" ], - "title": "History", + "title": "GoogleSheetsBatchReadArguments", "type": "object" }, - "HybridDocSearch": { + "GoogleSheetsBatchReadArgumentsUpdate": { + "description": "Arguments for batch reading values from multiple ranges", "properties": { - "alpha": { - "default": 0.5, - "maximum": 1.0, - "minimum": 0.0, - "title": "Alpha", - "type": "number" + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "ranges": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ranges" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "title": "GoogleSheetsBatchReadArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsBatchWriteArguments": { + "description": "Arguments for batch updating values in multiple ranges", + "properties": { + "data": { + "items": { + "$ref": "#/$defs/GoogleSheetsValueRange" + }, + "title": "Data", + "type": "array" + }, + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "data" + ], + "title": "GoogleSheetsBatchWriteArguments", + "type": "object" + }, + "GoogleSheetsBatchWriteArgumentsUpdate": { + "description": "Arguments for batch updating values in multiple ranges", + "properties": { + "data": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/GoogleSheetsValueRange" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data" + }, + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + } + }, + "title": "GoogleSheetsBatchWriteArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsClearArguments": { + "description": "Arguments for clearing values from a spreadsheet", + "properties": { + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "range" + ], + "title": "GoogleSheetsClearArguments", + "type": "object" + }, + "GoogleSheetsClearArgumentsUpdate": { + "description": "Arguments for clearing values from a spreadsheet", + "properties": { + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + } + }, + "title": "GoogleSheetsClearArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsIntegrationDef-Input": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArguments" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetup" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDef", + "type": "object" + }, + "GoogleSheetsIntegrationDef-Output": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArguments" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArguments" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetup" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDef", + "type": "object" + }, + "GoogleSheetsIntegrationDefUpdate": { + "description": "Google Sheets integration definition", + "properties": { + "arguments": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsReadArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsWriteArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsAppendArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsClearArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchReadArgumentsUpdate" + }, + { + "$ref": "#/$defs/GoogleSheetsBatchWriteArgumentsUpdate" + }, + { + "type": "null" + } + ], + "title": "Arguments" + }, + "method": { + "anyOf": [ + { + "enum": [ + "read_values", + "write_values", + "append_values", + "clear_values", + "batch_read", + "batch_write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Method" + }, + "provider": { + "const": "google_sheets", + "default": "google_sheets", + "title": "Provider", + "type": "string" + }, + "setup": { + "anyOf": [ + { + "$ref": "#/$defs/GoogleSheetsSetupUpdate" + }, + { + "type": "null" + } + ] + } + }, + "title": "GoogleSheetsIntegrationDefUpdate", + "type": "object" + }, + "GoogleSheetsReadArguments": { + "description": "Arguments for reading values from a spreadsheet", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "required": [ + "spreadsheet_id", + "range" + ], + "title": "GoogleSheetsReadArguments", + "type": "object" + }, + "GoogleSheetsReadArgumentsUpdate": { + "description": "Arguments for reading values from a spreadsheet", + "properties": { + "date_time_render_option": { + "default": "FORMATTED_STRING", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "title": "Date Time Render Option", + "type": "string" + }, + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_render_option": { + "default": "FORMATTED_VALUE", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "title": "Value Render Option", + "type": "string" + } + }, + "title": "GoogleSheetsReadArgumentsUpdate", + "type": "object" + }, + "GoogleSheetsSetup": { + "description": "Setup parameters for Google Sheets integration", + "properties": { + "default_retry_count": { + "default": 3, + "maximum": 10.0, + "minimum": 1.0, + "title": "Default Retry Count", + "type": "integer" + }, + "service_account_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Service Account Json" + }, + "use_julep_service": { + "title": "Use Julep Service", + "type": "boolean" + } + }, + "required": [ + "use_julep_service" + ], + "title": "GoogleSheetsSetup", + "type": "object" + }, + "GoogleSheetsSetupUpdate": { + "description": "Setup parameters for Google Sheets integration", + "properties": { + "default_retry_count": { + "default": 3, + "maximum": 10.0, + "minimum": 1.0, + "title": "Default Retry Count", + "type": "integer" + }, + "service_account_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Service Account Json" + }, + "use_julep_service": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Use Julep Service" + } + }, + "title": "GoogleSheetsSetupUpdate", + "type": "object" + }, + "GoogleSheetsValueRange": { + "description": "Represents a range of values to write", + "properties": { + "major_dimension": { + "default": "ROWS", + "enum": [ + "ROWS", + "COLUMNS" + ], + "title": "Major Dimension", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "values": { + "items": { + "items": {}, + "type": "array" + }, + "title": "Values", + "type": "array" + } + }, + "required": [ + "range", + "values" + ], + "title": "GoogleSheetsValueRange", + "type": "object" + }, + "GoogleSheetsWriteArguments": { + "description": "Arguments for writing values to a spreadsheet", + "properties": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "OVERWRITE", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "title": "Range", + "type": "string" + }, + "spreadsheet_id": { + "title": "Spreadsheet Id", + "type": "string" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "items": { + "items": {}, + "type": "array" + }, + "title": "Values", + "type": "array" + } + }, + "required": [ + "spreadsheet_id", + "range", + "values" + ], + "title": "GoogleSheetsWriteArguments", + "type": "object" + }, + "GoogleSheetsWriteArgumentsUpdate": { + "description": "Arguments for writing values to a spreadsheet", + "properties": { + "include_values_in_response": { + "default": false, + "title": "Include Values In Response", + "type": "boolean" + }, + "insert_data_option": { + "default": "OVERWRITE", + "enum": [ + "OVERWRITE", + "INSERT_ROWS" + ], + "title": "Insert Data Option", + "type": "string" + }, + "range": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Range" + }, + "spreadsheet_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spreadsheet Id" + }, + "value_input_option": { + "default": "USER_ENTERED", + "enum": [ + "RAW", + "USER_ENTERED" + ], + "title": "Value Input Option", + "type": "string" + }, + "values": { + "anyOf": [ + { + "items": { + "items": {}, + "type": "array" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Values" + } + }, + "title": "GoogleSheetsWriteArgumentsUpdate", + "type": "object" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/$defs/ValidationError" + }, + "title": "Detail", + "type": "array" + } + }, + "title": "HTTPValidationError", + "type": "object" + }, + "History": { + "properties": { + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "entries": { + "items": { + "$ref": "#/$defs/Entry" + }, + "title": "Entries", + "type": "array" + }, + "relations": { + "items": { + "$ref": "#/$defs/Relation" + }, + "title": "Relations", + "type": "array" + }, + "session_id": { + "format": "uuid", + "readOnly": true, + "title": "Session Id", + "type": "string" + } + }, + "required": [ + "entries", + "relations", + "session_id", + "created_at" + ], + "title": "History", + "type": "object" + }, + "HybridDocSearch": { + "properties": { + "alpha": { + "default": 0.5, + "maximum": 1.0, + "minimum": 0.0, + "title": "Alpha", + "type": "number" }, "confidence": { "default": 0.5, @@ -6217,6 +7522,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { "default": 7, "minimum": 0.0, @@ -6294,9 +7604,15 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { - "default": 7, - "minimum": 0.0, + "default": 5, + "maximum": 10.0, + "minimum": 1.0, "title": "K Multiplier", "type": "integer" }, @@ -6329,11 +7645,17 @@ "type": "string" }, "trigram_similarity_threshold": { - "default": 0.6, - "maximum": 1.0, - "minimum": 0.0, - "title": "Trigram Similarity Threshold", - "type": "number" + "anyOf": [ + { + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Trigram Similarity Threshold" }, "vector": { "items": { @@ -6366,6 +7688,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "k_multiplier": { "default": 7, "minimum": 0.0, @@ -6804,6 +8131,23 @@ "title": "JobStatus", "type": "object" }, + "ListModelsResponse": { + "description": "Response for the list models endpoint", + "properties": { + "models": { + "items": { + "$ref": "#/$defs/ModelInfo" + }, + "title": "Models", + "type": "array" + } + }, + "required": [ + "models" + ], + "title": "ListModelsResponse", + "type": "object" + }, "ListResponse_Agent_": { "properties": { "items": { @@ -6852,6 +8196,22 @@ "title": "ListResponse[Execution]", "type": "object" }, + "ListResponse_Project_": { + "properties": { + "items": { + "items": { + "$ref": "#/$defs/Project" + }, + "title": "Items", + "type": "array" + } + }, + "required": [ + "items" + ], + "title": "ListResponse[Project]", + "type": "object" + }, "ListResponse_ResourceDeletedResponse_": { "properties": { "items": { @@ -7693,7 +9053,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/agents_api__autogen__Chat__Content" }, { "$ref": "#/$defs/ContentModel7" @@ -7711,17 +9071,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -7806,7 +9155,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/ContentModel7" @@ -7824,17 +9173,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8102,6 +9440,20 @@ "title": "MetadataFilter", "type": "object" }, + "ModelInfo": { + "description": "Model information returned by the model list endpoint", + "properties": { + "id": { + "title": "Id", + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ModelInfo", + "type": "object" + }, "MultipleChatOutput": { "description": "The output returned by the model. Note that, depending on the model provider, they might return more than one message.", "properties": { @@ -8320,15 +9672,142 @@ } ] }, - "maxItems": 100, - "title": "Parallel", + "maxItems": 100, + "title": "Parallel", + "type": "array" + } + }, + "required": [ + "parallel" + ], + "title": "ParallelStep", + "type": "object" + }, + "ParameterSchema-Input": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinition-Input" + }, + "title": "Properties", + "type": "object" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", + "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" + } + }, + "required": [ + "properties" + ], + "title": "ParameterSchema", + "type": "object" + }, + "ParameterSchema-Output": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinition-Output" + }, + "title": "Properties", + "type": "object" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", + "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" + } + }, + "required": [ + "properties" + ], + "title": "ParameterSchema", + "type": "object" + }, + "ParameterSchemaUpdate": { + "description": "JSON Schema for API call parameters", + "properties": { + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Additionalproperties" + }, + "properties": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/PropertyDefinitionUpdate" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Properties" + }, + "required": { + "default": [], + "items": { + "type": "string" + }, + "title": "Required", "type": "array" + }, + "type": { + "default": "object", + "title": "Type", + "type": "string" } }, - "required": [ - "parallel" - ], - "title": "ParallelStep", + "title": "ParameterSchemaUpdate", "type": "object" }, "PatchAgentRequest": { @@ -8412,6 +9891,20 @@ } ], "title": "Name" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "PatchAgentRequest", @@ -8637,6 +10130,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDefUpdate" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDefUpdate" + }, { "type": "null" } @@ -8725,11 +10221,87 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "PatchUserRequest", "type": "object" }, + "Project": { + "description": "Project model", + "properties": { + "canonical_name": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Canonical Name" + }, + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "id": { + "format": "uuid", + "readOnly": true, + "title": "Id", + "type": "string" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "maxLength": 255, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "readOnly": true, + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "created_at", + "updated_at", + "name" + ], + "title": "Project", + "type": "object" + }, "PromptItem-Input": { "properties": { "content": { @@ -8744,7 +10316,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/agents_api__autogen__Tasks__Content" }, { "$ref": "#/$defs/agents_api__autogen__Tasks__ContentModel" @@ -8765,17 +10337,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8858,7 +10419,7 @@ "items": { "anyOf": [ { - "$ref": "#/$defs/Content" + "$ref": "#/$defs/Content-Output" }, { "$ref": "#/$defs/agents_api__autogen__Tasks__ContentModel" @@ -8879,17 +10440,6 @@ ], "title": "Content" }, - "continue": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Continue" - }, "name": { "anyOf": [ { @@ -8961,7 +10511,7 @@ "PromptStep-Input": { "properties": { "auto_run_tools": { - "default": true, + "default": false, "title": "Auto Run Tools", "type": "boolean" }, @@ -9071,7 +10621,7 @@ "PromptStep-Output": { "properties": { "auto_run_tools": { - "default": true, + "default": false, "title": "Auto Run Tools", "type": "boolean" }, @@ -9163,19 +10713,170 @@ "type": "array" } ], - "default": "all", - "title": "Tools" - }, - "unwrap": { - "default": false, - "title": "Unwrap", - "type": "boolean" + "default": "all", + "title": "Tools" + }, + "unwrap": { + "default": false, + "title": "Unwrap", + "type": "boolean" + } + }, + "required": [ + "prompt" + ], + "title": "PromptStep", + "type": "object" + }, + "PropertyDefinition-Input": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinition-Input" + }, + { + "type": "null" + } + ] + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "PropertyDefinition", + "type": "object" + }, + "PropertyDefinition-Output": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinition-Output" + }, + { + "type": "null" + } + ] + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "PropertyDefinition", + "type": "object" + }, + "PropertyDefinitionUpdate": { + "description": "Property definition for parameter schema", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "enum": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Enum" + }, + "items": { + "anyOf": [ + { + "$ref": "#/$defs/PropertyDefinitionUpdate" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" } }, - "required": [ - "prompt" - ], - "title": "PromptStep", + "title": "PropertyDefinitionUpdate", "type": "object" }, "Relation": { @@ -9637,6 +11338,98 @@ "title": "SchemaCompletionResponseFormat", "type": "object" }, + "Secret": { + "description": "A secret that can be used in tasks and sessions", + "properties": { + "created_at": { + "format": "date-time", + "readOnly": true, + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "format": "uuid", + "readOnly": true, + "title": "Id", + "type": "string" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "readOnly": true, + "title": "Updated At", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "id", + "created_at", + "updated_at", + "name", + "value" + ], + "title": "Secret", + "type": "object" + }, + "SecretRef": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "SecretRef", + "type": "object" + }, + "SecretRefUpdate": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + } + }, + "title": "SecretRefUpdate", + "type": "object" + }, "Session": { "properties": { "auto_run_tools": { @@ -10681,7 +12474,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -10803,6 +12596,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -10861,7 +12657,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -10983,6 +12779,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -11072,6 +12871,11 @@ }, "TextOnlyDocSearch": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11122,6 +12926,11 @@ }, "TextOnlyDocSearchRequest": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11144,11 +12953,17 @@ "type": "string" }, "trigram_similarity_threshold": { - "default": 0.6, - "maximum": 1.0, - "minimum": 0.0, - "title": "Trigram Similarity Threshold", - "type": "number" + "anyOf": [ + { + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Trigram Similarity Threshold" } }, "required": [ @@ -11159,6 +12974,11 @@ }, "TextOnlyDocSearchUpdate": { "properties": { + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -11432,7 +13252,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Output" }, { "type": "null" @@ -11560,6 +13380,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Output" + }, { "type": "null" } @@ -12253,6 +14076,20 @@ "minLength": 1, "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "required": [ @@ -12261,6 +14098,46 @@ "title": "UpdateAgentRequest", "type": "object" }, + "UpdateSecretRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "title": "UpdateSecretRequest", + "type": "object" + }, "UpdateSessionRequest": { "description": "Payload for updating a session", "properties": { @@ -12365,7 +14242,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -12481,6 +14358,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -12559,6 +14439,20 @@ "pattern": "^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$", "title": "Name", "type": "string" + }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" } }, "title": "UpdateUserRequest", @@ -12601,6 +14495,20 @@ "title": "Name", "type": "string" }, + "project": { + "anyOf": [ + { + "maxLength": 255, + "minLength": 1, + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project" + }, "updated_at": { "format": "date-time", "readOnly": true, @@ -12658,6 +14566,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -12715,10 +14628,10 @@ "title": "Confidence", "type": "number" }, - "lang": { - "default": "en-US", - "title": "Lang", - "type": "string" + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" }, "limit": { "default": 10, @@ -12762,6 +14675,11 @@ "title": "Confidence", "type": "number" }, + "include_embeddings": { + "default": true, + "title": "Include Embeddings", + "type": "boolean" + }, "lang": { "default": "en-US", "title": "Lang", @@ -13241,6 +15159,25 @@ "title": "YieldStep", "type": "object" }, + "agents_api__autogen__Chat__Content": { + "properties": { + "text": { + "title": "Text", + "type": "string" + }, + "type": { + "const": "text", + "default": "text", + "title": "Type", + "type": "string" + } + }, + "required": [ + "text" + ], + "title": "Content", + "type": "object" + }, "agents_api__autogen__Chat__ContentModel-Input": { "description": "Anthropic image content part", "properties": { @@ -13393,6 +15330,11 @@ "title": "ContentModel3", "type": "object" }, + "agents_api__autogen__Common__Content": { + "maxLength": 30000, + "title": "Content", + "type": "string" + }, "agents_api__autogen__Entries__ContentModel": { "description": "Anthropic image content part", "properties": { @@ -13506,6 +15448,25 @@ "title": "ContentModel3", "type": "object" }, + "agents_api__autogen__Tasks__Content": { + "properties": { + "text": { + "title": "Text", + "type": "string" + }, + "type": { + "const": "text", + "default": "text", + "title": "Type", + "type": "string" + } + }, + "required": [ + "text" + ], + "title": "Content", + "type": "object" + }, "agents_api__autogen__Tasks__ContentModel": { "properties": { "image_url": { @@ -13568,7 +15529,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -13684,6 +15645,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } @@ -13742,7 +15706,7 @@ "api_call": { "anyOf": [ { - "$ref": "#/$defs/ApiCallDef" + "$ref": "#/$defs/ApiCallDef-Input" }, { "type": "null" @@ -13858,6 +15822,9 @@ { "$ref": "#/$defs/AlgoliaIntegrationDef" }, + { + "$ref": "#/$defs/GoogleSheetsIntegrationDef-Input" + }, { "type": "null" } diff --git a/schemas/walk.jq b/src/schemas/walk.jq similarity index 100% rename from schemas/walk.jq rename to src/schemas/walk.jq diff --git a/src/scripts/__init__.py b/src/scripts/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/generate_changelog.py b/src/scripts/generate_changelog.py similarity index 100% rename from scripts/generate_changelog.py rename to src/scripts/generate_changelog.py diff --git a/scripts/generate_jwt.py b/src/scripts/generate_jwt.py similarity index 100% rename from scripts/generate_jwt.py rename to src/scripts/generate_jwt.py diff --git a/scripts/generate_openapi_code.sh b/src/scripts/generate_openapi_code.sh similarity index 52% rename from scripts/generate_openapi_code.sh rename to src/scripts/generate_openapi_code.sh index d75a6253c..f587db046 100755 --- a/scripts/generate_openapi_code.sh +++ b/src/scripts/generate_openapi_code.sh @@ -20,24 +20,24 @@ codegen_then_format () { } generate_json_schema_local () { - \cat openapi.yaml | yq -o json | jq -f ./schemas/walk.jq --arg target "${1}" > $2 + \cat openapi.yaml | yq -o json | jq -f src/schemas/walk.jq --arg target "${1}" > $2 } generate_json_schema () { - curl -sL http://dev.julep.ai/api/openapi.json | jq -f ./schemas/walk.jq --arg target "${1}" > $2 + curl -sL http://dev.julep.ai/api/openapi.json | jq -f src/schemas/walk.jq --arg target "${1}" > $2 } -cd typespec/ && \ +cd src/typespec/ && \ tsp compile . cd - -generate_json_schema CreateTaskRequest ./schemas/create_task_request.json -generate_json_schema CreateAgentRequest ./schemas/create_agent_request.json +generate_json_schema CreateTaskRequest src/schemas/create_task_request.json +generate_json_schema CreateAgentRequest src/schemas/create_agent_request.json -cd agents-api && \ +cd src/agents-api && \ codegen_then_format cd - -cd integrations-service && \ +cd src/integrations-service && \ codegen_then_format cd - diff --git a/scripts/readme_translator.py b/src/scripts/readme_translator.py similarity index 100% rename from scripts/readme_translator.py rename to src/scripts/readme_translator.py diff --git a/src/scripts/sync_model_docs.py b/src/scripts/sync_model_docs.py new file mode 100755 index 000000000..bc00fdea8 --- /dev/null +++ b/src/scripts/sync_model_docs.py @@ -0,0 +1,453 @@ +#!/usr/bin/env python3 +""" +Sync model information from litellm-config.yaml to documentation. + +This script reads the configured models from litellm-config.yaml, +fetches pricing/feature data from LiteLLM's GitHub repository, +and updates the supported-models.mdx file. + +The pricing data is fetched from: +https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json +""" + +import json +from pathlib import Path +from typing import Dict, List, Any, Optional, Tuple +import re +import yaml +import urllib.request +import urllib.error + + +# Cost tier classification based on input token price +def classify_cost_tier(input_cost_per_token: float) -> str: + """Classify model cost tier based on input token cost.""" + if input_cost_per_token == 0: + return "Free" + elif input_cost_per_token < 0.0000005: # $0.50 per 1M tokens + return "Budget" + elif input_cost_per_token < 0.000002: # $2.00 per 1M tokens + return "Standard" + elif input_cost_per_token < 0.00001: # $10.00 per 1M tokens + return "Premium" + else: + return "Enterprise" + + +def normalize_model_name(model_name: str) -> str: + """Normalize model name to match between configs.""" + # Remove provider prefixes + normalized = re.sub(r'^(openai/|gemini/|anthropic/|groq/|openrouter/|cerebras/|voyage/|vertex_ai/)', '', model_name) + + # Handle special cases + if normalized.startswith("claude-"): + # Convert claude names to match pricing file format + normalized = normalized.replace("claude-3-5-", "claude-3.5-") + normalized = normalized.replace("claude-3-7-", "claude-3.7-") + + return normalized + + +def find_model_in_pricing_data(model_name: str, litellm_model: str, pricing_data: Dict) -> Optional[Dict]: + """Find model in pricing data using various matching strategies.""" + # Direct matches to try + candidates = [ + model_name, + litellm_model, + normalize_model_name(model_name), + normalize_model_name(litellm_model), + ] + + # Add provider-specific variations + if "/" in litellm_model: + provider, model_part = litellm_model.split("/", 1) + candidates.extend([ + model_part, + f"{provider}/{normalize_model_name(model_part)}", + ]) + + # Try each candidate + for candidate in candidates: + if candidate in pricing_data: + return pricing_data[candidate] + + # Try partial matching for specific patterns + for key in pricing_data: + if any(candidate in key or key in candidate for candidate in candidates): + return pricing_data[key] + + return None + + +def extract_models_from_config(config_path: Path) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]]]: + """Extract model configurations from litellm-config.yaml.""" + with open(config_path, 'r') as f: + config = yaml.safe_load(f) + + models = [] + embedding_models = [] + + for model_config in config.get('model_list', []): + model_name = model_config.get('model_name', '') + litellm_params = model_config.get('litellm_params', {}) + litellm_model = litellm_params.get('model', '') + tags = litellm_params.get('tags', []) + + # Check if it's an embedding model + is_embedding = ('embedding' in model_name.lower() or 'embedding' in litellm_model.lower() or + model_name.startswith('text-embedding') or model_name.startswith('voyage') or + '/bge-' in litellm_model or '/gte-' in litellm_model) + + model_data = { + 'name': model_name, + 'litellm_model': litellm_model, + 'provider': litellm_model.split('/')[0] if '/' in litellm_model else 'unknown', + 'is_free': 'free' in tags, + 'tags': tags + } + + if is_embedding: + embedding_models.append(model_data) + else: + models.append(model_data) + + return models, embedding_models + + +def enrich_model_data(models: List[Dict], pricing_data: Dict) -> List[Dict]: + """Enrich model data with pricing and feature information.""" + enriched = [] + + for model in models: + model_info = find_model_in_pricing_data(model['name'], model['litellm_model'], pricing_data) + + if model_info: + model['context_window'] = model_info.get('max_input_tokens', model_info.get('max_tokens', 'Unknown')) + model['max_output'] = model_info.get('max_output_tokens', 'Unknown') + model['supports_tools'] = model_info.get('supports_function_calling', False) + model['supports_vision'] = model_info.get('supports_vision', False) + model['supports_audio'] = model_info.get('supports_audio_input', False) or model_info.get('supports_audio_output', False) + model['supports_prompt_caching'] = model_info.get('supports_prompt_caching', False) + + # Calculate cost tier + input_cost = model_info.get('input_cost_per_token', 0) + model['cost_tier'] = classify_cost_tier(input_cost) + else: + # Default values for models not in pricing data + model['context_window'] = 'Unknown' + model['max_output'] = 'Unknown' + model['supports_tools'] = False + model['supports_vision'] = False + model['supports_audio'] = False + model['supports_prompt_caching'] = False + model['cost_tier'] = 'Unknown' + + enriched.append(model) + + return enriched + + +def generate_model_table(models: List[Dict]) -> str: + """Generate markdown table for models grouped by provider.""" + # Group models by provider + providers = {} + provider_map = { + 'openai': 'OpenAI', + 'anthropic': 'Anthropic', + 'gemini': 'Google', + 'groq': 'Groq', + 'openrouter': 'OpenRouter', + 'cerebras': 'Cerebras', + 'unknown': 'Anthropic' # Claude models show as unknown + } + + for model in models: + provider_key = model['provider'].lower() + provider_name = provider_map.get(provider_key, provider_key.title()) + + # Special handling for models + if model['name'].startswith('claude'): + provider_name = 'Anthropic' + elif model['name'].startswith('amazon/'): + provider_name = 'Amazon Nova' + + if provider_name not in providers: + providers[provider_name] = [] + providers[provider_name].append(model) + + # Define provider order to match existing doc + provider_order = ['Anthropic', 'Google', 'OpenAI', 'Groq', 'OpenRouter', 'Cerebras', 'Amazon Nova'] + + tables = [] + for provider in provider_order: + if provider not in providers: + continue + + provider_models = sorted(providers[provider], key=lambda x: x['name']) + + # Generate markdown table matching existing format + table = f"\n### {provider}\n\n" + table += f"Here are the {provider} models supported by Julep:\n\n" + table += "| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n" + table += "|------------|----------------|------------|--------------|--------|-------|---------|----------|\n" + + for model in provider_models: + # Format context window + if isinstance(model['context_window'], int): + if model['context_window'] >= 1000000: + context = f"{model['context_window'] // 1000000}M tokens" + elif model['context_window'] >= 1000: + context = f"{model['context_window'] // 1000}K tokens" + else: + context = f"{model['context_window']} tokens" + else: + context = "Unknown" + + # Format max output + if isinstance(model['max_output'], int): + if model['max_output'] >= 1000000: + max_out = f"{model['max_output'] // 1000000}M tokens" + elif model['max_output'] >= 1000: + max_out = f"{model['max_output'] // 1000}K tokens" + else: + max_out = f"{model['max_output']} tokens" + else: + max_out = "Unknown" + + # Format boolean support columns + tools = "✅" if model['supports_tools'] else "❌" if model['supports_tools'] is False else "?" + vision = "✅" if model['supports_vision'] else "❌" + audio = "✅" if model['supports_audio'] else "❌" + caching = "✅" if model['supports_prompt_caching'] else "❌" + + table += f"| {model['name']} | {context} | {max_out} | {tools} | {vision} | {audio} | {caching} | {model['cost_tier']} |\n" + + tables.append(table) + + # Add any remaining providers not in the order + remaining = [p for p in providers if p not in provider_order] + for provider in sorted(remaining): + provider_models = sorted(providers[provider], key=lambda x: x['name']) + + table = f"\n### {provider}\n\n" + table += f"Here are the {provider} models supported by Julep:\n\n" + table += "| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n" + table += "|------------|----------------|------------|--------------|--------|-------|---------|----------|\n" + + for model in provider_models: + if isinstance(model['context_window'], int): + if model['context_window'] >= 1000000: + context = f"{model['context_window'] // 1000000}M tokens" + elif model['context_window'] >= 1000: + context = f"{model['context_window'] // 1000}K tokens" + else: + context = f"{model['context_window']} tokens" + else: + context = "Unknown" + + # Format max output + if isinstance(model['max_output'], int): + if model['max_output'] >= 1000000: + max_out = f"{model['max_output'] // 1000000}M tokens" + elif model['max_output'] >= 1000: + max_out = f"{model['max_output'] // 1000}K tokens" + else: + max_out = f"{model['max_output']} tokens" + else: + max_out = "Unknown" + + # Format boolean support columns + tools = "✅" if model['supports_tools'] else "❌" if model['supports_tools'] is False else "?" + vision = "✅" if model['supports_vision'] else "❌" + audio = "✅" if model['supports_audio'] else "❌" + caching = "✅" if model['supports_prompt_caching'] else "❌" + + table += f"| {model['name']} | {context} | {max_out} | {tools} | {vision} | {audio} | {caching} | {model['cost_tier']} |\n" + + tables.append(table) + + return "\n".join(tables) + + +def generate_embedding_table(embedding_models: List[Dict]) -> str: + """Generate markdown table for embedding models.""" + if not embedding_models: + return "" + + table = "\n### Embedding\n\n" + table += "Here are the embedding models supported by Julep:\n\n" + table += "| Model Name | Embedding Dimensions |\n" + table += "|------------|---------------------|\n" + + for model in sorted(embedding_models, key=lambda x: x['name']): + # All embedding models in Julep use 1024 dimensions as noted in the original doc + dimensions = "1024" + + table += f"| {model['name']} | {dimensions} |\n" + + table += "\n\n" + table += "Though the models mentioned above support different embedding dimensions, Julep uses fixed 1024 dimensions for all embedding models for now. We plan to support different dimensions in the future.\n" + table += "\n" + + return table + + + + +def update_documentation(doc_path: Path, model_section: str): + """Update the documentation file with new model information.""" + with open(doc_path, 'r') as f: + content = f.read() + + # Find the Available Models section + available_models_start = content.find("## Available Models") + if available_models_start == -1: + print("Error: Could not find '## Available Models' section") + return + + # Find where to stop - look for the next ## section after Available Models + # This could be "## Supported Parameters" or any other section + next_major_section = content.find("\n## ", available_models_start + 1) + if next_major_section == -1: + # If no next section found, replace to end of file + end_marker = len(content) + else: + end_marker = next_major_section + + # Extract the part before models + before_models = content[:available_models_start] + + # Find where the actual model listings start + # Look for the first provider heading (could be ### or #) + import re + + # Find the first provider section (### Anthropic, ### Google, etc.) + first_provider_match = re.search(r'\n###?\s+(Anthropic|Google|OpenAI|Groq|OpenRouter|Cerebras|Amazon)', + content[available_models_start:end_marker]) + + if first_provider_match: + models_content_start = available_models_start + first_provider_match.start() + else: + # If no provider found, look for where tip/info boxes end + # Find the last or tag + last_tip = content.rfind("", available_models_start, end_marker) + last_info = content.rfind("", available_models_start, end_marker) + last_tag = max(last_tip, last_info) + if last_tag > -1: + # Find the newline after the tag + newline_after = content.find("\n", last_tag) + models_content_start = newline_after + 1 + else: + # Fallback: just use some offset after the section header + models_content_start = available_models_start + len("## Available Models\n\n") + + # Extract the header part (with info/tip boxes) + models_header = content[available_models_start:models_content_start] + + # Extract the part after models + after_models = content[end_marker:] + + # Construct new content + new_content = before_models + models_header + model_section + after_models + + with open(doc_path, 'w') as f: + f.write(new_content) + + +def fetch_pricing_data() -> Dict: + """Fetch pricing data from LiteLLM GitHub repository.""" + url = "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json" + + try: + print(f"Fetching pricing data from {url}...") + with urllib.request.urlopen(url) as response: + data = json.loads(response.read().decode()) + print("✅ Successfully fetched pricing data") + return data + except urllib.error.URLError as e: + print(f"❌ Error fetching pricing data: {e}") + raise + except json.JSONDecodeError as e: + print(f"❌ Error parsing pricing data: {e}") + raise + + +def main(): + """Main function to sync model documentation.""" + # Define paths - handle different execution contexts + script_path = Path(__file__).resolve() + + # Check if we're in src/scripts or being run from elsewhere + if script_path.parent.name == "scripts" and script_path.parent.parent.name == "src": + # Running from src/scripts/ + project_root = script_path.parent.parent.parent + else: + # Running from somewhere else, try to find project root + current = script_path.parent + while current != current.parent: + if (current / "src" / "llm-proxy").exists(): + project_root = current + break + current = current.parent + else: + # Fallback to relative paths + project_root = Path.cwd() + + config_path = project_root / "src" / "llm-proxy" / "litellm-config.yaml" + doc_path = project_root / "documentation" / "integrations" / "supported-models.mdx" + + # Check files exist + if not config_path.exists(): + print(f"Error: Config file not found at {config_path}") + return 1 + + if not doc_path.exists(): + print(f"Error: Documentation file not found at {doc_path}") + return 1 + + # Fetch pricing data from GitHub + try: + pricing_data = fetch_pricing_data() + except Exception as e: + print(f"Failed to fetch pricing data: {e}") + return 1 + + # Extract and enrich model data + print("Extracting models from litellm config...") + models, embedding_models = extract_models_from_config(config_path) + print(f"Found {len(models)} models and {len(embedding_models)} embedding models") + + print("Enriching model data with pricing information...") + enriched_models = enrich_model_data(models, pricing_data) + + # Generate documentation + print("Generating model documentation...") + model_section = generate_model_table(enriched_models) + embedding_section = generate_embedding_table(embedding_models) + + # Combine sections + full_section = model_section + "\n" + embedding_section + + # Update documentation file + print("Updating documentation file...") + update_documentation(doc_path, full_section) + + print("✅ Documentation updated successfully!") + + # Print summary + cost_tiers = {} + for model in enriched_models: + tier = model['cost_tier'] + cost_tiers[tier] = cost_tiers.get(tier, 0) + 1 + + print("\nModel Summary:") + print(f"Total models: {len(enriched_models)}") + print(f"Embedding models: {len(embedding_models)}") + for tier, count in sorted(cost_tiers.items()): + print(f" {tier}: {count} models") + + return 0 + + +if __name__ == "__main__": + exit(main()) \ No newline at end of file diff --git a/scripts/templates/changelog.yaml b/src/scripts/templates/changelog.yaml similarity index 100% rename from scripts/templates/changelog.yaml rename to src/scripts/templates/changelog.yaml diff --git a/scripts/templates/header.html b/src/scripts/templates/header.html similarity index 100% rename from scripts/templates/header.html rename to src/scripts/templates/header.html diff --git a/typespec/.gitignore b/src/typespec/.gitignore similarity index 100% rename from typespec/.gitignore rename to src/typespec/.gitignore diff --git a/typespec/CLAUDE.md b/src/typespec/AGENTS.md similarity index 76% rename from typespec/CLAUDE.md rename to src/typespec/AGENTS.md index aa01841f5..508ce3853 100644 --- a/typespec/CLAUDE.md +++ b/src/typespec/AGENTS.md @@ -1,3 +1,26 @@ +# AGENTS.md - typespec + +This directory contains TypeSpec definitions for APIs and code generation. + +Key Uses +- Bash commands: + - cd typespec + - poe codegen +- Core directories: + - `agents/`, `tasks/`, `tools/`, `sessions/`, etc. define domain models. +- Code style guidelines: + - Use discriminated unions with `kind_` property. + - Apply mixins (HasId, HasTimestamps, HasMetadata) consistently. +- Testing instructions: + - Validate specs: `tsp compile` + - Regenerate OpenAPI models: `bash scripts/generate_openapi_code.sh` +- Repository etiquette: + - Do NOT edit generated code in `autogen/`. +- Developer environment: + - Ensure `@typespec/openapi3` plugin is installed. +- Unexpected behaviors: + - Alias conflicts (e.g., `if_`) require manual resolution. + # TypeSpec Architecture Documentation ## Overview @@ -10,6 +33,7 @@ TypeSpec is a structured language for defining API contracts that serves as the - Generates OpenAPI 3.0 YAML specifications ## Domain Resources +- **projects**: Organizational units for grouping related resources - **agents**: AI agent definitions with instructions and configuration - **tasks**: Workflow definitions with steps, conditionals, and tool integration - **tools**: Capabilities that agents can use (functions, integrations, system resources) @@ -68,4 +92,4 @@ TypeSpec is a structured language for defining API contracts that serves as the - Expression language for dynamic behavior - Parent-child resource hierarchies - Common mixins (HasId, HasTimestamps, HasMetadata) -- Tool composability for flexible agent capabilities \ No newline at end of file +- Tool composability for flexible agent capabilities diff --git a/src/typespec/CLAUDE.md b/src/typespec/CLAUDE.md new file mode 120000 index 000000000..47dc3e3d8 --- /dev/null +++ b/src/typespec/CLAUDE.md @@ -0,0 +1 @@ +AGENTS.md \ No newline at end of file diff --git a/typespec/agents/endpoints.tsp b/src/typespec/agents/endpoints.tsp similarity index 100% rename from typespec/agents/endpoints.tsp rename to src/typespec/agents/endpoints.tsp diff --git a/typespec/agents/main.tsp b/src/typespec/agents/main.tsp similarity index 100% rename from typespec/agents/main.tsp rename to src/typespec/agents/main.tsp diff --git a/typespec/agents/models.tsp b/src/typespec/agents/models.tsp similarity index 95% rename from typespec/agents/models.tsp rename to src/typespec/agents/models.tsp index c4bc4ffc4..1f9f7a109 100644 --- a/typespec/agents/models.tsp +++ b/src/typespec/agents/models.tsp @@ -22,6 +22,9 @@ model Agent { /** Name of the agent */ name: displayName; + /** Project canonical name of the agent */ + project?: canonicalName; + /** Canonical name of the agent */ canonical_name?: canonicalName; diff --git a/typespec/chat/endpoints.tsp b/src/typespec/chat/endpoints.tsp similarity index 80% rename from typespec/chat/endpoints.tsp rename to src/typespec/chat/endpoints.tsp index 1f5509a29..b1343acb5 100644 --- a/typespec/chat/endpoints.tsp +++ b/src/typespec/chat/endpoints.tsp @@ -36,6 +36,16 @@ interface Endpoints { @bodyRoot @doc("Response from the model") body: ChatResponse; + } | { + @statusCode _: "200"; + + @header + @doc("Content type for streaming responses") + "content-type": "text/event-stream"; + + @bodyRoot + @doc("Streaming response from the model") + body: ChunkChatResponse; }; } diff --git a/typespec/chat/main.tsp b/src/typespec/chat/main.tsp similarity index 100% rename from typespec/chat/main.tsp rename to src/typespec/chat/main.tsp diff --git a/typespec/chat/models.tsp b/src/typespec/chat/models.tsp similarity index 96% rename from typespec/chat/models.tsp rename to src/typespec/chat/models.tsp index 66fe4bcaf..a2a39dd3a 100644 --- a/typespec/chat/models.tsp +++ b/src/typespec/chat/models.tsp @@ -171,6 +171,13 @@ model ChatInputData { model ChatInput extends ChatInputData { ...MemoryAccessOptions; ...InputChatSettings; + ...HasMetadata; + + /** Whether to automatically run tools and send the results back to the model (requires tools or agents with tools). */ + auto_run_tools: boolean = false; + + /** Whether to include tool requests and responses when recalling messages. */ + recall_tools: boolean = true; } model BaseTokenLogProb { diff --git a/typespec/common/constants.tsp b/src/typespec/common/constants.tsp similarity index 100% rename from typespec/common/constants.tsp rename to src/typespec/common/constants.tsp diff --git a/typespec/common/interfaces.tsp b/src/typespec/common/interfaces.tsp similarity index 100% rename from typespec/common/interfaces.tsp rename to src/typespec/common/interfaces.tsp diff --git a/typespec/common/main.tsp b/src/typespec/common/main.tsp similarity index 100% rename from typespec/common/main.tsp rename to src/typespec/common/main.tsp diff --git a/typespec/common/mixins.tsp b/src/typespec/common/mixins.tsp similarity index 100% rename from typespec/common/mixins.tsp rename to src/typespec/common/mixins.tsp diff --git a/typespec/common/scalars.tsp b/src/typespec/common/scalars.tsp similarity index 95% rename from typespec/common/scalars.tsp rename to src/typespec/common/scalars.tsp index 43dcff129..a08f05b47 100644 --- a/typespec/common/scalars.tsp +++ b/src/typespec/common/scalars.tsp @@ -48,6 +48,10 @@ alias sortBy = "created_at" | "updated_at"; /** Sort direction */ alias sortDirection = "asc" | "desc"; +/** Contents of a document */ +@maxLength(30000) +scalar content extends string; + @minValue(-100.0) @maxValue(100.0) scalar logit_bias extends float32; @@ -61,6 +65,7 @@ alias eventStream = "text/event-stream"; alias entrySource = | "api_request" | "api_response" + | "tool_request" | "tool_response" | "internal" | "summarizer" diff --git a/typespec/common/types.tsp b/src/typespec/common/types.tsp similarity index 100% rename from typespec/common/types.tsp rename to src/typespec/common/types.tsp diff --git a/typespec/docs/endpoints.tsp b/src/typespec/docs/endpoints.tsp similarity index 51% rename from typespec/docs/endpoints.tsp rename to src/typespec/docs/endpoints.tsp index 9e3abadd0..ac89d4d10 100644 --- a/typespec/docs/endpoints.tsp +++ b/src/typespec/docs/endpoints.tsp @@ -18,17 +18,58 @@ namespace Docs; // interface UserEndpoints - extends ChildLimitOffsetPagination, - ChildDeleteEndpoint<"Delete a Doc for this User">, - ChildCreateEndpoint {} + extends ChildDeleteEndpoint<"Delete a Doc for this User">, + ChildCreateEndpoint { + @get + @doc("List Docs owned by a User") + list( + @path + @doc("ID of parent") + id: uuid, + + ...PaginationOptions, + + @query + @doc("Whether to include embeddings in the response") + include_embeddings?: boolean = true, + ): { + items: Doc[]; + }; +} interface AgentEndpoints - extends ChildLimitOffsetPagination, - ChildDeleteEndpoint<"Delete a Doc for this Agent">, - ChildCreateEndpoint {} + extends ChildDeleteEndpoint<"Delete a Doc for this Agent">, + ChildCreateEndpoint { + @get + @doc("List Docs owned by an Agent") + list( + @path + @doc("ID of parent") + id: uuid, -interface IndividualDocEndpoints - extends GetEndpoint {} + ...PaginationOptions, + + @query + @doc("Whether to include embeddings in the response") + include_embeddings?: boolean = true, + ): { + items: Doc[]; + }; +} + +interface IndividualDocEndpoints { + @get + @doc("Get Doc by id") + get( + @path + @doc("ID of the resource") + id: uuid, + + @query + @doc("Whether to include embeddings in the response") + include_embeddings?: boolean = true, + ): Doc; +} interface SearchEndpoints { @doc(DocString) diff --git a/typespec/docs/main.tsp b/src/typespec/docs/main.tsp similarity index 100% rename from typespec/docs/main.tsp rename to src/typespec/docs/main.tsp diff --git a/typespec/docs/models.tsp b/src/typespec/docs/models.tsp similarity index 69% rename from typespec/docs/models.tsp rename to src/typespec/docs/models.tsp index 3aaa4f57e..332175310 100644 --- a/typespec/docs/models.tsp +++ b/src/typespec/docs/models.tsp @@ -48,7 +48,16 @@ model Doc { /** Payload for creating a doc */ @withVisibility("create") model CreateDocRequest { - ...Doc; + ...HasId; + ...HasMetadata; + ...HasCreatedAt; + + /** Title describing what this document contains */ + @maxLength(800) + title: string; + + /** Contents of the document. Each string is limited to 30k characters. */ + content: content | content[]; /** Instruction for the embedding model. */ embed_instruction: string | null = null; @@ -105,78 +114,81 @@ model EmbedQueryResponse { vectors: float[][]; } -model BaseDocSearchRequest { +// Base search parameters common to all search types +model BaseSearchParams { /** The limit of documents to return */ @minValue(1) @maxValue(50) limit: uint16 = 10; - - /** The language to be used for text-only search. Support for other languages coming soon. */ - lang: string = "en-US"; - + /** Metadata filter to apply to the search */ metadata_filter: MetadataFilter = #{}; -} - -model VectorDocSearchRequest extends BaseDocSearchRequest { - /** The confidence cutoff level */ - @minValue(-1) - @maxValue(1) - confidence: float = 0.5; - - /** Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. */ - vector: float[]; - - text?: never; - /** MMR Strength (mmr_strength = 1 - mmr_lambda) */ - @minValue(0) - @maxValueExclusive(1) - mmr_strength?: float = 0.5; + /** Whether to include embeddings in the response */ + include_embeddings: boolean = true; } -model TextOnlyDocSearchRequest extends BaseDocSearchRequest { - /** Text to use in the search. */ +// Text search specific parameters +model TextSearchParams { + /** Text to use in the search */ text: string; - - vector?: never; - - /** The trigram_similarity_threshold cutoff level */ + + /** The language to be used for text search. Support for other languages coming soon. */ + lang: string = "en-US"; + + /** Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. */ @minValue(0) @maxValue(1) - trigram_similarity_threshold: float = 0.6; + trigram_similarity_threshold: float | null = null; } -model HybridDocSearchRequest extends BaseDocSearchRequest { +// Vector search specific parameters +model VectorSearchParams { + /** Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. */ + vector: float[]; + /** The confidence cutoff level */ @minValue(-1) @maxValue(1) confidence: float = 0.5; - - /** The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; */ - @minValue(0) - @maxValue(1) - alpha: float = 0.5; - - /** Text to use in the search. In `hybrid` search mode, either `text` or both `text` and `vector` fields are required. */ - text: string; - - /** Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. */ - vector: float[]; - + /** MMR Strength (mmr_strength = 1 - mmr_lambda) */ @minValue(0) @maxValueExclusive(1) mmr_strength?: float = 0.5; +} - /** The trigram_similarity_threshold cutoff level */ +// Hybrid search parameters +model HybridSearchParams { + /** The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; */ @minValue(0) @maxValue(1) - trigram_similarity_threshold: float = 0.6; + alpha: float = 0.5; + + /** The k_multiplier to control how many intermediate results to fetch before final scoring */ + @minValue(1) + @maxValue(10) + k_multiplier: int8 = 5; +} - /** The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring */ - @minValue(0) - k_multiplier: int8 = 7; +// Composed search request models +model TextOnlyDocSearchRequest { + ...BaseSearchParams; + ...TextSearchParams; + vector?: never; +} + +model VectorDocSearchRequest { + ...BaseSearchParams; + ...VectorSearchParams; + text?: never; +} + +model HybridDocSearchRequest { + ...BaseSearchParams; + ...TextSearchParams; + ...VectorSearchParams; + ...HybridSearchParams; } alias DocSearchRequest = VectorDocSearchRequest | TextOnlyDocSearchRequest | HybridDocSearchRequest; diff --git a/typespec/entries/endpoints.tsp b/src/typespec/entries/endpoints.tsp similarity index 100% rename from typespec/entries/endpoints.tsp rename to src/typespec/entries/endpoints.tsp diff --git a/typespec/entries/main.tsp b/src/typespec/entries/main.tsp similarity index 100% rename from typespec/entries/main.tsp rename to src/typespec/entries/main.tsp diff --git a/typespec/entries/models.tsp b/src/typespec/entries/models.tsp similarity index 96% rename from typespec/entries/models.tsp rename to src/typespec/entries/models.tsp index 597d9b189..23b391444 100644 --- a/typespec/entries/models.tsp +++ b/src/typespec/entries/models.tsp @@ -81,10 +81,6 @@ model ChatMLMessage { /** Name */ name?: string; - /** Whether to continue this message or return a new one */ - @visibility("create") - continue?: boolean; - /** Tool calls generated by the model. */ tool_calls?: ChosenToolCall[] | null = #[]; diff --git a/typespec/executions/endpoints.tsp b/src/typespec/executions/endpoints.tsp similarity index 90% rename from typespec/executions/endpoints.tsp rename to src/typespec/executions/endpoints.tsp index f0c414010..485fb3e06 100644 --- a/typespec/executions/endpoints.tsp +++ b/src/typespec/executions/endpoints.tsp @@ -67,3 +67,9 @@ interface TransitionStreamEndpoints TransitionEvent, "Stream events emitted by the given execution" > {} + +interface ExecutionStatusStreamEndpoints + extends ChildStreamEndpoint< + ExecutionStatusEvent, + "Stream the status of an execution" + > {} diff --git a/typespec/executions/main.tsp b/src/typespec/executions/main.tsp similarity index 100% rename from typespec/executions/main.tsp rename to src/typespec/executions/main.tsp diff --git a/typespec/executions/models.tsp b/src/typespec/executions/models.tsp similarity index 86% rename from typespec/executions/models.tsp rename to src/typespec/executions/models.tsp index 05776e408..a867168c0 100644 --- a/typespec/executions/models.tsp +++ b/src/typespec/executions/models.tsp @@ -64,6 +64,26 @@ model Execution { ...HasId; } +model ExecutionStatusEvent { + /** The ID of the execution */ + execution_id: Execution.id; + + /** The status of the execution */ + status: ExecutionStatus; + + /** The updated_at timestamp of the execution */ + updated_at: string; + + /** The error of the execution if it failed */ + error?: string; + + /** The number of transitions in this execution */ + transition_count?: uint8; + + /** The metadata of the execution */ + ...HasMetadata +} + /** Payload for creating an execution */ @withVisibility("create") model CreateExecutionRequest { diff --git a/typespec/files/endpoints.tsp b/src/typespec/files/endpoints.tsp similarity index 100% rename from typespec/files/endpoints.tsp rename to src/typespec/files/endpoints.tsp diff --git a/typespec/files/main.tsp b/src/typespec/files/main.tsp similarity index 100% rename from typespec/files/main.tsp rename to src/typespec/files/main.tsp diff --git a/typespec/files/models.tsp b/src/typespec/files/models.tsp similarity index 89% rename from typespec/files/models.tsp rename to src/typespec/files/models.tsp index 943b64241..f3e978755 100644 --- a/typespec/files/models.tsp +++ b/src/typespec/files/models.tsp @@ -24,6 +24,9 @@ model File { /** Base64 encoded content of the file */ content: string; + /** Project canonical name of the file */ + project?: canonicalName; + /** Size of the file in bytes */ @visibility("read") @minValue(1) diff --git a/typespec/jobs/endpoints.tsp b/src/typespec/jobs/endpoints.tsp similarity index 100% rename from typespec/jobs/endpoints.tsp rename to src/typespec/jobs/endpoints.tsp diff --git a/typespec/jobs/main.tsp b/src/typespec/jobs/main.tsp similarity index 100% rename from typespec/jobs/main.tsp rename to src/typespec/jobs/main.tsp diff --git a/typespec/jobs/models.tsp b/src/typespec/jobs/models.tsp similarity index 100% rename from typespec/jobs/models.tsp rename to src/typespec/jobs/models.tsp diff --git a/typespec/main.tsp b/src/typespec/main.tsp similarity index 88% rename from typespec/main.tsp rename to src/typespec/main.tsp index ac16eed78..ecbfb596d 100644 --- a/typespec/main.tsp +++ b/src/typespec/main.tsp @@ -15,6 +15,8 @@ import "./tools"; import "./users"; import "./versions.tsp"; import "./responses"; +import "./projects"; +import "./secrets"; using TypeSpec.Http; using TypeSpec.OpenAPI; @@ -123,9 +125,21 @@ namespace Api { @route("/executions/{id}/transitions.stream") interface ExecutionTransitionsStreamRoute extends Executions.TransitionStreamEndpoints {} + @route("/executions/{id}/status.stream") + interface ExecutionStatusStreamRoute extends Executions.ExecutionStatusStreamEndpoints {} + @route("/jobs") interface JobRoute extends Jobs.Endpoints {} @route("/files") interface FilesRoute extends Files.Endpoints {} + + @route("/projects") + interface ProjectsRoute extends Projects.Endpoints {} + + @route("/secrets") + interface DeveloperSecretsRoute extends Secrets.DeveloperSecretsEndpoints {} + + @route("/agents/{id}/secrets") + interface AgentSecretsRoute extends Secrets.AgentSecretsEndpoints {} } diff --git a/typespec/package-lock.json b/src/typespec/package-lock.json similarity index 98% rename from typespec/package-lock.json rename to src/typespec/package-lock.json index 6137deb97..489de8fea 100644 --- a/typespec/package-lock.json +++ b/src/typespec/package-lock.json @@ -25,12 +25,13 @@ "license": "MIT" }, "node_modules/@babel/code-frame": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz", - "integrity": "sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -599,16 +600,16 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -983,9 +984,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" diff --git a/typespec/package.json b/src/typespec/package.json similarity index 100% rename from typespec/package.json rename to src/typespec/package.json diff --git a/src/typespec/projects/endpoints.tsp b/src/typespec/projects/endpoints.tsp new file mode 100644 index 000000000..7cc7b943d --- /dev/null +++ b/src/typespec/projects/endpoints.tsp @@ -0,0 +1,22 @@ +import "@typespec/http"; +import "../common"; +import "./models.tsp"; + +using TypeSpec.Http; +using Common; + +namespace Projects; + +// +// PROJECT ENDPOINTS +// + +interface Endpoints + extends LimitOffsetPagination, + CreateEndpoint, + CreateOrUpdateEndpoint, + UpdateEndpoint, + PatchEndpoint, + DeleteEndpoint<"Delete Project by id">, + GetEndpoint { +} diff --git a/src/typespec/projects/main.tsp b/src/typespec/projects/main.tsp new file mode 100644 index 000000000..580038a24 --- /dev/null +++ b/src/typespec/projects/main.tsp @@ -0,0 +1,8 @@ +import "./endpoints.tsp"; +import "./models.tsp"; + +namespace Projects; + +// +// PROJECTS +// diff --git a/src/typespec/projects/models.tsp b/src/typespec/projects/models.tsp new file mode 100644 index 000000000..d3ed9a7bb --- /dev/null +++ b/src/typespec/projects/models.tsp @@ -0,0 +1,48 @@ +import "@typespec/http"; + +import "../common"; + +using TypeSpec.Http; + +using Common; + +namespace Projects; + +// +// PROJECT MODELS +// + +@doc("Project model") +model Project { + ...HasId; + ...HasMetadata; + ...HasTimestamps; + + @doc("Canonical name of the project (unique per developer)") + canonical_name?: canonicalName; + + @doc("Display name of the project") + name: displayName; + +} + +/** Payload for updating a project */ +@withVisibility("create", "update") +model UpdateProjectRequest { + ...Project; +} + +/** Payload for patching a project */ +model PatchProjectRequest is UpdateProjectRequest {} + +/** Payload for creating a project */ +@withVisibility("create") +model CreateProjectRequest { + ...UpdateProjectRequest; +} + +model CreateOrUpdateProjectRequest extends CreateProjectRequest { + @path + id: uuid; + ...UpdateProjectRequest; +} diff --git a/typespec/responses/endpoints.tsp b/src/typespec/responses/endpoints.tsp similarity index 100% rename from typespec/responses/endpoints.tsp rename to src/typespec/responses/endpoints.tsp diff --git a/typespec/responses/main.tsp b/src/typespec/responses/main.tsp similarity index 100% rename from typespec/responses/main.tsp rename to src/typespec/responses/main.tsp diff --git a/typespec/responses/models.tsp b/src/typespec/responses/models.tsp similarity index 100% rename from typespec/responses/models.tsp rename to src/typespec/responses/models.tsp diff --git a/src/typespec/secrets/endpoints.tsp b/src/typespec/secrets/endpoints.tsp new file mode 100644 index 000000000..2dcc2443e --- /dev/null +++ b/src/typespec/secrets/endpoints.tsp @@ -0,0 +1,26 @@ +import "@typespec/http"; + +import "./models.tsp"; +import "../common"; + +using TypeSpec.Http; + +using Common; + +namespace Secrets; + +// +// SECRET ENDPOINTS +// + +interface DeveloperSecretsEndpoints + extends ChildLimitOffsetPagination, + ChildCreateEndpoint, + ChildUpdateEndpoint, + ChildDeleteEndpoint<"Delete a secret by id"> {} + +interface AgentSecretsEndpoints + extends ChildLimitOffsetPagination, + ChildCreateEndpoint, + ChildUpdateEndpoint, + ChildDeleteEndpoint<"Delete a secret by id"> {} diff --git a/src/typespec/secrets/main.tsp b/src/typespec/secrets/main.tsp new file mode 100644 index 000000000..215e0530e --- /dev/null +++ b/src/typespec/secrets/main.tsp @@ -0,0 +1,8 @@ +import "./endpoints.tsp"; +import "./models.tsp"; + +namespace Secrets; + +// +// SECRETS +// \ No newline at end of file diff --git a/src/typespec/secrets/models.tsp b/src/typespec/secrets/models.tsp new file mode 100644 index 000000000..b559c50f7 --- /dev/null +++ b/src/typespec/secrets/models.tsp @@ -0,0 +1,38 @@ +import "../common"; + +using Common; + +namespace Secrets; + +// +// SECRET MODELS +// + +/** A secret that can be used in tasks and sessions */ +model Secret { + ...HasId; + ...HasTimestamps; + ...HasMetadata; + + /** Name of the secret */ + name: string; + + /** Description of what the secret is used for */ + description?: string; + + /** The decrypted secret value */ + value: string; +} + +@withVisibility("create", "update") +model UpdateSecretRequest { + ...Secret; +} + +@withVisibility("create") +model CreateSecretRequest { + ...UpdateSecretRequest; +} + + +model PatchSecretRequest is UpdateSecretRequest {} diff --git a/typespec/sessions/endpoints.tsp b/src/typespec/sessions/endpoints.tsp similarity index 100% rename from typespec/sessions/endpoints.tsp rename to src/typespec/sessions/endpoints.tsp diff --git a/typespec/sessions/main.tsp b/src/typespec/sessions/main.tsp similarity index 100% rename from typespec/sessions/main.tsp rename to src/typespec/sessions/main.tsp diff --git a/typespec/sessions/models.tsp b/src/typespec/sessions/models.tsp similarity index 98% rename from typespec/sessions/models.tsp rename to src/typespec/sessions/models.tsp index d1970ce56..5dd76e39d 100644 --- a/typespec/sessions/models.tsp +++ b/src/typespec/sessions/models.tsp @@ -33,6 +33,9 @@ model BaseDocSearch { @minValue(100) @maxValue(10000) max_query_length: uint32 = 1000; + + /** Whether to include embeddings in the response */ + include_embeddings: boolean = true; } model VectorDocSearch extends BaseDocSearch { diff --git a/typespec/tasks/endpoints.tsp b/src/typespec/tasks/endpoints.tsp similarity index 100% rename from typespec/tasks/endpoints.tsp rename to src/typespec/tasks/endpoints.tsp diff --git a/typespec/tasks/main.tsp b/src/typespec/tasks/main.tsp similarity index 100% rename from typespec/tasks/main.tsp rename to src/typespec/tasks/main.tsp diff --git a/typespec/tasks/models.tsp b/src/typespec/tasks/models.tsp similarity index 100% rename from typespec/tasks/models.tsp rename to src/typespec/tasks/models.tsp diff --git a/typespec/tasks/step_kind.tsp b/src/typespec/tasks/step_kind.tsp similarity index 100% rename from typespec/tasks/step_kind.tsp rename to src/typespec/tasks/step_kind.tsp diff --git a/typespec/tasks/steps.tsp b/src/typespec/tasks/steps.tsp similarity index 99% rename from typespec/tasks/steps.tsp rename to src/typespec/tasks/steps.tsp index ac08a0f99..cbf19d95c 100644 --- a/typespec/tasks/steps.tsp +++ b/src/typespec/tasks/steps.tsp @@ -115,11 +115,11 @@ model PromptStepDef { unwrap?: boolean = false; /** Whether to auto-run the tool and send the tool results to the model when available. - * (default: true for prompt steps, false for sessions) + * (default: false) * * If a tool call is made, the tool's output will be used as the model's input. * If a tool call is not made, the model's output will be used as the next step's input. */ - auto_run_tools: boolean = true; + auto_run_tools: boolean = false; /** Whether to disable caching for the prompt step */ disable_cache: boolean = false; diff --git a/typespec/tools/algolia.tsp b/src/typespec/tools/algolia.tsp similarity index 100% rename from typespec/tools/algolia.tsp rename to src/typespec/tools/algolia.tsp diff --git a/typespec/tools/anthropic.tsp b/src/typespec/tools/anthropic.tsp similarity index 100% rename from typespec/tools/anthropic.tsp rename to src/typespec/tools/anthropic.tsp diff --git a/typespec/tools/arxiv.tsp b/src/typespec/tools/arxiv.tsp similarity index 100% rename from typespec/tools/arxiv.tsp rename to src/typespec/tools/arxiv.tsp diff --git a/typespec/tools/brave.tsp b/src/typespec/tools/brave.tsp similarity index 100% rename from typespec/tools/brave.tsp rename to src/typespec/tools/brave.tsp diff --git a/typespec/tools/browserbase/contexts.tsp b/src/typespec/tools/browserbase/contexts.tsp similarity index 100% rename from typespec/tools/browserbase/contexts.tsp rename to src/typespec/tools/browserbase/contexts.tsp diff --git a/typespec/tools/browserbase/extensions.tsp b/src/typespec/tools/browserbase/extensions.tsp similarity index 100% rename from typespec/tools/browserbase/extensions.tsp rename to src/typespec/tools/browserbase/extensions.tsp diff --git a/typespec/tools/browserbase/main.tsp b/src/typespec/tools/browserbase/main.tsp similarity index 100% rename from typespec/tools/browserbase/main.tsp rename to src/typespec/tools/browserbase/main.tsp diff --git a/typespec/tools/browserbase/sessions.tsp b/src/typespec/tools/browserbase/sessions.tsp similarity index 100% rename from typespec/tools/browserbase/sessions.tsp rename to src/typespec/tools/browserbase/sessions.tsp diff --git a/typespec/tools/cloudinary.tsp b/src/typespec/tools/cloudinary.tsp similarity index 100% rename from typespec/tools/cloudinary.tsp rename to src/typespec/tools/cloudinary.tsp diff --git a/typespec/tools/email.tsp b/src/typespec/tools/email.tsp similarity index 100% rename from typespec/tools/email.tsp rename to src/typespec/tools/email.tsp diff --git a/typespec/tools/endpoints.tsp b/src/typespec/tools/endpoints.tsp similarity index 100% rename from typespec/tools/endpoints.tsp rename to src/typespec/tools/endpoints.tsp diff --git a/typespec/tools/ffmpeg.tsp b/src/typespec/tools/ffmpeg.tsp similarity index 100% rename from typespec/tools/ffmpeg.tsp rename to src/typespec/tools/ffmpeg.tsp diff --git a/src/typespec/tools/google_sheets.tsp b/src/typespec/tools/google_sheets.tsp new file mode 100644 index 000000000..a2676702f --- /dev/null +++ b/src/typespec/tools/google_sheets.tsp @@ -0,0 +1,306 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Setup parameters for Google Sheets integration */ +model GoogleSheetsSetup { + /** + * Whether to use Julep's built-in Google Sheets service account. + * If true, no credentials needed. If false, service_account_json is required. + */ + use_julep_service: boolean; + + /** + * Base64 encoded service account JSON for authentication. + * Required when use_julep_service is false. + * Users can provide their own service account for better isolation and quota management. + */ + service_account_json?: string; + + /** Default number of retry attempts for API calls */ + @minValue(1) + @maxValue(10) + default_retry_count?: uint8 = 3; +} + +/** Arguments for reading values from a spreadsheet */ +model GoogleSheetsReadArguments { + /** The ID of the spreadsheet to read from */ + spreadsheet_id: string; + + /** The A1 notation of the range to read */ + range: string; + + /** The major dimension that results should use */ + major_dimension?: "ROWS" | "COLUMNS" = "ROWS"; + + /** How values should be represented in the output */ + value_render_option?: "FORMATTED_VALUE" | "UNFORMATTED_VALUE" | "FORMULA" = "FORMATTED_VALUE"; + + /** How dates, times, and durations should be represented */ + date_time_render_option?: "SERIAL_NUMBER" | "FORMATTED_STRING" = "FORMATTED_STRING"; +} + +/** Arguments for writing values to a spreadsheet */ +model GoogleSheetsWriteArguments { + /** The ID of the spreadsheet to write to */ + spreadsheet_id: string; + + /** The A1 notation of the range to write to */ + range: string; + + /** The values to write (2D array) */ + values: unknown[][]; + + /** How the input data should be interpreted */ + value_input_option?: "RAW" | "USER_ENTERED" = "USER_ENTERED"; + + /** How the input data should be inserted */ + insert_data_option?: "OVERWRITE" | "INSERT_ROWS" = "OVERWRITE"; + + /** Whether to include the values in the response */ + include_values_in_response?: boolean = false; +} + +/** Arguments for appending values to a spreadsheet */ +model GoogleSheetsAppendArguments { + /** The ID of the spreadsheet to append to */ + spreadsheet_id: string; + + /** The A1 notation of the range to start appending from */ + range: string; + + /** The values to append (2D array) */ + values: unknown[][]; + + /** How the input data should be interpreted */ + value_input_option?: "RAW" | "USER_ENTERED" = "USER_ENTERED"; + + /** How the input data should be inserted */ + insert_data_option?: "OVERWRITE" | "INSERT_ROWS" = "INSERT_ROWS"; + + /** Whether to include the values in the response */ + include_values_in_response?: boolean = false; +} + +/** Arguments for clearing values from a spreadsheet */ +model GoogleSheetsClearArguments { + /** The ID of the spreadsheet to clear values from */ + spreadsheet_id: string; + + /** The A1 notation of the range to clear */ + range: string; +} + +/** Arguments for batch reading values from multiple ranges */ +model GoogleSheetsBatchReadArguments { + /** The ID of the spreadsheet to read from */ + spreadsheet_id: string; + + /** The A1 notation of the ranges to read */ + ranges: string[]; + + /** The major dimension that results should use */ + major_dimension?: "ROWS" | "COLUMNS" = "ROWS"; + + /** How values should be represented in the output */ + value_render_option?: "FORMATTED_VALUE" | "UNFORMATTED_VALUE" | "FORMULA" = "FORMATTED_VALUE"; + + /** How dates, times, and durations should be represented */ + date_time_render_option?: "SERIAL_NUMBER" | "FORMATTED_STRING" = "FORMATTED_STRING"; +} + +/** Arguments for batch updating values in multiple ranges */ +model GoogleSheetsBatchWriteArguments { + /** The ID of the spreadsheet to write to */ + spreadsheet_id: string; + + /** The data to write to each range */ + data: GoogleSheetsValueRange[]; + + /** How the input data should be interpreted */ + value_input_option?: "RAW" | "USER_ENTERED" = "USER_ENTERED"; + + /** Whether to include the values in the response */ + include_values_in_response?: boolean = false; +} + +/** Represents a range of values to write */ +model GoogleSheetsValueRange { + /** The A1 notation of the range */ + range: string; + + /** The values for the range (2D array) */ + values: unknown[][]; + + /** The major dimension of the values */ + major_dimension?: "ROWS" | "COLUMNS" = "ROWS"; +} + +alias GoogleSheetsMethod = + | /** Read values from a specific range */ + "read_values" + | /** Write values to a specific range */ + "write_values" + | /** Append values to a spreadsheet */ + "append_values" + | /** Clear values from a range */ + "clear_values" + | /** Read values from multiple ranges */ + "batch_read" + | /** Write values to multiple ranges */ + "batch_write"; + +/** Google Sheets integration definition */ +model GoogleSheetsIntegrationDef extends BaseIntegrationDef { + /** The provider must be "google_sheets" */ + provider: "google_sheets" = "google_sheets"; + + /** The specific method of the integration to call */ + method?: GoogleSheetsMethod; + + /** The setup parameters for Google Sheets */ + setup?: GoogleSheetsSetup; + + /** The arguments for the method */ + arguments?: GoogleSheetsReadArguments | GoogleSheetsWriteArguments | GoogleSheetsAppendArguments | GoogleSheetsClearArguments | GoogleSheetsBatchReadArguments | GoogleSheetsBatchWriteArguments; +} + +/** Google Sheets Provider Card */ +model GoogleSheetsProviderCard extends BaseProviderCard { + provider: "google_sheets" = "google_sheets"; + setup: GoogleSheetsSetup; + methods: ProviderMethod[] = #[ + #{ + method: "read_values", + description: "Read values from a specific range in a Google Sheets spreadsheet", + }, + #{ + method: "write_values", + description: "Write or update values in a specific range in a Google Sheets spreadsheet", + }, + #{ + method: "append_values", + description: "Append new rows of data to a Google Sheets spreadsheet", + }, + #{ + method: "clear_values", + description: "Clear values from a specific range in a Google Sheets spreadsheet", + }, + #{ + method: "batch_read", + description: "Read values from multiple ranges in a Google Sheets spreadsheet", + }, + #{ + method: "batch_write", + description: "Write values to multiple ranges in a Google Sheets spreadsheet", + } + ]; + info: ProviderInfo = #{ + url: "https://sheets.google.com/", + docs: "https://developers.google.com/sheets/api", + icon: "https://www.gstatic.com/images/branding/product/1x/sheets_2020q4_48dp.png", + friendly_name: "Google Sheets", + }; +} + +/** Output for reading values from Google Sheets */ +model GoogleSheetsReadOutput { + /** The range that was read */ + range: string; + + /** The major dimension of the values */ + major_dimension: string; + + /** The values read from the spreadsheet */ + values: unknown[][]; +} + +/** Output for writing/appending values to Google Sheets */ +model GoogleSheetsWriteOutput { + /** The spreadsheet ID that was updated */ + spreadsheet_id: string; + + /** The range that was updated */ + updated_range?: string; + + /** The number of rows updated */ + updated_rows?: int32; + + /** The number of columns updated */ + updated_columns?: int32; + + /** The number of cells updated */ + updated_cells?: int32; + + /** The values that were written (if requested) */ + updated_values?: unknown[][]; +} + +/** Output for clearing values from Google Sheets */ +model GoogleSheetsClearOutput { + /** The spreadsheet ID that was cleared */ + spreadsheet_id: string; + + /** The range that was cleared */ + cleared_range: string; +} + +/** Output for batch reading from Google Sheets */ +model GoogleSheetsBatchReadOutput { + /** The spreadsheet ID that was read */ + spreadsheet_id: string; + + /** The value ranges that were read */ + value_ranges: GoogleSheetsValueRangeOutput[]; +} + +/** Represents a range of values that was read */ +model GoogleSheetsValueRangeOutput { + /** The range that was read */ + range: string; + + /** The major dimension of the values */ + major_dimension: string; + + /** The values read from the range */ + values: unknown[][]; +} + +/** Output for batch writing to Google Sheets */ +model GoogleSheetsBatchWriteOutput { + /** The spreadsheet ID that was updated */ + spreadsheet_id: string; + + /** Total number of sheets updated */ + total_updated_sheets?: int32; + + /** Total number of rows updated */ + total_updated_rows?: int32; + + /** Total number of columns updated */ + total_updated_columns?: int32; + + /** Total number of cells updated */ + total_updated_cells?: int32; + + /** Details about each range that was updated */ + responses?: GoogleSheetsUpdateResponse[]; +} + +/** Details about a single range update */ +model GoogleSheetsUpdateResponse { + /** The range that was updated */ + updated_range?: string; + + /** The number of rows updated */ + updated_rows?: int32; + + /** The number of columns updated */ + updated_columns?: int32; + + /** The number of cells updated */ + updated_cells?: int32; +} \ No newline at end of file diff --git a/typespec/tools/llama_parse.tsp b/src/typespec/tools/llama_parse.tsp similarity index 100% rename from typespec/tools/llama_parse.tsp rename to src/typespec/tools/llama_parse.tsp diff --git a/typespec/tools/mailgun.tsp b/src/typespec/tools/mailgun.tsp similarity index 100% rename from typespec/tools/mailgun.tsp rename to src/typespec/tools/mailgun.tsp diff --git a/typespec/tools/main.tsp b/src/typespec/tools/main.tsp similarity index 89% rename from typespec/tools/main.tsp rename to src/typespec/tools/main.tsp index 2be200fd7..71d53ac55 100644 --- a/typespec/tools/main.tsp +++ b/src/typespec/tools/main.tsp @@ -14,9 +14,11 @@ import "./cloudinary.tsp"; import "./arxiv.tsp"; import "./unstructured.tsp"; import "./algolia.tsp"; +import "./mcp.tsp"; +import "./google_sheets.tsp"; namespace Tools; // // TOOLS -// \ No newline at end of file +// diff --git a/src/typespec/tools/mcp.tsp b/src/typespec/tools/mcp.tsp new file mode 100644 index 000000000..11459879d --- /dev/null +++ b/src/typespec/tools/mcp.tsp @@ -0,0 +1,113 @@ +import "../common"; + +using Common; + +namespace Tools; + +/** Transport type for MCP servers */ +alias McpTransport = ("sse" | "http"); + +/** Setup parameters for MCP integration */ +model McpSetup { + /** Transport used to connect to the MCP server */ + transport: McpTransport; + + /** (stdio) Executable or command to launch the server */ + command?: string; + + /** (stdio) Arguments for the server command */ + args?: string[] = #[]; + + /** (stdio) Working directory for the server process */ + cwd?: string; + + /** (stdio) Environment variables for the server process */ + env?: Record = #{}; + + /** (http) Base URL for the MCP server (usually ends with /mcp) */ + http_url?: url; + + /** (http) Optional HTTP headers to include (e.g., Authorization) */ + http_headers?: Record = #{}; +} + +/** Arguments to call a named tool on the MCP server */ +model McpCallToolArguments { + /** The MCP tool name to invoke */ + tool_name: string; + + /** JSON-serializable arguments to pass to the MCP tool */ + arguments?: Record = #{}; + + /** Optional per-call timeout in seconds */ + timeout_seconds?: uint16 = 60; +} + +/** Arguments to list available tools */ +model McpListToolsArguments {dummy: string = "dummy";} + +/** A single MCP tool description */ +model McpToolInfo { + name: string; + description?: string; + /** JSON Schema for the tool input parameters, if provided by the server */ + input_schema?: Record; +} + +/** Output for listing tools from an MCP server */ +model McpListToolsOutput { + tools: McpToolInfo[]; +} + +/** Output for an MCP tool call */ +model McpToolCallOutput { + /** Concatenated textual content, if any was returned */ + text?: string | null = null; + + /** Structured content returned by the server, if present */ + structured?: Record | null = null; + + /** Raw content items as returned by MCP (best-effort JSON form) */ + content?: Record[] = #[]; + + /** Whether the server indicated an error for this call */ + is_error?: boolean = false; +} + +/** MCP integration definition */ +model McpIntegrationDef extends BaseIntegrationDef { + /** The provider must be "mcp" */ + provider: "mcp" = "mcp"; + + /** The specific method of the integration to call */ + method?: string; + + /** The setup parameters for MCP */ + setup?: McpSetup; + + /** The arguments for MCP methods */ + arguments?: McpCallToolArguments | McpListToolsArguments; +} + +/** MCP Provider Card */ +model McpProviderCard extends BaseProviderCard { + provider: "mcp" = "mcp"; + setup: McpSetup; + methods: ProviderMethod[] = #[ + #{ + method: "list_tools", + description: "List tools exposed by an MCP server", + }, + #{ + method: "call_tool", + description: "Call a named tool on an MCP server", + } + ]; + info: ProviderInfo = #{ + url: "https://modelcontextprotocol.io/", + docs: "https://spec.modelcontextprotocol.io/", + icon: "https://modelcontextprotocol.io/favicon.ico", + friendly_name: "Model Context Protocol", + }; +} + diff --git a/typespec/tools/models.tsp b/src/typespec/tools/models.tsp similarity index 86% rename from typespec/tools/models.tsp rename to src/typespec/tools/models.tsp index d548c9a2b..36b2be656 100644 --- a/typespec/tools/models.tsp +++ b/src/typespec/tools/models.tsp @@ -5,6 +5,7 @@ import "./brave.tsp"; import "./browserbase"; import "./cloudinary.tsp"; import "./ffmpeg.tsp"; +import "./google_sheets.tsp"; import "./llama_parse.tsp"; import "./mailgun.tsp"; import "./remote_browser.tsp"; @@ -12,6 +13,7 @@ import "./spider.tsp"; import "./unstructured.tsp"; import "./weather.tsp"; import "./wikipedia.tsp"; +import "./mcp.tsp"; using Common; @@ -43,6 +45,8 @@ alias integrationProvider = ( | "arxiv" | "unstructured" | "algolia" + | "mcp" + | "google_sheets" ); enum ToolType { @@ -71,6 +75,11 @@ alias ToolOutput = Record; alias ToolChoiceOption = "auto" | "none" | NamedToolChoice; +model SecretRef { + /** The name of the secret to reference */ + name: string; +} + /** Function definition */ model FunctionDef { /** DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. */ @@ -141,6 +150,8 @@ alias IntegrationDef = ( | ArxivIntegrationDef | UnstructuredIntegrationDef | AlgoliaIntegrationDef + | McpIntegrationDef + | GoogleSheetsIntegrationDef ); // @@ -199,6 +210,36 @@ model SystemDef { arguments?: FunctionParameters; } +/** JSON Schema for API call parameters */ +model ParameterSchema { + /** Schema type (usually 'object') */ + type: string = "object"; + + /** Properties definition for parameters */ + properties: Record; + + /** List of required property names */ + required?: string[] = #[]; + + /** Whether to allow additional properties */ + additionalProperties?: boolean; +} + +/** Property definition for parameter schema */ +model PropertyDefinition { + /** Type of the property */ + type: string; + + /** Description of the property */ + description?: string; + + /** Enum values if applicable */ + `enum`?: string[]; + + /** Items definition for array types */ + items?: PropertyDefinition; +} + /** API call definition */ model ApiCallDef { /** The HTTP method to use */ @@ -213,6 +254,9 @@ model ApiCallDef { /** The headers to send with the request */ headers?: Record; + /** Secret references to use in templates (available only at setup time, not during execution) */ + secrets?: Record; + /** The content as base64 to send with the request */ content?: string; @@ -231,6 +275,9 @@ model ApiCallDef { /** The parameters to send with the request */ params?: string | Record; + /** The schema of the parameters */ + params_schema?: ParameterSchema; + /** Follow redirects */ follow_redirects?: boolean; @@ -241,7 +288,6 @@ model ApiCallDef { include_response_content?: boolean = true; } - model Tool { /** Name of the tool (must be unique for this agent and a valid python identifier string )*/ name: validPythonIdentifier; diff --git a/typespec/tools/remote_browser.tsp b/src/typespec/tools/remote_browser.tsp similarity index 100% rename from typespec/tools/remote_browser.tsp rename to src/typespec/tools/remote_browser.tsp diff --git a/typespec/tools/spider.tsp b/src/typespec/tools/spider.tsp similarity index 100% rename from typespec/tools/spider.tsp rename to src/typespec/tools/spider.tsp diff --git a/typespec/tools/unstructured.tsp b/src/typespec/tools/unstructured.tsp similarity index 100% rename from typespec/tools/unstructured.tsp rename to src/typespec/tools/unstructured.tsp diff --git a/typespec/tools/weather.tsp b/src/typespec/tools/weather.tsp similarity index 100% rename from typespec/tools/weather.tsp rename to src/typespec/tools/weather.tsp diff --git a/typespec/tools/wikipedia.tsp b/src/typespec/tools/wikipedia.tsp similarity index 100% rename from typespec/tools/wikipedia.tsp rename to src/typespec/tools/wikipedia.tsp diff --git a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml b/src/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml similarity index 88% rename from typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml rename to src/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml index 593869b97..b4241dace 100644 --- a/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml +++ b/src/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml @@ -169,6 +169,29 @@ paths: schema: $ref: '#/components/schemas/Agents.Agent' /agents/{id}/docs: + post: + operationId: AgentDocsRoute_create + description: Create a Doc for this Agent + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + $ref: '#/components/schemas/Docs.Doc' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Docs.CreateDocRequest' get: operationId: AgentDocsRoute_list description: List Docs owned by an Agent @@ -184,6 +207,14 @@ paths: - $ref: '#/components/parameters/Common.PaginationOptions.sort_by' - $ref: '#/components/parameters/Common.PaginationOptions.direction' - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter' + - name: include_embeddings + in: query + required: false + description: Whether to include embeddings in the response + schema: + type: boolean + default: true + explode: false responses: '200': description: The request has succeeded. @@ -198,29 +229,6 @@ paths: $ref: '#/components/schemas/Docs.Doc' required: - items - post: - operationId: AgentDocsRoute_create - description: Create a Doc for this Agent - parameters: - - name: id - in: path - required: true - description: ID of parent resource - schema: - $ref: '#/components/schemas/Common.uuid' - responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - $ref: '#/components/schemas/Docs.Doc' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Docs.CreateDocRequest' delete: operationId: AgentDocsRoute_deleteBulk description: Bulk delete Docs owned by an Agent @@ -302,6 +310,112 @@ paths: - $ref: '#/components/schemas/Docs.HybridDocSearchRequest' required: - body + /agents/{id}/secrets: + get: + operationId: AgentSecretsRoute_list + description: List secrets (paginated) + parameters: + - name: id + in: path + required: true + description: ID of parent + schema: + $ref: '#/components/schemas/Common.uuid' + - $ref: '#/components/parameters/Common.PaginationOptions.limit' + - $ref: '#/components/parameters/Common.PaginationOptions.offset' + - $ref: '#/components/parameters/Common.PaginationOptions.sort_by' + - $ref: '#/components/parameters/Common.PaginationOptions.direction' + - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Secrets.Secret' + required: + - items + post: + operationId: AgentSecretsRoute_create + description: Create a new secret + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.Secret' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.CreateSecretRequest' + /agents/{id}/secrets/{child_id}: + put: + operationId: AgentSecretsRoute_update + description: Update an existing secret by id (overwrites existing values) + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + - name: child_id + in: path + required: true + description: ID of the resource to be updated + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.Secret' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.UpdateSecretRequest' + delete: + operationId: AgentSecretsRoute_delete + description: Delete a secret by id + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + - name: child_id + in: path + required: true + description: ID of the resource to be deleted + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '202': + description: The request has been accepted for processing, but processing has not yet completed. + content: + application/json: + schema: + $ref: '#/components/schemas/Common.ResourceDeletedResponse' /agents/{id}/tasks: get: operationId: TasksRoute_list @@ -632,6 +746,14 @@ paths: description: ID of the resource schema: $ref: '#/components/schemas/Common.uuid' + - name: include_embeddings + in: query + required: false + description: Whether to include embeddings in the response + schema: + type: boolean + default: true + explode: false responses: '200': description: The request has succeeded. @@ -733,6 +855,33 @@ paths: application/json: schema: $ref: '#/components/schemas/Executions.UpdateExecutionRequest' + /executions/{id}/status.stream: + get: + operationId: ExecutionStatusStreamRoute_stream + description: Stream the status of an execution + parameters: + - name: id + in: path + required: true + description: ID of parent + schema: + $ref: '#/components/schemas/Common.uuid' + - name: next_token + in: query + required: true + description: Next page token + schema: + type: string + nullable: true + default: null + explode: false + responses: + '200': + description: The request has succeeded. + content: + text/event-stream: + schema: + type: string /executions/{id}/transitions: get: operationId: ExecutionTransitionsRoute_list @@ -851,6 +1000,146 @@ paths: application/json: schema: $ref: '#/components/schemas/Jobs.JobStatus' + /projects: + get: + operationId: ProjectsRoute_list + description: List Projects (paginated) + parameters: + - $ref: '#/components/parameters/Common.PaginationOptions.limit' + - $ref: '#/components/parameters/Common.PaginationOptions.offset' + - $ref: '#/components/parameters/Common.PaginationOptions.sort_by' + - $ref: '#/components/parameters/Common.PaginationOptions.direction' + - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Projects.Project' + required: + - items + post: + operationId: ProjectsRoute_create + description: Create a new Project + parameters: [] + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.Project' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.CreateProjectRequest' + /projects/{id}: + post: + operationId: ProjectsRoute_createOrUpdate + description: Create or update a Project + parameters: + - $ref: '#/components/parameters/Projects.CreateOrUpdateProjectRequest.id' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.Project' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.UpdateProjectRequest' + put: + operationId: ProjectsRoute_update + description: Update an existing Project by id (overwrites existing values; use PATCH for merging instead) + parameters: + - name: id + in: path + required: true + description: ID of the resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.Project' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.UpdateProjectRequest' + patch: + operationId: ProjectsRoute_patch + description: Update an existing Project by id (merges with existing values) + parameters: + - name: id + in: path + required: true + description: ID of the resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.Project' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.PatchProjectRequest' + delete: + operationId: ProjectsRoute_delete + description: Delete Project by id + parameters: + - name: id + in: path + required: true + description: ID of the resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '202': + description: The request has been accepted for processing, but processing has not yet completed. + content: + application/json: + schema: + $ref: '#/components/schemas/Common.ResourceDeletedResponse' + get: + operationId: ProjectsRoute_get + description: Get a Project by id + parameters: + - name: id + in: path + required: true + description: ID of the resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Projects.Project' /responses: post: operationId: ResponsesRoute_createResponse @@ -896,6 +1185,112 @@ paths: application/json: schema: $ref: '#/components/schemas/Responses.Response' + /secrets/{id}: + get: + operationId: DeveloperSecretsRoute_list + description: List secrets (paginated) + parameters: + - name: id + in: path + required: true + description: ID of parent + schema: + $ref: '#/components/schemas/Common.uuid' + - $ref: '#/components/parameters/Common.PaginationOptions.limit' + - $ref: '#/components/parameters/Common.PaginationOptions.offset' + - $ref: '#/components/parameters/Common.PaginationOptions.sort_by' + - $ref: '#/components/parameters/Common.PaginationOptions.direction' + - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + type: object + properties: + items: + type: array + items: + $ref: '#/components/schemas/Secrets.Secret' + required: + - items + post: + operationId: DeveloperSecretsRoute_create + description: Create a new secret + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.Secret' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.CreateSecretRequest' + /secrets/{id}/{child_id}: + put: + operationId: DeveloperSecretsRoute_update + description: Update an existing secret by id (overwrites existing values) + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + - name: child_id + in: path + required: true + description: ID of the resource to be updated + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '200': + description: The request has succeeded. + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.Secret' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Secrets.UpdateSecretRequest' + delete: + operationId: DeveloperSecretsRoute_delete + description: Delete a secret by id + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + - name: child_id + in: path + required: true + description: ID of the resource to be deleted + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '202': + description: The request has been accepted for processing, but processing has not yet completed. + content: + application/json: + schema: + $ref: '#/components/schemas/Common.ResourceDeletedResponse' /sessions: get: operationId: SessionsRoute_list @@ -1062,6 +1457,9 @@ paths: anyOf: - $ref: '#/components/schemas/Chat.ChunkChatResponse' - $ref: '#/components/schemas/Chat.MessageChatResponse' + text/event-stream: + schema: + $ref: '#/components/schemas/Chat.ChunkChatResponse' requestBody: required: true content: @@ -1341,6 +1739,29 @@ paths: schema: $ref: '#/components/schemas/Users.User' /users/{id}/docs: + post: + operationId: UserDocsRoute_create + description: Create a Doc for this User + parameters: + - name: id + in: path + required: true + description: ID of parent resource + schema: + $ref: '#/components/schemas/Common.uuid' + responses: + '201': + description: The request has succeeded and a new resource has been created as a result. + content: + application/json: + schema: + $ref: '#/components/schemas/Docs.Doc' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Docs.CreateDocRequest' get: operationId: UserDocsRoute_list description: List Docs owned by a User @@ -1356,6 +1777,14 @@ paths: - $ref: '#/components/parameters/Common.PaginationOptions.sort_by' - $ref: '#/components/parameters/Common.PaginationOptions.direction' - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter' + - name: include_embeddings + in: query + required: false + description: Whether to include embeddings in the response + schema: + type: boolean + default: true + explode: false responses: '200': description: The request has succeeded. @@ -1370,29 +1799,6 @@ paths: $ref: '#/components/schemas/Docs.Doc' required: - items - post: - operationId: UserDocsRoute_create - description: Create a Doc for this User - parameters: - - name: id - in: path - required: true - description: ID of parent resource - schema: - $ref: '#/components/schemas/Common.uuid' - responses: - '201': - description: The request has succeeded and a new resource has been created as a result. - content: - application/json: - schema: - $ref: '#/components/schemas/Docs.Doc' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/Docs.CreateDocRequest' delete: operationId: UserDocsRoute_deleteBulk description: Bulk delete Docs owned by a User @@ -1537,6 +1943,12 @@ components: - updated_at default: created_at explode: false + Projects.CreateOrUpdateProjectRequest.id: + name: id + in: path + required: true + schema: + $ref: '#/components/schemas/Common.uuid' Sessions.CreateOrUpdateSessionRequest.id: name: id in: path @@ -1589,6 +2001,10 @@ components: allOf: - $ref: '#/components/schemas/Common.displayName' description: Name of the agent + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the agent canonical_name: allOf: - $ref: '#/components/schemas/Common.canonicalName' @@ -1682,6 +2098,10 @@ components: allOf: - $ref: '#/components/schemas/Common.displayName' description: Name of the agent + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the agent canonical_name: allOf: - $ref: '#/components/schemas/Common.canonicalName' @@ -1779,6 +2199,10 @@ components: allOf: - $ref: '#/components/schemas/Common.displayName' description: Name of the agent + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the agent canonical_name: allOf: - $ref: '#/components/schemas/Common.canonicalName' @@ -1888,6 +2312,10 @@ components: allOf: - $ref: '#/components/schemas/Common.displayName' description: Name of the agent + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the agent canonical_name: allOf: - $ref: '#/components/schemas/Common.canonicalName' @@ -1982,6 +2410,10 @@ components: allOf: - $ref: '#/components/schemas/Common.displayName' description: Name of the agent + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the agent canonical_name: allOf: - $ref: '#/components/schemas/Common.canonicalName' @@ -2147,6 +2579,8 @@ components: - save - stream - stop + - auto_run_tools + - recall_tools properties: remember: type: boolean @@ -2243,6 +2677,17 @@ components: minimum: 0 maximum: 1 description: Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. + metadata: + type: object + additionalProperties: {} + auto_run_tools: + type: boolean + description: Whether to automatically run tools and send the results back to the model (requires tools or agents with tools). + default: false + recall_tools: + type: boolean + description: Whether to include tool requests and responses when recalling messages. + default: true allOf: - $ref: '#/components/schemas/Chat.ChatInputData' Chat.ChatInputData: @@ -2377,9 +2822,6 @@ components: name: type: string description: Name - continue: - type: boolean - description: Whether to continue this message or return a new one tool_calls: type: array items: @@ -2537,9 +2979,6 @@ components: name: type: string description: Name - continue: - type: boolean - description: Whether to continue this message or return a new one tool_calls: type: array items: @@ -3025,6 +3464,10 @@ components: description: |- For canonical names (machine-friendly identifiers) Must start with a letter and can only contain letters, numbers, and underscores + Common.content: + type: string + maxLength: 30000 + description: Contents of a document Common.displayName: type: string minLength: 1 @@ -3054,50 +3497,27 @@ components: maximum: 100 Common.mimeType: type: string - maxLength: 120 - pattern: ^(application|audio|font|example|image|message|model|multipart|text|video|x-(?:[0-9A-Za-z!#$%&'*+.^_`|~-]+))\/([0-9A-Za-z!#$%&'*+.^_`|~-]+)$ - description: Valid mime types - Common.offset: - type: integer - format: uint32 - minimum: 0 - description: Offset to apply to the results - Common.stepLabel: - type: string - maxLength: 120 - pattern: ^[^0-9]|^[0-9]+[^0-9].*$ - description: A valid step label - Common.uuid: - type: string - format: uuid - Common.validPythonIdentifier: - type: string - maxLength: 40 - pattern: ^[^\W0-9]\w*$ - description: Valid python identifier names - Docs.BaseDocSearchRequest: - type: object - required: - - limit - - lang - - metadata_filter - properties: - limit: - type: integer - format: uint16 - minimum: 1 - maximum: 50 - description: The limit of documents to return - default: 10 - lang: - type: string - description: The language to be used for text-only search. Support for other languages coming soon. - default: en-US - metadata_filter: - type: object - additionalProperties: {} - description: Metadata filter to apply to the search - default: {} + maxLength: 120 + pattern: ^(application|audio|font|example|image|message|model|multipart|text|video|x-(?:[0-9A-Za-z!#$%&'*+.^_`|~-]+))\/([0-9A-Za-z!#$%&'*+.^_`|~-]+)$ + description: Valid mime types + Common.offset: + type: integer + format: uint32 + minimum: 0 + description: Offset to apply to the results + Common.stepLabel: + type: string + maxLength: 120 + pattern: ^[^0-9]|^[0-9]+[^0-9].*$ + description: A valid step label + Common.uuid: + type: string + format: uuid + Common.validPythonIdentifier: + type: string + maxLength: 40 + pattern: ^[^\W0-9]\w*$ + description: Valid python identifier names Docs.BulkDeleteDocsRequest: type: object required: @@ -3129,11 +3549,11 @@ components: description: Title describing what this document contains content: anyOf: - - type: string + - $ref: '#/components/schemas/Common.content' - type: array items: - type: string - description: Contents of the document + $ref: '#/components/schemas/Common.content' + description: Contents of the document. Each string is limited to 30k characters. embed_instruction: type: string nullable: true @@ -3283,33 +3703,58 @@ components: Docs.HybridDocSearchRequest: type: object required: - - confidence - - alpha + - limit + - metadata_filter + - include_embeddings - text - - vector + - lang - trigram_similarity_threshold + - vector + - confidence + - alpha - k_multiplier properties: - confidence: - type: number - minimum: -1 - maximum: 1 - description: The confidence cutoff level - default: 0.5 - alpha: + limit: + type: integer + format: uint16 + minimum: 1 + maximum: 50 + description: The limit of documents to return + default: 10 + metadata_filter: + type: object + additionalProperties: {} + description: Metadata filter to apply to the search + default: {} + include_embeddings: + type: boolean + description: Whether to include embeddings in the response + default: true + text: + type: string + description: Text to use in the search + lang: + type: string + description: The language to be used for text search. Support for other languages coming soon. + default: en-US + trigram_similarity_threshold: type: number + nullable: true minimum: 0 maximum: 1 - description: The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; - default: 0.5 - text: - type: string - description: Text to use in the search. In `hybrid` search mode, either `text` or both `text` and `vector` fields are required. + description: Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. + default: null vector: type: array items: type: number description: Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. + confidence: + type: number + minimum: -1 + maximum: 1 + description: The confidence cutoff level + default: 0.5 mmr_strength: type: number minimum: 0 @@ -3317,20 +3762,19 @@ components: exclusiveMaximum: true description: MMR Strength (mmr_strength = 1 - mmr_lambda) default: 0.5 - trigram_similarity_threshold: + alpha: type: number minimum: 0 maximum: 1 - description: The trigram_similarity_threshold cutoff level - default: 0.6 + description: The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; + default: 0.5 k_multiplier: type: integer format: int8 - minimum: 0 - description: The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring - default: 7 - allOf: - - $ref: '#/components/schemas/Docs.BaseDocSearchRequest' + minimum: 1 + maximum: 10 + description: The k_multiplier to control how many intermediate results to fetch before final scoring + default: 5 Docs.MultipleEmbedQueryRequest: type: object required: @@ -3379,37 +3823,79 @@ components: Docs.TextOnlyDocSearchRequest: type: object required: + - limit + - metadata_filter + - include_embeddings - text + - lang - trigram_similarity_threshold properties: + limit: + type: integer + format: uint16 + minimum: 1 + maximum: 50 + description: The limit of documents to return + default: 10 + metadata_filter: + type: object + additionalProperties: {} + description: Metadata filter to apply to the search + default: {} + include_embeddings: + type: boolean + description: Whether to include embeddings in the response + default: true text: type: string - description: Text to use in the search. + description: Text to use in the search + lang: + type: string + description: The language to be used for text search. Support for other languages coming soon. + default: en-US trigram_similarity_threshold: type: number + nullable: true minimum: 0 maximum: 1 - description: The trigram_similarity_threshold cutoff level - default: 0.6 - allOf: - - $ref: '#/components/schemas/Docs.BaseDocSearchRequest' + description: Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. + default: null Docs.VectorDocSearchRequest: type: object required: - - confidence + - limit + - metadata_filter + - include_embeddings - vector + - confidence properties: + limit: + type: integer + format: uint16 + minimum: 1 + maximum: 50 + description: The limit of documents to return + default: 10 + metadata_filter: + type: object + additionalProperties: {} + description: Metadata filter to apply to the search + default: {} + include_embeddings: + type: boolean + description: Whether to include embeddings in the response + default: true + vector: + type: array + items: + type: number + description: Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. confidence: type: number minimum: -1 maximum: 1 description: The confidence cutoff level default: 0.5 - vector: - type: array - items: - type: number - description: Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. mmr_strength: type: number minimum: 0 @@ -3417,8 +3903,6 @@ components: exclusiveMaximum: true description: MMR Strength (mmr_strength = 1 - mmr_lambda) default: 0.5 - allOf: - - $ref: '#/components/schemas/Docs.BaseDocSearchRequest' Entries.BaseEntry: type: object required: @@ -3663,6 +4147,7 @@ components: enum: - api_request - api_response + - tool_request - tool_response - internal - summarizer @@ -4019,6 +4504,10 @@ components: content: type: string description: Base64 encoded content of the file + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the file description: Payload for creating a file Files.File: type: object @@ -4058,6 +4547,10 @@ components: content: type: string description: Base64 encoded content of the file + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the file size: type: integer format: uint64 @@ -4137,6 +4630,110 @@ components: - $ref: '#/components/schemas/Jobs.JobState' description: Current state of the job default: pending + Projects.CreateOrUpdateProjectRequest: + type: object + required: + - id + - name + properties: + id: + $ref: '#/components/schemas/Common.uuid' + metadata: + type: object + additionalProperties: {} + canonical_name: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Canonical name of the project (unique per developer) + name: + allOf: + - $ref: '#/components/schemas/Common.displayName' + description: Display name of the project + allOf: + - $ref: '#/components/schemas/Projects.CreateProjectRequest' + Projects.CreateProjectRequest: + type: object + required: + - name + properties: + metadata: + type: object + additionalProperties: {} + canonical_name: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Canonical name of the project (unique per developer) + name: + allOf: + - $ref: '#/components/schemas/Common.displayName' + description: Display name of the project + description: Payload for creating a project + Projects.PatchProjectRequest: + type: object + properties: + metadata: + type: object + additionalProperties: {} + canonical_name: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Canonical name of the project (unique per developer) + name: + allOf: + - $ref: '#/components/schemas/Common.displayName' + description: Display name of the project + description: Payload for patching a project + Projects.Project: + type: object + required: + - id + - created_at + - updated_at + - name + properties: + id: + allOf: + - $ref: '#/components/schemas/Common.uuid' + readOnly: true + metadata: + type: object + additionalProperties: {} + created_at: + type: string + format: date-time + description: When this resource was created as UTC date-time + readOnly: true + updated_at: + type: string + format: date-time + description: When this resource was updated as UTC date-time + readOnly: true + canonical_name: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Canonical name of the project (unique per developer) + name: + allOf: + - $ref: '#/components/schemas/Common.displayName' + description: Display name of the project + description: Project model + Projects.UpdateProjectRequest: + type: object + required: + - name + properties: + metadata: + type: object + additionalProperties: {} + canonical_name: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Canonical name of the project (unique per developer) + name: + allOf: + - $ref: '#/components/schemas/Common.displayName' + description: Display name of the project + description: Payload for updating a project Responses.BaseTool: type: object required: @@ -5437,21 +6034,93 @@ components: type: object required: - id - - type - - status + - type + - status + properties: + id: + type: string + description: The unique ID of the web search tool call. + type: + type: string + enum: + - web_search_call + description: The type of the web search tool call. Always `web_search_call`. + status: + allOf: + - $ref: '#/components/schemas/Responses.WebSearchStatus' + description: The status of the web search tool call. + Secrets.CreateSecretRequest: + type: object + required: + - name + - value + properties: + metadata: + type: object + additionalProperties: {} + name: + type: string + description: Name of the secret + description: + type: string + description: Description of what the secret is used for + value: + type: string + description: The decrypted secret value + Secrets.Secret: + type: object + required: + - id + - created_at + - updated_at + - name + - value properties: id: + allOf: + - $ref: '#/components/schemas/Common.uuid' + readOnly: true + created_at: type: string - description: The unique ID of the web search tool call. - type: + format: date-time + description: When this resource was created as UTC date-time + readOnly: true + updated_at: type: string - enum: - - web_search_call - description: The type of the web search tool call. Always `web_search_call`. - status: - allOf: - - $ref: '#/components/schemas/Responses.WebSearchStatus' - description: The status of the web search tool call. + format: date-time + description: When this resource was updated as UTC date-time + readOnly: true + metadata: + type: object + additionalProperties: {} + name: + type: string + description: Name of the secret + description: + type: string + description: Description of what the secret is used for + value: + type: string + description: The decrypted secret value + description: A secret that can be used in tasks and sessions + Secrets.UpdateSecretRequest: + type: object + required: + - name + - value + properties: + metadata: + type: object + additionalProperties: {} + name: + type: string + description: Name of the secret + description: + type: string + description: Description of what the secret is used for + value: + type: string + description: The decrypted secret value Sessions.BaseDocSearch: type: object required: @@ -5460,6 +6129,7 @@ components: - metadata_filter - num_search_messages - max_query_length + - include_embeddings properties: limit: type: integer @@ -5491,6 +6161,10 @@ components: maximum: 10000 description: The maximum query length to use for the search. default: 1000 + include_embeddings: + type: boolean + description: Whether to include embeddings in the response + default: true Sessions.BaseDocSearchUpdate: type: object properties: @@ -5524,6 +6198,10 @@ components: maximum: 10000 description: The maximum query length to use for the search. default: 1000 + include_embeddings: + type: boolean + description: Whether to include embeddings in the response + default: true Sessions.ContextOverflowType: type: string enum: @@ -7375,9 +8053,6 @@ components: name: type: string description: Name - continue: - type: boolean - description: Whether to continue this message or return a new one tool_calls: type: array items: @@ -7422,11 +8097,11 @@ components: type: boolean description: |- Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. - default: true + default: false disable_cache: type: boolean description: Whether to disable caching for the prompt step @@ -7585,9 +8260,6 @@ components: name: type: string description: Name - continue: - type: boolean - description: Whether to continue this message or return a new one tool_calls: type: array items: @@ -7632,11 +8304,11 @@ components: type: boolean description: |- Whether to auto-run the tool and send the tool results to the model when available. - (default: true for prompt steps, false for sessions) + (default: false) If a tool call is made, the tool's output will be used as the model's input. If a tool call is not made, the model's output will be used as the next step's input. - default: true + default: false disable_cache: type: boolean description: Whether to disable caching for the prompt step @@ -8629,6 +9301,11 @@ components: additionalProperties: type: string description: The headers to send with the request + secrets: + type: object + additionalProperties: + $ref: '#/components/schemas/Tools.SecretRef' + description: Secret references to use in templates (available only at setup time, not during execution) content: type: string description: The content as base64 to send with the request @@ -8655,6 +9332,10 @@ components: - type: object additionalProperties: {} description: The parameters to send with the request + params_schema: + allOf: + - $ref: '#/components/schemas/Tools.ParameterSchema' + description: The schema of the parameters follow_redirects: type: boolean description: Follow redirects @@ -8696,6 +9377,11 @@ components: additionalProperties: type: string description: The headers to send with the request + secrets: + type: object + additionalProperties: + $ref: '#/components/schemas/Tools.SecretRefUpdate' + description: Secret references to use in templates (available only at setup time, not during execution) content: type: string description: The content as base64 to send with the request @@ -8722,6 +9408,10 @@ components: - type: object additionalProperties: {} description: The parameters to send with the request + params_schema: + allOf: + - $ref: '#/components/schemas/Tools.ParameterSchemaUpdate' + description: The schema of the parameters follow_redirects: type: boolean description: Follow redirects @@ -9005,6 +9695,8 @@ components: - arxiv - unstructured - algolia + - mcp + - google_sheets description: The provider of the integration method: type: string @@ -9030,6 +9722,8 @@ components: arxiv: '#/components/schemas/Tools.ArxivIntegrationDef' unstructured: '#/components/schemas/Tools.UnstructuredIntegrationDef' algolia: '#/components/schemas/Tools.AlgoliaIntegrationDef' + mcp: '#/components/schemas/Tools.McpIntegrationDef' + google_sheets: '#/components/schemas/Tools.GoogleSheetsIntegrationDef' description: Integration definition Tools.BaseIntegrationDefUpdate: type: object @@ -9052,6 +9746,8 @@ components: - arxiv - unstructured - algolia + - mcp + - google_sheets description: The provider of the integration method: type: string @@ -9077,6 +9773,8 @@ components: arxiv: '#/components/schemas/Tools.ArxivIntegrationDefUpdate' unstructured: '#/components/schemas/Tools.UnstructuredIntegrationDefUpdate' algolia: '#/components/schemas/Tools.AlgoliaIntegrationDefUpdate' + mcp: '#/components/schemas/Tools.McpIntegrationDefUpdate' + google_sheets: '#/components/schemas/Tools.GoogleSheetsIntegrationDefUpdate' description: Integration definition Tools.Bash20241022Def: type: object @@ -9926,6 +10624,8 @@ components: - $ref: '#/components/schemas/Tools.ArxivIntegrationDef' - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef' - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef' + - $ref: '#/components/schemas/Tools.McpIntegrationDef' + - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef' description: The integration to call system: allOf: @@ -10140,61 +10840,556 @@ components: description: Ffmpeg integration definition Tools.FfmpegSearchArguments: type: object - required: - - cmd + required: + - cmd + properties: + cmd: + type: string + description: The bash command string + file: + anyOf: + - type: string + - type: array + items: + type: string + description: The base64 string of the file + description: Arguments for Ffmpeg CMD + Tools.FfmpegSearchArgumentsUpdate: + type: object + properties: + cmd: + type: string + description: The bash command string + file: + anyOf: + - type: string + - type: array + items: + type: string + description: The base64 string of the file + description: Arguments for Ffmpeg CMD + Tools.FunctionCallOption: + type: object + required: + - name + properties: + name: + type: string + description: The name of the function + arguments: + type: string + description: The parameters to pass to the function + Tools.FunctionDef: + type: object + properties: + name: + nullable: true + description: 'DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.' + default: null + description: + nullable: true + description: 'DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.' + default: null + parameters: + type: object + additionalProperties: {} + description: The parameters the function accepts + description: Function definition + Tools.GoogleSheetsAppendArguments: + type: object + required: + - spreadsheet_id + - range + - values + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to append to + range: + type: string + description: The A1 notation of the range to start appending from + values: + type: array + items: + type: array + items: {} + description: The values to append (2D array) + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + insert_data_option: + type: string + enum: + - OVERWRITE + - INSERT_ROWS + description: How the input data should be inserted + default: INSERT_ROWS + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for appending values to a spreadsheet + Tools.GoogleSheetsAppendArgumentsUpdate: + type: object + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to append to + range: + type: string + description: The A1 notation of the range to start appending from + values: + type: array + items: + type: array + items: {} + description: The values to append (2D array) + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + insert_data_option: + type: string + enum: + - OVERWRITE + - INSERT_ROWS + description: How the input data should be inserted + default: INSERT_ROWS + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for appending values to a spreadsheet + Tools.GoogleSheetsBatchReadArguments: + type: object + required: + - spreadsheet_id + - ranges + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to read from + ranges: + type: array + items: + type: string + description: The A1 notation of the ranges to read + major_dimension: + type: string + enum: + - ROWS + - COLUMNS + description: The major dimension that results should use + default: ROWS + value_render_option: + type: string + enum: + - FORMATTED_VALUE + - UNFORMATTED_VALUE + - FORMULA + description: How values should be represented in the output + default: FORMATTED_VALUE + date_time_render_option: + type: string + enum: + - SERIAL_NUMBER + - FORMATTED_STRING + description: How dates, times, and durations should be represented + default: FORMATTED_STRING + description: Arguments for batch reading values from multiple ranges + Tools.GoogleSheetsBatchReadArgumentsUpdate: + type: object + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to read from + ranges: + type: array + items: + type: string + description: The A1 notation of the ranges to read + major_dimension: + type: string + enum: + - ROWS + - COLUMNS + description: The major dimension that results should use + default: ROWS + value_render_option: + type: string + enum: + - FORMATTED_VALUE + - UNFORMATTED_VALUE + - FORMULA + description: How values should be represented in the output + default: FORMATTED_VALUE + date_time_render_option: + type: string + enum: + - SERIAL_NUMBER + - FORMATTED_STRING + description: How dates, times, and durations should be represented + default: FORMATTED_STRING + description: Arguments for batch reading values from multiple ranges + Tools.GoogleSheetsBatchWriteArguments: + type: object + required: + - spreadsheet_id + - data + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to write to + data: + type: array + items: + $ref: '#/components/schemas/Tools.GoogleSheetsValueRange' + description: The data to write to each range + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for batch updating values in multiple ranges + Tools.GoogleSheetsBatchWriteArgumentsUpdate: + type: object + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to write to + data: + type: array + items: + $ref: '#/components/schemas/Tools.GoogleSheetsValueRange' + description: The data to write to each range + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for batch updating values in multiple ranges + Tools.GoogleSheetsClearArguments: + type: object + required: + - spreadsheet_id + - range + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to clear values from + range: + type: string + description: The A1 notation of the range to clear + description: Arguments for clearing values from a spreadsheet + Tools.GoogleSheetsClearArgumentsUpdate: + type: object + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to clear values from + range: + type: string + description: The A1 notation of the range to clear + description: Arguments for clearing values from a spreadsheet + Tools.GoogleSheetsIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - google_sheets + description: The provider must be "google_sheets" + default: google_sheets + method: + type: string + enum: + - read_values + - write_values + - append_values + - clear_values + - batch_read + - batch_write + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.GoogleSheetsSetup' + description: The setup parameters for Google Sheets + arguments: + anyOf: + - $ref: '#/components/schemas/Tools.GoogleSheetsReadArguments' + - $ref: '#/components/schemas/Tools.GoogleSheetsWriteArguments' + - $ref: '#/components/schemas/Tools.GoogleSheetsAppendArguments' + - $ref: '#/components/schemas/Tools.GoogleSheetsClearArguments' + - $ref: '#/components/schemas/Tools.GoogleSheetsBatchReadArguments' + - $ref: '#/components/schemas/Tools.GoogleSheetsBatchWriteArguments' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: Google Sheets integration definition + Tools.GoogleSheetsIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - google_sheets + description: The provider must be "google_sheets" + default: google_sheets + method: + type: string + enum: + - read_values + - write_values + - append_values + - clear_values + - batch_read + - batch_write + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.GoogleSheetsSetupUpdate' + description: The setup parameters for Google Sheets + arguments: + anyOf: + - $ref: '#/components/schemas/Tools.GoogleSheetsReadArgumentsUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsWriteArgumentsUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsAppendArgumentsUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsClearArgumentsUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsBatchReadArgumentsUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsBatchWriteArgumentsUpdate' + description: The arguments for the method + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: Google Sheets integration definition + Tools.GoogleSheetsReadArguments: + type: object + required: + - spreadsheet_id + - range + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to read from + range: + type: string + description: The A1 notation of the range to read + major_dimension: + type: string + enum: + - ROWS + - COLUMNS + description: The major dimension that results should use + default: ROWS + value_render_option: + type: string + enum: + - FORMATTED_VALUE + - UNFORMATTED_VALUE + - FORMULA + description: How values should be represented in the output + default: FORMATTED_VALUE + date_time_render_option: + type: string + enum: + - SERIAL_NUMBER + - FORMATTED_STRING + description: How dates, times, and durations should be represented + default: FORMATTED_STRING + description: Arguments for reading values from a spreadsheet + Tools.GoogleSheetsReadArgumentsUpdate: + type: object + properties: + spreadsheet_id: + type: string + description: The ID of the spreadsheet to read from + range: + type: string + description: The A1 notation of the range to read + major_dimension: + type: string + enum: + - ROWS + - COLUMNS + description: The major dimension that results should use + default: ROWS + value_render_option: + type: string + enum: + - FORMATTED_VALUE + - UNFORMATTED_VALUE + - FORMULA + description: How values should be represented in the output + default: FORMATTED_VALUE + date_time_render_option: + type: string + enum: + - SERIAL_NUMBER + - FORMATTED_STRING + description: How dates, times, and durations should be represented + default: FORMATTED_STRING + description: Arguments for reading values from a spreadsheet + Tools.GoogleSheetsSetup: + type: object + required: + - use_julep_service + properties: + use_julep_service: + type: boolean + description: |- + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. + service_account_json: + type: string + description: |- + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. + default_retry_count: + type: integer + format: uint8 + minimum: 1 + maximum: 10 + description: Default number of retry attempts for API calls + default: 3 + description: Setup parameters for Google Sheets integration + Tools.GoogleSheetsSetupUpdate: + type: object properties: - cmd: + use_julep_service: + type: boolean + description: |- + Whether to use Julep's built-in Google Sheets service account. + If true, no credentials needed. If false, service_account_json is required. + service_account_json: type: string - description: The bash command string - file: - anyOf: - - type: string - - type: array - items: - type: string - description: The base64 string of the file - description: Arguments for Ffmpeg CMD - Tools.FfmpegSearchArgumentsUpdate: + description: |- + Base64 encoded service account JSON for authentication. + Required when use_julep_service is false. + Users can provide their own service account for better isolation and quota management. + default_retry_count: + type: integer + format: uint8 + minimum: 1 + maximum: 10 + description: Default number of retry attempts for API calls + default: 3 + description: Setup parameters for Google Sheets integration + Tools.GoogleSheetsValueRange: type: object + required: + - range + - values properties: - cmd: + range: type: string - description: The bash command string - file: - anyOf: - - type: string - - type: array - items: - type: string - description: The base64 string of the file - description: Arguments for Ffmpeg CMD - Tools.FunctionCallOption: + description: The A1 notation of the range + values: + type: array + items: + type: array + items: {} + description: The values for the range (2D array) + major_dimension: + type: string + enum: + - ROWS + - COLUMNS + description: The major dimension of the values + default: ROWS + description: Represents a range of values to write + Tools.GoogleSheetsWriteArguments: type: object required: - - name + - spreadsheet_id + - range + - values properties: - name: + spreadsheet_id: type: string - description: The name of the function - arguments: + description: The ID of the spreadsheet to write to + range: type: string - description: The parameters to pass to the function - Tools.FunctionDef: + description: The A1 notation of the range to write to + values: + type: array + items: + type: array + items: {} + description: The values to write (2D array) + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + insert_data_option: + type: string + enum: + - OVERWRITE + - INSERT_ROWS + description: How the input data should be inserted + default: OVERWRITE + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for writing values to a spreadsheet + Tools.GoogleSheetsWriteArgumentsUpdate: type: object properties: - name: - nullable: true - description: 'DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.' - default: null - description: - nullable: true - description: 'DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.' - default: null - parameters: - type: object - additionalProperties: {} - description: The parameters the function accepts - description: Function definition + spreadsheet_id: + type: string + description: The ID of the spreadsheet to write to + range: + type: string + description: The A1 notation of the range to write to + values: + type: array + items: + type: array + items: {} + description: The values to write (2D array) + value_input_option: + type: string + enum: + - RAW + - USER_ENTERED + description: How the input data should be interpreted + default: USER_ENTERED + insert_data_option: + type: string + enum: + - OVERWRITE + - INSERT_ROWS + description: How the input data should be inserted + default: OVERWRITE + include_values_in_response: + type: boolean + description: Whether to include the values in the response + default: false + description: Arguments for writing values to a spreadsheet Tools.LlamaParseFetchArguments: type: object required: @@ -10430,11 +11625,238 @@ components: type: string description: The API key for the Mailgun integration description: Setup parameters for Mailgun integration + Tools.McpCallToolArguments: + type: object + required: + - tool_name + properties: + tool_name: + type: string + description: The MCP tool name to invoke + arguments: + type: object + additionalProperties: {} + description: JSON-serializable arguments to pass to the MCP tool + default: {} + timeout_seconds: + type: integer + format: uint16 + description: Optional per-call timeout in seconds + default: 60 + description: Arguments to call a named tool on the MCP server + Tools.McpCallToolArgumentsUpdate: + type: object + properties: + tool_name: + type: string + description: The MCP tool name to invoke + arguments: + type: object + additionalProperties: {} + description: JSON-serializable arguments to pass to the MCP tool + default: {} + timeout_seconds: + type: integer + format: uint16 + description: Optional per-call timeout in seconds + default: 60 + description: Arguments to call a named tool on the MCP server + Tools.McpIntegrationDef: + type: object + required: + - provider + properties: + provider: + type: string + enum: + - mcp + description: The provider must be "mcp" + default: mcp + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.McpSetup' + description: The setup parameters for MCP + arguments: + anyOf: + - $ref: '#/components/schemas/Tools.McpCallToolArguments' + - $ref: '#/components/schemas/Tools.McpListToolsArguments' + description: The arguments for MCP methods + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDef' + description: MCP integration definition + Tools.McpIntegrationDefUpdate: + type: object + properties: + provider: + type: string + enum: + - mcp + description: The provider must be "mcp" + default: mcp + method: + type: string + description: The specific method of the integration to call + setup: + allOf: + - $ref: '#/components/schemas/Tools.McpSetupUpdate' + description: The setup parameters for MCP + arguments: + anyOf: + - $ref: '#/components/schemas/Tools.McpCallToolArgumentsUpdate' + - $ref: '#/components/schemas/Tools.McpListToolsArgumentsUpdate' + description: The arguments for MCP methods + allOf: + - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate' + description: MCP integration definition + Tools.McpListToolsArguments: + type: object + required: + - dummy + properties: + dummy: + type: string + default: dummy + description: Arguments to list available tools + Tools.McpListToolsArgumentsUpdate: + type: object + properties: + dummy: + type: string + default: dummy + description: Arguments to list available tools + Tools.McpSetup: + type: object + required: + - transport + properties: + transport: + type: string + enum: + - sse + - http + description: Transport used to connect to the MCP server + command: + type: string + description: (stdio) Executable or command to launch the server + args: + type: array + items: + type: string + description: (stdio) Arguments for the server command + default: [] + cwd: + type: string + description: (stdio) Working directory for the server process + env: + type: object + additionalProperties: + type: string + description: (stdio) Environment variables for the server process + default: {} + http_url: + type: string + format: uri + description: (http) Base URL for the MCP server (usually ends with /mcp) + http_headers: + type: object + additionalProperties: + type: string + description: (http) Optional HTTP headers to include (e.g., Authorization) + default: {} + description: Setup parameters for MCP integration + Tools.McpSetupUpdate: + type: object + properties: + transport: + type: string + enum: + - sse + - http + description: Transport used to connect to the MCP server + command: + type: string + description: (stdio) Executable or command to launch the server + args: + type: array + items: + type: string + description: (stdio) Arguments for the server command + default: [] + cwd: + type: string + description: (stdio) Working directory for the server process + env: + type: object + additionalProperties: + type: string + description: (stdio) Environment variables for the server process + default: {} + http_url: + type: string + format: uri + description: (http) Base URL for the MCP server (usually ends with /mcp) + http_headers: + type: object + additionalProperties: + type: string + description: (http) Optional HTTP headers to include (e.g., Authorization) + default: {} + description: Setup parameters for MCP integration Tools.NamedToolChoice: type: object properties: function: $ref: '#/components/schemas/Tools.FunctionCallOption' + Tools.ParameterSchema: + type: object + required: + - type + - properties + properties: + type: + type: string + description: Schema type (usually 'object') + default: object + properties: + type: object + additionalProperties: + $ref: '#/components/schemas/Tools.PropertyDefinition' + description: Properties definition for parameters + required: + type: array + items: + type: string + description: List of required property names + default: [] + additionalProperties: + type: boolean + description: Whether to allow additional properties + description: JSON Schema for API call parameters + Tools.ParameterSchemaUpdate: + type: object + properties: + type: + type: string + description: Schema type (usually 'object') + default: object + properties: + type: object + additionalProperties: + $ref: '#/components/schemas/Tools.PropertyDefinitionUpdate' + description: Properties definition for parameters + required: + type: array + items: + type: string + description: List of required property names + default: [] + additionalProperties: + type: boolean + description: Whether to allow additional properties + description: JSON Schema for API call parameters Tools.PatchToolRequest: type: object properties: @@ -10477,6 +11899,8 @@ components: - $ref: '#/components/schemas/Tools.ArxivIntegrationDefUpdate' - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDefUpdate' - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.McpIntegrationDefUpdate' + - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDefUpdate' description: The integration to call system: allOf: @@ -10495,6 +11919,46 @@ components: bash_20241022: $ref: '#/components/schemas/Tools.Bash20241022DefUpdate' description: Payload for patching a tool + Tools.PropertyDefinition: + type: object + required: + - type + properties: + type: + type: string + description: Type of the property + description: + type: string + description: Description of the property + enum: + type: array + items: + type: string + description: Enum values if applicable + items: + allOf: + - $ref: '#/components/schemas/Tools.PropertyDefinition' + description: Items definition for array types + description: Property definition for parameter schema + Tools.PropertyDefinitionUpdate: + type: object + properties: + type: + type: string + description: Type of the property + description: + type: string + description: Description of the property + enum: + type: array + items: + type: string + description: Enum values if applicable + items: + allOf: + - $ref: '#/components/schemas/Tools.PropertyDefinitionUpdate' + description: Items definition for array types + description: Property definition for parameter schema Tools.RemoteBrowserArguments: type: object required: @@ -10616,6 +12080,20 @@ components: format: uint16 description: The height of the browser description: The setup parameters for the remote browser + Tools.SecretRef: + type: object + required: + - name + properties: + name: + type: string + description: The name of the secret to reference + Tools.SecretRefUpdate: + type: object + properties: + name: + type: string + description: The name of the secret to reference Tools.SpiderFetchArguments: type: object required: @@ -10903,6 +12381,8 @@ components: - $ref: '#/components/schemas/Tools.ArxivIntegrationDef' - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef' - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef' + - $ref: '#/components/schemas/Tools.McpIntegrationDef' + - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef' description: The integration to call system: allOf: @@ -11131,6 +12611,8 @@ components: - $ref: '#/components/schemas/Tools.ArxivIntegrationDef' - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef' - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef' + - $ref: '#/components/schemas/Tools.McpIntegrationDef' + - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef' description: The integration to call system: allOf: @@ -11335,6 +12817,10 @@ components: type: string description: About the user default: '' + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the user description: Payload for creating a user (and associated documents) Users.PatchUserRequest: type: object @@ -11351,6 +12837,10 @@ components: type: string description: About the user default: '' + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the user description: Payload for patching a user Users.UpdateUserRequest: type: object @@ -11370,6 +12860,10 @@ components: type: string description: About the user default: '' + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the user description: Payload for updating a user Users.User: type: object @@ -11406,6 +12900,10 @@ components: type: string description: About the user default: '' + project: + allOf: + - $ref: '#/components/schemas/Common.canonicalName' + description: Project canonical name of the user securitySchemes: ApiKeyAuth: type: apiKey diff --git a/typespec/tspconfig.yaml b/src/typespec/tspconfig.yaml similarity index 100% rename from typespec/tspconfig.yaml rename to src/typespec/tspconfig.yaml diff --git a/typespec/users/endpoints.tsp b/src/typespec/users/endpoints.tsp similarity index 100% rename from typespec/users/endpoints.tsp rename to src/typespec/users/endpoints.tsp diff --git a/typespec/users/main.tsp b/src/typespec/users/main.tsp similarity index 100% rename from typespec/users/main.tsp rename to src/typespec/users/main.tsp diff --git a/typespec/users/models.tsp b/src/typespec/users/models.tsp similarity index 90% rename from typespec/users/models.tsp rename to src/typespec/users/models.tsp index c21b1b03c..ad22ade6e 100644 --- a/typespec/users/models.tsp +++ b/src/typespec/users/models.tsp @@ -22,6 +22,9 @@ model User { /** About the user */ about: string = ""; + + /** Project canonical name of the user */ + project?: canonicalName; } /** Payload for updating a user */ diff --git a/typespec/versions.tsp b/src/typespec/versions.tsp similarity index 100% rename from typespec/versions.tsp rename to src/typespec/versions.tsp